The views expressed on this blog are my own and do not necessarily reflect the views of Oracle.

Wednesday 31 July 2013

Top 10 Innovations in PeopleSoft 9.2 – 1 PeopleSoft Interaction Hub

With the release 9.2, you can use the PeopleSoft Interaction hub as the single point to navigate to all your PeopleSoft applications and perform other tasks as you do in a typical social networking site. The unified navigation comes with the PeopleSoft security, branding, global search and more. The Interaction hub provides you with the option of having Wikis, Workspaces, Discussions, Blogs and Tags. All these new features are highly configurable to fit into your business space. The good news from Oracle is “A restricted use license of the PeopleSoft Interaction Hub is available to all PeopleSoft application customers free of charge.”

Want to see a demonstration of the new Interaction Hub? Check out the video below.

Monday 29 July 2013

Printing Bar Codes with SQR

Sometimes the life of a clerk is made easy by making a barcode available into your reports. For instance you can think of invoices sent to customers or expense report receipts collected from your employees having barcode enabled. This allows you to easily attach a physical document with an electronic document residing inside your system.

You can have this feature in PeopleSoft with the help of SQR programs. Typical implementation of a barcode to one of your reports is an easy task provided you already know the barcode standard that need to be used. The function print-bar-code in SQR prints a barcode of your specified type and data.  SQR supports 15 different types of barcodes. The supported types are

Text Length
11, 13, or 16
11, 13, or 16
12, 14, or 17
7, 9, or 12
3 of 9 (Code 39)
1 to 30
Extended 3 of 9
1 to 30
Interleaved 2 of 5
2 to 30
Code 128
1 to 30
1 to 30
Zip+4 Postnet
5, 9, or 11
MSI Plessey
1 to 30
Code 93
1 to 30
Extended 93
1 to 30
1 to 30

The barcode generation syntax is made as simple as possible.  You can take a look at the syntax provided below. For more details on barcode generation and other SQR functions, you may refer the PeopleBooks on that topic.


The TYPE will take a value listed in the table above which will create an appropriate barcode. The HEIGHT parameter will set the height of the barcode printed. If you are trying to print a barcode for an expense report in the system, then the unique id or the expense report id should be set to the property TEXT. CAPTION is an optional property, if you want the expense report id to be printed along with the barcode, then you may use this property. I advice to use this always to be in a safer position, if by mistake your barcode reader fails or if the image is faded, then you can easily identify the transaction in database with the caption text. CHECKSUM property takes a Yes or No value to compute and print the checksum.

I have mentioned about the usage in an expense report, let us see how the code will look like for this use case.

   print 'Nicoles Expense Report’ (1,1)
   print-bar-code (3,1)
      type=1                                              ! Type = UPC-A
      height=0.3                                      ! Sets the height
      text=’ER345’                                  ! Unique id to distinguish the expense report
      caption=’ER345 Nicole USA’       ! Meaningful information to identify the database transaction manually


Sunday 28 July 2013

Creating Charts in PeopleSoft

Pictures often speak louder than a text data. If you have page which contains huge list of numeric data, then it will be much better read if the data is converted into an appropriate chart. Also it will be very easy to identify high level information from a chart than a grid or scroll. PeopleSoft offers different types of charts that can be added to your application to make meaningful information.

Some of the chart types offered in PeopleSoft are Bar Charts, Stacked Bar Charts, Gantt Charts, Pie Charts, Bubble Charts etc.

If you have the well formatted data upfront, then creating charts is a simpler process. I will just outline the bare minimum steps required to create a chart on a PS Page.

Step 1: Open the page in application designer and place a chart control on the page.

Step 2: Open the chart properties and assign a record field to the chart. Work record will be the best fit for this.

Step 3: Write the code to initiate the chart. You can consider PageActivate event for this. The pseudo will be as below.

Local Chart &Chart;
Rem Get the chart based on the record field associated in step 2.;
&Chart = GetChart(RECORD.FIELD);
Rem Specify the data source record;
Rem Set X and Y axis for the chart;

You can now customize the look and feel of the chart using the delivered properties & Methods of chart classes such as
1.       SetXAxixLabels – To set the label for X axis.
2.       SetYAxisLabels – To set label for Y axis.
3.       SetLegend – To set legends for the data colors.
4.       SetDataURLs – To open another page when clicking on a data in the graph.
5.       SetDataHints – To show hints for data points on chart.
6.       SetDataColor – To change the color of the data points.
7.       Type -  This property will determine the type of the chart. You can refer the below table to set appropriate value for the chart you desire.
Two-dimensional bar chart
Two-dimensional stacked bar chart
Two-dimensional percent bar chart
Two-dimensional stacked horizontal bar chart
Two-dimensional line chart
Two-dimensional histogram chart
Two-dimensional pie chart
Three-dimensional bar chart
Three-dimensional stacked bar chart
Three-dimensional pie chart
Two-dimensional horizontal percent chart
Three-dimensional percent bar char
Two-dimensional horizontal bar chart
Scatter chart
Bubble chart

You can even consider creating Pivot Grids for simple data sets, so that it requires no coding and provides more efficient way for creating and using charts. To read on creating pivot grids, read my previous post on the subject.

Wednesday 24 July 2013

Popup Menu

PeopleSoft provides an option to process extra logics or page transfers without disturbing your existing page real estate with the help of pop-up menus. This will be of very much help if your page is already complex and cluttered with so many objects. If you are on PeopleTools release of 8.52 or higher, you have got a much better alternative to popup menu called related action (click here to read more about related actions). However for institutions still running on lower tools release, this will be of much help.

You can associate a popup menu to an existing field on your page, so that a small popup icon appears next to that field. Clicking on it will open the list of menu items defined in a modal page. You can select the action/component from the modal page so that you are transferred to a new page or your business logic is executed.

Configuring or creating a popup menu is an easy task. You can follow the seven easy steps to implement a popup menu for your page.

       Step 1: In app designer go to File > New and select Menu

      Step 2: On the option that follows select Popup.
      Step 3:  Double click on the menu to add an item to the popup menu. This is similar to adding a component or bar item to a standard menu.

     Step 4: Select the type of action. If it is a simple transfer to a new page, select Transfer. If you are planning to execute your code, then select PeopleCode.

     Step 5: If you have selected Transfer option, then provide the details of the page, menu, component and action.

    Step 6: If you have selected PeopleCode option, then right click on the menu item and select View PeopleCode. It will open the Menu Item selected PeopleCode event. Write the logic or code you plan to implement over here. You can use PeopleCode option to recalculate any amounts or any other similar activities.

     Step 7: You have successfully created a popup menu. Now you need to add it to a page field. For that open the Page Field Properties of the field you plan to implement the popup menu. Go to the Use tab and provide the name of the popup menu you have just created in Popup Menu edit box.

With the seven steps you are done with the implementation of a popup menu, you can go ahead and test the page now J .

Sunday 21 July 2013

Application Engine SQL Actions

Application Engine (AE) is a powerful tool delivered by PeopleSoft which can replace COBOL completely and SQR’s partly. With AE’s you will be able to lots of works. But one of the common mistake seen across the industry is that people are not sure about the features of an AE and they just see it as a process which can be scheduled to execute PeopleCode.

If you have seen the application engines created at customer site, 80% of them will have a Do Select statement, which selects the row and a PeopleCode action which will either insert/update the data using a CI or some SqlExec’s which will insert/update the data.

I wonder why people don’t use the other actions available in the application engine, which if used could save time, effort and improve the performance of the process. I believe it is because of lack of training related to PeopleSoft Application Engine. With this post I would like to provide an overview of SQL actions available in PeopleSoft Application Engine’s so that those who are not familiar of AE’s can think of using it when you are designing an Application Engine. There are separate properties for the SQL actions, but I’m not going to describe it here. If you are looking for details on any specific action, please feel free to put your question in the comments section.

Do When Action

This action can be related to an IF statement. The Do When is true when the sql inside the action returns any one row. If the Do When action is true, then the application engine will execute actions following the Do When, otherwise it will skip to next Step. Think of using this statement if you have a requirement when you need to check a flag in database table (most used will be installation tables) and based on the flag you need to insert or update values into database. You can use Do When to check the flag and then use sql actions for insert or update. Do not think of using this action if more than one step in your process requires this same check. In such scenarios select the value to the state record and use peoplecode action to branch out. This will eliminate duplicate database trips.

Do While Action

If you want to put a loop on your PeopleCode/SQL actions based on a value in the database tables, then this is the best action for you. The DoWhile action will execute whenever your sql select statement inside the action returns a row. So make sure that the flag which you are checking for looping with DoWhile is turned off by your SQL or PeopleCode actions whenever you condition is satisfied. Otherwise you Do While will go for an infinite loop.

Do Until

This action is same as your Do While action, only difference is that it will check for the conditions only after executing all other actions. What it means to you is, your Do Until executes at least once even if the condition in the sql is false. Use this looping mechanism if you wish to execute your actions at least once.

Do Select

I think you needs no explanation for this, because almost 90% of you will be using Do Select actions. You can consider this action if you want to select some data from db tables and process it row by row. Typically, your do select should exit execution once it selects all the rows from db tables based on the conditions specified in the SQl. But still the behavior can vary based on the properties defined for the action, it can even go for an endless loop of select statement if not carefully coded.

Sql Action

SQL action is to execute any database statements like select, insert, update, delete etc… This action will directly interact with database and execute your sql statements. Although this action is dedicated for sql’s I see people tend to write SqlExec() function inside PeopleCode action. This is a wrong trend and I think they try that because they need to execute multiple sql’s. In such scenarios you can think of creating a new section with multiple steps which executes all your sqls in SQL action and you can think of calling the section from the base section. Alternatively you can think of using %Execute() meta sql for executing multiple sql statements.

All these actions I have mentioned here are related to SQL’s only. There are other powerful and targeted actions available in AE are including PeopleCode, Log Message, Call Section and XSLT.

Setting Date Variable to Null

This is a simple technique and I’m sure most of you might be already aware of this. But I thought of posting it here as I receive queries regarding the same from colleagues and online forums.

There might be situations where you need to assign a null value to a date field. But if you try assigning the null value directly, you will get a compile error from the PeopleCode editor. Unlike other variables, you are not supposed to assign a null variable directly for a date variable.

Now the question is, how will you then make the variable null. The answer is simple. You can use the built-in function Date() to assign a null value to the date variable. See the example below.

Local Date &dMyDate;
Rem Assign the variable &dMyDate with Null Value;
&dMyDate = Date(0);

So far so good. The above technique will work only if you are concerned with PeopleCode. Now let us think of other scenarios such as sqls from PeopleCode, application engines etc. The use case you wanted is to insert a null variable to the database. You can do it very well if you use the syntax supported by the database. But what if you are not sure about the database? Are you planning for a switch in database?

Well in such cases, you can rely on the metasql’s delivered by PeopleSoft. You have one such metasql to insert null values. For this use case you can very well use the metasql %DateNull.

Saturday 20 July 2013

PeopleSoft Cumulative Feature Overview

Are you planning to upgrade your PeopleSoft application? Then this will be a handy to have with. PeopleSoft releases a tool which will list all the features or changes that have gone in with various releases called PeopleSoft Cumulative Feature Overview.

This tool is an excel sheet with macro enabled. Oracle releases the cumulative feature overview tool for various product lines. When you open the sheet, you can select the module, current version and target version, and then click on Run Report button. The excel sheet will then list of all the features with a brief description and the release in which the change has gone. The tool contains feature gaps from release 8.3/8.4 to 9.2 releases.

This tool is available for all the customers from the Oracle support portal. You need to have the Oracle single sign-on user id and password to download the tool.

Below is the list of cumulative feature overview tools released by Oracle for various product lines. Clicking on the link will directly take you to the support document.

Ø  FMS, ESA, and ALM Cumulative Feature Overview Tool [ID 793151.1]
Ø  PeopleTools Cumulative Feature Overview Tool [ID 793143.1]
Ø  HCM Cumulative Feature Overview Tool [ID 793135.1]
Ø  SCM and SRM Cumulative Feature Overview Tool [ID 793155.1]
Ø  EPM Cumulative Feature Overview Tool [ID 793148.1]
Ø  Portal Solutions Cumulative Feature Overview Tool [ID 793160.1]
Ø  CRM Cumulative Feature Overview Tool  [ID 793147.1

Tuesday 16 July 2013

Controlling PeopleTools delivered Action Buttons

Each of the components you create in PeopleSoft has its own business case and user expectations behind it. You might want to allow user to save the pages for some components, in some cases it should be display only. There are scenarios where user coming into a component needs to go through the next or previous items listed in the search page without going back to the search page. Sometimes for some selected components user should be able to go back to the search page by clicking Return to Search button, but for some components it is not desired.

The question is how to enable or disable these buttons to the actual page which user sees. To address this scenario PeopleSoft has delivered some kind of facility by providing the options in the component properties in the Internet tab.

PeopleSoft Component Internet Properties

But these features may not be handy in all the scenarios. Enabling these properties will be static and will be applied across the components. What if you have a scenario where you have five pages in the component and you want to Enable the Save button for one page and not for the rest of the page?

In such cases a work around would be handy. You can do that feature with the help of an HTML area and javascript. Suppose your requirement is to hide the delivered Save button from a particular page in the component. Then all you have to do is to add an HTML area to that particular page. Select the properties of the HTML area and select the option Constant. Now insert the following piece of script into the script area as shown below and save the page. That’s it you have successfully customized that particular page in the component to hide the Save button.

<script language="javascript">
document.getElementById("#ICSave").style.display = 'none';

HTML area and JavaScript

Replace the code with the below piece of codes to hide other Tools delivered action buttons.

Add Button

<script language="javascript">
document.getElementById("#ICAdd").style.display = 'none';

Update/Display Button

<script language="javascript">
document.getElementById("#ICUpdate").style.display = 'none';

Return To Search Button

<script language="javascript">
document.getElementById("#ICList").style.visibility = "hidden";

Notify Button

<script language="javascript">
document.getElementById("#ICSendNotify").style.visibility = "hidden";

Sometimes this page can be associated with multiple components and you want to hide the button in one component and not in another component. In such cases you can assign the HTML area to a record field and assign the HTML code dynamically using PeopleCode.

Even though you have these workarounds available, I advice to use it only if you do not have any other choice. Even if you use it, use this only for your Custom pages. If you modify the delivered page, it may impact your application support. The main drawback with this approach is, your page have a chance to get broken when you do a PeopleTools update or when you change your style sheets. As long as you have tested with your current page and the Tools release is going to be the same, you are somewhat in a safer zone.

So what are other safe options available? One option you can consider is to create your own custom buttons for Save, Add etc and disable the corresponding tools buttons from the component properties. Now you can hide or unhide these buttons using normal PeopleCode. But yes, this method comes with its own difficulty of writing the desired code for each of the functions to which the buttons are tagged. If you are planning to place these buttons on a delivered page, it is going to be considered as a customization and be aware of it.

I know this is not the end of the road. If you have any better alternative of achieving these functionalities, feel free to drop in your ideas in the comments section.

Sunday 14 July 2013

Creating Dashboards in PeopleSoft

Dashboards are another additions to PeopleSoft innovation suite. PeopleSoft dashboards are container components to host multiple pagelets. These dashboards can be hooked up to a workcenter as a landing page or can be registered as a portal structure like other PeopleSoft components.

Dashboards act as a onestop place to display the key metrics/actionable items that a logged in user should be aware of. Usually a dashboard can comprise of multiple pagelets displaying variety of information. The contents of pagelets can vary in nature; it can be a Pivot Grid, Charts or PeopleSoft Components which collectively display meaningful data pertaining to the module and the role of the user.

Creating a PeopleSoft dashboard is a simple process if you already have your pagelets ready. For creating Pivot Grid or PeopleSoft component pagelets, refer my previous post on the topic. Click here for getting the steps to create a fresh workcenter.

Step 1: Navigate To: People Tools > Portal > Dashboard > Manage Dashboard Pages

Click on the link Create a new dashboard page. On the page, provide the details of the dashboard such as Name, Folder Navigation and Access and save the page.

Step 2: Once you save the page you will be taken back to the main page where you can see your dashboard listed among other dashboards. Now click on Pagelets button corresponding to your new dashboard. You can see a list of pagelets available to you under different folders corresponding to the functional areas. All you need to do is to check the pagelets that are required for your dashboard and click on the Save button located at the end of the page.

Step 3: By the step 2, you have completed the creation of the dashboard. All you need to do now is to configure it for each users. Go to the folder in the portal navigation where you have registered your dashboard in step 1. You can see that an empty page opens up. This is because you still have not configured the dashboard for a user.

To configure the dashboard, click on the Personalize Content hyperlink at the top right corner of the page. Now you will see the list of pagelets selected by you on the step 2. Check the pagelets required for this user and the hit the Save button.

Now your dashboard is completely configured for this user and you can drag and drop the pagelets to re-align the positions of each pagelets in the dashboard. If you are a developer and wants to set the same configuration for all your users, refer the backend table for the layout configuration and issue an sql insert command for mass update.

If you want to have a dashboard for your WorkCenter, you can follow pretty much the same steps with minor changes. The steps to be followed are.

Step 1: Navigate To : PeopleTools > Portal > WorkCenter > Manage WorkCenter Dashboards
Click on the Create new WorkCenter dashboard page located at the bottom of the page. Provide the details as done earlier for normal dashboards and save the page.

Step 2: On the main page, click on the Pagelets button corresponding to the new dashboard you have created. On the pagelets selection page, check the pagelets required for your dashboard and click on Save.

Step 3: Now to map the dashboard to your WorkCenter, Navigate To: Enterprise Components > WorkCenter/Dashboards > Configure Pagelets; and select your workcenter. Go to the links tab and add the new dashboard created as a link to the WorkCenter and save the page. Now for the changes to take effect, you need to click on the Activate Link Settings button.

Open your WorkCenter and you can see the link to dashboard under the Links pagelet. Again you need to personalize the dashboard for each user by clicking on Personalize Content link at the top right corner and then selecting the required pagelets for the dashboard.

Step 4: Do you want to make your dashboard as the landing page for your WorkCenter? Go to the Configure Pagelets page mentioned in step 3. Select the links tab and you can see a checkbox called Starting Page against the dashboard link. Check it and save the page. Click on Activate Link Settings. 

Now you WorkCenter will open with the dashboard as default page.

Saturday 13 July 2013

Setting up WorkCenter for PeopleSoft 9.2

Workcenter is one of the greatest features delivered in PeopleSoft 9.2 release. If you are running on a Tools release of 8.53, you can easily setup a workcenter for your custom or bolt on modules. Compared to the benefits of the workcenter, the coding effort required to create it is minimal.

For those who are not aware of workcenter, it is a central place where you can tag all your major transaction components, processes, queries, reports and dashboards. When working with workcenter, user can pretty much do all the common tasks they do in the daily life without navigating to any other links. With workcenters in place there is no need for user to memorize any links, step by step feature of running process is available handy, workcenters will automatically list the major items of the module that require user action, gives a consolidated view of everything and adds many more advantages.

Now let me come to the main point, setting up a workcenter. I will try to address the steps as briefly as possible. This post will describe the minimal steps required for setting up the workcenter. You can go through the steps and if you require any additional details or information, feel free to post the same in the comments section.

 Step 1: Create a canvas page and component. This will be the landing page when your workcenter is open. All other transactions will open up in this area. Add the subpage FSPC_WELCOME_SBP and the secondary page FSPC_ADM_STRT_SEC to the main page of your component.
Add the following code to the component pre build event.

Local FS_WORKCENTER_DASHBOARD:StartingPage &objWCStartingPage;

&objWCStartingPage = create FS_WORKCENTER_DASHBOARD:StartingPage();

Step 2: Register Component. Now you register the new component in the portal navigation where you like to have your WorkCenter. Make sure you’re the template type selected is PTAL_APP_LANDING_PAGE_TEMPLATE in the structure and content.

Step 3: Create WorkCenter Pages. Now go to: PeopleTools > Portal > WorkCenter > Manage WorkCenter Pages

Click on the Create New WorkCenter Page on the bottom of the page.

Add the pagelets required for this workcenter tab.

If you want more workcenter group/tab like reports and queries, create another page.

The pagelets added to a group will come in your workcenter as shown below.

Step 4: Create workcenter pages. Create the pages which you want to display on the workcenter. Try to avoid any transfer functions on these pages. Add these to a component.

Create a new application class to process your links. Make sure the app class extends the class FS_WORKCENTER_DASHBOARD:MyWork:Pagelet:MyWorkLink.  Use the method OnLinkClick to open your component. This method should execute ViewURL() function to open the target component in workcenter. Use the method method GetRowCount to display the count of items pending items in the left side pane along with the links.

Step 5: Register Link. Register the link class you have created in the above step. For that go to: Enterprise Components > Development Utilities > Define System My Work Links and add a new value and provide the details.

Step 6: Configure Pagelets. Navigate to: Enterprise Components > WorkCenter/Dashboards > Configure Pagelets

Add the menuitem name (component created) and the default item and save the page.

Now go to the Work Tab and add the pagelets/links.

There are four different types of links
a.       System-Defined : These are links that can be imported by system administrator.
b.      Worklist: It will directly connect to the PeopleSoft Worklist page
c.       Alert: An alert that is defined by the Enterprise Component’s Events & Notifications framework that when clicked will navigate to the Enterprise Components Notification Dashboard page.
d.      User-Defined: If you wish to control the link behavior by app class peoplecode, use this method.
Click on the Define component and select the link created in the earlier step.

Save the setting and click on Activate My Work Settings button. Similarly you can configure all the other tabs.

Note: Ensure that you are providing proper security to all the new components and links you will be creating. This could save some of your time in troubleshooting about the missing links.

With the above six steps, you have successfully configured a basic workcenter. Now to extend it you can create more components to handle exceptions and add it to My Work link. Also you could create filters to filter out the results. You can create Reoprts or Queries tabs, create dashboards and much more. Start with the simple one and expand your domain.