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

Friday, 31 May 2013

Top 10 Innovations in PeopleSoft 9.2 – 5 PeopleSoft Cash Management to optimize liquidity

Oracle strategy has published the 5th most innovative feature for PeopleSoft 9.2. The newest release comes with a powerful tool to know the cash positioning and forecasting tool to access the data from their respective sources. It also allows you an easy integration with your third party tool/software you might use.

The tool comes up with the ability to slice and dice the numbers across four delivered dimensions of Bank, Bank Account, Currency and Business Unit with an option to add your own additional dimensions.
The main features of the tool includes…
  • Single worksheet that gathers transactions from the entire enterprise
  • 7 day forecast in one single screen
  • Drill down to the transaction from the worksheet itself
  • Graphical trend analysis
  • Pre-calculated numbers that can be sliced and diced across various dimensions

Wednesday, 29 May 2013

Creating Runcontrol Pages in PeopleSoft

This post is mainly focused for those who are new to PeopleSoft and creating a process and related components for the first time.

When working at client side you will frequently have requirements to create new process/reports for the customized processing or reporting. I will just give a brief overview of the steps required to achieve this feature.

Step 1: You need to design and develop the report or process using any of the supported technologies like Application Engine, SQR, Cobol, Crystal etc…

Step 2: As per the requirement of the process, you need to create a runcontrol record including all the fields (parameters) that needs to be passed to the process and other common fields like runcontrolid and oprid.

Step 3: Add the editable fields to a new page (runcontrol page) and associate necessary logics using PeopleCode.

Step 4: Add the subpage PRCSRUNCNTL_SBP to the top of the page. Give the subpage record as the runcontrol record created. This step is very critical as the run button, metadata and code to schedule the process lies under this sub page. If you plan to have your own run buttons, then you need to manually write the code to save the runcontrol and schedule the process.

Step 5: Add the page to a new component (runcontrol component), component to a menu and register the component.

Step 6: Go to Tools > Security > Permissions & Roles > Permission Lists and open the desired permission list. Give access to the newly created component.

Step 7: Go To People Tools > Process Scheduler > Processes and define your newly created process here. In the process definition options tab define your runcontrol component under component grid and give the desired permission list under Process Groups grid.

Step 8: The most critical step. Login to the portal and navigate to the newly created content reference and test the processJ.

Tuesday, 21 May 2013

Why record type Dynamic View is required in PeopleSoft?

We have seven different types of records in PeopleSoft. Among them dynamic views was a mystery when I started my carrier. I know that dynamic views will allow you to modify the view sql at run time. But still I was confused on why it was required.

Now to all my friends who are puzzled with the dynamic view record object like I was at the start of my carrier, I would like to share some facts about this record type.

To start with, dynamic views are record object which resides only in PeopleSoft. Although you have the option to specify the view SQL, you can safely ignore the sql part. This category of record, we are not going to build it and there will not be any physical view in the database. An advantage of dynamic views is that you can change the view sql dynamically at the run time, although with a limitation on the complexity of the sql’s used.

As per my understanding, dynamic views are used popularly in PeopleSoft for two different use cases.

1.       Dynamic Prompts

This is the most popular and only use case most of the PS developers are aware of. Using dynamic views you will be able to change the sql of the prompt record based on the conditions that needs to be executed on the transaction. To get a detailed idea on how to use dynamic view as a dynamic prompt, visit the previous post on this topic.

2.       As temporary record on scrolls

When designing pages most of you might have come across a scenario where it is not possible to put a work record fields alone in a grid or a scroll. PeopleSoft will allow only a Sql Table or View to be used as primary table in a grid or scroll. But often there comes a scenario where whatever data displayed on the grid or scroll are only temporary data and there may not be even a physical data corresponding to that present on the database. This will prompt the developer to create unnecessary views or tables in PeopleSoft just to handle the temporary data. This scenario, although rare, can be solved with minimal effort using dynamic views. This usage of dynamic views is not known to most of the developers. Yes, PeopleSoft allows you to use dynamic view as a primary table for a scroll or grid. With dynamic views, there is no need to create database objects for the purpose of handling temporary data.

All you need to solve the scenario is to create a dynamic view with required fields and drag the fields on to the grid or scroll. Now based on your requirement, you can manipulate the grid or scroll using the component rowset object. If you would like to load the data from database for the corresponding fields and based on the other values on the field, you can use the rowset methods such as Fill(), Select() etc where you can specify the select record and entire where clause using PeopleSoft.

I’m sure that if you start utilizing the full potential of dynamic views, you could save your time and prevent creation of some unwanted objects in database.

Dynamic Prompts in PeopleSoft

In real business applications, very frequently we will encounter situations where the prompt for some fields needs to be controlled based on the values on other fields or based on the logged in user. PeopleSoft has delivered built-in mechanisms to handle dynamic prompting. Most of the readers will be already aware of this as this is one of the basic lessons in People Tools. However recently I had an interaction with PeopleSoft developer community, where most of them shared the same experience. People either don’t know dynamic prompting or they are not sure about the underlying technology to be used. I thought it will be worth explaining it over here so that people who are new to PeopleSoft may get a fair understanding on dynamic prompting.

There are widely two different techniques used for generating dynamic prompting. First method is using DERIVED record fields or popularly known as Edit Table method. The second popular method is using Dynamic Views. Both methods have its own advantages are used in different use cases.

Derived record field method

There can be business case where based on the value on one field, the prompt for other field should change. The change may include the search fields or list box values displayed on the prompt page. It can also demand an entirely different data set to be prompted for the user. In this type of scenarios the action that we require at the back end is to point the prompt of the fields to different tables or views. To tackle this kind of scenarios you need to use derived work record fields.

Suppose there is a scenario where you have a check box (called effective dated) and a department field on the page. If the check box is checked you need to show only all the effective dated departments on the prompt. Otherwise the prompt should list all the department codes and user should also have a search option to search with the effective date. This is an ideal scenario where you can use derived record field method. The steps to be followed are as below.

1.       Create a view, say DEPT_VW1, which will fetch the effective dated departments.
2.       Create another view, say DEPT_VW2, which will fetch all the departments. Make sure to check the alternate search key and list box item property for the EFFDT field (this is for the stated requirement. You may have to create both the views as per your real requirement).
3.       On the record field properties of the field department, give the prompt table name as %EDITTABLE (it is not mandatory to give %EDITTABLE all the time. You can give % and any field name present on the table DERIVED).
4.       Place the field EDITTABLE (or other fields which you have mentioned in the previous step) to the page where your department field is present. This is mandatory because we will be referencing the field in PeopleCode program in next step. To reference the field in PeopleCode, it is required that the work record field is present on the component buffer. You can hide this field, because it will not make any sense to the business user.
5.       Now on the field change event of the check box field, write the below code.
/* If it is checked then use first view else use second view */
/*Specify the prompt record name here.  Appropriate field name should be used in place of EDITTABLE */

This way you will be able to change the prompt record of a field programmatically. If you want to change the prompt of multiple fields in a page, you can use other fields such as EDITTABLE2 which are present in the record called DERIVED. The % symbol will signal the system that the prompt table for the field is the value present in the specified field in the record DERIVED.

Dynamic Views

Dynamic Views can prove to be powerful prompting mechanism when you come across a requirement where the values fetched by the prompt table needs to be changed based on some system variables such as %OperatorId or %EmployeeId. Take a situation where you want to filter the data present in the prompt table based on the logged in user. In this case you need to use dynamic views as a prompt table.

Take a situation where you have an address id as a field on the page. Your requirement will be to bring up the address id’s for the particular logged in user alone. But if a system administrator logs in, then you should display address id’s corresponding to all the users. In this case you have to use up dynamic views. The step should be followed will be as follows.

1.       Create a record (say PROMPT_DVW) and add necessary fields that need to be prompted.
2.       Set up the key structure in the way you would like the prompt page to be appeared.
3.       Save the record as dynamic view type. No need to build or write sql for these kinds of records.
4.       On the record field property of the address id field, set the dynamic view as the prompt table.
5.       Now on the appropriate event (RowInit, FieldChange etc) write the below code.
/* Note: ADDRESS_ID is the field which requires prompt. We are not writing anything on the dynamic view people code events. */
If %OperatorId = “Admin” Then
RECORD.ADDRESS_ID.SqlText = “select ADDRESS_ID, DESCR from PS_BASE_TABLE where EMPLOYEE_ID = ‘”|%EmployeeId|”’”;

The SqlText property will dynamically act as a view sql and bring up the corresponding result in the prompt page.

Complex Scenarios

There can be very complex scenarios where you need to change the prompt based on the logged in user or system variables and other multiple conditions based on selections user make in the page or setups. In such scenarios you can use a mix of both dynamic views and derived record fields.

These kind of scenarios are very rare in nature and I have seen only this once in my carrier.

If you have encountered/done any challenging or innovative method of creating dynamic prompts, please share it in the comments section so that others will get benefitted too.

Monday, 13 May 2013

Creating Related Actions in PeopleSoft – 8.53

Related actions are another breed from the related content family. But this will be more transaction specific. Related actions allow users to execute a code or open content in modal or new windows from a transaction page. In transactions you can mark a field as related action field. So when you click on the field will show a popup menu from where you can do the desired action.

Related action will be extremely helpful when used with a grid. Each row of grid contains different set of data and your related actions will be context sensitive and you can run an action specific for the selected row with much ease.

I will give a glimpse on how to configure related actions to a transaction page. It will be easy for you to follow if you have gone through the previous posts on Related Contents and Related Content Definitions. This is a continuation of the previous posts.
Go to: People Tools > Portal > Related Content Service > Manage Related Content Service

Now you create a Related Content for an application page (refer previous page) or open an existing configuration.

Now half of your job is done. All you need to do is go to “Configure Related Actions” page and add related content services (refer previous post to see how to create related content service) or related contents. Here comes the trick, you need to assign related actions to a field on a page. For that you need to select a page first. To select the field, click on “Configure Parameters” button on the grid. In the modal window, you can select the page field which should appear as a related content field.

You have other parameters to fill in the page which are pretty much same as the related content configurations. The key values to pass or map and the application class to hide or unhide the action.

To make the related actions popup menu to be ordered or grouped, you can go to the third page on the configurations – “Configure Layout”.

Try it out in your test\demo database and enjoy the simplicity and power of this feature.

Friday, 3 May 2013

Creating Related Content Services

Related content services needs to be created to act as a feeder for adding related contents in Components or Pivot grids. In the previous post I have explained how to create a related content with content reference objects. What if you want to add a component which is not registered or a PS query or an iScript or an external URL as a related content to the base component? In that case first you need to create a related content service. This post explains how to create related content service for such scenarios.

Navigate To: People Tools > Portal > Related Content Service > Define Related Content Service

Go to Add mode and create a new entry. On the landing page give the service name and select the URL Type. You have different URL Types.

1.       Application Class
2.       Embedded Pagelet
3.       Non-PeopleSoft URL
4.       OBIEE Pagelet
5.       PeopleSoft Query
6.       PeopleSoft Script
7.       PeopleSoft Component
If you select Application Class, the content link will be executing the class you define in the page. If you select Pagelet options you need to define the node and pagelet name. This content will then point to the pagelet selected. If the option selected is non-peoplesoft URL, you can directly give the URL link. For reaching to a PS Query, select query option and enter the node and query names. Similarly for scripts and components select the option and pass the parameters. One thing to note here is that the component need not be registered to bring up in the related content.

Once you have defined the Service, you can enter service url parameters. This will be especially helpful in case of external url’s, queries with prompts, components, iScripts which expect parameters. Make sure that there is no spelling mistakes while defining the parameters.

Now you have two options to be chosen, refresh and new window. If you tick any, then the corresponding link will be visible on the related content frame.

To give security to the service defined you have 3 options available.

Once you save the service, it is ready to be used. Now add this service to the components as mentioned in the previous post. Or you can add it to Pivot Grids to be displayed as an action on the pivot.

Related Contents in PeopleSoft

Related content is a new feature introduced by People Tools release 8.52. PeopleSoft has enhanced it and made it much better in the release 8.53.

Related content is a powerful feature introduced by PeopleSoft. With related content, you will be able to bring up data from another component while within a component and the data from the second component will be related (based on the values in the first component) to the first component. To explain it, if you are at voucher component and entering a vendor, the related content service will bring up the details of the vendor in a second frame on the same page. The second frame will be on the right side of the main component or can be on the bottom based on your configurations. Having said that I will explain how to create a related content for your own application. Believe me; it is much simpler than you anticipate.

Related content need not be a PeopleSoft component. You can also bring up external url’s, iscripts, PS Query, pagelets etc. For this you need to create a related content service, which I will explain in the next post.

Let’s see how you can establish a related content service which will open an existing content reference as a related page in a new frame.

Navigate to: People Tools > Portal > Related Content Service > Manage Related Content Service

Now click on the Assign Related Content to Application Page link at the bottom of the page.

It will open up all your menu navigation in a tree structure. From that tree expand the required folders to reach down to the content reference or component to which your new related content should be applied.

Now on the landing page you have two grids for component level and page level related content services. If you add anything to page level, the related content will be visible only for that page. On the other hand if you chose to add on component level, then the related content defined will be visible across all the pages of the component.

Now to add another registered content reference as a related content to the selected component, you should select Service Type as Content Reference. The Service service type is to be selected when you plan to have query, iScript or external url as a related content. For that you need to define a service first, which will be covered in the next post.

Now you click on the prompt button. It will again bring up the menu in tree structure. You have select your component or content reference from the tree structure which will be added as a related content to the base component. Now you can give a meaningful label to the related content added and click on configure.

This is the page where you define the relation between the base component and related component. This page will bring up all the search keys of the related component. You have options Required Flag to, Refresh Service on change and Is Value required. The refresh service on change property if checked will refresh the related component if you change the value in the base component. This is helpful where the keys of the related component is present on the base component as an editable field.

Now to map the fields of both component, you have Mapping type options. There are different mapping types. If you select Key Value as an option then in the prompt you will get the key fields of the base component. You select the corresponding field. If mapping type is selected as Fixed Value, then you will get an edit box to enter the value. If it is System Variable, then in the prompt you will get a list of system variables like %Date, %UserId and all.

On the bottom of the page you have another important parameter called service filter. This is used when you want to hide or unhide the related content from the base component based on the values\conditions on the base component. For this you need to create an application class.
The class should extent a base class and the linkVisible method should return Boolean. Based on the return value, the related content is made visible\hidden. I am pasting a sample piece of code.

import PT_RCF:ServiceFilter;

class RCFilter implements PT_RCF:ServiceFilter;
   method linkVisible() Returns boolean;

method linkVisible
   /+ Returns Boolean +/
   /+ Extends/implements PT_RCF:ServiceFilter.linkVisible +/  
/* Replace it with your own logic or conditions. */
   If %Mode = "A" Then
      Return False;
     Return True;

In the Service Filter parameters of the configuration page, give the name of the application class you have created. If you want the related content to be displayed always then you can ignore this.

Once you have done this, click on ok and save the component. Believe me you are done with setting up related content service for your base component. If you want to add more components to your base component, just click on the + button on the grid and follow the same steps. You have two more pages on this configuration Configure Related Actions (which I will cover later) and Configure layouts. When you have more than one related content tagged to a page, then Configure Layouts page will come as handy. There you can define the order and structure in the content should be displayed on the base component which is pretty much simpler and you could figure it out yourself.

Hope it give you a better understanding on configuring related contents for a component.

Thursday, 2 May 2013

Top 10 Innovations in PeopleSoft 9.2 – 6 Industry Focused Analytics & Tools for PeopleSoft Projects (ESA)

PeopleSoft Enterprise Service Automation (ESA) is a tailor made and uniquely available application for staffing industry, higher education, health care sector, professional service group and for government contracting.

PeopleSoft has invested and innovated in the ESA suit 9.2 with enriched features and analytic tools making it even more powerful. Grants have added configurable and secure PI portal for getting summarized and quick overview of the awards, projects and budgets. Pricing has been enhanced support the needs of professional services group. The new Custom Rates capability enables pricing administrators to dynamically configure contract and project rate sheets by up to 5 dimensions of their choosing.

On top of the functional enhancements the ESA suit is equipped with the latest Tools features such as WorkCenters, Dashboards, Pivot Grids and Related Actions.

To read the complete thread, check out the below link.

Returning to Component search page programmatically

There can be scenarios (although rare) where a user needs to be pushed back to the search page when he clicks on a button or changes some value. Sometimes there arise requirements where if user launches a component, the user should be prevented from seeing the values based on the search values he might have provided.

All these requirements boil down to the need for a method\function to which can be written in peoplecode so that if the conditions are met the user is transferred back to the component search page.

Luckily there is a built-in function delivered by PeopleSoft which handles exactly the same scenario. You can use DoCancel() function to return to the search page.

If this function is used in Component context, the user is returned to the Search page. If it is used in a menu context, then user will be returned to the menu with no active component.

Simple and easy to use function but it can solve the hardest and rarest requirement put down buy your business group.