Tuesday, December 17, 2013

Interview Question: FieldEdit vs FieldChange

FieldEdit and FieldChange are two events that are triggered when a user changes the contents and leave a field on the page.

So why do we need two events after the field content is modified?

We know that FieldEdit is usually used to perform validations  other than standard system edits (such as Required, data type etc) and FieldChange is used to recalculate page field values.

What happens if I use FieldEdit to recalculate the page field values or FieldChange for validations?

In order to understand the reason for why there are two events, we need to understand how the component processor handles field modification.

When a user modifies the field value and tab out (or leave the field), following processing happens in sequential order.

  • Standard system edits are performed .
  • If there are no system edit errors, FieldEdit event is triggered.
  • If there are no errors triggered from FieldEdit peoplecode, modification to the field value is accepted by the component processor and is updated to component buffer.
  • FieldChange event is triggered.
Note that during FieldEdit, content of the field is not accepted by the component processor yet. It is only after successful completion of the FieldEdit without any error message, the content of the field updated to component buffer. This is exactly why we are using FieldEdit for validation.

During FieldChange, field value is already accepted by component processor and is updated to component buffer, hence it make sense to recalculate any other dependent field values in FieldChange peoplecode.

I hope the difference is clear, now please answer my questions. :)

What happens if I use FieldEdit to recalculate the page field values or FieldChange for validations?


Wednesday, December 4, 2013

Upgrade Trainings on Oracle Learning Library

Oracle has posted a free PeopleSoft Upgrade training in Oracle Learning Library.

Course consists of three modules and enables you to prepare for the PeopleSoft Upgrade.

Here are the links for the training.

Getting Started on your PSFT Upgrade Training Module 1

Getting Started on your PSFT Upgrade Training Module 2

Getting Started on your PSFT Upgrade Training Module 3

PeopleSoft 9.2 Delivery Model : VFO from Oracle

In this 13 minute video, Paco Aubrejuan, Senior Vice President, PeopleSoft Products at Oracle, talks about the new PeopleSoft release/delivery model with PUM. This new delivery model offers a frequent and inexpensive upgrades to customers.

Tuesday, December 3, 2013

Interview Question: MessageBox in FieldEdit

For last few weeks I have been busy doing quite a lot of interviews for recruiting new members for my team. One of the common question I used to ask during the interview is this.

Question: I have a field on a page and there is a Field Edit PeopleCode associated with this record field. PeopleCode contains only one statement

MessageBox(0,"",0,0,"Message from FieldEdit");
However when the user changes the field value on the page, this message box is not displayed. What could be the reason? 

 I was surprised to hear different wrong answers. Few of those funny answers are listed below.
  • One of the junior consultant with around 3 years of experience in PeopleSoft told me that FieldEdit would be triggered only if the field is required. (I guess he derived it from the fact that FieldEdit is triggered after the system edits are validated)
  • One of them (with 5 years of experience) answered that there should be some code in FieldChange otherwise FieldEdit wouldn't be executed.
  •  Another gentleman said he is not sure about the reason but he would try to do PeopleCode trace and find out what the issue is.
So what is your answer? Isn't it obvious? :wink

Monday, September 23, 2013

Creating an Activity Guide : VFO from Oracle

Here is the last VFO of last week.

This time it is about Activity Guides, a powerful way to present business process to end users.


Friday, September 20, 2013

Why Upgrade to PeopleSoft SCM 9.2? : VFO from Oracle

Fifth VFO of the week talks about why customers should upgrade to PeopleSoft SCM 9.2



Mobile Time Entry : VFO from Oracle

They say the VFO team is on fire. And why not? This is the 4th VFO of the week.

It talks about the mobile time entry applications available in PeopleSoft.


Why Upgrade to PeopleSoft Financials 9.2? : VFO from Oracle

Third VFO of the week is an interesting one.

Why Upgrade to PeopleSoft Financials 9.2? Watch this short video.


eBill Payment : VFO from Oracle

Here is the second VFO of this week.

eBill Payment is part of PeopleSoft's credit to cash solution in Oracle's PeopleSoft Financial Management applications suite.


PeopleSoft Virtualization : VFO from Oracle

Oracle Information Development team have been busy this week and have been releasing at least one VFO per day. So here is the first one of the week.

This talks about the prebuilt virtual box images available for PeopleSoft 9.2 applications. A must watch for PS Admins out there.


Grants WorkCenter : VFO from Oracle


This is short video about the Grants WorkCenter in PeopleSoft Enterprise Service Automation 9.2 suite.


PeopleTools Patch 8.53.07 is Generally Available

Oracle released the PeopleTools Patch 8.53.07 this week. It is available for download via My Oracle Support.

How to download it from MOS

  • Login to My Oracle Support.
  • Click on ‘Patches and Updates’ Tab.
  • In Product Or Family (Advanced), Select Product =‘PeopleSoft PeopleTools’,   Release=”PeopleTools 8.53”, Search. 
  • Select the 8.53.07 patch, Download Patch Zip file.

Tuesday, September 10, 2013

Various IDs in PeopleSoft

You might have come across various Ids used to for signing on to PeopleSoft Application. User Id, Connect and Access Ids are most important of them. So what are they? What do they really do?

Here is a brief description of various Ids

User Id

The User Id is the ID associated with the individual user logging onto the PeopleSoft application, via PeopleTools.Validation of this ID is performed by the PeopleTools themselves at log-in time, by virtue of verifying that a row has been defined in the PSOPRDEFN table for this ID. The row in the PSOPERDEFN table contains information pertinant to PeopleSoft internal security administration, such as the access profile defining what areas of the application this ID will have access to, and a link to the ACCESS ID (defined later) associated with the UserId.

Connect Id

The Connect Id is the actual ID that makes the initial log on connection to the database.It requires SELECT ONLY access to three tables: PSSTATUS, PSOPRDEFN, and PSACCESSPRFL.Once the row is located in PSOPRDEFN associated with the User Id entered, the associated Access Id is validated within PeopleTools, and the Connect Id is disconnected, and the Access Id is logged on.

Symbolic Id

The Symbolic Id isn't really an Id at all, but is referred to as such in the PeopleTools documentation. The Symbolic Id provides the "link" between the row containing the User Id in table PSOPRDEFN with the row containing the corresponding Access Id and Password in table PSACCESSPRFL. The Symbolic Id field is a regular field on table PSOPRDEFN and the key field on table PSACCESSPRFL. For each Access Id defined, you should define a unique Symbolic Id within the PeopleTools table PSACCESSPRFL. The Access Id is associated with the unique Symbolic Id in table PSACCESSPRFL, and the Symbolic ID is then linked with the specific User Id in table PSOPRDEFN, by updating the PSOPRDEFN.SYMBOLICID column.

Access Id

The Access Id is the ID under which all DML is initiated.

Sunday, September 8, 2013

Compare data from tables in 2 databases / MS SQL Server

Here is the SQL to compare the differences in the data in different tables with same structure. Will be helpful for comparing the data between databases. This works in MS SQL Server if both databases are on same server or if there is a linked server configured for the other database.


SELECT  * FROM
(SELECT Max(TableName) AS TableName, FIELD1, FIELD2, FIELD3
FROM (SELECT 'HRDB1..PS_MY_RECORD' AS TableName, FIELD1, FIELD2, FIELD3
FROM HRDB1..PS_MY_RECORD
UNION ALL SELECT 'HRDB2..PS_MY_RECORD' AS TableName, FIELD1, FIELD2, FIELD3
FROM HRDB2..PS_MY_RECORD ) A
GROUP BY FIELD1, FIELD2, FIELD3
HAVING COUNT(*) = 1) A
ORDER BY 1
 
Replace table names, database names and fields list accordingly.

Compare Report in CSV or HTML format

Most of us know how to do compare projects in Application Designer. But how do we take the compare report in CSV or HTML format?

Here is an article which talks about Compare Report in CSV or HTML format.

Tuesday, August 20, 2013

PeopleSoft In-Memory Project Discovery : VFO from Oracle

Yet another VFO from Oracle. This time around it is about the PeopleSoft In-Memory Project Discovery. An excellent tool which could make the project operational metrics and  financials much simpler.

Wednesday, July 24, 2013

ELM Full Sync Integration Guided Process : VFO from Oracle

Oracle have posted a VFO on ELM Full Sync Integration Guided Process.

Watch it here.



New PeopleSoft Video Feature Overview (VFO) Homepage

As you might know already, VFOs are short and concise videos which demonstrates new functionality in PeopleSoft Applications.

Oracle's PeopleSoft Info Dev team have launched a new home page for PeopleSoft VFOs here.

Check it out.



PeopleTools Patch

Oracle had released new patches for PeopleTools 8.51, 8.52 and 8.54 last week.

All of the below listed patches are available via MOS.

PeopleTools 8.51.24
PeopleTools 8.52.17
PeopleTools 8.53.05

So are you gonna apply PeopleTools patch yet or have you applied it already?

Wednesday, July 10, 2013

PT 8.53 Integration Network : VFO from Oracle

Here is yet another interesting Video Feature Overview from Oracle. This time, it's on PeopleTools Integration Network in PeopleTools 8.53.

Tuesday, July 2, 2013

Shortcut for Record Field name

Since there is no code completion feature available in PeopleTools App designer (at least as of PT8.53), we need to write the complete record field names when we want to use them in the PeopleCode.

For example if you would want to set the style property of the field, then you would need to write,

JOB.POSITION_NBR.Style = "PSERROR";

If you are writing the piece of code in any events associated with JOB.POSITION_NBR field, then you can write ^ (caret) instead of the record field name. Upon saving the PeopleCode, ^ (caret) will be converted to the record field name.


^.Style = "PSERROR";

Friday, May 31, 2013

PeopleSoft Update Manager Trainings

As most of us already know PeopleSoft Update Manager (PUM) is the new Lifecycle Management Process for PeopleSoft 9.2 Applications. PUM simplifies and eases the process of maintenance and update of PeopleSoft Application though Change Assistant would still remain as the core tool used for updates/upgrades.

Yesterday Oracle posted  some trainings on PUM in its Learning Library. Following are the trainings available for all.

Module 1: Installing VirtualBox and Setting Up the PeopleSoft Image

Module 2: Configuring the Client Machine

Module 3: Creating a Custom Change Package with PeopleSoft Update Manager

Saturday, May 25, 2013

PeopleTools Patch 8.53.04 is Generally Available

PeopleTools Patch 8.53.04 is available to customers via MOS (support.oracle.com).
Note that the patches are no longer available via FTP site.

Thursday, May 23, 2013

HCM 9.2 Pivot Grids : VFO from Oracle

Here is an interesting VFO from Oracle on Pivot Grids in HCM 9.2

RowDelete Processing Stops mysteriously

Last week I was investigating along with my colleague on an issue in Position Information in Job Data Component, we came across a strange scenario.

In order to fix the issue we had added a piece of code in RowDelete event in one of the fields of JOB  record (Lets call it FIELDXYZ in the rest of this post). Interestingly our code was not triggered even if the rows are deleted from the scroll.

Newly added code in JOB.FIELDXYZ.RowDelete looks like this.

 
If Condition1 And Condition2 And Condition3 Then
    Do THIS;
End-if;

Initially we thought some of the conditions in the "IF" construct are not met and that is why our code was not triggered. As a next step we issued a MessageBox/Winmessage at the beginning of the code (outside IF) to confirm if the RowDelete event itself is executed or not. Result of that trial confirmed that the RowDelete event for the Field was never executed.

So what went wrong? We continued our analysis, went one step ahead and added a MessageBox/Winmessage in the RowDelete event of the field just above the FIELDXYZ. Again this code was also not executed.

Next time MessageBox/Winmessage statement was added to the last RowDelete code(Lets call it FIELDLAST RowDelete code) before FIELDXYZ. This time the code was executed and the MessageBox was popped up.

On analyzing the existing code in the last RowDelete event, we found that the issue happenes when a warning was triggered in RowDelete event. If a warning is issued RowDelete processing stops  no matter what button (OK or Cancel) the user clicks.

We haven't yet uncovered if this is PeopleTools bug or desired functionality. I will update you guys once I have a confirmation.

Sunday, May 5, 2013

How to enable multi-language entry

Last week one of my colleagues asked how we can enable multi-language entry dropdown for a user (as displayed in the image below).

multi-language dropdown


I'm aware most of us know this already but I'm posting this for those who don't know it yet.

So this is how it is done.

You can enable multi-language entry for a user from 'General Options' category of 'My Personalizations' page in Main Menu.

my personalizations


Thursday, March 7, 2013

Deleting files in a folder using PeopleCode

Almost everyday I spent some time to go through the posts in various PeopleSoft forums like ITToolbox. This helps me to learn new things, I can help others and get help when needed.

Similar to my previous post, this is also related to a question asked on this forum.

Question: How to delete a file through peoplecode through AE process?

Answer: Here is the PeopleCode which will do this.

 Local array of string &fNames;  
 Local file &myFile;  
 Local String &dir;  
 &dir = 'F:\Temp\' | %DbName | '\Email\UTI0XX\*';  
 &fNames = FindFiles(&dir, %Filepath_Absolute);  
 While &fNames.Len > 0  
 For &i=1 to &fNames.Len  
 &myFile = GetFile(&fNames.[&i], "w", %Filepath_Absolute);  
 &myFile.Delete();  
 End-For;  
 End-while;  

PeopleCode as Plain Text

Until recently I didn't realize that there is a table storing PeopleCode as plain text in recent PeopleTools versions. Table name is  PSPCMTXT. Find In feature of Application Designer has been troublesome when the scope of the search is broader hence this new table would make the life of developer much easier when searching for text in PeopleCode. I guess this was introduced from PT 8.5 onwards.

One point to note is that when the PeopleCode text is large in size, it is divided into multiple chunks and stored as multiple rows of data in this table.

Tuesday, March 5, 2013

How to check if a file is editable in PeopleCode

How do we check if a file is editable in PeopleCode? This was a question asked in ITToolbox forum.

We can do this easily using Java File class object.



 &myFileToCheck = "C:\Temp\MYFILE.TXT";  
 Local JavaObject &file = CreateJavaObject("java.io.File", &myFileToCheck);  
 If &file.canWrite() Then  
   /*Normal processing*/  
   MessageBox(%MsgStyle_OK, "", 0, 0, "File is editable!!");  
 Else  
   /*Error processing*/  
   MessageBox(%MsgStyle_OK, "", 0, 0, "File is Read Only!!");  
 End-If;