Thursday, July 26, 2012

Things to remember while writing an AppEngine or Batch Process

When writing any batch process typically two operations will be performed on the database either Insert or Update in the tables. Most of the batch processes will fail on these update & insert statement.

 Typical batch process errors are : Can update value to Null, Unique constraint error ..etc


While inserting or updating a table we should remember couple (or more) of things.

While Updating:
 1. Check the row already existed  target table by using Exist or In operator.

 2. In some case we need to write sub-query to update the value, at sometime the subquery may  not result  a value & if the target field can't store blanks, the process will result in failure. Inorder to eliminate this kind issue use NVL or NVL2 functions outside sub-query

  for eg:- Update TBLA set TBL.FIELD1 = NVL((select TBL2.FIELD2 from TBL2),' ')

While Inserting:

1. Check any null values from Source table are inserting into a non-null value field in the target, then use NVL ,NVL2, case or Decode functions. Know the use these functions & use it in proper situation.

2. Check the row already existed in target table by using Exist or In operator.

3. Check any duplicate values exist in Source table itself  while inserting into target table. This one is most people will forget doing.

Monday, June 18, 2012

PSQuery Drill Down in PeopleSoft 9.1

Oracle has introduced new feature from PeopleTools 8.50 inorder to help users to navigate from PSQuery results to a particular PS Page , External page , Query  or attachment.

To Link PS Query results to particular component follow below steps:

1. Create a New Expression & Expression type as Drilldown URL


2. Click on the Component URL to select the particular component you want to link.
   
       1. Select component
       2. Click on search keys button to see the search key values for the component.
       3.  List of search keys for particular component
       4. Select the fields from ps query to map the component fields
       5. Select the fields which you want to provide a link in ps/query

 3. Final output PS Query result below. Click on the link below it will open a new window with the selected component.


    Security: If the user doesn't have security to the target component. it will end up showing not authorized message.

Similarly you can link query with antoher query or external URL and attachement.
:-)

Thursday, May 31, 2012

[Resovled:]Bugs in Portal Related Content Service PeopleTools 8.51

When working with Portal Related Content Service with PSQuery found couple of bugs.

1. If PS query has input parameters & when defining a service for Related Content click on Populate Parameters. Its populates the parameters but will not able to save page with below error. The is a known issue to Oracle & Oracle fixed this issue PeopleTools 8.51.15 but I am not aware of what's the fix is.

Fetching array element 2: index is not in range 1 to 1. (180,252) PTCSSERVICES.GBL.SavePostChange  PCPC:676  Statement:7 .

 Resolution1: We can manully enter parameters insteads of clicking the button.  
                                     or 
  
 Resolution2: With this change you can click populate parameter button  to puplated parameters

                  added the below code (in bold letters)  to existing peoplecode in PTCSSERVICES.savePostChange

 Local array of string &vals = Split(&params_del [&i], ":");
 Local boolean &found = False;

 

 If &vals.Len >= 2 Then             !Added inorder to fix delivered bug
                      .
                      .
                      .
         If Not &found Then
             SQLExec("DELETE FROM PS_PTCS_MAPFIELDS WHERE PTCS_SERVICEID = :1 AND  

                   PTCS_PARAMETERNAME = :2", &vals [1], &vals [2]);
         End-If;

 end-if;
        

2. When trying to link PS Query to component basically will map key values on search record to PS Query input values. But if component search record keys are in subrecord & we will not be able to map keys to PS/query. for example : Saving Plan page in HCM (Benefits > Enroll in Benefits >Saving Plan).

Resolution:Inorder to fix this issue we modified the peoplecode to look at psrecfieldall table instead of psrecfield table in Related Content.