1. Peoplesoft tables of interest.......................................................................................... 2

2. PDF reports................................................................................................................. 2

3. FTP job to copy file to NT server in Dev environment........................................................ 2

4. PS Queries.................................................................................................................. 3

5. Translate table............................................................................................................. 3

6. Installing PeopleTools................................................................................................... 3

7. Scheduling/reporting..................................................................................................... 4

8. General Table Naming................................................................................................... 4

9. Adding Objects............................................................................................................ 4

10. Cloning pages and adding to menu............................................................................... 4

11. Effective Dating SQL................................................................................................... 5

12. Paycycle id’s............................................................................................................. 5

13. Peoplesoft Application Development............................................................................. 6

14. Peopletools Tables.................................................................................................... 16

15. Peoplesoft Architecture............................................................................................. 16

16. Peoplesoft Design Methodology................................................................................. 16

17. PeopleCode.............................................................................................................. 17

18. Security................................................................................................................... 23

19. Process Scheduler.................................................................................................... 23

21. Create Paysheet/Run Paycalc process....................................................................... 23

22. Pay Unsheet process................................................................................................ 24

23. Pages/components behind the web page.................................................................... 24


1. Peoplesoft tables of interest

 

 

 

PS_PAY_OTH_EARNS does not have emplid as part of the key. The way to find corresponding records in this table is:

 

Select *

From PS80PRD.PS_PAY_OTH_EARNS A, PS80PRD.PS_PAY_EARNINGS B

Where b.emplid = ‘100099999’

And b.pay_end_dt = ‘12/31/2005’

And a.pay_end_dt = b.pay_end_dt

And a.company = b.company

And a.paygroup = b.paygroup

And a.page_num = b.page_num

And a.line_num = b.line_num

 

Paysheet run id’s are in:

PS_PAYSHEET_RUNCTL

Pay calc run id’s are in:

PS_PAY_CALC_RUNCTL

Process scheduler status

PSSERVERSTAT

 

To see values for server status

select

*

from

ps89cnv.PSXLATITEM

where FIElDNAME = 'SERVERSTATUS'

 

 

Pay rates

PS_SAL_PLAN_TBL

    (SETID, SAL_ADMIN_PLAN, EFFDT)

    PS_SAL_GRADE_TBL

             (+  GRADE)

          PS_SAL_STEP_TBL

                  (+ STEP)

               PS_SAL_RATECD_TBL

                     (+COMP_EFFSEQ,

                                    COMP_RATECD)

 

PS_JOBCODE_TBL

      (SETID, JOBCODE, EFFDT – has SAL_ADMIN_PLAN to tie back to above tables)

 

 

 

 

 

 

2. PDF reports.

 

Some SQR’s are set up to generate PDF reports. They can only run on the server, not on the mainframe.

 

Some reports are set to only print to a specific printer. When testing check where the report may end up.

 

3. FTP job to copy file to NT server in Dev environment

Promotion of program via Endevor automatically copies program to QA NT directory.

 

    TESTPSFT.PS80DEV.NEESJCL(FTPTOFS) - 01.99       Columns 00001 00072

 ===>                                                  Scroll ===> CSR

***************************** Top of Data ******************************

//$FOERTSS JOB '13,99,IO5160,1734,0345,G1003','               ',

//  CLASS=T,MSGCLASS=Q,NOTIFY=$FOERTS

//*

//********************************************************************

//**     SEND THE FILES TO FILESERVER VIA FTP                      ***

//**     DO NOT MODIFY THIS JCL OTHER THAN JOBCARD AND PUT CMD(S)  ***

//********************************************************************

//*

//*

//FTP010   EXEC PGM=FTP,PARM='(EXIT'

//SYSPRINT DD SYSOUT=*

//* IP ADDRESS FOR WBROPS02 HAS HOME DIRECTORY PSFT80

//INPUT    DD *

PS80QA                     << note connect to QA

FTP80DEV

HAPPY123

LOCSITE FILETYPE=SEQ

CD PS80DEV                 << but sending to dev directory

CD SQR

PUT 'TESTPSFT.PS80DEV.SQRSRC(PHW410)' PHW410.SQR

CLOSE

QUIT

/*

 

4. PS Queries

 

The following tables are involved in queries

 

PSQRYDEFN

PSQRYSELECT

PSQRYRECORD

PSQRYFIELD

PSQRYCRITERIA

PSQRYEXPR

PSQRYBIND

 

All tables are keyed by oprid and qryname. To delete a query your could run

 

DELETE FROM PSQRYDEFN WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYSELECT WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYRECORD WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYFIELD WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYCRITERIA WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYEXPR WHERE OPRID = 'X' AND QRYNAME = 'Y'

DELETE FROM PSQRYBIND WHERE OPRID = 'X' AND QRYNAME = 'Y'

 

 

5. Translate table

 

You may be able to get a translation of a code by looking in the XLATTABLE. For example, to find codes for PS_JOB.EMPL_TYPE run the following

 

            Select * from ps80prd.xlattable

            Where fieldname= ‘EMPL_TYPE’

 

 

6. Installing PeopleTools

 

Connect to  server //nyhcbappd2v

Go to PS80DEV\wscfg directory

Click on one of the PS80DEV_from_x_drive.bat files.   (x is j,k or l)

 

7. Scheduling/reporting

 

Peoplesoft jobs in prod are set to be single threaded. Only one PP job runs at a time. This ensures, among other things, that the PSSQR100 and PSSQR614 procs using PSFTPRD.PPXJ0100.TEMP.PRTFILE/.BKUP report files do not get over overwritten by another job before the current one completes.

 

In test however, the PSSQR100 and PSSQR614 procs are different and expect a delete/define member the same name as the SQR in ‘TESTPSFT.PS80DEV/QA.UTIL.CNTRLIB’. The member is used by IDCAMS to delete/define the report files – that use the SQR name in report files to avoid testing conflicts.

 

8. General Table Naming

 

Tables starting with PS_ are Peoplesoft tables.

 

Tables starting with PS (no _) are PeopleTools tables

                        PSRECDEFN – record definition

                        PSRECFIELD – field definition

 

Views

            Summary page views …_VW

            Search record views   …_SRCH

            Prompt table views    …_VW

            Reporting views          … No common suffix

 

 

9. Adding Objects

 

Adding object to project

Click Insert/Current Object into Project

Field definitions

In Peoplesoft Application Designer

File/Open, select Field from Definition Dropdown

Type name (or part of name) in Name field, click Open

 

Select field name displayed in list, and click Open, or doubleclick on name to display field properties.

 

Select Edit, Find Definition references to see where field userid

 

To create a field

File/New, select Field from list – follow prompts as needed

Click File/Save to save definition

 

 

 

 

 

 

 

 

10. Cloning pages and adding to menu

 

Page NP_RUNCNTL_PHW430

 Opened page NP_RUNCNTL_PHW020 and did save as NP_RUNCNTL_PHW430.

Update page (text literals) as needed

Components NP_RUN_PHW430

Opened component NP_RUN_PHW020, save as NP_RUN_PHW430

Updated Item Label (displays as tab label on screen)

Right click on component line to display component properties

Changed values in General, Use, and Internet tab fields as needed.

Menu

Opened Administer Workforce (GBL) to add menu items

Update menu item properties

Security

Go/PeopleTools/Maintain Security

In new window

Use/Permission Lists/Pages/”Update/Display”

 

Display permission list for ALLPANLS

Clicked on Edit Component next to Administer_Workforce(GBL)

Found menu item under CSTM Reports found PHW430 and clicked on Edit Pages

Set page permissions same as PWH020

Process Scheduler Manager

Clicked on Go/Peopletools/Process Scheduler Manager

Scheduler App opened

Use/Process Definitions/Process Definition Options/”Add”

Process Type – SQL Report

Process Name – PHW430

Process Definition Tab – Type in description and long description

Process Definition Options tab – Run (Both), Component – NP_RUN_PHW430, Process Group – HRALL

Other tabs left as defaults.

 

 

 

 

11. Effective Dating SQL

 

FROM PS_JOB C

 WHERE C.EMPLID = &A.EMPLID

   AND C.EFFDT = (SELECT MAX(PJ.EFFDT)

                   FROM PS_JOB PJ

                   WHERE PJ.EMPLID = C.EMPLID

                     AND PJ.EMPL_RCD = C.EMPL_RCD

                     AND PJ.EFFDT < &B.EFFDT)

   AND C.EFFSEQ = (SELECT MAX(PJ.EFFSEQ)

                   FROM PS_JOB PJ

                   WHERE PJ.EMPLID = C.EMPLID

                     AND PJ.EMPL_RCD = C.EMPL_RCD

                     AND PJ.EFFDT = C.EFFDT)

 

12. Paycycle id’s

 

Montly payrolls are identified with a 2 digit year and a 1 letter month, eg 06D is 2006/April.

 

Weekly payrolls are identified with a 1 digit year and a 2 digit week, eg. 602 is for week 01/01/06 to 01/07/06 – with check date 01/12/06  (2nd paycheck of the year)

 

 

 

13. Peoplesoft Application Development

 

Starting with Peoplesoft 8, Peoplesoft Pure Internet Architecture has all activities accessible via the web browser

Designing and application

Plan the data structures

  1. Define fields – names, attributes, default values, edit values, prompt table
  2. Define records – names,  keys, search, master/child relationships
  3. Design pages, define records to be used on page, menu access
  4. Set test plan
  5. Create component definitions
  6. Register components

Key function in App Designer

Alt 0 (zero) – toggles project workspace show/hide

Alt  1  -  toggles  output window show/hide

Data validation strategies

Prompt table edits

Effective dated tables

Translate table edits

Yes/no edits

Tableset sharing prompts

Project options

Tools/Options

Reload project at startup

Code/setup Validation

Inserting objects into project

Undo/redo buffer depth

Font size

Image storage formats

 

Creating new fields

For any new fields gather the following

Field/Label Name  eg   Last_name

Type   eg. Char, Num, Date, ..

Length   eg 6 (for Char)  2.1 (for Num)  10 (Date)

Label (long/short)

Format     Upper, Mixed,  N/A

Translates     Y/ -

New      Y/-

 

Add field via  File/New/Field (from list)

 

Go to File/Object Properties with field selected to and text  and owner Id if needed.  If the field is a character field there will be an International Format and Translate Values tab

 

Creating translate values

Go to File/Object Properties with field selected  (field must be char)

Select Translate Values tab

Click on Add to add translate values

 

Translate values should end up in the owner.XLATTABLE table

 

Record Definitions

File/Open/Record , type in record (or partial key) hit Enter to display/select

 

With record displayed

View/Fields Display

View/Use Display

View/Edits Display

View/Peoplecode Display – display by field all places Peoplecode can be attached,  FieldDefault, Field Change, Field Edit,….

 

 

* Remember in App Designer the records are referenced w/o the PS_

 

Click on record field to show Use and Edit tabs where you can set

Key, Duplicate Key, Alternate Key, Prompt table for field value, data entry via checkbox, dropdown list, etc

Use above

 

Create table DDL by

Build/Current Object

Select build options

Check build script file

Click in settings to check

Click build to generate script

See build tab at bottom of App Designer for message

 

 

If you have record definition displayed, clicking on the print icon will print the definition, plus any Peoplecode, xlat values, etc.

 

Page Definitions

 

File/Open/Page , type in record (or partial key) hit Enter to display/select

 

Placing a field (with translate values) on page, double click on it, check show prompt button to (automagically) active field lookup

 

When a page is displayed on the web, pressing cntl/J will display a page detailing info on the page such as the page, the page component, menu, app server, etc.

 

Page fields

To create radio buttons that set value of one field

  1. Create as many radio buttons as possible values to be set
  2. Set assigned value to each button (value to assign if selected)
  3. Insert a group box and position it to surround the buttons
  4. Set record,field, and label properties of group box

 

Scroll Areas

  1. Select insert, scroll area
  2. Drag scroll area onto page and surround fields to be scrolled
  3. Set properties of scroll area , occurs level and occurs count
  4. Set title properties via page element type – Message catalog, message set and message number

 

The message catalog table should be used to avoid hard coding

 

Field order

  1. Select Order tab on page
  2. Set order as needed

 

Adding grid on page

To create a grid

  1. Add a grid control to the page
  2. Drag/drop fields into the grid
  3. Set grid properties
  4. Resize grid as needed

 

Multiple page levels

Create level 0

  1. Create new page
  2. Drag/drop level 0 fields to page

Create level 1

  1. Select Insert Grid
  2. Drag/drop grid
  3. Update grid properties

a.       Main record – level 0 record

b.       Page Field name – level 0 record

  1. Drag/drop selected level 1 record into the grid
  2. Resize record fields/grid as needed
  3. Add related fields (such as description for code)

a.       Click on field

b.       Add record/field to related record/field

c.       See other field properties as needed

7. Check field page order by clicking on Order tab

 

 

(Use message database for any messages)

Components

A page must be attached to a component.

A component can be attached to a menu

 

Create the component by

File/New,  select component from New Definition dialog

Expand pages folder in project workspace

Drag the page from the folder to the component

Enter info as needed in component properties

            Search record

            Actions – add, update/display, etc.

            Toolbar actions – save, cancel, spell check, view worklist, …

 

 

 

Registering components

Use Registration Wizard to

  1. Place component on menu definition
  2. Create a content reference in portal registry
  3. Place component in permission list

 

To start registration wizard

  1. Open the component in Application Designer
  2. Select Tools, Register Component
  3. Set ‘Add component to menu’, ‘Add component to portal registry’, ‘Add this component to a permission list’, click Next
  4. Respond to prompts

 

Security

Roles –

 

  1. Select PeopleTools, Maintain Security, Use , User Profiles, Enter userid or search to select
  2. Assign roles, permission lists, etc.

 

 

Permission Lists -

  1. Select PeopleTools, Maintain Security, Use , Permission Lists

 

 

To allow user to select menu item from menu

  1. Select PeopleTools, Maintain Security, Use , Permission Lists (Search -Pick permission list needed)
  2. Sselect Pages Tab, select menu that page is on and click edit components
  3. Click on Edit Pages for that component, check appropriate options

 

 

Portal Registry

Select Peopletools, Portal

 

Node Definitions – for default node

Portal Definitions – for default portal

 

PeopleTools, Portal Structure and Content

Click Edit link for folder (use select new parent to move folder)

Click Add Folder to …. Add a folder!

 

 

Examing breadcrumbs, folders and content references

 

  1. Peopletools, Structure and Content

 

Searching Site

Execute Verity search by

  1. Enter search criteria in search field

 

 

Update search registry index

  1. Peopletools, Portal, Build Registry Search Index
  2. 2. Add new run control id (if needed)

(Runs PS application engine process called PORTAL_INDEX)

  1. Run/OK
  2. Process Monitor/Refresh until success appears in Run Status

 

 

Data Audits

Create an audit record

  1. Open the record definition to be audited
  2. Do File/Save As AUDIT_.... (record name)
  3. Insert audit fields into AUDIT_ record

      Insert AUDIT_OPRID, AUDIT_STAMP, AUDIT_ACTN as first 3       fields on AUDIT_ record

4. Delete unneeded fields on AUDIT_ record

5. Clear key, search, list, default value fields on AUDIT_ record

6. Set ‘Auto Update’ on AUDIT_STAMP

7. Do File/Save

8. Build table

9. Open original record to be audited

10. Select File, Definition Properties, Use tab

11. Enter AUDIT_... into record name field, set ADD, Selective, Delete, and/or Change

 

 

 

Set Field level audit

  1. Display record definition
  2. On Use table, check audit options, Field Add, Change, Delete in Audit group box

Export/Import

Exporting

  1. Open the project.
  2. Select the Upgrade tab
  3. Select Tools/Copy Project/ To File
  4. Make sure all definition types are selected
  5. Set the export directory
  6. Click copy button

 

Two files created - xxx.ini and xxx.xml

 

Importing

  1. Select Tools/Copy Project/From File
  2. Browse to folder containing xxx.ini and xxx.xml export files
  3. Click Open
  4. Make sure all definition types are selected
  5. Click Copy
  6. Select Tools/Validate Project
  7. Click No in Delete Objects Dialog box

 

 

Creating Peoplesoft views

 

SQL View option - If you want to write the SQL view definition

  1. Create new field definition
  2. Insert fields Save record definition
  3. Set the record field attributes
  4. Write the SQL statement (Order of the fields must match the order of corresponding fields in the view select statement
  5. Build the view

 

Query View – Create the view using Peoplesoft to prompt you through building the query  This process has 3 parts:

  1. Record definition
  2. Query definition
  3. Documentation

 

To create a Query View

  1. Create the record definition
  2. Click record type tab
  3. Select Query View option and ‘Click to launch Query’
  4. Save record definition
  5. Create query for view
  6. Test query
  7. Copy SQL and paste into Record Properties
  8. Save record definition
  9. Remove unnecessary field attributes
  10. Save record definition
  11. Build View

 

In the end there is no difference in the result between building the view on your own (SQL View option) vs having Peoplesoft (Query View) prompt you through it.

 

There is a potential problem with SQL View in that if the field order changes but view sql doesn’t you end up with a view field mismatch to the underlying view sql.

 

Summary Pages

  1. Summary pages summarize or display data in view only mode (no update)
  2. Usually do not contain related fields (use view if needed)
  3. Exceptions to related fields are:
    1. joins to effective-dated tables
    2. Including short/long descriptions from translate table

 

The key structure in views are used differently that tables. In views the component processor uses the ‘key’ to search and sort.

 

First key in a summary view should be the search key. Information depends on the search key at level 0.

 

Te level 1 view must have at least to key fields – the level 0 key and 1 more

Search records

Three questions for search records

1. Which table is source of high-level keys at level 0 on the page?

2. Which rows of data should be seen by user?

3. Which fields should user on the search page

 

 

Every component must have a search record

When user clicks a content reference, the corresponding component search records and actions are used to build search page

The search record of a component is used to request data from database server, and since only selected fields returned, data retrieval is minimized.

 

The search page is dynamically created page built by the system – not user defined.

 

Search keys appear as fields on the search page as they appear in the records.

 

Alternate search keys are not key fields but they appear as fields on the search page to help find existing records (really the primary key existing records)

 

Alternate search keys are not key fields but they appear as fields on the search page to help you find an existing key.

 

List box items are fields in search results list – they do not have to be the key or alt key fields

 

The main purpose of the search page is to find key value(s) that the system can insert into an SQL phrase for use as the primary key in the SQL where phrase. (The level 0 record is found and returned)

 

When in add mode the primary seach key is used to construct the initial Add page where the user enters the new (primary) key. The subsequent page displayed allows the user to enter the non-key fields values.

 

Search views (views ending with _SRCH) are created to provide additional search criteria, and create row-level security. So on component dialog window the search record can be the _SRCH view but the ‘Add search record’ would be the base record.

 

If _SRCH record is defined but an ‘Add search record’ is not a user could bypass the security

a.       When user selects add a new value, the component process first tries to select the value from the search record

b.        If record not found, the page processor takes over to load page

c.       If record in base table, the record is retrieved and displayed (uh-oh)

 

Prompt table edits

A magnifying glass icon next to a field indicates prompting available.

A prompt is just a list of valid values that can be selected for the field

The prompt values generally come from a ‘master’ table

The same mechanism that builds search pages are used to build look up pages.

Again use views for row level security, rearranging columns, join tables, etc.

Prompts return lowest level key from prompt table, with exception of eff date and eff seq.

Prompts attempt to match higher level keys in buffer

Views are useful to control the list of values returned by:

    1. filtering the list of value values by where clause
    2. controlling the field returned from a prompt action
    3. controlling the matching that occurs in background
    4. controlling the search/alternate search keys, and list box items used by the system to build prompt dialog box

Tableset sharing

Functional aspects:

  • Goal is to share sets of values in a prompt table without having to write views.
  • For example, one company with 3 divisions (or business units). Each company has it’s own set of item codes. And each company maintains it’s own set of transaction data (orders using it’s own set of item codes)
  • A business unit could be a set of departments, sales regions, legal entities, financial entities

 

Tableset sharing uses 2 types of tables: a) control tables, b) transaction tables

 

Transaction tables:

  • Contain the business unit field and store transaction data (orders, invoices, etc.)
  • Are updated regularly and contain the required BUSINESS_UNIT (usually key but sometimes just required) field

 

Control tables:

  • Are keyed by SetID and are using in prompting for lists of valid values.
  • Generally static and change only via maintenance
  • Data in control tables may be lists of customers, products, etc.

 

A tableset is a group of rows in a control table grouped by the same high-level SETID(column)  value

Prompt values returned from the control table contain lowest level key (except of effdt and effseq) for the specific SETID value specified.

SETID values are maintained in SETID_TBL

 

There are 2 types of setID’s: a) Physical and b) Logical

Physical setIDs:

Have same value as the business unit

Are automatically created by the system when a business unit is created

 

Logical setIDs:

Are created manually and is a label for a set of data

Are a way of sharing rows of data across multiple business units

 

The TableSet Control utility is used to establish links between business units in the transaction tables and setIDs in the control tables

 

Implementing tableset sharing involves 5 steps

  • Add BUSINESS_UNIT to a transaction table or STEID to control table
  • Define the Set Control Field in the control table
  • Create or alter the table
  • Add Peoplecode to the business unit table
  • Alter the page

 

 

 

Adding Business Unit, specify on the record definition

  • Key
  • Search Key
  • List box item
  • Required
  • Prompt against a PS_BUS_UNIT_TBL (may be multiple)
  • Default value

 

Adding a SETID to a control table

Same as above except prompt table is PS_SETID_TBL

 

 

Parent-Child relationships

Referential Integrity is enforced in PS via

  • Prompt table edits – error if invalid value entered not on prompt table
  • Peoplecode – use SQL and Peoplecode objects
  • Record definition structure
  • Occurs levels on a page
  • Parent-child record definitions
  • Not done in database

 

 

Creating Parent-Child record definitions

Clone (copy) the parent key structure and save as the child name

Add addition key and data fields to child record definition

Type in the parent record name into the Record Releations/Parent Record field on the child record properties screen. (useful for PS Query)

 

Page definitions

  • Level 0 never contains a scroll area or grid (parent level)
  • Levels 1,2,… can contain scroll areas (the child records). A scroll area only writes to a single record definition. Display of data must come from sames single record definition, unless they are related fields.
  • The occurs-level of a given scroll area or gird is used to determine the hierarchical relationship among various record definitions on a page
  • A component can contain many pages, the first which may have the parent definition and the 2nd the child. But each page must shave the same level 0 search key.

 

Buffer allocation

Buffer allocation

  • Is the process of retrieving application data from the database server and storing it temporarily on the app server
  • All the application data for the component is read from the database into the memory buffer before a page is displayed
  • When user saves the component only the altered data is updated and committed to the database.

 

Subrecords and subpages

Subrecords

  • A subrecord contains common fields that can be inserted into other records by referencing just the subrecord name, rather than adding fields one at a time.
  • Fields from the subrecord become actual columns on the physical table
  • Subrecord definitions should end with _SBR
  • Set the record type to ‘Subrecord’
  • Set all Use and Edit attributes for subrecord fields as needed. The attributes are called over to the main record
  • A record with a subrecord in it will have ‘Expand’ and ‘Collapse’ subrecords buttons in app designer (view only)
  • Modifications after use on records causes all records to be modified also

 

Subpages

  • Provide a commonly formatted group of fields for use on multiple page definitions
  • Subpages should end in _SBP
  • Create same a regular page
  • Set page type to subpage and page size to Auto-size
  • Add field controls
  • Set record and use attributes such as display control and related fields.
  • Modifications after use on page causes all pages to be modified also

 

 

Deferred processing

Deferred processing reduces the connections to the app server

Events that can initiate a server connection/request and if deferrable

Event                                                                Deferrable

Enter data in fields with Peoplecode                    Yes

Enter data in fields with prompts                          Yes

Enter data in fields with related displays               Yes

Inserting a row from a grid or scroll area               No

Deleting row from grid or scroll area                     No

Using grid or scroll area controls for forward/back No

Selecting new page tab                                      No

Selecting new grid tab                                        No

Expanding/collapsing sections                            No

Clicking any button or icon or link on page           No

Saving the page                                     No

 

Deferred processing is default mode

 

Expert entry allows a change from interactive to deferred mode at runtime but expert entry must be enabled on:

  • Component property (check expert entry on Internet tab)
  • Users profile (Peopletools/Security/User Pofiles/User Profiles/General)
  • When both checked the user will see a Expert Entry check box at the bottom of the page
  • If deferred processing enabled at page level, deferred processing can be set at field level

 

 

Peoplecode

Peoplecode is

  • Proprietary language
  • Event Driven
  • Executed on app server
  • Consists of functions, assignments and conditions
  • Used to maintain referential integrity
  • Can add functionality to the user interface

 

Peoplecode can be attached to

  • Records
  • Pages
  • Components
  • Menu items
  • Component interfaces
  • Messages
  • Application Engine programs
  • Mobile agents

 

Attach Peoplcode at appropriate level

  • At record field level if it is to run every time a user accesses that record
  • At componet level if code to run only when records accessed via that component
  • At page level if code to only on that page

 

Peoplecode can not be attached to a standalone field

 

PeopleTools runs PeopleCode programs only when certain events occur

 

Event driven process is handled by the Component Processor and the events always occur in a certain order as determined by the component processor flow.

 

The component processor is the heart of the online app server logic. It manages the data buffers and the sequence of events

 

One event may cause multiple Peoplecode programs (each associated to  record/component/page) to execute

 

See section on Peoplecode below

 

 

 

 

 

14. Peopletools Tables

 

Peopletools tables start with ‘PS’ and no underscore

PSDBFIELD

Field definitions on a page and columns in application data tables

PSRCDEFB

Values used to build application data tables, indexes, views and some field attribuites in user interface

PSPNLDEFN

Values converting into HTML as pages viewed in browser

PSPNKGRPDEFN

Definitions of components, aggreagates pages into groups and define the table to search when adding new values

PSPRSMDEFN

Portal registry which builds user navigation

PSXLATITEM

Translate table

 

 

15. Peoplesoft Architecture

 

Browse to Web Server (web services, java services) to Application Server (Tuxedo/Jolt – connects to Java services on web server, Peoplesoft Services) to Database server (via Peoplesoft Services/SQL)

 

16. Peoplesoft Design Methodology

 

  1. Define business rules
    1. Find balance
    2. Be specific
    3. Don’t predefine a solution
    4. Attain consensus
    5. Get agreement on all rules (else doomed)
  2. Examine data models and define relationships
    1. Look in Customer Connection for data models
    2. Define changes and additions
  3. Create mockups of applications
    1. Catch issues before development begins
    2. Clarify goals
    3. Manage expections (what IS or IS NOT included)
  4. Specify definition attributes
    1. Use definition specification chart (field name, type, length, label, translate values,..)
    2. Create technical specifications from functional requirements
  5. Perform impact analysis
    1. Cross-reference (Crystal or SQR)reports
    2. Definition Reference utility
    3. Record Cross-Reference utility (PeopleTools/Utilities/Audit/Record Cross Reference)
    4. Compare and Report utility  (Tools/Compare and Report)
    5. Find In utility (Edit/Find In)
    6. Impact of modifying existing Peoplesoft application
  6. Go back to 2 as needed

 

 

17. PeopleCode

 

List of events that are available for each definition

 

Record field

Component Record field

Component Record

Component

Page

Menu

FieldChange

FieldChange

Row Delete

PostBuild

Activate

ItemSelected

FieldDefault

FieldDefault

RowInit

Pre Build

 

 

FieldEdit

FieldEdit

RowInsert

SavePostChg

 

 

FieldFormula

PrePopup

RowSelect

SavePreChg

 

 

PrePopup

 

SaveEdit

Workflow

 

 

RowDelete

 

SavePostChg

 

 

 

RowInit

 

SavePreChg

 

 

 

RowSelect

 

SearchSave

 

 

 

SaveEdit

 

 

 

 

 

SavePostChange

 

 

 

 

 

SavePreChange

 

 

 

 

 

SearchInit

 

 

 

 

 

SearchSave

 

 

 

 

 

Workflow

 

 

 

 

 

 

Expanding record and field definitions in the project workspace will show associated Peoplecode programs appearing as children (with lightning bolt) of the fields they are associated with. The programs are named according to the event.

 

 

If/Then/Else

If condition then

    Statements ;

Else

     Statements ;

End-if;

 

Field elements

^  - same field to which program is attached (will be replaced by current record and field names)

Fieldname – a field in same record definition as the program (the record name will be prepended to the field name)

Recordname.fieldname – a field in a different record definition from the program

 

Fields can be dragged from records in project workspace into the Peoplecode editor

 

The field must be in the buffer for the code to work properly

 

Mathematical operations

=  , != or <>, >, <, >=, <=

Boolean operators

Applied in order

NOT

AND

OR

Formatting

Peoplecode editor will check syntax and reformat the code when saved or by clicking Validate icon

 

Peoplecode is case sensitive only in quoted strings.

Warning/Error Messages

Warning(“ Danger Will Robinson”);

Error(“Houston – we have a problem”);

 

Parentheses are not required around he warning or error msg

 

If Error, the user can not continue working until error has been corrected.

Checking for value

2 functions

All(fieldname)  - returns true when fieldname contains a value

None(fieldname) – returns true when fieldname does not contain a value

If All(tab1.street, tab1.state, tab2.name) then

   …;

Else

 

End-if;

Concatenation

Operator - |

Warning(“Invalid date :” |  tab1.start_date);

Comments

3 methods for comments

  • Start with /* and end with */
  • Use Rem at start and end with ;
  • Use tags <*   to *>   (can comment entire program including embedded comments

 

It is good practice to include a unique string in comments to identify custom code. Use the ‘Find In’ dialog to search for the text string

Message Catalog

Access Message Catalog via PeopleTools/Utilities/Administration/ Message Catalog

 

  • Message sets contain functionally related messages
  • Message sets 20,000 to 32,767 are available for use. All others are reserved for Peoplesoft
  • Each msg has long and short description
  • Each msg uniquely identified by message set and message number
  • The message number is automatically assigned (next seq. number) by Peoplecode
  • The message text can be 100 chars long and is top line of text that displays in error msg.
  • The explanation is displayed below the message text

 

Messages are retrieved by

MsgGet(<MessageSet>, <MessageNum>,”DefaultMsgText”, [<bindvar1, bindvar2]);

 

If None(PS_EMPLOYEES.EMPLID) then

       Error sgGet(32222,10,”Message Not Found”);

End-if;

 

“DefaultMsgText is displayed is message not found in  catalog

 

You must indicate Error or Warning in the MsgGet syntax to  determine how the msg is treated

 

Warning MsgGet(20001,2,”Message not found. …”);

 

Field values can be inserted into the message catalog text by identifying the replacement vars with %1, %2, etc. and passing in bind variables.

(replace/bind variables can not be used in explanation text)

 

 

FieldEdit

FieldEdits are invoked when all 3 conditions are meet

  • A field value is changed by user
  • The focus is changed
  • The new value satisfies standard system edits

 

FieldEdits

  • Validate contents of a field
  • If error msg generated, the field will turn red
  • Program can be record field or component record field PeopleCode but program must be associated with the field
  • Only validates a single field for a row of data

 

It is recommended that most validation should be placed in SaveEdit unless there are critical dependencies between an interactive field and display-only field

 

SaveEdit

SaveEdit

  • Runs when a user saves a component
  • Used to validate multiple fields at a one time
  • Executed when user presses Save and data passed standard system edits but before updates to the database
  • Applies to all rows in a component so a warning or error displayed may not  be on current page user is viewing (concatenate field values into warning or error msg)
  • Does not change the color of field to red if error

 

RowInit

RowInit

  • Used to initialize fields, calculate values and change display characteristics
  • Executes before the page is displayed
  • Program can be either record field or component record Peoplecode. Not field specific
  • Operates on all new buffer rows
  • Not used for warnings/errors

 

FieldChange

FieldChange

  • Performs processing that needs to happen when field value changes
  • Program can be either record field or component record Peoplecode. Must be associated with field that is changed
  • Recommended that you do not code an error or warning in FieldChange code
  • Use to control field displays and perform (re)calculations
  • Runs after FieldEdit
  • Triggered by field value and focus change

 

 

Display functions

Commonly used with RowInit and FieldChange

 

(un)Gray (recordname.fieldname)

(Un)Hide(recordname.fieldname)

 

  • Only one field can be defined in the function at a time
  • Ungray does not override PeopleTools attributes that are assigned to the field. If field is defined as display only ungray has no effect
  • If conflict between PeopleTools and PeopleCode, PeopleTools tends to override PeopleCode.
  • Object oriented code can override display only attributes in PeopleTools

                               

 

SetDefault(recordname.fieldname) – clear contents of field to default

 

Objects

Syntax

 

&Object.Property = value;

&variable = &Object.Property;

&FIELD.label = $FIELD.GetShortLabel(“LABELX”);

 

To work with objects

  • Declare the object
  • Instantiate the object
  • Assign values as needed to object
  • Data must be in buffer for code to work properly

 

Local Field &Emplid;   /* declare local */

&Emplid = GetField(recordname.empl_id);  /*instantiate */

 

Common field object methods

  • Value property
  • Enabled property
  • Visible property
  • Style property
  • SetDefault() method

 

Local Field &Emplid;

&Emplid = GetField(PS_JOB.EMPLID);

If &Emplid.Value = ‘1234’ then

            …;

End=if;

&Emplid.Enabled = True;

&Emplid.Visible = True;

&Emplid.Style = “PSHYPERLINK:

&Emplid.SetDefault(); /* set field to ‘empty’, 0, blank, null */

 

 

Images

Viewing images

  • Open App Designer
  • File, Open, Image
  • Enter search parms
  • Select image definition
  • Open

 

Image definitions held is PSCONTDEFN

 

 

A page definition must have a container(push button or static image control) to hold an image

An image definition can be defined within a scroll area or grid

 

Image fields have 3 main attributes

  • Size
  • Format
  • Labels

 

Image fields

  • Must be last column in record and type Img (similar to Long)
  • Record should contain PSIMAGEVER field (2nd to last field - improves performance – Java servlet on web server checks field to see if image already cached , not required field, make invisible on online page)

 

Images are uploaded from local or network directory using Peoplecode and push buttons

 

Image Functions:

&rc = InsertImage(recordname.fieldname);  - Associate image file with record field

PS saves the image by saving the component. A search page is invoked to allow use to upload the image to be used

DeleteImage(recordname.fieldname)  - delete the image

 

Push button fields are on derived/work record. A FieldChange PeopleCode program on the derived/work record is defined  to:

  • Upload/insert the photo into the image record field
  • Delete the image defined for the image record field

 

To define push button

  • Select Insert, PushButton/Hyperlink and place control on page
  • Double click button and define properties
  • Push Button – Selected
  • Destination – PeopleCode Command
  • Record Name – Derived/Work Record name
  • Field Name – Derived/Work Record field name
  • Add FieldChange Peoplecode (insertimage, deleteimage)

 

PeopleSoft Internet Architecture supports JPG and BMP image formats, but image definitions supported are BMP, DIB, JPG, GIF, WBMP

 

 

 

Style Sheets

 A style sheet:

  • Contains 1 or more formatting styles that can be applied to page controls
  • Composed of 1 or more classes (either default – PS supplied, or custom – not PS delivered)  that determine the formatting of a page control
  • Can contain a substyle sheet (analogous to a subpage or subrecord)
  • Accessed via File, Open, Definition, Style Sheet
  • Is a global definition, alterations to it cause system wide display changes (same for substyle sheets)

 

Default styles are identified by ‘*** Used Default Style ***’ in field

properties

 

A class is a template defining properties such as font name, style, format, color, etc. The properties are applied to pages or page controls.

 

Style sheet PTSTYLEDEF contains all the default classes.

 

To set a different style sheet(class) for a control, select a different value from the Style drop down list

 

 

 

 

 

 

Moving source code to new environment

If STATS is NOT being used

 

In PeopleTools, go to Tools/Upgrade

 

Select Compare and Report option for ….. Compare and report!

Select Copy  to …… Copy!

 

 

18. Security

 

Table – PSOPRDEFN 

Two columns of interest

            ACCTLOCK       values  0 – unlock, 1 – lock

OPERPSWD     encrypted password. If updating via QMF make sure profile set to mixed case - ttlX21MVCv0FP+vuj6eCTvGO09Q=         (welcome)

 

 

update ps80dev.psoprdefn set acctlock=0 where oprid='FOERTS'

 

 

19. Process Scheduler

 

To start/pause mainframe process scheduler in test

 

            TESTPSFT.PS89xxx.JCLLIB(STARPRCS)    -  xxx being DEV, QA, INT etc.

                                                           (STOPPRCS) - pause

 

The production jobs are

 

            NEES.COMMON.PROD.JCLLIB(PUDJ0130) – to pause

                             (PUDJ0140) – to resume

 

      Eg.

UPDATE PS80PRD.PSSERVERSTAT

  SET SERVERSTATUS = '3'

  ,   SERVERACTION = '3'

  ,   LASTUPDDTTM  = CURRENT TIMESTAMP

WHERE SERVERNAME IN ('PSOS390','PSNT')

  AND SERVERSTATUS = '2';

 

 

The following tables are used by process scheduler.

 

PS_SERVERDEFN

List of servers

PS_PRCSPURGELIST

(Used in purge process) List of runstatus (see descriptions in PSXLATITEM where FIELDNAME = ‘RUNSTATUS’) and the DAYSBEFOREPURGE

PRSPRCSRQST

List of process instances (PRCSINSTANCE), servers the process is running/ran on (SERVERNAMERQST) and the current run status (RUNSTATUS)

 

PSPRCSQUE

Queued processes(?)

PSPRCSPARMS

Process parms

PSPRCSQSTTEXT

Process text

PSPRCRQSTDEST

Process destination

PSPRCSRQSTXFER

 

 

 

 

 

 

 

21. Create Paysheet/Run Paycalc process

 

A run id will need to be created.

 

  1. Click on Payroll for North America/Payroll Processing USA/Create and Load Paysheets/Create Paysheets.
  2. Click search to get list of run control id’s. In this case you will need to pick the run control that matchs to the batch job parm card (eg PPW1000F - PAYCREATE) that the program will look for.
  3. After selecting the run control id, enter the Pay Run Id (eg. 606) and save it.
  4. Click on Payroll for North America/Payroll Processing USA/Produce Payroll/Calculate Pay.
  5. Click search to get list of run control id’s. In this case you will need to pick the run control that matchs to the batch job parm card (eg PPW1000G - PAYCALC) that the program will look for.
  6. After selecting the run control id, enter the Pay Run Id (eg. 606) and save it.
  7. Make sure all other parms in the job have the correct pay run id and/or end/check date
  8. Submit batch job

 

22. Pay Unsheet process

 

Click on Payroll for North America/Payroll Processing USA/Update Paysheets/Pay Unsheet

 

  1. Select or create new run id
  2. Enter Pay run id for on cycle run, or company, paygroup, etc. for off-cycle calendar
  3. Click run
  4. Click on Process Monitor to check status. If run status continues to show queued you may need to restart process scheduler, see above for mainframe,  or contact PS middleware support group for restart of NT server

 

Note that the run id’s in process scheduler table were probably deleted.

 

 

23. Pages/components behind the web page

 

To see what page/component is being executed to display the web page, press cntl/J

 

24. PeopleTools/Process Scheduler/Processes

 

To see how a process is defined go to PeopleTools/Process Scheduler/Processes

 

If you know the name (eg.PHO010), select ‘Search by Process Name’ in the dropdown box and enter the name

 

Don’t know if this is standard but Crystal report PH0110 is named NPPHO110