How to Find the Record Type of a Record in PeopleSoft

How to Find the Record Type of a Record in PeopleSoft
This simple SQL will show you how to find basic information about a record type.
SELECT RECNAME,
DECODE (RECTYPE,
     0, 'SQL Table',
     1, 'SQL View',
     2, 'Derived',
     3, 'Sub Record',
     5, 'Dynamic View',
     6, 'Query View',
     7, 'Temporary Table',
     'Unknown') As RecordType,
RECDESCR,
PARENTRECNAME,
AUDITRECNAME
FROM PSRECDEFN WHERE RECNAME = 'ACAD_PROG'; --Record Name

PeopleSoft Fluid User Interface

Next big thing of Oracle PeopleSoft is Fluid User Interface which comes with PeopleTools 8.54. In fact, PeopleBooks for 8.54 has an entire section named as Fluid User Interface Developer’s Guide which goes through how to setup a Fluid Applications;

Some of key benefits of Fluid Interface are

  • Mobility and portability Between multiple devices
  • Intuitive User Experience
  • Personalisation
  • Unified User Experience Across Oracle Applications

Key components for implementing Fluid interfaces are;

  • PeopleSoft Application Designer
  • PeopleCode
  • PeopleSoft PIA
  • HTML 5.0
  • CSS 3.0
  • Java Script

Here are couple of videos who are interesting about Fluid User Interface



How to restrict File Types (extensions) from URL Object Properties When Adding Attachments Part I

First of all, I haven't tested this yet but I'm going to pretty soon :-). However, if someone wants to give it a go. Here it is.
You may have already know that, when attaching files using AddAttachement PeopleCode function, sometime we need to restrict certain file types that we don't want end-users to attach to our Peoplesoft system. Normal scenario we think that AddAttachement function will provide this for us. But guess what, even though AddAttachement function has a parameter names FileType, The function will not validate the FileTypes at all. In PeopleBooks it says;


In order to restrict certain file types obviously, we have to do something like this
&RETCODE = AddAttachment("RECORD://SOME_RECORD", &ATTACHSYSFILENAME, "", &ATTACHUSERFILE, 0);

If &RETCODE = 0 Then/* Returns Zero, when user clicks on OK with the valid File Path */
/* Then Check the file extension, if not throw an error msg and delete the file */
If Lower(Right(&ATTACHUSERFILE, 4)) <> ".txt" Then
MessageBox(0,"",0,0,"Your Message",0); /* You can only upload .txt files. */
&RETCODE1 = DeleteAttachment("RECORD://SOME_RECORD", &ATTACHUSERFILE); /* Delete file */
End-If;
But there is another way you can do this
Navigate to PeopleTools, Utilities, Administration, File Extension List page
Here you can set up list of file types, by file extensions which either can accept or reject when you do file attachments to your system. Once you have set up file extension list you have to specify FILE_EXT_LIST property in URL object using the URL maintenance page (PeopleTools, Utilities, Administration, URLs).

"You can restrict the file types that can be uploaded to or downloaded from your PeopleSoft system. The file type restrictions apply to the AddAttachment, DetachAttachment, MAddAttachment, and ViewAttachment functions. Allowable or disallowed file extensions are managed through a file extension list and through the FILE_EXT_LIST property of the URL object."

"This enables you to only upload the appropriate file types at runtime, and reject those file types you think may be suspicious, potentially harmful, or not appropriate for a particular call to a file-processing built-in PeopleCode function"

The most wanted Extension List Types are Inactive and Absolute, If you want to know more about the list types please follow the link http://docs.oracle.com/cd/E57990_01/pt853pbh2/eng/pt/tsvt/task_UsingAdministrationUtilities-07109c.html#ue3f0f90c-23f1-4110-aed1-29af14eff645
Hope this will help for you next implementation of file attachments. feel free to send any comments or suggestions.

How to change Translate values Online

Most of the time, In PeopleSoft translate values for a field is maintained by developers via Application Designer. However, there is a way to maintain the values in the translate table via online as well. Thus, security administrators, power users can now add their own translate values to an application.

To maintain translate values Navigate to PeopleTools > Utilities > Administration > Translate Values


How to correctly generate BI/XML publisher Excel output from RTF template

While ago I had a issue where BI publisher which was not correctly generating Excel output format file. This particular problem happened with delivered report, SSR_TSRPT which is the Transcript Report in campus solutions. We have customised the delivered report by adding our own version of template file to the report definition. The Template File is of RTF format and the report output was defaulted to XLS format type.


The problem was it generated the report in Excel format and it was generating the file in .xlsx format and the RTF to Excel conversion was not happy with the new format. Bit of dig around and I found out that due to the new PeopleSoft PeopleTools 8.53 upgrade for the BI Publisher, PeopleSoft has added new configurations to the PeopleTools settings to control report attributes that are specific to PeopleSoft implementation of BI Publisher. The specific property is “psxp_excel_outputformat”. According to PeopleBooks;

So to make it compatible with older versions of Excel and to generate the output correctly, I modified properties of the report by changing psxp_excel_outputformat to XLS-MHTML format as described above, the changes are imposed in report level as follows;

How to deliver RESTful Web Services in PeopleSoft - Useful Resources

How to deliver RESTful Web Services in PeopleSoft - Useful Resources
Quick Overview of RESTful Web Services
Representational State Transfer (REST) describes any simple interface that transmits data over a standardized interface (such as HTTP) without an additional messaging layer, such as SOAP. REST provides a set of design rules for creating stateless services that are viewed as resources, or sources of specific information, and can be identified by their unique URIs. A client accesses the resource using the URI, a standardized fixed set of methods, and a representation of the resource is returned. The client is said to transfer state with each new resource representation.
When using the HTTP protocol to access RESTful resources, the resource identifier is the URL of the resource and the standard operation to be performed on that resource is one of the HTTP methods: GET, PUT, DELETE, POST, or HEAD.
Some Useful reference to resources that can be used to get an understanding of REST based web services in PeopleSoft.
OOW_REST.zip is the AppDesigner project used in the CON7553_Smith-CON7553 REST Web Services in PeopleSoft_v3.
OOW_REST.zip

How to use USEEDIT field to find out Record Field Properties in PeopleSoft

How to use USEEDIT field to find out Record Field Properties in PeopleSoft
This handy SQL script will provide how to find Record Field properties such as Key Fields, Edit Fields, Default values etc.. of a Record. Presented here are two versions of SQLs. First one give is quite simple and give you enough information about record field properties of a record and it uses PSRECFIELD tools table. Second one is bit complex and will give you more in-depth information such as last update datetime and operator id, etc..

Side Note: The SQLs are using Oracle Function BITAND. Also if you want to know more info about USEEDIT field please click here.
USEEDIT field assigns a decimal value to each individual bit value.

SQL 1 (simple)

SELECT
  FIELDNAME,
  DECODE(BITAND(USEEDIT, 1), 1 ,'Y', DECODE(BITAND(USEEDIT, 16), 16, 'Alt')) as Key,
  DECODE(BITAND(USEEDIT, 2048),2048 , 'Y' , '') as Search,
  DECODE(BITAND(USEEDIT, 32), 32 ,'Y','') AS List,
  DECODE(BITAND(USEEDIT, 256), 256 ,'Y','')AS Req,
  DECODE(BITAND(USEEDIT, 512), 512 ,'Xlat', DECODE(BITAND(USEEDIT, 8192), 8192 ,'Y/N', DECODE(BITAND(USEEDIT, 16384),16384 ,'Prompt',''))) AS Edit,
  EDITTABLE, DEFFIELDNAME
FROM PSRECFIELDDB
WHERE
  RECNAME = 'ACAD_PROG' --Record Name
ORDER BY FIELDNUM;

SQL 2 (complex)

SELECT A.recname,        A.fieldname,
       CASE
         WHEN B.fieldtype = 0 THEN 'CHAR'
         WHEN B.fieldtype = 1 THEN 'LONG CHAR'
         WHEN B.fieldtype = 2 THEN 'NUMBER'
         WHEN B.fieldtype = 3 THEN 'SIGNED NBR'
         WHEN B.fieldtype = 4 THEN 'DATE'
         WHEN B.fieldtype = 5 THEN 'TIME'
         WHEN B.fieldtype = 6 THEN 'DATETIME'
         WHEN B.fieldtype = 7
               OR B.fieldtype = 8 THEN 'IMAGE'
         ELSE NULL
       END           AS FIELDTYPE,
       CASE
         WHEN B.fieldtype = 2                OR B.fieldtype = 3 THEN Trim(To_char(B.length))                                       || '.' || To_char(B.decimalpos)
         ELSE To_char(B.length)
       END           AS FLDLEN,
       CASE
         WHEN Bitand(A.useedit, 256) > 0 THEN 'YES'
         ELSE 'NO'
       END           AS REQ,
       CASE
         WHEN Bitand(A.useedit, 1) > 0 THEN 'KEY'
         WHEN Bitand(A.useedit, 2) > 0 THEN 'DUP'
         WHEN Bitand(A.useedit, 16) > 0 THEN 'ALT'
         ELSE NULL 
       END           AS KEY_TYPE, 
       CASE 
         WHEN Bitand(A.useedit, 64) > 0 THEN 'DESC' 
         WHEN ( Bitand(A.useedit, 1) > 0 
                 OR Bitand(A.useedit, 2) > 0 
                 OR Bitand(A.useedit, 16) > 0 ) 
              AND Bitand(A.useedit, 64) = 0 THEN 'ASC' 
         ELSE NULL 
       END           AS DIR, 
       CASE 
         WHEN Bitand(A.useedit, 2048) > 0 THEN 'YES' 
         ELSE 'NO' 
       END           AS SRCH, 
       CASE 
         WHEN Bitand(A.useedit, 32) > 0 THEN 'YES' 
         ELSE 'NO' 
       END           AS LIST, 
       CASE 
         WHEN Bitand(A.useedit, 4) > 0 THEN 'YES' 
         ELSE 'NO' 
       END           AS SYS, 
       CASE 
         WHEN Trim(A.defrecname) = '' THEN A.deffieldname 
         ELSE Trim(A.defrecname) 
              || '.' 
              || A.deffieldname 
       END           AS DEFAULT_VALUE, 
       CASE 
         WHEN Bitand(A.useedit, 8) > 0 
              AND Bitand(A.useedit, 128) = 0 
              AND Bitand(A.useedit, 1024) = 0 THEN 'A' 
         WHEN Bitand(A.useedit, 8) > 0 
              AND Bitand(A.useedit, 128) > 0 
              AND Bitand(A.useedit, 1024) = 0 THEN 'AC' 
         WHEN Bitand(A.useedit, 8) > 0 
              AND Bitand(A.useedit, 128) > 0 
              AND Bitand(A.useedit, 1024) > 0 THEN 'ACD' 
         WHEN Bitand(A.useedit, 8) = 0 
              AND Bitand(A.useedit, 128) > 0 
              AND Bitand(A.useedit, 1024) = 0 THEN 'C' 
         WHEN Bitand(A.useedit, 8) = 0 
              AND Bitand(A.useedit, 128) > 0 
              AND Bitand(A.useedit, 1024) > 0 THEN 'CD' 
         WHEN Bitand(A.useedit, 8) = 0 
              AND Bitand(A.useedit, 128) = 0 
              AND Bitand(A.useedit, 1024) > 0 THEN 'D' 
         ELSE NULL 
       END           AS AUDT, 
       CASE 
         WHEN Bitand(A.useedit, 16384) > 0 THEN 'PROMPT' 
         WHEN Bitand(A.useedit, 512) > 0 THEN 'XLAT' 
         WHEN Bitand(A.useedit, 8192) > 0 THEN 'Y/N' 
         ELSE NULL 
       END           AS EDIT, 
       A.edittable   AS PROMPT_TABLE, 
       A.setcntrlfld AS SET_CONTROL_FLD, 
       CASE 
         WHEN Bitand(A.useedit, 4096) > 0 THEN 'YES' 
         ELSE 'NO' 
       END           AS REASONABLE_DT, 
       CASE 
         WHEN Bitand(A.useedit, 32768) > 0 THEN 'YES' 
         ELSE 'NO' 
       END           AS AUTO_UPDT, 
       CASE 
         WHEN Bitand(A.useedit, 262144) > 0 THEN 'FROM' 
         WHEN Bitand(A.useedit, 524288) > 0 THEN 'THROUGH' 
         ELSE NULL 
       END           AS SEARCH_FIELD, 
       CASE 
         WHEN A.subrecord = 'Y' THEN 'YES' 
         ELSE 'NO' 
       END           AS SUBRECORD, 
       A.lastupddttm, 
       A.lastupdoprid 
FROM   psrecfield A, 
       psdbfield B 
WHERE  A.recname = :1 --paste recname here 
       AND A.fieldname = B.fieldname 
ORDER  BY fieldnum; 

How to enable PeopleCode Auto-Complete feature in App Designer for PeopleTools 8.54

How to enable PeopleCode Auto-Complete feature in App Designer for PeopleTools 8.54
Yes! you heard it correctly!. PeopleTools 8.54 comes with long waiting feature in App Designer, Auto Complete. Lot of IDEs in today's market provide code auto completion feature for any programming language of your choice such as java, C#, php. However, PeopleSoft App Designer lacks this feature until PeopleTools 8.54.
According to PeopleBooks, it says

"The PeopleCode Editor provides an auto-complete feature for PeopleCode application classes, built-in classes, built-in functions, system variables and constants. The auto-complete feature displays the possible options when you insert a period (.) or dot after an object.
The auto-complete feature also supports the display of a tool tip when you hover the mouse over the selected list item. The tool tip displays the method name, parameter type, and the return type.
The auto-complete feature is not applicable for objects that are declared as automatic variable and objects that get resolved at run-time."

How to setup Auto-Complete Feature

"To use the auto-complete feature, you must enable the Auto-completion for PeopleCode option on the Editors tab of the Options dialog box."
This example illustrates the fields for the auto-complete feature.
Options page - PeopleCode Editor group box
for more info visit;

How to View Integration Broker Routing Graphics in PeopleSoft

How to View Integration Broker Routing Graphics in PeopleSoft
What is routing definition?
A routing definition defines the sending and receiving nodes for a transaction, specifies any inbound and outbound transformations to invoke and defines external aliases. It also defines overrides that the default integration gateway and the default target connector that the local node use to communicate with an integration endpoint.

Routing Types
Most of the time, we need any-to-local and local-to-local routing types.
any-to-local - in this routing “any” node is always the sending one. “local” node is the one who receive the transaction. (“e.g. your system provides a web service to third party system then you need to generate any-to-local routing)
local - to - local - A local-to-local routing is a routing in which transactions are sent and received within the local database

Graphical View of Routings
Routing Definitions page provides a Graphical View link that enables you to view routing definitions in graphical format. It shows inbound and outbound request and response flows, which is a reasonable representation to quickly understand message flow.

How to View Routings in Graphical Format

  1. Navigate to PeopleTools > Integration Broker > Integration Setup > Routings
  2. Click Graphical View link on the page as per the image.

How to Travel through all the records and fields all levels in a component

How to Travel through all the records and fields all levels in a component
Travel through all the records and fields all levels in a component This is a typical peoplecode example for traverse through all the records and fields in a component This might be handy when you want to troubleshoot. 
/* Get the parent Level 0 rowset */ Local Rowset &Parent = GetLevel0(); Local number &I, &J, &K, &L; Local Rowset &RS; Local Row &RowChild; Local Record &Rec; For &II = 1 To &Parent.ActiveRowCount /* To get the number of child rowsets of the row */ For &I = 1 To &Parent(&II).ChildCount /* Get each rowset*/ &RS = &Parent(&II).GetRowset(&I); /* For each rowset each ActiveRowCount */ For &J = 1 To &RS.ActiveRowCount /* Get the each row for each rowset */ &RowChild = &RS.GetRow(&J); /* For each row, how many records */ For &K = 1 To &RowChild.RecordCount &Rec = &RowChild.GetRecord(&K); /* show each Record Name */ WinMessage(&Rec.Name, 0); /* if record has changed show a message */ If &Rec.IsChanged Then WinMessage("this record is changed " | &Rec.Name, 0); /* Go through fields */ For &M = 1 To &Rec.FieldCount If &Rec.GetField(&M).IsChanged Then /* If field has changed show a message */ WinMessage("this field is changed " |  
&Rec.GetField(&M).Name | " value " | &Rec.GetField(&M).Value, 0); End-If; End-For; Else WinMessage("this record is not changed " | &Rec.Name, 0); End-If; End-For; End-For; End-For; End-For;

PeopleSoft Application Designer Practices

This is pretty good and very informative resource who are newbies to PeopleSoft and want to learn PeopleSoft Application Designer which is the main development tool used to build and modify PeopleSoft applications. This presentation describes main (nine) steps for creating a PeopleSoft application. This presentation is done by Yes-V Software Solutions.
This will walk through step by step of how to create PeopleSoft Application Designer definitions, including:
•    Fields
•    Records (Tables)
•    Pages
•    Components
•    Menus

you can find the link here;
http://www.scribd.com/doc/29693050/PeopleSoft-Application-Designer-Practice

How to Test Web Services within PeopleSoft Campus Solutions without SOAPUI

If you are in PeopleSoft Campus Solutions Navigate to;
Set Up SACR > System Administration > Generic Service Tester > Service Tester
Add Service Tester ID from Prompt (Say for example delivered List of Values web service SCC_GET_LOV)
 
Add Sign on (WS security) – you must configure security access to the web service you are invoking.
Once done you can create request and submit the request as follows;

How to Enable and Disable Grid Rows using PeopleCode

Grid
Aprat from using EnableColumns(&Array)and SetProperties(&Array
Grid Class methods Here is another ways you can enable and disable PeopleSoft grid rows using PeopleCode.
Code snippt as follows;
/* assume Grid main Record is SOME_RECORD */

Local Rowset &RS = GetRowset(Scroll.SOME_RECORD);   For &i = 1 To &RS.ActiveRowCount      For &l = 1 To &RS(&i).GetRecord(Record.SOME_RECORD).FieldCount       &RS(&i).GetRecord(Record.SOME_RECORD).GetField(&l).Enabled = False;      End-For;   End-For;

More complete example would be

/* Declare a Rowset Object */ 
Local Rowset &level1; 
/* Traverse the Grid which is at Level 1 */ 
/* Level 0 always has a single row - so access it and Get the Scroll */ 
&level1 = GetLevel0().GetRow(1).GetRowset(Scroll.SOME_RECORD) ; 

/* To Remove "Add Row" or "Delete Row" Buttons at the end of all rows in the Grid */ 
&level1.DeleteEnabled = False; 
&level1.InsertEnabled = False; 

/* For a Single Row of Level 0 Data, There can be multiple Rows of Level 1 Data */ 
/* So, Looping through all rows in the Grid */ 

For &i = 1 To &level1.ActiveRowCount 
/* To Gray a particular field on all rows */ 
/* Depends on the requirement you can use Enabled property as well*/
/* This is for existing/unchanged/already-saved rows */
&level1.GetRow(&i).SOME_RECORD.SOME_FIELD.DisplayOnly = True; 

/ * For new rows in the grid */
If &level1.GetRow(&i).IsNew = False Then 
&level1.GetRow(&i).SOME_RECORD.SOME_NEW_FIELD.DisplayOnly = True; 
End-If; 
/* To Remove "Delete Row" Button at the end of particular rows in the Grid */ 
&level1.GetRow(&i).DeleteEnabled = False; 
End-For;


How to Fix the Internet Explorer (IE10) Compatibility Issues for PeopleSoft

How to Fix the Internet Explorer (IE10) Compatibility Issues for PeopleSoft


Please refer the Doc ID 1516882.1 (https://support.oracle.com/epmos/faces/DocumentDisplay?_afrLoop=1036273421595429&id=1516882.1&_adf.ctrl-state=ostvz7u5r_934) in my oracle support related to the compatibility issues with IE 10.

It says “Internet Explorer 10 installs with compatibility mode turned on.  PeopleSoft expects and requires this setting to remain enabled so that the browser can determine the best way to render pages.  If compatibility mode is disabled, pages will be rendered in Standards mode (instead of Quirks mode), and PeopleSoft pages may be severely impacted.”

How to Add Non-Default Font to BI Publisher Report in PeopleSoft

How to Add Non-Default Font to BI Publisher Report in PeopleSoft
Oracle BI publisher for peoplesoft, support limited number of default-font types. However, when you want to add another font which is not a default font type delivered by BI publisher your report will not display the appropriate font you want. 
In order to change the font you want, you have to take a configuration change in BI publisher. 
BI Publisher system properties settings are defined in the xdo.cfg file. The default xdo.cfg file is located in the $PSHOME/appserver directory, which is shared by all application server and process scheduler domains by default.
For example you want to use font say "Bodoni MT" which is not a default font configured in BI Publisher settings in Application Server. 
Therefore, a xdo.cfg BI publisher config file in App server need to be modified to include "Bodoni MT" font. 
Here is the example xdo.cfg file with added Bodoni MT font. 


<config version="1.0.0" xmlns="http://xmlns.oracle.com/oxp/config/"> 
    <!-- Properties --> 
    <properties> 
        <!-- System level properties --> 

        <!-- PLEASE SELECT A VALID TEMPFILE DIRECTORY!!! --> 
        <property name="system-temp-dir">c:/Temp</property> 

        <!-- PDF compression --> 
        <property name="pdf-compression">true</property> 

        <!-- PDF security --> 
        <property name="pdf-security">false</property> 
        <property name="pdf-open-password">user</property> 
        <property name="pdf-permissions-password">owner</property> 
        <property name="pdf-no-printing">true</property> 
        <property name="pdf-no-changing-the-document">true</property> 
    </properties> 


   <!-- Font setting --> 
    <fonts> 

      <!-- Windows Wingdings font --> 
      <font family="Wingdings" style="normal" weight="normal"> 
       <truetype path="C:\WINNT\fonts\wingding.ttf" /> 
      </font> 

      <font family="GnuMICR" style="normal" weight="normal"> 
       <truetype path="C:\WINNT\fonts\GnuMICR.ttf" /> 
      </font> 

      <font family="Times New Roman" style="normal" weight="normal"> 
       <truetype path="C:\windows\Fonts\times.ttf" /> 
      </font> 

      <font family="3 of 9 Barcode" style="normal" weight="normal"> 
       <truetype path="C:\WINNT\fonts\3of9.ttf" /> 
      </font> 
       
      <font family="Bodoni MT" style="normal" weight="normal"> 
       <truetype path="C:\WINDOWS\Fonts\BOD_R.TTF" /> 
      </font> 

    </fonts> 
</config> 

to add a font, add font element (see example above for Bodoni MT) and set the truetype path as above.

Record Fields and the Component Buffer

Record Fields and the Component Buffer
This is taken directly from peoplebooks;
The record fields in the component buffer are a superset of those accessible to the user through page controls. In most cases, PeopleCode can reference any record field in a scroll area’s primary scroll record or in a related display record, not just those fields that are associated with page controls. The following table lists record types and locations:
Type and Location of Record
Presence in Component Buffer
Primary record on scroll levels greater than zero
On scroll levels greater than zero, all record fields from the primary scroll record are in the component buffer. PeopleCode can refer to any record field on the primary scroll record, even if it is not associated with a page control.
Primary record on scroll level zero
If scroll level zero of a page contains only controls associated with primary scroll record fields that are search keys or alternate search keys, then only the search key and alternate search key fieldsave in the component buffer, not the entire record. The values for the fields come from the keylist, and the record cannot run RowInit PeopleCode. If level zero contains at least one record field from the primary scroll record that is not a search key or alternate search key, then all the record fields from the primary scroll record are available in the buffer. (For this reason, you may sometimes need to add one such record field at level zero of the page to make sure that all the record fields of the level-zero primary record can be referenced from PeopleCode.)
Related display record fields
The buffer contains the related display record field, plus any record fields from the related display record that are referenced by PeopleCode programs. You can reference any record field in a related display record.
Derived/work record fields
Only derived/work record fields associated with page controls are in the component buffer. Other record fields from the derived/work record cannot be referenced from PeopleCode.
Translate table record fields
Only Translate table fields associated with page controls are available in the component buffer. Other fields from the Translate table cannot be referenced from PeopleCode.

How to Get Query String Values from PeopleCode

How to Get Query String Values from PeopleCode
In PeopleCode if you want to get the value from the Query String URL, the Request Class can be used. As you may know QueryString can be used to pass information from one page to another page (In the same component or a different component in the portal). Query string consists of the form of name-value pairs, such as EMPLID (name) = 12345678 (value). PeopleCode defines three methods to access the Query string parameter information.
  • GetParameter(name) - returns the value of a specified query string parameter or posted form data parameter.
  • GetParameterNames - returns all the parameter names for this request as an array of Strings, or an empty array if there are no input parameters
  • GetParameterValues(name) - method returns the values of the specified parameter (name) as an array of Strings, or an empty array if the named parameter does not exist. 

    as an example we can get the value of the EMPLID parameter from the query string as follows (assume that code is written in RowInit)

    Local string stringEMPLID = %Request.GetParameter("EMPLID");

    if EMPLID parameter returns multiple values then GetParameterValues() can be used as follows;

    Local Array of String &MYQueryParamValues;
    &MYQueryParamValues = GetParameterValues("EMPLID');
    for &i=1 to &MYQueryParamValues.Len Step 1
    Winmessage(&MYQueryParamValues[&i]);
    end-for;

    For more info please refer: http://docs.oracle.com/cd/E28394_01/pt852pbh1/eng/psbooks/tpcr/book.htm?File=tpcr/htm/tpcr23.htm#H4027

How to Dynamically Change Radio Button Labels using PeopleCode

How to Dynamically Change Radio Button Labels using PeopleCode
If you want to dynamically change the labels of a radio button on a page, you can use a new method in the field class: GetPageField.
The GetPageField method references a field by the unique page field name. The page field name is the name specified on the General tab in the page field properties in the page defintion;
Here is an example where you can change the radio button labels dynamically on a page;

Local boolean &amp;ChangeLables;
If  &amp;ChangeLables = True Then
    &amp;Fld_1 = GetPageField(Page.Page_1,"Radio_Button_1");
    &amp;Fld_2 = GetPageField(Page.Page_1,"Radio_Button_2");
    &amp;Fld_1.Label = "Label_1"
    &amp;Fld_2.Label = "Label_2";
End-if;

Another Example from PeopleBooks
The following example initializes four Field objects to four specific radio button page fields and conditionally sets their labels to either a long version or a short version.
&Fld1 = GetPageField(Page.GNNWG_PAGE, "INITIALIZE"); /* Initialize Radio Button */ &Fld2 = GetPageField(Page.GNNWG_PAGE, "COMMIT"); /* Commit Radio Button */ &Fld3 = GetPageField(Page.GNNWG_PAGE, "ROLLBACK"); /* Rollback Radio Button */ &Fld4 = GetPageField(Page.GNNWG_PAGE, "SAMFAIL"); /* SAMFAIL Radio Button */ If &amp;SetLabel = "Long" Then &amp;Fld1.Label = "Initialize_Long_Label_Name"; &amp;Fld2.Label = "Commit_Long_Label_Name"; &amp;Fld3.Label = "Rollback_Long_Label_Name"; &amp;Fld4.Label = "SAMFAIL_Long_Label_Name"; Else &amp;Fld1.Label = "Initialize"; &amp;Fld2.Label = "Commit"; &amp;Fld3.Label = "Rollback"; &amp;Fld4.Label = "SAMFAIL"; End-If;
Even though all of the radio buttons represent the same record field, GetPageField enables you to reference each radio button individually.