Wednesday, October 1, 2014

Capture x button on Siebel Popup Applet

From impossible siebel post - Jason Le
===========================

function Applet_Load () {
var oCon = this.FindActiveXControl("NewQuery");
var obody = oCon.document.body;
var odiv = oCon.document.createElement("script");
odiv.type = "text/javascript";
odiv.language = "javascript";
odiv.text = "window.onresize=UnloadTrigger;function UnloadTrigger(){if(document.body.clientHeight==0&&document.body.clientWidth==0){alert('You close the popup applet');}}";
obody.appendChild(odiv);
}

Thursday, July 29, 2010

JavaScript: Siebel Address Bar

An IE address bar in Siebel can be used for more than just showing the current web address or the current URL. This tip or piece of info was recently discovered by a colleague of mine Tejeshwer Anand. Below are the instructions on how to use it.

Open your Siebel Application Client (Thin or Dedicated)
Just go the address bar as shown in the picture below.

Type the following code in the Address Bar as shown in the picture
javascript:alert(theApplication().GetProfileAttr("Me.First Name"));

Hit Enter Key
It will return you the First Name of the person logged it.
I guess now you know what I am trying to say.Using this technique you can do whatever is possible through browser scripts. The reason being browser scripts are nothing but JavaScript code and a corresponding JS file is generated for the object on which you write the browser script. So you can directly write the browser script code in the address bar after JavaScript prompt and it will do just like it does in broswer script.

You can even call a business service through this technique provided your CFG contains the entry for that BS.

For example you can write.
javascript:alert(var bo = theApplication().ActiveBusObject(););
This will return you the active bus object and assign it to variable ‘bo’.

This can be real handy if you want to check, weather a particular Profile Attribute has been successfully SET or NOT or in case you want to SET a particular Profile Attribute.

To set a particular Profile Attribute you can write
javascript:alert(theApplication().SetProfileAttr("Test",”TestValue”));

Enjoy

Friday, July 9, 2010

HTML File Creation for Merging Custom Docs in Correspondence Siebel 8.0

  1. Remove/Rename the Siebel Vanilla, Siebel.HTML File present in folder “siebsrvr/REPORTS”
  2. Create a New word Document and rename that to “Siebel.HTML File Generation.doc” – This Word document can be placed any where on the server.
  3. Navigate to the following path

SiteMap > Correspondence > Personal Templates

  1. Add the Document which was created in Step 2 by clicking the New Record.

  1. Navigate to “My Correspondence Request” View

  1. Create a New Record using “Ctrl + N”. Click on the below highlighted to select the Template

  1. Select the Template which was created in Step 4, and Press OK.

  1. Go to the Bottom Recipients Applet and create a New Record using Ctrl+N

  1. This Open a Pick Applet, select any record and press “Add”.

10 . Click on the “Generate” Button, wait until the status of the DocumentStatus changes to “Completed” and GeneratedDocument to “Merged”

  1. Go to “siebsrvr/REPORTS” and check whether Siebel.HTML is created or not.
  2. Delete the Document Added in Step 4.

Party Model

S_PARTY model is the major change seen in Siebel 7.X and later version.
The S_PARTY table is the base table for all the party related entities: Person (Contact), User, Employee, Partner User, Account, Division, Organization, Partner Organization, Household, Access Group and User list.Party components have M: M relationships among them. For each party record stored in the S_PARTY table, the value of the PARTY_TYPE_CD column denotes the party type. Along with the party type, extension tables provide the primary differentiation between the different parties.
PARTY DATA MODEL:

PARTY TYPE AND PARTIES:
1)
PARTY => PERSON (CONTACT)
PARTY TYPE => PERSON
E.G:
An employee at the customer company.
An employee at the competitor’s company
Features:
A Person is an individual who is represented by a Person record in the database
Without additional attributes, a Person has no access to your database
The base table (S_PARTY) and extension table (S_CONTACT) that define a contact or person. A person is the simplest representation of an individual in the database
2)
PARTY => USER
PARTY TYPE => PERSON
E.G:
A registered customer on (your) Web site
A self-registered partner user, that is, one who has no position.
Features:
A User is a Person who can log into your database and has a responsibility that defines what application views are accessible.
A self-registered partner on a Siebel partner application has a responsibility, but does not have a position like a full Partner User has.
The base table (S_PARTY) and extension tables that define a user (S_CONTACT and S_USER) form User Data Model. A User is a person with following added qualities
1) The S_USER table contains a login for this user
2) The S_PER_RESP intersection table specifies the responsibility for this user
3) It is possible to promote a contact to a user. For example, adding a User ID value for a person in the All Persons view in the Administration – User screen causes the person to appear as a user in the Users view.
3)
PARTY => EMPLOYEE
PARTY TYPE => PERSON
E.G:
An Employee at your company – An Employee is a User who is associated with a position in a division within your company
Base table (S_PARTY) and the extension tables (S_CONTACT, S_USER, and S_EMP_PER) define employee. This includes internal employees and Partner users.
An Employee is a User with the following added qualities:
1. S_EMP_PER provides employee data for this user.
1. A position defined using the S_POSTN table is typically (but not necessarily) associated with an employee.
2. If the organization to which the position belongs is not a partner organization, then the employee is an internal employee.
3. If the organization is a partner organization, then the employee is a partner user.
4)
PARTY => POSITION
PARTY TYPE => POSITION
E.G:
A job title within (your) company
A job title within the partner company
Base table (S_PARTY) and extension table (S_POSTN)
Features:
Position exist for the purpose of representing reporting relationships
A position within your company is associated with a division and is associated with the organization to which that division belongs.
A position can be associated with one division only.
A position may have a parent position. It may also have child positions
One or more employees can be associated with an internal position, and one or more partner users can be associated with an external position.
An employee or partner user can be associated with more than one position, but only one position is active at any time.
5)
PARTY => ACCOUNT
PARTY TYPE => ORGANIZATION
Account is a company or group of individuals with whom you do business.
An account is typically made up of contacts It can have parent and child accounts.
An account can be promoted to partner organization, but it is not a division, an internal or external organization.
Base Table (S_PARTY) and extension table (S_ORG_EXT) defines Account data Model.
6)
PARTY => DIVISION
PARTY TYPE => ORGANIZATION
Division is an organizational unit within a company such as Manufacturing or Corporate unit.
It can also refer to a group of people operating within a particular company.
Features:
A division exists for the purposes of mapping a company’s physical structure into the Siebel Database and for providing a container for position hierarchies.
A division may have a parent division. It may also have child divisions.
Data cannot be associated directly with a division. (Divisions that are not designated as organizations do not drive visibility.)
Base table (S_PARTY) and extension table (S_ORG_EXT) define division data model along with INT_ORG_FLG=Y (in S_ORG_EXT) table
This flag specifies that division is an internal organization.
NOTE: For Account this flag is set to N
7)
PARTY => ORGANISATION
PARTY TYPE => ORGANISATION
E.G:
An Organizational unit within the company such as Asian organization and
A partner company
Features:
An organization is a division that is designated as an organization.
An organization exists for the purpose of providing a container in which positions can be associated with data.
An organization can be internal or it can be a partner organization.
A division can be associated with only one organization: itself or an ancestor division that is also an organization.
Base Table (S_PARTY) and extension tables (S_ORG_EXT and S_BU) define Organizational data model.
An Organization, sometimes known as a business unit, is also a Division, but has a record in the S_BU table.
Partner Organization Data Model:
The base table and extension tables (S_ORG_EXT, S_BU, and S_ORG_PRTNR) define a Partner Organization.
A Partner Organization is the same as an Organization but the flag PRTNR_FLG in S_ORG_EXT qualifies it as a Partner Organization

PARTY => HOUSEHOLD
PARTY TYPE => HOUSEHOLD
Base table (S_PARTY) and household (S_ORG_GROUP) defines Household.
A group of people, typically a family, who reside at the same residence forms Household
A group of purchasers who live in different residences are also included.
Typically, a household is a group of individual consumers who are economically affiliated and share a common purchasing or service interest.
A household may have any combination of contacts, users, employees, and partner users as members.
An individual can belong to more than one household.
9)
PARTY => USER LIST
PARTY TYPE => USER LIST
Base table (S_PARTY) and extension table (S_USERLIST) defines User list.
E.G:
A support team made up of some internal employees and some partner users.
Features:
A user list is an ad hoc group of people. It may have any combination of contacts, users, employees, and partner users as members
A user list cannot have a parent or children.
10)
PARTY => ACCESS GROUP
PARTY TYPE => ACCESS GROUP
Base table (S_PARTY) and extension table (S_PARTY_GROUP) defines access group
E.G:
Partner IT service providers and business-to-business customer companies that buy networking equipment.
An access group is a group of any combination of parties of type Position, Organization, and User List. That is, it is a group of groups
An access group may have a parent access group. It may also have child access groups.
Parties relation to each other:
Divisions, organizations, and accounts are instances of the Organization party type.
A division, internal or partner, is also an organization if its internal organization flag is TRUE (INT_ORG_FLG = “Y”) and it has an associated S_BU record.
Every division is associated with one organization: either itself or the closest ancestor division that is also an organization.
Every position is associated with a division. The position is then also automatically associated with one organization: the organization with which the division is associated.
Persons (contacts), users, employees, partner users are instances of the Person party type.
Typically, you associate each employee and partner user with one or more positions. The employee or partner user has only one active position at one time. The employee or partner user is automatically associated with one division and one organization at a time—the division and organization associated with the active position.
For purposes of granting visibility to data, associations of parties of type Person with other types of parties are stored using the S_PARTY_PER table. For example, accounts are associated with contacts, users are associated with positions, and so on. A user associated with a position can see data for accounts or opportunities assigned to the position (when this is the active position). Relationships stored in S_PARTY_REL also affect data routing for mobile users.
For purposes of storing ad hoc, informational relationships between parties, such associations are stored using the S_PARTY_REL table. For example, a company and its accounting firm may both be stored as accounts. Assuming that your application provides the capability to define this relationship, it can be stored in the S_PARTY_REL table.
Ad hoc and informational relationships between parties are stored in the table S_PARTY_REL. For example, a company and its accounting firm may both be stored as accounts. The relationship between these two accounts can be stored in the S_PARTY_REL table, assuming that your application has been configured to define these relationships.

Thursday, July 8, 2010

ClientBusinessService - 772 - 8.0 Application User Property


Browser Script [ID 497813.1]

Modified 08-FEB-2010 Type PROBLEM Status MODERATED

In this Document
Symptoms
Cause
1. Invoking a server-side business service
2. Browser script not being able to invoke another browser script
Solution
1. Invoking a server-side business service
2. Browser script not being able to invoke another browser script


Platforms: 1-914CU;

This document is being delivered to you via Oracle Support's Rapid Visibility (RaV) process and therefore has not been subject to an independent technical review.

Applies to:

Siebel Tools - Version: 7.7.2 SIA [18325] - Release: V7
IBM AIX on POWER Systems (64-bit)
Product Release: V7 (Enterprise)
Version: 7.7.2 [18325] Fin Svcs
Database: Oracle 9.2.0.5.0
Application Server OS: IBM AIX 5L 5.2
Database Server OS: IBM AIX 5L 5.2
Checked for Relevance on 02-Feb-2010

This document was previously published as Siebel SR 38-1776449051.

Symptoms

A customer faced two issues with browser scripting during upgrade from version 7.5.3 to version 7.7.2.

1. A browser script seemed not to be able to invoke a server-side business service. The resulting output property set remained empty.

Example :

var psInput = theApplication().NewPropertySet();
var srvService = TheApplication().GetService("RB Refresh Financial Account");

psInput.SetProperty("AccountNumber", this.BusComp().GetFieldValue("Account Number"));
psInput.SetProperty("AccountType", "CA");
psInput.SetProperty("UserID", this.BusComp().GetFieldValue("Customer Number"));

var psOutput = srvService.InvokeMethod("Refresh", psInput);

if (psOutput.GetProperty("ReplyMsg") != "")
...

The statement psOutput.GetProperty("ReplyMsg") always returns nothing.


2. A browser script seemed not to be able to invoke another browser script in the Application object, (general) section, that was referenced by a variable in the "top" object of the browser's domain object hierarchy.

Example:

function Applet_Load ()
{
try
{
var sBgColor = "";
var sLastDate = this.BusComp().GetFieldValue("RB1 Online Trans Date");

if ( (sLastDate.length != 0) && (sLastDate.substring(0, 10) == top.GetCurrentDate()) )
sBgColor ="G";

top.SetOnlineControls(this,sBgColor,"CurrentBalance","CashBalance","Effective");
}
catch (e)
{
alert ("Error Applet_Load (CA) : " + e.toString());
}
}


The function SetOnlineControls is defined as follow in the (declarations) section :

top.SetOnlineControls = SetOnlineControls;

function SetOnlineControls(oApplet, sBgColor)
{
...
}


Cause

1. Invoking a server-side business service

In order to make server-side business services visible to browser scripts, the configuration file must contain a reference to the business service in section [SWE]:
ClientBusinessService =
Here, is a number starting at 0, to allow multiple entries. The numbers must form a continuous sequence: 0,1,2,...

It was found that the customer had a gap in the sequence of numbers which made the internal algorithm stop searching for more ClientBusinessService entries.

2. Browser script not being able to invoke another browser script

Research revealed that the browser script in fact did invoke the method in the Application object; however, the called method silently exited due to errors.

The following behaviors were observed:

a. In version 7.7.2 SIS, some controls have been renamed; for example, Name became Name5, or Account became Accont2 on the applet where the script should operate on. Therefore the script, which was still searching for the previous names, could not find the controls.

Bug 12-U1WUOY was raised to address the control naming issue.


b. Calling .SetProperty("BgColor", "f0f0f0") failed.

This happened because SetProperty expects that the color value starts with a hash sign, for example: "#f0f0f0".
Bug 12-TRF8VL was raised to request that the hash sign is not mandatory.


c. Calling .SetProperty("BgColor", ...) fails for read-only controls. The background color gets overwritten by the gray background that indicates the read-only status.

Bug 12-U0U7I9 was raised to request the ability to set the background color of a read-only control.


Solution

1. Invoking a server-side business service

When adding client-side business services to the [SWE] section of the configuration file, ensure that the entries are numbered in a continuous way:
ClientBusinessService0 =
ClientBusinessService1 =
ClientBusinessService2 =
etc.

2. Browser script not being able to invoke another browser script

a. Control names changed in version 7.7.2 SIS.

Solution: Inspect the control names on the affected applets, and adapt the script to use these control names.


b. Calling .SetProperty("BgColor", "f0f0f0") fails.

Solution: The color string must start with a hash sign: "#f0f0f0".


c. Calling .SetProperty("BgColor", ...) fails for read-only controls.

Solution: The script can call .SetProperty("ReadOnly", "FALSE") before setting the background color. While this makes the control writeable, the underlying BC field remains read-only, and thus typing in other values has no permanent effect.


Additional keywords: Name5, Account2, Revenue2, City2, HTML color name, BackColor, sequential numbering, continuous numbering, ClientBusinessService


Show Related Information Related


Products
  • Siebel > Customer Relationship Management > CRM - Enterprise Edition > Siebel Tools
Keywords
GETPROPERTY; SEQUENTIAL NUMBERING; SETPROPERTY; BUSINESS SERVICES; READONLY; BACKGROUND COLOR; GAP; READ-ONLY

Back to topBack to top

seTimeOut - RefreshApplet Browser Script

A few tricks with setTimeout()
Filed under eScript Viewed: 1,347 times 1 Comment
(7 votes, average: 5.00 out of 5)
Loading ...
Vertex a quite well known reader of Siebel Unleashed has shared with a really interesting and useful article. This is a must read for everybody who is into Siebel configuration.
There is one function that, if used properly, could do some nice stuff on user interface. This function name is setTimeout() and it allows you to execute a browser script at some point in the future.
It takes two parameters:
a function to call
time to wait in milliseconds.
I’ll show you two ways of using this function, which are both implemented in our app.
Auto refreshing applet:
Let’s say we have a requirement to refresh certain list applet every couple seconds or so. Our shipment manager is rather lazy and is not particularly fond of manual and tedious requerying of pending shipments list applet
To reach this goal we might use setTimeout() to refresh the applet at equal intervals.
Open Browser Script editor on your applet and create a function:
function Refresh()
{
var oMyApplet = theApplication().FindApplet ("Your_Applet_Here");
if (oMyApplet) {
oMyApplet.InvokeMethod ("RefreshBusComp");
setTimeout ("Refresh()", 5000);
}
}

This function will find your applet and refresh it. It will also schedule itself to be reinvoked in 5 seconds.
The only thing left is to call this function for the first time. A perfect place to do it – Applet_Load event.
function Applet_Load ()
{
setTimeout ("Refresh()", 5000)
}

Flashing control/label:
Assume the requirement: draw user attention to a critical field if it has invalid or questionable data.
One cool way to do this is by making the field flashing red for example. We’ll start with creating our main function (Browser Script):
function Flash()
{
var oMyApplet = theApplication().FindApplet ("Your_Applet_Here ");
if (oMyApplet) {
var oMyControl = oMyApplet.FindControl ("Your_Control_Here");
if (oMyControl.GetProperty ("FontColor") == "#FF0000")
oMyControl.SetProperty ("FontColor", "#000000");
else
oMyControl.SetProperty ("FontColor", "#FF0000");
setTimeout ("Flash()", 200)
}
}

And to invoke this function for the first time:
function Applet_Load ()
{
Flash();
}
This way the field will flash red 2.5 times a second. You may enhance the script by adding data validation or even use gradient transition
You might as well flash the control’s label rather than the text. In order to do so you will have to add a control user property useLabelID with value TRUE and use oMyControl.SetLabelProperty instead of oMyControl.SetProperty.
Thanks a lot Vertex for such a wonderful article
Related Posts
Framework – addWeekDays
Framework – Write to File
It’s raining frameworks
Understanding Prototypes
Continue the loop
Variable declaration best practice?
Siebel Unleashed Poll Results
Visitors to this post, also read:
It’s raining frameworks
Siebel and System performance
Continue the loop
Siebel Unleashed Poll Results
Understanding Prototypes
Powered by Where did they go from here?
← Next post Previous post →
Article by neel
Authors bio is coming up shortly. neel tagged this post with: eScript Read 412 articles by neel
Loading comments...

Problems loading Disqus?
Glad you liked it. Would you like to share?
Facebook
Twitter
Share No thanks
Sharing this page ...
Thanks! Close

Login options




About Disqus
Login
Add New Comment
Showing 1 comments
Sort by Oldest first Subscribe by email Subscribe by RSS dude siebel 3 months ago

Good article, but does it work for Server scripts as well?, can i use this against a buscomp events?
As an Example, refresh a applet until the child record is updated?,
Flag
Like Reply Reply
Trackback URL http://disqus.com/forums/siebel/a_few_tricks_with_settimeout/trackback/
blog comments powered by Disqus
Search




Polls
Should I merge Interview Site in main website?
Yes, Merge Interview site and create category in main site. (59%, 138 Votes)
No, Keep interview site seperate. (41%, 94 Votes)
Total Voters: 232
Loading ...

Subscribe
Enter your e-mail address

Recent
Comments
Tags
Calculated field and Picklist
Query and QueryBiDirectional
Framework – addWeekDays
Framework – Write to File
It’s raining frameworks
Lockerz Redemption
EAI Siebel Adapter-Query Page
Identifying SRF differences
Understanding Prototypes
Chanks on Query Problem in Siebel
Gaurishaks on Siebel EAI and XML
princemain on Query and QueryBiDirectional
neelmani on Query and QueryBiDirectional
Pankaj Juneja on Query and QueryBiDirectional
Alfounet on esd bhd and ctd–trio that makes Email Marketing server work.
Toxcct on Framework – addWeekDays
neelmani on Framework – addWeekDays
Toxcct on Framework – addWeekDays
abs framework audit trail Best Practices Case Study Configuration Data Source Downloads EAI eScript Forum framework Functional Siebel How To Informatica Introduction I Wish I Knew Jobs List of Values Logs Metalink Office Humor Oracle MetaLink Performance personal Problem Solutions Product Configurator Runtime Events Scriptless Siebel siebel Siebel 8.0 Siebel Admin Siebel Administration Siebel Analytics Siebel EAI siebel performance Siebel Testing Siebel Tools Signals SQL Tips User Properties User property Web Services workflow Workflows

Archives
July 2010 (3)
June 2010 (6)
May 2010 (4)
April 2010 (11)
March 2010 (3)
February 2010 (12)
January 2010 (9)
December 2009 (3)
November 2009 (11)
October 2009 (8)
September 2009 (5)
August 2009 (6)
July 2009 (15)
June 2009 (13)
May 2009 (5)
April 2009 (8)
March 2009 (9)
February 2009 (4)
January 2009 (5)
December 2008 (7)
November 2008 (8)
October 2008 (11)
September 2008 (9)
August 2008 (20)
July 2008 (19)
June 2008 (21)
May 2008 (23)
April 2008 (16)
March 2008 (20)
February 2008 (23)
January 2008 (23)
December 2007 (14)
November 2007 (22)
October 2007 (41)
September 2007 (10)
Friends
Alex’s Siebel Blog
Impossible Siebel
Categories
Back to Basics (5)
Best Practices (4)
Case Study (30)
Check In -Check Out (1)
Configuration (69)
Downloads (18)
eScript (68)
framework (4)
Functional Siebel (2)
Got Problems??? (3)
How To (57)
I Wish I Knew (7)
Informatica (2)
Introduction (6)
Jobs (2)
List of Values (4)
Non-Siebel (11)
Office Humor (4)
Oracle MetaLink (11)
Problem Solutions (50)
Product Configurator (9)
Project Management (1)
Questions-Answers (1)
Runtime Events (2)
Scriptless Siebel (5)
Siebel 8.0 (8)
Siebel Administration (7)
Siebel Analytics (5)
Siebel Data Source (3)
Siebel EAI (36)
Siebel Logs (7)
Siebel Testing (4)
Siebel Tools (16)
Signals (2)
Smart Scripts (1)
SQL (7)
Uncategorized (4)
User Properties (8)
Web Services (11)
Workflows (15)
Most Voted
Siebel CRM – Back to Basics (Siebel Architechture). - 56 votes
Apply and Activate button in Siebel Tools - 45 votes
Siebel Enterprise Integration Manager (EIM) – An Overview. - 32 votes
Siebel CRM How to – Configure a Join. - 30 votes
Siebel Analytics an Overview - 25 votes
Most Viewed
High Interactivity Framework Problem. - 17,940 views
Siebel CRM How to – Configure a Join. - 16,639 views
Siebel EAI – An Overview. - 16,104 views
Siebel CRM – Back to Basics (Siebel Architechture). - 14,177 views
Siebel How To – Create Inbound and Outbound Webservice? - 13,723 views
Siebel Interview
How to enable a particular child entity?
Make record editable for some and read only for some?
What is difference between Siebel Browser Script and Server Script?
How to invoke Smart Script on click of a button?
difference between External and Internal IO?
Oracle BI
Merge and Hash Joins in Oracle
Clear button for Default Prompts
Insight of OBIEE Architecture-II
Insight of OBIEE Architecture
Refresh Prompts while navigating Dashboard Pages
Siebel Unleashed is proudly powered by WordPress. Entries (RSS) and Comments (RSS) | Swift by Satish Gandham a product of SwiftThemes.Com
Tools
Wiwi Title

Powered by
Close window
Recent posts
Recent posts
9 Online
View real time stats (popular posts, dynamic map)

Online

Donate
Make a donation to us

Donate

What is this?

Wibiya

Last Notification
New On Twitter

Dashboard

Share
Share This Post
Subscribe to our RSS feed
Subscribe to our RSS feed

Subscribe to our RSS feed


Click Here to Share

A few tricks with setTimeout() | Siebel Unleashed

Facebook

Twitter

MySpace

Digg

Buzz

Email

Digg

Reddit

Twitter

Facebook

Google

Linkedin
Powered by Wibiya and AddThis

Thanks & Regards

Vivin M. Deshpande
Siebel Consultant
IBM India P Ltd
Mob: 9986608421

Wednesday, July 7, 2010

Calculated field and Picklist


Today Pankaj Juneja a reader of unleashed is sharing a case study where a Picklist on a calculated field helped him solve a problem.


Many of us know that a calculated field can be made editable by putting a pick list and a pick map to it. I always use to think that what’s the use of Calculated Field by making it editable by showing a pick list when a user really can’t do anything much with it.

Recently I came across a problem in which I used it to save myself from a tricky situation. I was usingS_ORG_EXT_ XM table to build a new entity which is having 1: M relationship with Account. We used most of the ATTRIB columns rather extending table. There was one field where we used LOVs to display Data to user. As per client coding standards, we were supposed to store LIC value in tables and show display values since the Application was supposed to go Multilingual in coming years. Since I was not aware of this standard and I placed an LOV on field based on ATTRIB and stored display value in column.

I was using the below config , which is straightforward :

clip_image002

Picklist config –

clip_image004

When we realized this problem, I was suggested to make it Multilingual by giving Translation Table Nameat column level but I realized that since it’s a reusable table (S_ORG_EXT_XM). Tomorrow someone else can use it for some other entity and if I give Translation table, then that column will be useless for that developer since it won’t accept values other than those LOVs. More over its OOB table so doesn’t wanted to touch it as it might hamper Application upgrade.

I just quickly analyzed that now calculated field can be used here. Here is how it worked for me.

Remove pick list from existing field, place it on calculated field.

clip_image006

A Calculated Field Looking up LIC and having Pick list with 2 Pick Maps.

Now expose the above Calculated Field in Applet rather Actual Field. This will always show Display Value to User and behind the scenes store LIC in table via Pick map. Even Query, Sorting worked fine.