Peoplesoft Interview Questions Application Designer Project

A user-defined collection of related object definitions created for the purpose of developing, customizing, or upgrading a PS application

What are the 9 Development Steps? Design the application.
Create the Record Definition Define the Panel Group Build the SQL Table Add the Panel Group to a Menu

Define New Fields Create the Panel Definition Enable Security Test the Application

All the data that resides in PS applications is stored in tables, or records, as part of a relational database system. Each record definition describes the properties of an underlying SQL table.

Page | 1

Record Types
1.SQL Table ‡ A record definition that has a corresponding physical SQL table in the database. Create this table when you run the Build Operation from the Build menu. This is the default setting. (A physical SQL Table present in the database, this is the default.) 2. Sql View ‡ A record definition that corresponds to a SQL view, which is not a physical SQL table in the database, but rather fields from one or more SQL tables that are reorganized into a different sequence. This provides an alternate view of information that is stored in tables. ‡ To create the SQL view, click the Click to open SQL Editor button, enter a SQL Select statement, and then run the Build process. ‡ Not a physical SQL Table but corresponds to a view written in SQL referring one or more fields from different tables. This gives a filtered view of information stored in tables. Stored in the database as a view. (Query view is system generated and SQL views are created by developer) whenever you modify a record you need to take care: check if any views are dependent on this record. 3. Dynamic View ‡ A record definition that can be used like a view in pages and PeopleCode, but is not actually stored as a SQL view in the database. Instead, the system uses the view text as a base for the SQL Select that is performed at runtime. ‡ Dynamic views can provide superior performance in some situations, such as search records and in PeopleCode Selects, because they are optimized more efficiently than normal SQL views. 4. Derived/Work Record ‡ The record definition as a temporary workspace to use during online page processing. A derived or work record is not stored in the database, so you do not build it. We can use it to calculations. It is not an object, and also we can use it as a funclib. 5. Sub Record ‡ The record definition as a sub record a group of fields that are commonly used in multiple record definitions that you can add to other record definitions. This way, you can change a group of fields in one place, as opposed to changing each record definition in which the group of fields is used. ‡ Group of fields used in multiple records like companies having address data of employees. If you have to use the same fields in different record definitions, then we will store all those fields in a subrecord and add this subrecord as a field to the record definitions. Stored in the database. 6. Query View ‡ The record definition as a view that is constructed using the PS Query tool. Before you can create the view, PS APP.Designer prompts you to save the definition. Using the PS Query we don¶t need to write a query it will automatically generate by dragging and dropping. 7. Temporary Table ‡ Temporary images of the table can be specified on the People Tools Options page. Temporary tables are used for running PS AE batch processes. Temporary tables can store specific data to update without risking the main application table.


we will do all the manipulations on the data present in the temporary table. Increases the performance, as it is not stored in the database. option available for below record types only: SQL Table, SQL View, Query View, Temporary table

What is a dynamic view? Where we can use dynamic View? ‡ It can be used like a view in pages and people code but not stored in database as a sql view, ‡ Instead the system uses the view text as a base for the sql select that is performed at runtime.
‡ These views shows superior performance in some situations such as search records and people code selects.

What is difference between SQL View and Dynamic View? ‡ SQL views are written against the RDBMS catalog tables. Dynamic view is declared only to people tools and not to the system catalog. SQL views are not recommended for performance tuning as they run against the database. Dynamic views improve performance. SQL views reside in the database dynamic views are not. Advantages of Using Search Views instead of Search Table ‡ As the search view is created with selected fields there will not be much stress on AS ‡ and there by improves the performance. Search View also gives additional search criteria.

Peoplesoft Interview Questions
Effective dates enable you to keep historical, current, and future information in tables. You can use the information to review the past and plan for the future. There are three types of effective dates: ‡ 1. Future: Data rows that have effective dates that are after the system date, which is usually today s date.

2. Current: Data row with the most recent effective date that is closest to today s (system) date, but not a future date. Only one row is the current row. 3. History: Data rows that have effective dates before the current data row.

‡ ‡

The EFFDT (effective date) field has special properties related to the processing of effective dates on rows and should be used only when needed. Page | 2 Unlike regular date fields, which you can use anywhere in the system, use the EFFDT field only on record definitions for which you want to maintain data history future, current, and past to store rows of data in sequence. This enables you to store multiple occurrences of data based on when it goes into effect.
For effective-dated rows, you can have multiple occurrences of future and history, but only one current row of data.



EFFDT is almost always a key and almost never a list item. Activate the Descending Key attribute so that the row with the most recent effective date appears first on pages. You might enter %DATE (current system date) as the default constant for this field.

Effective Status
In prompt tables, EFF_STATUS (Effective Date Status) usually accompanies EFFDT. When used with EFFDT, it s part of the mechanism that enables the system to select the appropriate effective-dated rows. ‡ You can also use EFF_STATUS by itself as a simple status field, but don t change the translate values. They must be A (active) and I (inactive) for EFFDT to work properly. If you need a status field with different values, use or define a different field. The EFFSEQ (Effective Sequence) field serves different purposes, depending on whether it s paired with EFFDT. If EFFSEQ isn t paired with EFFDT, EFFSEQ has no special function and can be used as a simple sequencing field wherever you need one. ‡ If EFFSEQ is paired with EFFDT, it enables you to enter more than one row with the same effective date. You assign a unique sequence number to each row that has the same effective date. Do not make EFFSEQ a required field unrequired allows the first EFFSEQ to be zero. Select Display Zero in the page definition to have zeros appear on the page. ‡ For example, suppose that you want to enter both a transfer and a pay rate change for an employee, and both actions are effective on the same day. Enter the transfer on the job data pages as usual, and leave the Effective Sequence Number field as 0 (zero). Then, insert a row to enter the change in pay rate. This time, the effective date is identical to the previous row, but enter 1 in the Effective Sequence Number field. ‡
What is Effective Date?

Date on which a table row becomes effective, the date that an action begins. For example, if you want to close out a ledger on June 30, the effective date for the ledger closing would be July 1. This date also determines when you can view and change the information. Pages or panels and batch processes that use the information use the current row. Effective date enables us to keep historical, current, and future information in tables. There are three types of effective dates: Current, History and Future.
What is Effective Status?

In prompt tables, EFF_STATUS usually accompanies EFFDT. For example in Department table suppose we inactivated one dept from so and so future EFFDT, from that future date onwards this dept is going to be inactivated, after that whenever we click the link prompt button of dept id field we can see only active departments. What is Effective Sequence? Whenever we want to enter more than one transaction on the same day for an employee like promotion and salary hike we will use effective sequence. Effseq number starts with 0 Component Represents a logical business transaction or a set of logically related pages that are processed together. CI* Externalizes access to a component, so it can be used by a third party or an application message. ‡
‡ ‡ Defining Component, It is a set of logically related pages that are processed together. Components are the bridge between pages and menus. After the creation of each page we must add that page to the component. We can add more than one page to the component Component name length may vary up-to 18 characters, Search record is mandatory to save the component Force Search Processing: Select to always run search logic (SearchInit PeopleCode) for this component.


Add Select to add a new high-level key, such as a new employee ID or customer. Except in the case of effective dating, Add is used to insert a new current row or to update future rows. . If we select only Add
action then we can¶t modify the existing rows. (Doesn¶t have any effect with EFFDT)


Update/Display Select to update existing rows only. Update/Display All Select to update current and future rows in an effective-dated record. Use only with effectivedated records. Do not use these actions unless the main record that is associated with the page definitions is effective-dated. This is translated to include history at runtime. Correction Select to update any rows (history, current, and future) in an effective-dated record. Use only with effective-dated records. This is translated to correct history at runtime. Disable Saving Page Select when you want to hide the Save button in the toolbar and disable the Alt+1 (Save) hot key. This prevents the user from being prompted to save when exiting a page. However, it doesn t prevent using PeopleCode to save a page with the DoSave() or DoSaveNow() functions. This can be helpful for applications in

which the user isn t making database changes and doesn t need to be prompted to save. Can we use the same Component in 2 Menus? Yes, we can use same component in any no of menus

Peoplesoft Interview Questions

Page | 3

You select Update/Display All and Correction properties only with tables that contain the EFFDT field. Note. Remember that you grant all possible actions. You restrict actions later through security features.
Data Entry: Not supported in PeopleSoft Internet Architecture

Understanding Processing Modes:
Interactive Mode (formerly called standard) ‡ In interactive mode ,when the user exits a field that has a field-level event (for example, FieldChange, FieldEdit, RowInsert PeopleCode,
prompt validation, related display, and so on),A transmission to the application server is performed to run that field-level event.

‡ The page is displayed again. Deferred Mode ‡ Deferred mode enables you to defer many of the conditions that need server processing until running them on the AS is required or requested. For example, when a user exits a field that has a field-level event (like FieldChange or FieldEdit PeopleCode, prompt validation, related display, and so on), that event is not run until the next transmission to the application server. When the next transmission to the server occurs, PeopleTools determines which fields have changed since the last transmission. Logic on the application server runs the appropriate system edits and PeopleCode events (in field layout order). ‡ U can select deferred mode processing at the field, page, and component levels. For a field in the component to run in deferred mode, you must select deferred mode at each of those levels. Deferred processing is the default mode at the field, page, and component levels. In Interactive mode for every cursor action there will be a trip to the server. In deferred processing mode, trips to the server are reduced.In Differed processing until a user performs an action, which requires a trip to the server there won¶t be any trips to the AS.

Expert entry :The Allow Expert Entry check box on the Internet tab of the Component Properties dialog box and Enable Expert
Entry check box in the user's profile.

If these check boxes are selected, an Expert Entry check box appears on the bottom of the page at runtime.
Allow Expert Entry

± ± ± ±

This is available for both processing modes. See To use expert entry, select:
The Allow Expert Entry check box on the Internet tab of the Component Properties dialog box. The Enable Expert Entry check box in the user's profile. If these check boxes are selected, an Expert Entry check box appears on the bottom of the page at runtime. If the user selects this check box, the transaction runs in deferred mode, regardless of the setting on the component, page, or field property. When you set the component property to deferred mode, that component operates in deferred mode processing for all users, not just those who have expert entry enabled in their profiles

What is PIA Architecture? In PIA end users do not have any peoplesoft specific software installed on their
machines, they use Internet browser to connect web server, which interacts with application server.

What are components of PIA?

1. Web browser 2. Web server 3. Application server 4. Batch server 5. Database server

What are major tasks that the application server (AS) performs in PIA? The AS maintains a persistent connection to the database, and converts PeopleTools and application table data into HTML. The server then provides the HTML to the WS for delivery to the browser. The AS also plays a role in connecting development workstations to the database for 3-tier connections.

What are the major tasks performed by the web server (WS) in PIA?
WS acts as the front end of the PIA. The WS includes Web services software that displays the HTML to the browser. It also includes java servlets that manage each session¶s connection to the AS. What is Tuxedo/Jolt? Tuxedo manages the multiple connections to the database. Jolt is a java based communication protocol. The assembled HTML is sent to the web server.

How many types of tables are there in database and what are their differences?
1. System Catalog Tables 2. People Tools Tables 3. Application Data Tables System Catalog Tables: System Catalog Tables stores physical attributes of the tables and views. Naming convention is SYS.

PeopleTools Tables: The objects that we develop using the People Tool Objects are saved in
PeopleTools Tables. Naming convention for these tables prefixed with PS. Once a field is created it would be stored in PSfield definition table, once a record is created it would be stored in PSrecdef. (Only definition/structure is stored)

Application Data Tables: stores the data, which is entered by the user through PS application windows and pages.
Naming convention for these tables is PS_.
Application Data Tables

are divided into 2 types: 1. Control Tables 2. Transaction Tables

Control Tables: Define the company structure and processing rules. Transaction Tables: These are tables used to record our day-to-day transactions, such as personal data about employees.

. Prompt table can be a view or a table. Level 0 fields must be associated with record fields of search record. Audit tables can grow to be quit large. we can have a sub page at 0 level. C: Row changed (updated). This is like application data table the only difference is that it stores values that other tables can validate against. to guard against entering the wrong year in a date. This should display the Name of the person instead of the OPRID on the page. views. How many table edits are there in Record field properties? 1. and at least one key field changed. Place the NAME field from the new view as a related display field to the OPRID field on the page. but you allow the user to type in whatever they wish Prompt Table With Edit: Defines the record to use as the prompt. What are the considerations that you take while altering a table? Any time one intends to change an existing object we should always attempt to find out if the changes are effecting on other system objects. Defines the record to use as the prompt. Yes/No Table: I n some situations we want the user to enter only Boolean values like yes or no. You can use this. Can we have a Secondary page at 0 Level? We cannot have a secondary page in 0 Level. The system writes old values to the audit table.we can use same component in any no of menus Can we have a subpage at 0 Level? Yes.oprid. Prompt table is a control table. The reasonable date test warns if the date is outside a 30-day range before and after the current date. The SQL definition for the view should be like: Make the OPRID field a select a.Peoplesoft Interview Questions What is a prompt table? Prompt tables are the most common methods for validating data entry in PS applications. and at least one key field changed. provided should match the key fields. and its keys and Alternate search keys appear on the search page as criteria. Can we keep 2 records at level 0? Yes . The set control field determines which set of values appears. among other things. D: Row deleted. but no key fields changed. add the name of the key here. But performance issues say that a grid should always reside in the last level Page | 4 Display Control Field / Related Field: Create a view with OPRID (key) and NAME as fields in it. Possible actions include: A: Row inserted. Prompt Table No Edit 3. AUDIT_OPRID Identifies the user who caused the system to trigger the audits ²either by performing an add. AUDIT_STAMP Identifies the date and time the audit was triggered. Audit_stamp. Yes/No Table Edit Prompt Table No Edit: Provides List of Suggested values. If we are using a search view as a search record for performance in this situation we will put the main record as a add search record so that we can enter new values in this main record. Record Level Audit: for creating a record for record level audit we need to have 3 fields: Audit_operid. The value must be in the record if you are to be allowed to continue. Rs Dt (reasonable date): Specifies whether a reasonable date test is performed on a date field. K: Row changed (updated). The search record might also contain logic to filter the search to secure rows of data²row-level security is implemented in this way. AUDIT_ACTN Indicates the type of action that the system audited. We can create our own audit records by prefixing Audit_ Field level Audit: By using delivered PS_AUDIT table we can set field level audit. and Audit_action. When you select the Yes/No Table Edit. Translate Table Edit: Which is nothing but a translate table created by developer. Prompt Table With Edit 2. the system automatically points to the PSYESNO field in the Translate Table Set Control Field: set control field that overrides the set control field of the record definition specified in the prompt table Set Control Field: If you plan to use the Table Sharing feature to add an additional high-level key to identify common sets of values and handle exception values. Audit records are prefixed with Audit_. or delete to an audited field. ps_personal_data b where a. Translate Table 4. write People Code in Secondary (Y) as well in Sub Page(N). (Country table and Company table) Prompt table is used to prompt the valid values for a specific filed on a page. Search Record and Add Search Record Search Record: The search record controls access of rows of data in a table. search returns all data rows to a maximum of 300. The Translate Table for ex: from psoprdefn a. %SQL. true or false in this situation we will use yes no table. based on how you define table sharing. What is SQL Object? People tool object that we can create and use it wherever we want ± PC. What are the key disadvantages of auditing? Auditing adds overhead to transactions that will slow database performance. All date fields are automatically edited to ensure that you can enter only valid values. Display Control field and hide it. Can we use the same Component in 2 Menus? Yes .Users can edit the contents of the field against the values that are maintained in the specified prompt Table. The system writes old values to the audit table. and dynamic views. The system default is the standard search record if we don't specify an add search record Audit Table and their fields? Record and Field Level Audits Records the information of user actions details as well as the changes or additions or even modifications done on the table. as above.emplid. The system writes new values to the audit table. change. which users cannot edit. N: Row changed (updated). again draining resources.b. Edit> find definition reference: If a definition reference any other definitions we must research the connection and determine with the referenced object will have any effects ± then we need more follow-up.oprid = b. AUDIT_RECNAME Identifies the name of the record definition that was audited. Add search record: Add search record is specifically used for add actions. Can we have a Grid in Level 2 and scroll area in level 3? Yes we can.

Difference between sub page and sub record All the fields in a sub page must be associated with fields of a sub record in the specified record definition. then ³B´ is the child table of for table ³A´.. Menu Enables access to the components you build. In parent child relationship we should have a relation between two tables ex: if ³A´ is the parent table with ³x´ as a key and ³B´ is another table then ³B´ should have ³x´ as a key with another key ³y´. One can have nested scroll areas but not grids. You create a menu as a placeholder for components Menu Types: 1. Registering Component: The Component Registration wizard in the PS AD attaches components to menu definitions. ‡ By reusing components in this way. How many levels can we have on a page? Page allows Nested levels up to 3 levels. and places navigational links in the registry. related display fields. For ex if you want the scroll to display only 5 rows What is the difference between a Grid and a scroll? then we will give occurs count to 5. Custom (component) menus provide an internal reference for components and pages. How many Grids can we insert in a single component or page? Well. specify a different search record in the properties of the menu item that invokes the component. In grid we can view no of rows by giving occurrences. Rather than duplicating the same set of page fields on two or more pages. and edit data online. Grid and Scroll Bar. The component uses the override search record when it is invoked from that specific menu item.. Page fields in a gird always appear in a single row.. Defining Menu: A menu is a logical grouping for assigning security to your system. Sub record contains all related fields. display the details of one row of data. Ways of Component registering 1. you can create a single sub-page that contains those page fields and add it to any page. Secondary Page: Secondary Page contains supplemental information or information that is accessed from more than one main page. a Grid provides visual access to many rows of data (from the record) at the same time. We can open it through standard page only. the search record set in the component properties remains unchanged. keeping your application smaller and easier to maintain . whereas a scroll will What happens if you don't specify a Search Record. To override a component search record. **Standard page: Only Standard page can be attached to the component It is the graphical interface between users and database. We can view multiple rows in a grid while in a scroll area you can retrieve only one row at a time. we can have a sub page at 0 level. translate values and derived work records.Peoplesoft Interview Questions Component Buffer? Area in memory. What is Parent Child Relationship? To maintain parent child relationship if the parent table contains one key field the child table should contain the same key field and one additional key. The important data is displayed in the standard page. Occur Count: Occur Count determines how many rows should be displayed. which stores data for the currently active component. Can we have a subpage at 0 Level? Yes. assigns security access for users. Page: Pages provide a way to enter. but we can only have 4 such levels on the page What are Level Based Controls and their Difference? Level Based controls are Scroll Area. Every level will have its own primary record. you can limit redundancy. the user interface phase is complete and you can view your application in a browser. Example: assume we have 3 scroll levels in our page level1. Page | 5 Sub page: sub page controls are used to provide standard look for the commonly used fields. ‡ You can accomplish this by overriding the component search record at the time that the component is invoked from a menu. Scroll areas provide a row separator when you select multiple occurrences of data. Pop-up menus appear when a user clicks a pop-up button. A sub page is referenced as a page control on multiple standard pages. Scroll area is used to maintain parent child relationship we insert grid in low level scroll . you won t be able to save the component definition. whereas subpage contains fields from sub record. In fact a Grid is incapable of housing another grid. level2 and level3 we insert grid in level 3 One of the differences between a grid and scroll is that a Grid can be inserted into a scroll but vice-versa is not possible. They are not used for navigational purposes. We can place secondary as well as a sub PG in std pG.4. changing only its search record. From an end-user perspective. along with the pages contained in the components. The Component Registration wizard is a new feature in PeopleTools 8. view. They are grouped logically into menu groups to assign security. 2. Scroll areas single row of data will be displayed whereas in grid multiple rows of data will be available. Search record is always required for the component. You can insert grid in a scroll area but not scroll in a grid. In Component Buffer if you want to see the other field values then place a non-key field on 0 level and make it invisible. After adding a component to menu right click and click on register menu item 3. Component buffer is a temporary buffer allocation. we can insert as many required grids at a particular level on the page. A level 0 primary record and a search record can be different but the key field values should match. What is occur level and occur count? Occurs Level: Occurs level determines the level of the object that we inserted.. The data within secondary page is at the same level or below the level of the page control that launches the secondary page. What data comes into Component Buffer? «««« Primary record data. Page that will open on users request but remains as a secondary to the primary page display. If you don t specify a search record. Once the components are registered. If you keep key and alternate search key on 0 level then only 2 values will appear in Component Buffer the other field values will not available. In browser people tools -> Portal -> Structure and Content 4. In browser people tools -> Portal -> Menu import Overriding the Search Record:You might want to reuse a component. Whenever you open a component the entire data for that component is retrieved upfront and stored in the application server. Component Registration wizard 2. By using this we can set levels for example after inserting a level based control in level 2 if you want to change the level based control to level 1 you can change the occurs level. Scroll areas have their page fields arranged by the developer.

Which of the following is NOT TRUE in Component Interface (CI) Architecture? A CI can be mapped to multiple PS components 7. Find keys are the search key & alternate search key fields in search record. Create an Instance of the CI 5. GetKeyInfoCollection: Returns a set of items that describes the get keys FindKeyInfoCollection: Returns a set of items that describes the find keys PropertyInfoCollection: Returns a set of items that describes properties.) 2 types of methods are there: Standard methods. Methods and Name What r the different keys in CI? The different keys in CI are Get key. 2. Get key is the search key field in search record of component. The event of a component interface is methods (like on execute for app-engine. Get. Get the Component Interface 3. These methods are functions that are made accessible through the component interface. Can u differentiate it? Yes. Each function maps to a user-defined method.User defined methods Standard methods are those that are available for all component interfaces. Populate the Create Keys 4. The following are various steps that describe the PeopleCode logic while implementing a Component Interface? 1. Establish a user session 2. if we don t want that functionality by going to the CI properties dialog box. Which of the following can be mapped as Find Keys for a Component Interface? A OR b 6. The main attributes of a Component Interface (CI) are? Keys. What is Collections? Collections are referred as scrolls(level based controls will be having a primary record) in component for CI. Properties & Collections. With reference to the Component Interface Tester which of the following is NOT TRUE? GetExisting option is equivalent to opening a record in Update/Display Mode only 4. Save. Which of the following are TRUE when a Component Interface (CI) is created on component that has Add action enabled? Get keys. Find key and Create key. CreateKeyInfoCollection: Returns a set of items that describes the create keys. The Create method is created along with the other Standard methods for the CI 5. Create key are generated only when the CMPT is in Add action only.Peoplesoft Interview Questions CI: 1. Create keys and Find keys gets created automatically. What is Component Interface Methods? How many Methods are there? Methods are objects that perform a very specific function on a component interface at run-time. Which one of the following are standard properties when a Component Interface (CI) is created? GetHistoryItems 3. These standard methods provide basic functionality for any CI. Find. Cancel. Populate the required fields 6. We can disable the standard methods. Create. Save the CI . Page | 6 User defined methods: User-defined methods are created in PeopleSoft Application Designer to provide added functionality to the component interface.

Peoplesoft Interview Questions

AE is used for BATCH or ONLINE processing where you have a large (or small) amount of data that needs to be processed without user intervention. Program for NON-REPORT PROCESSING. Programs that perform HIGH VOLUME BACK GROUND PROCESSING against your data.

Technical Definition
An AE program is a set of SQL statements, People Code, and Program Control Actions defined in Application Designer that performs a business process. Think of AE as a tool that allows you to define a program's framework, as in its algorithm, structure, and looping constructs. Allows you to take advantage of features such as the People Code File objects and Interlink objects, Component Interfaces, Application Messaging, and so on.

Page | 7

FEATURES: AEprograms reside completely within your database.No Compilation required. Database Flexibility. Does not generate SQL or PeopleCode. Built in Re-Start Logic.Mostly used for SET based processing.PeopleCode can be written. AE program can be called from People Code. AE/SQR: Restart Facility >>>Inbuilt Tool>>>>>Graphical User Interface The definition view is to create definitions with in a defined hierarchical structure. Program Flow view is a read-only view that shows the expected sequence of steps to be executed at runtime for the program you are developing. ********
The five types of AE programs are : Standard, which is a normal entry-point program. Upgrade Only, which is used in PS upgrade utilities. Import Only, which is used by PS import utilities. DaemonOnly, a type of program used as a daemon process. Transform Only, a program type used to support Extensible Style sheet Language Transformations (XSLT). Daemon Program Type ‡ PS AE provides a daemon process, called PSDAEMON that runs continuously when PS Process Scheduler is running, and is intended for recurring jobs.

To add a daemon program: 1. Select PeopleTools, Process Scheduler, Daemon Group. 2. Select the Add New Value page. 3. Enter a daemon procedure group name, and click Add. 4. On the Daemon Group page, add the appropriate programs to the program name list.
APPL.LIBRARY: These definitions are called Application Libraries. They are intended to store shared code (similar to FUNCLIB s) that can be called from other AE programs. Application Libraries cannot be executed. --An AE program without the main section.  It is a collection, or "library," of common routines (in the form of "callable" Sections) that do not run as a standalone program.  When sections are defined as "Public," other programs can call the Sections, or routines, that exist in the "library" at runtime.  Since this type of Program is not designed to run as a stand-alone program, it does not require the MAIN Section, or initial entry point. ELEMENTS OF AE: A PS AE program comprises the set of processes to execute a given task, and is made up of several key  elements: Sections Steps Actions State records  Program. Identifies the set of processes, and is in the top a tree like structure of a app engine program. It should contain at least one section. And the first section should be named as MAIN. Section. Sections comprises of one or more steps .  Steps.A step is the smallest COMMITABLE WORK that could be done within a program.  Actions. Each step could consists of multiple types of action. Its common to have many actions in a single step. 

Sections: comprise one or more steps 
  All AE programs must contain at least one section entitled MAIN. The execution of the program always starts with the section defined as MAIN. A section is a set of ordered steps that gets executed as part of a program. You can call sections from steps within other sections. Steps: are the smallest unit of work that can be committed within a program. Although you can use a step to execute a PeopleCode command or log a message, typically you use a step to execute a SQL statement or to call another section.

Peoplesoft Interview Questions
Understanding Use Of Temporary Tables Purpose:

Temporary Tables Temporary Tables are used to improve the performance of AE while running in batch mode (multiple instances of same program run in parallel) When this happens, there is a significant risk of data contention and deadlocks on tables. To avoid this PS PeopleTools has a feature that enables you to dedicate specific instances of temporary tables for each program run. To define a temporary table:
1. in PS Application Designer, select File, New. 2. Select Record from the New Definition dialog box. 3. Select Insert, Field, and insert the PROCESS_INSTANCE field. 4. Select the Record Type tab and select the Temporary Table option.

Page | 8

Temporary Tables ‡ PS batch applications employ the technique of SET processing, and set processing involves extensive use of temporary tables. ‡ Any Program can access temporary tables.

Contains only those rows which are affected by business rule. Used for storing the transient data for the current run or iteration of program. By storing transient data in the temporary tables, you avoid the situation where the batch program fetches the data, row-by-row , and runs the business rule, processes the data and then passes the updated data back to the database Improve performance for e.g. If you find that multiple times during a run of program access a small subset of rows from a much larger table, you can insert the necessary rows into a temporary table. Then the program accesses the data residing in the smaller temporary table rather than the large application table.

‡ ‡ ‡

Temp Tables has the ability to dedicate physical table instances to one, and only one AE program. AE automatically manages the assignment of temporary table instances by controlling the locking/unlocking the table before/after use. When AE manages a dedicated temp table instance , it controls the locking of table before use and unlocking after use ± Naming convention: --base table name>nn (Where nn is a number between 1 and 99, as in PS_TEST_TMP23.)
To reference a dedicated temp table, you need to use %Table(record)

Temporary Table Instances  To run processes in parallel, you need to (Instance Count edit box) enable multiple instances of the same temporary table.  Creating temporary tables enables you to achieve one of the main objectives involved with set based processing the processing remains on the database server. By storing transient data in temporary tables, you avoid the situation where the batch program fetches the data, row-by-row, and runs the business rule, processes the data, and then passes the updated data back to the database. If the program were running on the client, you encounter
performance issues due to the network roundtrip and the diminished processing speed of a client (compared to the database platform).


To use a temporary table with a specific program, you assign the table to the program and set the number of instances created when a particular program is run. The system builds temporary table instances at the same time it builds the base table for the record definition. (Anytime you change the instance counts, you need to rebuild the temporary tables to ensure that the right number of instances gets

created and are available for your programs. As long as table is keyed to PROCESS_INSTANCE , and the application SQL includes the Process instance in the where clause, then the table can be shared among multiple process)  The Runtime options enable you to control how an AE program behaves in the event that an instance of its specified dedicated temporary tables are not available. If you select Continue, then AE uses the base version, or undedicated version, of the temporary tables. If you select Abort, then the program exits with an error message. ASSIGN ONLINE TEMP TBLS:  Temp Table Instances (Online) is: Number of temp tables built for all temp tables used in an AE program not designated as batch only.  Temp Table Instances (Total) is: Difference between Total and Online is the number of temp tables built for custom allocation Online Temp Table Usage 


Temp table is reserved at CallAppEngine time by a random distribution algorithm Online AE program is one that is started by the CallAppEngine() function call Online is part of a transaction, so no commit Same table instance locked for every table,,Released when online transaction is committed
In the case of a crash, tables do not remain locked -------If no temp tables program will enter a queue and wait


CallAppEngine is available from exit points where a transaction will happen Use the PeopleTools Options page to set the number of temporary table instances for AE processes started online from the PeopleCode CallAppEngine function.
(Select PeopleTools, Utilities, Administration, PeopleTools Options to access the PeopleTools Options page)

Peoplesoft Interview Questions
Batch Temporary Table Usage 


Each table is reserved separately at program load time. A single program may get a different instance table number for each table Locked by a record entry in a shared table when program is loading Programs that can restart retain lock until successful completion Table is cleared when loaded (unless it s the base table) If no temp tables are available, program may use a shared base table ASSIGN BATCH TEMP TBLS: Instance count is the number of concurrent instances.
Batch Temp tables = Sum of the instance count for each program a table is used , Naming convention PS_NAME_TMPnn

Page | 9


We can assign more than one temp table to an AE program.

View temporary table usage by record.
‡ (Select PeopleTools, Application Engine, Review Temp Table Usage to access the Temp Table Usage by Record page) Manage abends - way to view and manage batch App Engine programs that have crashed that were not started by process scheduler (cmd line, two tier, third party schedulers)

PARALLEL PROCESSING:  Parallel processing is used when considerable amounts of data must be updated or processed within a limited amount of time, or batch window.  Achieved using Temporary tables only. 

± ± ± 

partition the data between multiple concurrent runs of a program, each with its own dedicated version of a temporary table. Add logic select the distinct set of records from the bunch or create separate files to load. Define and build required Instances of Temp Table before all above steps.
To implement parallel processing, you need to complete a set of tasks in the order that they appear in the following list. With each task you need to consider important details regarding your specific implementation.

± Application Designer. (Define and save all of the temporary table records. You don't need to run the SQL Build process at this point.) ± AE Designer. (Assign temp tables to AE programs, and set the Instance Counts dedicated for each program. Assign each Temporary table
to the AE program(s) using it, set the appropriate number of Instance Counts, and employ the %Table meta-SQL construct so that AE can resolve table references to the assigned temporary table instance dynamically at runtime.) ±

PeopleTools Options. (Set the global instance counts for online programs in PeopleTools Options. Set the number of temporary table
instances on the PeopleTools Options page. )

± Application Designer.
1. 2.  

(Build all the temporary table records in Application Designer (SQL Build).)

PS recommends that you insert the PROCESS_INSTANCE field as a key into the temporary tables you intend to use with AE. Application Designer only creates a maximum of 99 temporary table instances.

SET processing:
Set processing is a SQL technique used to process groups, or sets, of rows at one time rather than processing each row individually. Set processing allows us apply your business rule directly on the data (preferably while it resides in a temporary table) in the database using an UPDATE or INSERT/SELECT statement.  Most of the performance gain is because the processing processing occurs in the database as opposed to pulling the data into the application program, processing it, and then inserting the results back into the database tables  Since the data never leaves the database with set processing (whether or not it remains in the same table), you effectively eliminate the network round trip and database API overhead required to pull the data into the application program and then insert the results back into the database.. SET Processing Advantages of SET Processing Improved Performance. Minimized (PeopleTools) SQL Overhead. Easy Maintenance. Leveraging the RDBMS In this example, suppose the payroll department needs to give a $1000 salary increase to everybody whose department made more than $50,000 profit. The following pseudocode enables you to compare the row-by-row and set-based approaches.

Parallel processes Using many instances of temporary table instances. fetch A into p_dept_id while sql_status == OK update personnel set salary = (salary+1000) where dept_id = p_dept_id. To release the deadlocks. close A. (say count=10000 rows) in Application Engine peoplecode.dept_id)Page | 10 The various methods in which a Set Processing could be achieved are: (Using Temporary tables) . nd Two pass approach run in two pass. you can use commitwork() and collectgarbage() after processing each set of data. that is first a set update updates all records. open A. and the 2 pass corrects the exception rows alone. .Peoplesoft Interview Questions Row-by-Row: declare A cursor for select dept_id from department where profit > 50000. end while.dept_id = department. fetch A into p_dept_id. Set-Based: update personnel set salary = (salary + 1000) where exists (select X from department where profit > 50000 and personnel. if they are only few to exceptions.

field" notation. field2]. %Select or %SelectInit The %Select or %SelectInit meta-SQLs identify the state record fields to hold the values returned by the corresponding SELECT statement. and actions pass values to subsequent program steps through state records.[.field" notation. When a program starts. after the program completes successfully. To reference fields in the State Record you use the %BIND construct. CUST_ID FROM PS_CUST_DATA SELECT field1[. or program. There is only one row in the State Record for each Process Instance. statefield2].  AE updates the record whenever a COMMIT occurs..Its name always ends in _AET To reference variables that exist within a state record: %BIND(fieldname) To reference a state record other than the default : %BIND(recordname. Purpose: It defines the fields a program uses to pass values from one Action to another. The %SELECT function identifies the State Record fields to hold the values returned by the corresponding SELECT statement. You can think of State Records in AEas global variables without scope limiting rules. while sections. use the following: %BIND(recordname. The only difference is that derived State Records cannot have their values saved to the database at commit time.  %BIND is used to retrieve a field value from a state record and can be used anywhere in a SQL statement.[. AE deletes the corresponding row in the State Record. its value will automatically be enclosed in quotes unless you use the NOQUOTES option. only one record can be the default state record. steps. unless you use the NOWRAP option. Physical state records must be keyed by process instance and is used for maintaining session. and so the values would be lost during a restart. ..STATIC]) ‡ NOQUOTES If the field specified is a character field. AEdeletes the corresponding row in the State Record. which are instead initialized.. use the following: %BIND(fieldname) Unless a specific record name is specified preceding the fieldname. it INSERTS a row into the State Record that corresponds to the Process Instance assigned to that program run. The syntax for %BIND is: %BIND([recordname. ‡ Execute the following SQL SELECT statement.]fieldname[. which are instead initialized. Multiple programs can use the same State Record. you must define the same state records in both programs. There is only one row in the State Record for each Process Instance.fieldname) Q) How can we change State Record during Run time %Bind(Recordname. the system automatically wraps its value in %datein() or %dateout(). These fields can be thought of as the working storage for your AE program. Update the State Record  %SELECT is used to pass values to the state record buffers. and each program has it's own row based on the unique Process Instance key. When Restart is enabled and a commit occurs. Developer.. %Bind is used to retrieve a field value from a State Record.Peoplesoft Interview Questions State records: The State Record is a PS record. With AE PeopleCode a state record data elements can be accessed using only a Record. To reference a state record other than the default. CUST_ID FROM PS_CUST_DATA WHERE PROCESS_INSTANCE = %BIND(PROCESS_INSTANCE)  State records that are common between the two programs share" values.fieldname) ‡ The AE function.  Then. Any number of state records can be associated with a program. you use the %SELECT construct in a SQL statement or write PeopleCode that references the State Field with the standard "record. fieldN] WHERE PROCESS_INSTANCE = %BIND(PROCESS_INSTANCE) The following steps illustrate the execution of the previous statement: ‡ The string %BIND(PROCESS_INSTANCE) is replaced with the value of the State Record field called PROCESS_INSTANCE. Retrieves a field value from a state record in any Do or SQL action. You assign variables for your AE program through state records. When Restart is enabled and a commit occurs. except for derived State Records. after the program completes successfully. all State Records that have been updated in memory will be written to the database. or program. 2.CUST_ID) SELECT BUSINESS_UNIT.CUST_ID) SELECT BUSINESS_UNIT. you use the %SELECT construct in a SQL statement or write PeopleCode that references the State Field with the standard "record. Then. When a program starts. -----%Select. The %Bind function can be used anywhere in a SQL statement. This means that if you need to communicate between the two programs.NOWRAP][.fieldname)  Page | 11  WORKING: 1. However. The syntax for %SELECT is: %SELECT(statefield1[. We can specify both work (derived) and physical (SQL table) records to be used as state records. AE updates the record whenever a COMMIT occurs. You can have up to 200 state records associated with a particular AE program. it INSERTS a row into the State Record that corresponds to the Process Instance assigned to that program run. %SELECT(BUSINESS_UNIT.  During batch processing AE automatically performs all State Record UPDATEs.field notation.  To set values in the State Record. Characteristics  It can be either a physical record or a work record. keyed by process instance. except for derived State Records.NOQUOTES][. all State Records that have been updated in memory will be written to the database. ‡ NOWRAP If the field is a date. %Select is used to insert values from the Records. ‡ STATIC The STATIC parameter allows you to include a "hard-coded" value in a reused statement. statefieldN]) Consider the following sample example %SELECT(BUSINESS_UNIT. %BIND references the default state record. ‡ To set values in the State Record.--------To reference fields in the State Record you use the %BIND construct. %Bind To reference variables that exist within a state record.

%List. statefield2]. across different subsets of the data.. Though the component processor takes care of the automatic conversion but at the time of using the Sql Exec the automatic conversion does not take place. ‡ %Mode: Gives the correct user action Mode. In PS we use the sql stmts using sqlexec or createsql. Delete.. SQL statements: ‡ The SQl statements are used to fetch/retrieve. in parallel. regardless of whether there's a row in the AEREQUEST table. %TIME.. syntax: %Table(recname) For example %Table(ABSENCE_HIST) -----.[. when using %RunControl. Meta Sqls: ‡ Different RDBMS have different date and time formats. field2]. fieldN] Meta constructs simplify building programs ± %InsertSelect. %DATE. update. %DATETIMEOUT etc.]fieldname [. Update. expands into platform-specific SQL syntax for the date. %ExecuteEdits and others ‡ Different sql statements and metasql statements. %DateIn should be used whenever a date literal or Date bind variable is used in a comparison in the WHERE clause of a SELECT or UPDATE statement. %AeSection : Returns a quoted string containing the currently executing AE Section name %AeStep : Returns a quoted string containing the currently executing AE Step name. %Bind. portable . statefieldN]) Select field1[. or when a Date value is passed in an INSERT statement ‡ %DateOut: Where dt is a date column. Which we can use in diff sql stmts. enable features Functions in SQL help by performing an action or calling other functions ± %Clear Cursor. %RunControl :Returns a quoted string containing the current Run Control identifier. expands to a platform-specific SQL substring representing dt in the SELECT clause of an SQL query. %AeProgram : Returns a quoted string containing the currently executing AE program name. Page | 12 META-SQL    ‡ %AeProgram %AeSection %AeStep %COALESCE %InsertSelect %RunControl %Bind %Bind([recordname.. Different sql statements are: Select.Peoplesoft Interview Questions The %Table function returns the SQL table name for the record specified with recname. The Run Control ID is available to your program. for example %DATETIMEIN. %Execute.It Returns the record PS_ABSENCE_HIST. delete data from the database. STATIC]) %Select/%SelectInit :%Select(statefield1[. ‡ SQL Statements are Platform Dependent where as Meta-SQL statements are Platform Independent ‡ %DateIn: Where dt is either a Date value or a date literal in YYYY-MM-DD format. like add/update %Join: Expands the join dynamically while executing this Meta sql ‡ %Execute edit: Enables People Soft Application Engine to support data dictionary edits in batch .less maintenance . So in order to understand this Meta sql concept has come. NOQUOTES][.[. %Table and others ‡ less coding . %ProcessInstance Returns the numeric (unquoted) Process Instance. ‡ %DATEIN: This is used in the where caluse of "Select and update" %DATEOUT: This is used while selecting the data. ‡ You can use the %Table function when you want to be able to run the same AE program. NOWRAP][. Insert. insert. %CURRENTDATETIME.

Restartable This option is similar to the Select/Fetch in that AE opens the cursor associated with the DO Select once. Types of do select are : Select/Fetch (default) Select/Fetch Performs a Fetch for each iteration of the loop to get each row from the SELECT.  You cannot have a SQL action and a Call Section action within the same step.And it will continue to execute the actions until no rows are returned. Select Statement that runs after each Action when a Step completes. (Program Flow Actions: control the execution of your program) DO-SELECT: The DO Select Action is a SELECT statement that executes subsequent Actions once for every row of data that the Do Select returns. By default. a section's access property is Private. Similar to above but the actions will be executed atleast once even if there are no rows are returned. Do When: A DO When statement runs before any other actions in the Step. (Works like a loop with condition check at the end) Select Statement that runs before subsequent Actions of the Step. the step terminates.)  Section Name If you are calling another Section. This type of Do-Select is restartable. The external section you intend to call must have its access property set to Public. you need to specify the Program ID. The drop-down list contains all of the program definitions that currently exist. Do While: In other words. AE opens a cursor and fetches the first row from the Select statement. The cursor is reopened for each iteration of the loop. Re-Select a new cursor and fetch is done for each row and the first row returned is processed. the program recognizes where the previous run failed and where to restart processing. Do Until : It runs after each action when a step completes. such as until a SELECT returns some rows. If the Do When conditions are not met. Only the names of Public Sections defined in the program identified in Program ID will appear in the Section Name drop-down list.  Parameters A list of comma-delimited values to substitute for %1. If the Select returns any rows of data. and then it performs a Fetch on each iteration of the loop to get each row from the SELECT. Use a Do Until if you want the "processing actions" to execute at least once. the looping is complete. the Action terminates.You can use the Log Message action to insert any type of messages you need. If the DO When statement returns any rows. the remaining Actions within that Step are not executed. Every program begins by executing the first step of the required section called MAIN and ends after the last step in the last section completes successfully. For instance DO Select can execute a SQL statement for each row returned from the SELECT statement. For each iteration of the loop. perform simple if/else edits. this means we can t restart this type of select Page | 13 statement and we cant perform a check point or a commit within this step. Re-Select It opens a cursor and fetches the first row. (Like having a flag and updating it all along etc) User must make sure that the SQL you include within this action is such that. It also enables you to reference and change active AE state records. There are 8 types of actions that you can specify to include within a step Do Actions > Do When > Do While > Do Select > Do Until .DELETE.) There are 9 types of Actions that you can include within a STEP. Use this step in case a processing action has to run again and again until a certain condition is true. the maximum number of actions a single step can contain is 7 . The Do While is identical to the COBOL "WHILE" function. you need to specify the appropriate Section here. >>Configurable Properties<<  Message Set Identifies a message set within the Message Catalog. and two are mutually exclusive.Peoplesoft Interview Questions  (When a section gets called. If a section's access property is set to Private. PeopleCode PS AE PeopleCode provides an excellent way to build dynamic SQL. your program processes the "first row" returned from the Select statement. Non-restartable. that section can be called only from within the same program.CIs and other operations all from within AE program that don t require a trip to the database. The Message Log refers to the PeopleTools table (PS_MESSAGE_LOG)where execution messages reside. AE opens a cursor and performs a Fetch statement for each iteration of the loop to get each row from the Select statement. the subsequent Actions within the Step are executed in a loop as long as at least one row is returned by the SELECT statement for the DO While Action. This means that. %2. Your program executes a DO When Action only once when the owning Step executes. LOG MESSAGE:Used to write a message to the Message Log based on a particular condition in your program. Program ID Since you can call Sections in the current program or Sections that exist within other programs. (uses a cursor to fetch each iteration). CALL SECTION: Used to call another section defined in an AE program You can call a (local) section defined within your current program and you can make external calls to a section defined in another AE program. and parameter values. upon restart. because AE does not perform a checkpoint or a commit within the step containing this action while Select/Fetch is running. Cursor gets re-opened for each iteration of the loop.following types of SQL statements can be included:UPDATE. This Action is similar to a COBOL "IF" statement.  You cannot have more than one action of a specific type within the same step. or Program Name. If the Do While does not return any rows of data. . the next Action will be executed. It stops when there are no rows of data. When a Fetch statement results in an end of table message. The system stores the message generically as a message set. and to execute over and over until a certain condition is true. Note: PS AEsupports up to 99 levels of nested Call Section actions. It can be Restarted. Configurable Properties (. Its upto the developer need to keep track of restart logic. These types of loops are restartable.--Number Identifies a particular message within a Message Set.U can only define XSLT type actions for programs defined as Transformation types. SQL: Do not control the flow of the program . File Layouts . When a FETCH results in an "end of table". It is a Select statement that allows subsequent actions to be executed if any rows of data are returned. But upon restart AE doesn t keeps tracks of stop points when restarted. >>>>>>>>>>> XSLT : enabled for Transform Only program<<<<<<<<<< MESSAGE LOG: Use this type of Action to write a message to the Message Log. message number.. You can also use a Do Until action to stop a Do Select action prematurely.INSERT and SELECT. with Re-Select. Because there are eight types of actions. The subsequent Actions within the Step are executed in a loop based on the results of the SELECT statement. the looping is complete. There is no mechanism in place by which to exit this type of loop. and so on markers in the message text. set defaults. messaging . of the program containing the Section you intend to call. its steps execute sequentially. Re-Startable is similar to select / fetch but restartable because AE performs check points in between. The Message Log refers to the PeopleTools table PS_MESSAGE_LOG where execution messages reside.

Use ReUse only if you have no %BIND variables in the Select list.********************* ReUse Statement Property: Selecting this means the database engine only needs to compile the SQL once. Do Until. and the Program ID field with the symbolic value %AEAPPLID. the calling step resumes control of the processing. AE ignores the commit for the current step at runtime. **************** Depending on the ACTION type you select. If your PeopleCode program provides a false result. By default. . and then you intend to perform further operations on the inserted rows (provided that some rows meet the criteria). Automatically this process will fail. ± You enable a dynamic call by first having your program store different section names in the AE_SECTION field. ---For accessing external program Sections. . ReUse Statement converts any %BIND references to state record fields into real bind variables (:1. which reduces SQL overhead. you can have AE respond by doing one of the following: ‡ Abort The program issues an error and exits immediately. or Delete) associated with the SQL action does not return any rows. Note: Do not use it if %BIND variables are building parts of the SQL statement Or are in the field list of a Select statement (this does not apply if you use the Static option in %BIND). ‡ For example. select Program ID from the dropdown list. Do When. you choose from the following values: Abort The program terminates. Continue The program continues processing. Each time the statement gets executed. Section Name Property --Defined the Section to be called part of the Program ID. the properties that appear change. Update.. With ReUse off. both the section and the program ID must be dynamically set. Program ID Property--Each AE program has a Program ID If this is the last step in the section. field2. Dynamic Property Enabled by selecting the Dynamic check box. Do Select) y The ReUse Statement property to optimize the SQL in your batch program and increase performance. the AE runtime process recompiles the SQL statement every time the loop executes. dedicate a cursor.This option turns on ReUse Statement. --The default value is (current).  Bulk Insert.. ± Selecting Dynamic automatically populates the AE_SECTION field with the symbolic value %Section. ‡ The ReUse Statement property is available for all SQL action types (SQL. ReUse will be disabled. ± Use the AE_APPLID and AE_SECTION fields in the state record to execute different sections depending on the conditions a program encounters during runtime.Peoplesoft Interview Questions Q) SQL vs Call Section: ‡ The main reason behind it is a deadlock. the Bulk Insert option is ignored. you must specify what the AE program should do. as in you are using %BIND to resolve to a value other than a standard bind value. You could also prevent the program from performing set operations on the table when there won t be any qualifying rows. you choose from the following values: ± It takes effect if your PeopleCode program issues a return 1 or exit 1. Select this option to enable basic ReUse functionality. ± Used with statements like INSERT INTO tablename (field1. On Return (PEOPLECODE) When you specify the On Return property.Return of control is not synchronous. and control returns to the calling step. you could use this in a case where you insert into a temporary table. Skip Step PS AEexits the current step immediately and moves on to the next step. and so on). Holds all the data in a buffer and only performs an insert after a large volume of rows has gathered in the buffer. Enables the AE runtime process to compile the once. ‡ Skip Step The program exits the current step. If the SQL is dynamic.Database conflicts. ‡ When you set the No Rows property. and control returns to the calling step. use Skip Step only to bypass the commit. ‡ Break The program exits the current step and section. and the contents of the bind change No Rows property is available for SQL actions ‡ If the SQL (Insert. . and continues processing at the next step in the section. Once an SQL is run there is lock upon the table by database till that section is completed. Use ReUse only if you do not use bind variables for column names. ± When issuing a dynamic call. and then re-execute it with new data as often as your program requires. ‡ Note: Using No Rows in conjunction with a Truncate Table operation is unreliable. :2. Select this option to disable ReUse.Infinite loop. ----These two fields must be defined on the default state record for the program. . ‡ In brief SQL and Call sections are mutually exclusive because they may result in . :2. then you can t enable ReUse. ± You can use the True keyword in place of a non-zero numeric return. > Bulk Insert > No > Yes y y Page | 14 A Bulk Insert can be used when an Insert SQL statement is called multiple times in the absence of intervening Commit statements. ± A call to MAIN section executes the entire program defined by the value in the Program ID field. and so on) . If the current step contains only one action.  No. Do While.) VALUES (%BIND(ref1). and different program names in AE_APPLID section and sql are mutually exclusive. Section Break PS AE exits the current section immediately. during that time there runs some other process which will use the same table locked by our section using call section. ‡ PS AE ignores the Bulk Insert setting in the following situations: The SQL is not an Insert statement & The SQL is other than an Insert/Values statement that inserts one row at a time.%BIND(ref2) ± Other than Insert.So. When to use use ReUse : ReUse is valid only for SQL actions. Yes. Converts any %BIND references to real bind variables (:1.

How Restart Works ‡ The recording of the current state that AE performs is referred to as a checkpoint.%2. Typically. To display the details of the failed process. restart is essential for programs that do set-based processing. From a process request page. (select File. you receive a suspend error. Delete the Failed AE row from the AE run control table and state record. Restartabilty: What ? In case of abnormal termination or failure at a step in the program. ± Begin processing at the next Step after the last successful commit. Note: You can also use MessageBox PeopleCode to populate PS_MESSAGE_LOG instead of using the Log Message action. ‡ The ability for AE to "remember" what Steps have already completed and which Steps have not. if a failure occurs at any point in the process. ‡ So. The message log refers to the PeopleTools table (PS_MESSAGE_LOG) where execution messages reside. Steps: ± ± ------Run delete statement in your native SQL editor which would be of syntax bellow: DELETE FROM PS_AERUNCONTROL WHERE OPRID=OPRID AND RUN_CNTL_ID=Run_Control_ID Delete from your state record DELETE FROM PS_MY_AET WHERE PROCESS_INSTANCE=Process_Instance Disable Restart From PeopleSoft AE Program Properties dialog box. Process Scheduler. . select Restart Request. Find these variables on the Process Details dialog box. is attributed to an important record called AERUNCONTROL keyed by Process Instance. Parameters ---This field should be a comma-delimited list of values to substitute for the message variables (%1. Locate the run control ID number of the program to restart.) From Configuration Manager profile: (Start Configuration Manager. When ? As a general rule. and click OK. Page | 15 USING RESTART: ‡ By default. Starting AE from Beginning when Restart Enabled If you attempt to start a new process that matches the run control ID and user ID for another process. select the Profile tab. the end user can restart the program and expect the program to behave in the following manner: ± Ignore the Steps that have already completed up to the last successful commit. ±   ± ± Program Level Make State record a SQL table. and click Edit. On the Process Request Details page. you can restart request from the last successful check point. Definition properties. Section Level: Section Type ( Prepare Only & Critical Updates) Step Level: Do Select Type Restartable How ? There are two ways to restart an AE program: From the command line. and select the Advanced tab.Any substitution parameters are written to PS_MESSAGE_LOGPARM. it records the current state of the program.Peoplesoft Interview Questions Specifying Log Message Actions______________** This type of action is used to write a message to the message log. restart is disabled. Enter the command line syntax at the command prompt. AE doesn't perform a COMMIT until an entire program successfully completes. and so on) in the message text.EXE. ‡ Each time that AE issues a Commit with Restart enabled. Note: If you ve disabled restart in any of these three places. ± The following illustration shows a Log Message action: You can use the Log Message action to insert any type of messages.EXE CT DB_TYPE -CD DB_NAME -CO OPRID -CP PASSWORD -R RUN_CONTROL -AI PROGRAM_NAME -I PROCESS_INSTANCE Restarting from the Process Request Page (Only for those programs that run on the server) Steps: Open PS Process Scheduler by selecting PeopleTools. PSAE. click the Process Detail link. Then select the Process Scheduler tab) Include the DR Y option in the command line of PSAE. ---These parameters can be hard-coded values or %Bind references. System Process Requests. Message Set and Number: ---Select the message defined in the message catalog. a Log Message action writes error messages to the message log. check both the PS AE Program Properties dialog box and PS Configuration Manager to make sure that Disable Restart check box is not selected. (Only developers and system administrators use this option) Restarting from the Command Line Steps: Collect the command line values associated with the failed program. but you could also write informational or status messages.

No commits occur during the program run. errors on executing programs are suppressed. Suppress: The program continues and presents no error message. PeopleCode: There is a PeopleCode error in the program if the return code satisfies the statement If (nRet & PCM_ERROR). Commit early and often. including the commit frequency if it s set. For row-based processing. COMMITS IN AE ‡ ‡ For new AE programs that you develop. Ignore: The program continues but logs an error message. Status Select to activate a step.) Commit Considerations How ? ± ± ± ± ± ± At section Level use Auto Commit checkbox to commit after the section is complete. commit after every N iterations Steps like Do While. Do Select action In Do Select type with Select/Fetch. On Error : Specify how PS AE should respond to an error at the step level. not warnings. Do Until. SQL: Usually a program terminates if a SQL Prepare statement or execute fails.  Select from: Abort: The application terminates with an error message. commit after every N iterations of the main fetch loop that drives the process. For row-based processing. the commit values at the section and the step level are turned off. By default. ± At Step Level Commit After and Later settings used. commit early and often. If you select Ignore or Suppress. the commit values at the section and the step level are turned off. except for the implicit commit that occurs after the successful completion of the program. the program fails on the compile if the SQL is incorrect. For set processing programs. No commits occur during the program run. all commits inside the loop are ignored. but it does not fail on a duplicate key error or similar error when the program executes.  (Overcome this by creating a SQL to keep track of records processed using a simple flag. but errors on compiles still cause the program to terminate. not warnings. or a Do Select action. ‡ ‡ ‡ ± ± ± ± How often you apply commits affects how your program performs in the event of a restart. except for the implicit commit that occurs after the successful completion of the program. Suppress: The program continues and presents no error message. if you select to reuse on an Update statement. Ignore: The program continues but logs an error message. The program only terminates on errors. Thus. Later setting at the step level enables you to override the section setting if you don t want to commit after a particular step. On Error The program only terminates on errors.    Behaves the same for both SQL and PeopleCode actions. Abort: The application terminates with an error message. . The On Error property does not apply to compile errors. PeopleCode: There is a PeopleCode error in the program if the return code satisfies the statement If (nRet & PCM_ERROR). Note: The Commit After. by default.Peoplesoft Interview Questions Q) If commit is not specified by the programmer in AE program then during the execution of AE the commit levels will be taken care by either PS or Database Page | 16 Basing on above lines the PS AE is taking care of commit. SQL: Usually a program terminates if a SQL Prepare statement or execute fails. you can set the frequency option. Helps in Restartability. Divide your program into logical units of work by setting commit points within your program.

PeopleCode: Using CallAppEngine() CallAppEngine(applid [. Development or testing.enter command or type ? for help. use the CallAppEngine function in SavePreChange or SavePostChange PeopleCode.MAIN. Break at Start. Your AE program can be open on the desktop. AE Debugger . In the AE group.  At the AE Debugger prompt. type or paste a command into an editor and save the file with a type of Text Document and a . you'll want to turn the PeopleCode Debugger on. Debugging. You use the Run Request dialog box: To call a particular AE program from a page using PeopleCode. then you can just include the DEBUG Y parameter in the command line you submit to PSAE. statereclist ]) Synchronous process. ± Select Debug. you will enter the PeopleCode Debugger at that point. To run an AE program in two-tier mode: Select Edit.---Select Debug. as well. Using Notepad. enable Debug by selecting the Debug checkbox. ± Open PeopleSoft Application Designer.EXE. you can enter: psae optfilename Debugging AE Programs ‡ ‡ ‡ You can set the Debug option in the following locations: Launch the Configuration Manager and select the Process Scheduler tab. When you launch your program and the PeopleCode Action executes. if your command line options are stored in a text file.  To enable the PeopleCode debugger for AE: ± Sign on to PeopleTools using the same user ID that you are going to use to invoke the AE program. After creating or modifying your program. psae -CT dbtype -CS server -CD database_name -CO oprid -CP oprpswd? -R run_control_id -AI program_id -I process_instance -DEBUG (Y|N)? -DR (Y|N) -TRACE tracevalue -DBFLAGS flagsvalue -TOOLSTRACESQL value?TOOLSTRACEPC value -OT outtype -OF outformat -FP filepath Or. Run Program from the Application Designer toolbar. This is the method applies to all methods of invocation. PeopleCode Debugger Mode. ± This causes the AE program to break prior to executing any PeopleCode programs within it.  ±      AE Process Request Page (Which allows you to invoke the program through Process Scheduler with additional parameters). enter the appropriate command that enables the desired debugging option. but you do not need to open the AE program or the PeopleCode action that you want to debug. Processes to access the Processes Definition page.Peoplesoft Interview Questions Page | 17 Following are the ways in which you can RUN an AE Program in the PS. Process Scheduler.exe :Application execution component followed by the required parameters. ±  ± Process Scheduler Command Line --By defining the AE Process Definition--asynchronous execution Select PeopleTools. If you have PeopleCode in your AE program. If you used the command line option to invoke your AE program.BAT extension  PSAE. AETESTPROG.  For Restarting. DEBUG through command line: ----Execute the AE program that you wish to debug. you can test it while in PS AD in two-tier mode.STATS> ? Debug Commands: (Q)uit Rollback work and end program E(X)it Commit work and end program (valid between steps) (B)reak Set or remove a break point Change a state record field (W)atch Set or remove a watch field (S)tep over Execute current step or action and stop Step (I)nto Go inside current step or called section and stop (C)ommit Commit work (valid between steps) (L)ook Examine state record fields (M)odify Step (O)ut of (G)o Execute rest of step or called section and stop Resume execution (R)un to commit Resume execution and stop after next commit .

value TRACE . Database Optimizer Trace The database optimizer trace reveals the execution or query plan for the SQL that your AE program generates. with batch programs. TYPES OF TRACES: Step Trace ‡ The step trace reports each step name that your program executes and in what order. and the action type. This group box contains the traces that are unique to AE. you want the program to process as many rows of data in the least amount Page | 18 of time. PS_BAT_TIMINGS_FN This table stores PeopleCode detail timings information.write . The statement timings trace populates the following tables PS_BAT_TIMINGS_LOG (Parent) This table stores general information for a program run. Not available from PeopleCode. For getting the trace for peoplecode(record level). remember to press either the Apply or OK button to set your trace options. Connect.processes (select the AE name). Setting Parameters in Server Configuration Files. set the TraceAE parameter in the Trace section to indicate a level of tracing. Ideally. fetch time. AE tracing functionality to monitor the execution of your Steps. In the PS Process Scheduler configuration file. Statement Timings Trace ‡ The AE statement timing trace report is similar to a COBOL timings trace.For this we need to select the peoplecode check box in the beginning from people tools option. After you have selected the appropriate options.  Enabling AE Tracing Enabling Trace at PeopleTools option Navigation: PeopleTools->Process Scheduler->Processes->Override Options Configuration Manager (Only if you are running AE programs on a Microsoft Windows workstation) ± ± ± ± Launch the Configuration Manager. Peoplecode etc. every instruction. set the TraceAE parameter in the Trace section of the AS configuration file (PSAPPSRV. Where do you set Peoplecode trace? Peoplcode trace can mean setting peoplecode trace for record peoplecode or for AE (On Execute). y To enable in the configuration files for both the AS and the PS Process. Command Line. Associated with each step is a timestamp. all AE traces are turned off) AE step trace. ----Only for AEs in Batch Mode Set command line options. list the program. Look for a group of checkboxes called AE Trace. The former two mentioned here are two tier tricks for setting the trace ( App Designer level) We can still generate trace when on three-tier( Internet). that is only SQL. and so on. We can also do this for AE at peopletools-process scheduler. Select the trace options that apply to your current situation. the Timings (for PeopleCode and SQL). and select the Trace tab to choose the Trace. such as the execute count. your SQL.Peoplesoft Interview Questions TRACING TRACE FILES OF AE: Trace file is a document which helps us understand the internal logic and flow of the AE program. Set parameters in server configuration files. Database optimizer trace. rollbacks. Disconnect. the Do action level. y y For programs invoked by PeopleCode and run on the AS. Configuration Manager. Specify TRACE option in command line. You can use PSADMIN to set this parameter. in which you monitor the execution of COBOL programs for performance evaluations ‡ This trace enables you to gather performance information to determine program bottlenecks. You can use PSADMIN to set this parameter. Configuration manager allows debug for app engine where u can select levels of trace needed. ‡ ‡ We can setup the trace file options at Four places PeopleTools option. ‡ ± -Trace is used to monitor the performance of AE (By default.CFG). SQL Trace ‡ The SQL trace report shows formatted SQL processes. including commits. AE SQL trace. Available from Unix and NT. and restarts. etc) and select the destination file to which the generated trace needs to be copied into. AE statement timings trace. options tab-choose append. and how the optimizer for you database is handling your SQL constructs within your program. PS_BAT_TIMINGS_DTL (Child) This table stores details associated with a program run. need to go to options and select various levels of trace by checking what level u want( Stack.

timing. 5. start position. child etc). Insert all the records (parent. file layout object provides a effective way to exchange data between PS and Legacy systems. In file definition properties. 2. and PeopleCode (Session nnn) ± Command line interactive debugger -PeopleCode interactive debugger ‡ Many ways to run an App Engine program ± Command line -Through process scheduler -Third party process scheduler ± CallAppEngine API File Layout File object allows you to perform file operations. Using the icons determine parent / child relationship. Important of them are length. Click on icon AE to generate the code. . 3. set the file type (Fixed. To set the file layout properties of each record and fields click on each of them. Using the combination of file object with AE. SQL. Insert a record by using App Designer Insert Record menu option (or a drag drop). delimiter etc. CSV or XML) delimiters etc. Lay Out is a definition of a file to be processed. 4.Peoplesoft Interview Questions To launch an AE program from another App Engine program. 1. which one of the following is correct? CALLSECTION Action What category of commands can be executed in data mover? Access s groups Tree Manager Page | 19 Debug. Test and Run ‡ Useful tools for debugging and testing ± Process monitor to view results ± AE Trace for Statements.

DESCRIPTION : It can be used in other SQRs by performing a "do Get-Run-Control-arms" .SQC STDAPI-INIT It includes 3 procedures Define-Standard-Vars -.SQC . and represents any valid SQR commands. Platform specific parameters.SQC? SETENV.SQC .(Database Environment) #define ORACLE #include 'opsys. So.sqc Defines date and time formats based on database mentioned on rdbms.sqc How many nested levels of #includes does SQR supports? SQR supports 4 nested levels.EOJ. (In real time 70% of the SQC s represents Procedures/Local Procedures). and global date and report environment.sqc) used to Update Process API STDAPI-TERM --It includes 1 procedure . "do Update-Prcs-Run-Status" (We need to indicate that we're in Update-Prcs-Run-Status because if there is an error that goes to SQL-Error (sqlerr.sqc'--.Used in determining what format to display the year in.sqc -opsys. What is setenv. paper size. DESCRIPTION: It can be used in other SQRs by performing a "do Define-Prcs-Vars" PrcsAPI : Procedure to update the Process Scheduler request record and get the run control parameters.PRCSAPI.sqc) used to declare Process Request variable Get-Run-Control-Parms (from prcsapi. file suffix.sqc) used to update the status of the process scheduler Define-Prcs-Vars -.SQC? STDAPI.Peoplesoft Interview Questions What is SQC? SQR SQC s are nothing but a library files.sqc' !Updates process scheduler status begin-procedure Define-Standard-Vars let $Payroll_NID_Type = 'PR' end-procedure . which are required for Benefits Reports.sqc? what are the procedures in Setenv. Whenever the same business logic is used in different programs we use the logic in as procedure and attach it to a SQC file and we include this SQC in diff SQRS wherever it is required.SQC . OPRID.) SQLERR : (SQL Error Handling Procedure) This procedure is typicallly called via the ON-ERROR condition of BEGIN-SQL and BEGIN-SELECT.sqc) Used to Update process scheduler status BNRUNCTL.sQc It defines country. Successful-EOJ (from eoj.(This does not affect the format used to talk to DB) ! Meta SQL (For Use in SQL Statements Only) ! Standard INFORMIX parameters ! Meta SQL (For Use in SQL Statements Only) ! #define PTConCat || #define PTTRUNCATE DELETE FROM #define PTSubStr substr ! Standard MICROSOFT parameters ! Meta SQL (For Use in SQL Statements Only) ! ! #define PTConCat + ! Standard ORACLE parameters #define PTTRUNCATE TRUNCATE TABLE ! Meta SQL (For Use in SQL Statements Only) #define PTSubStr substring #define PTConCat || #define PTTRUNCATE TRUNCATE TABLE #define PTSubStr substr STDAPI : (Process Scheduler Interface) "do STDAPI-TERM" "do STDAPI-INIT" STDAPI: Standard Variables DESCRIPTION: It can be used in other SQRs by performing a #Include 'stdvar. If the error came from here.sqc).) It includes 3 SQCs : rdbms. though it would be an infinite loop in all likelihood.PRCSDEF. It defines file prefixes.SQC includes 2 procedures and 4 sqcs.(from prcsdef. "do Update-Process-Status" "do Get-PrcsRqst-Info" "Get-Job-Instance" do Get-Last-Message-Seq do Process-Message-Log do Check-Message-Parms do Parse-Message-Parms do Insert-Message-Log do Insert-Message-Log-Parm do Set-Client-Info do MS-Set-Client-Info SETENV : #include 'rdbms. PrcsDef : Procedure to define the Process Scheduler variables.(from stdvar.sqc -setfile. Procedures are : STDAPI-INIT Page | 20 Write about STDAPI.SQC It retrieves the run control parameters from RUN_CNTL_BEN table.SQC (Sets Environment for Country. language. Date. that will try to call back here. we set the indication to prevent the call back here. STDAPI-TERM SQC S are : STDVAR. return status and printer base on the OS mentioned on OPSYS. RUN_CNTL_BEN table is used for Batch processing purpose. RUN_CNTL_ID are the key fields.sqc'----(Operating System Environment) #define AXP #define MVS #define NT #define OS400 #define UNIX #define VAX #define VMS !BasePeopleTools Version !Country !Printer !Process Schedulder OUTDESTTYPE (ODT) !Process Schedulder OUTDESTFORMAT (ODF) ! Print Specific Language !Paper Size !Language ! File prefixes and suffix #ifdef NT !Global Date Defines #define FILEPREFIX C:\TEMP\ #define FILESUFFIX #end-if #ifdef MVS #define FILEPREFIX #define FILESUFFIX !Return Status #define GOOD-OS-STATUS 0 #define DEFMDY 'MDY' #define DEFDATE 'DATE' #define DEFDMY 'DMY' #define DEFCMP 'CMP' #define EBCDIC #define DEFYMD 'YMD' #define DEFROM 'ROM' #end-if #define DEFKAN 'KAN' ! PTRPTYear . Language. Printer-Paper.

Peoplesoft Interview Questions #Include 'prcsdef. Syntax of On-break command ON-BREAK [PRINT= {ALWAYS|CHANGE|CHANGE/TOP-PAGE|NEVER}] [SKIPLINES= {num_lit|_var|_col}] [PROCEDURE=procedure_name[(arg1[ . The Begin-Report and End-Report is same of Begin-Program and End-Program.. Before=procedure name: This command is useful in displaying the headings for the columns. Begin-footing... In Old version begin-program and end-program was the begin-report and end-report What is Report Manager? Report manager can be used to see the reports in the report repository. What is the usage of Save Parameter in on-break? The Save parameter can be used only with the on-break command.sqc' !Update Process Request variable declare #Include 'prcsapi. Works as Report Header After=procedure name: This command is useful in displaying the totals of the records at the report footer. across platforms. . etc. For example.)]] [SAVE=txt_var] [LEVEL=nn] [SET=nn] Explain the different commands in SQR.1) End-heading Begin-heading 4 for-reports=(Report1) And in procedure part if u want print the data on particular report then before printing we must use the USE REPORT ReportName command.. The save parameter saves the current fields data on which the on-break command is used. deletion we must use the begin-SQL Paragraph. The After procedure is mostly used for totaling the no of records for the particular group.sqc' !Update Process API #Include 'eoj. There are 5 main sections in SQR are as follows: Begin-heading. ROLLBACK. which can be used at the group footer. we must write the commands at the setup section. The commands must be coded in the setup section for different layouts for different procedures like as follows Declare-layout layout1 Left-margin=0. the commands for declaring more than one report.argi]. The Before procedures are use for printing the headings while working with the master details reports. updation. While printing the heading to the different reports we must specify the report name to which you want to specify the headings What is on-break command in SQR and how it works? The on-break command in SQR is nothing but the grouping of records being displayed.. Begin-document.argi]. Save: This command is useful to save the current on-break field data to a variable.5 End-declare End-setup Begin-setup In this way we can define multiple layouts for multiple reports. In this way we can work with the multiple reports in SQR . While displaying the records the SQR groups the records and prints the on-break field once and whenever there will be change in the on-break field SQR prints the new data of the field on the report. To display the data from the database we must specify the report on which you want to print the data.sqc' !Updates process scheduler status EOJ : Perform end of job processing if successful status #include "tranctrl. This is useful to identify the records are for which group field Print=always: This command will always the on-break field data for each record Print=never: This command will not print the on-break field data.. Begin-setup. Begin-program. To use the layouts for different reports. Begin-procedure Page | 21 There are 3 main paragraphs in SQR are as follows: Begin-SQL. If we want to do some insertion.. Level: The level command is useful with the on-break command to set the hierarchy of the fields of table if multiple on-breaks are used.)]] [BEFORE=procedure_name[(arg1[ . The begin-SQL Paragraph is used only for the data manipulation the select is not valid in begin-SQL paragraph. The syntax of Save Parameter with the on-break command is as follows: Syntax: Emplid on-break save=$emplid Before and After are the procedures which are available with the on-break command. we must declare the different reports in setup section like Declare-report Report1 Layout=layout1 End-declare Now. The commands available at the on-break command Print=change/top-page: Prints the on-break field data on every page top if the entire page is having the same on-break field. Use-Report=ReportName can be used.sqc" DESCRIPTION: It can be used in other SQRs by performing a "do Successful-EOJ" TRANCTRL : Common Transaction Control Procedures DESCRIPTION : The purpose of this SQC is to support COMMIT.argi].. it can be used in other SQRs by performing a "do Commit-Transaction" rather than a "commit". The Before is called as the Report Header and the After is called as Report Footer. The SQR skips the field on which the on-break command is used while displaying the output in the report. What is For-reports=(ReportName) command? This command is also used at the time of multiple reports. Works as report footer. Skiplines=number: This command is useful for skipping the lines between the two rows. for heading and footing part also we must specify the heading and footing for different reports in single SQR program. Whenever the change in on-break field will happen we can use the variable to display the value at the group footer. What is Use-report command? The Use-Report command is used while working with the multiple reports in SQR. What is report repository? Once the process scheduler finishes processing it will post the out put files to Report repository. Print Emplid (1.)]] [AFTER=procedure_name[(arg1[ . Begin-select How to create multiple reports from one SQR report? In Multiple report SQR Program.

spf we can create printer independent output files. need command in SQR? These commands are mostly used for the particular column in the begin-select paragraph. so that we can view. What are the uses of SQR portable files(spf)? We can create the printer independent output files. What kind of out put you can get when you run from web (3-tier) ?. The Get command useful in arrays while retrieving the values of array elements one by one row.LIS files by using the SQR printer. presenting this cross-tab as a bar chart is easy. The on-error can be used with begin-select and begin-SQL paragraphs.It can be PDF. The syntax of PUT command is as follows. If we are using on-error=skip it must be used in begin-setup only. To check this that how many no of lines is required to print the address generally that we can specify by using the command need. no advance. In input command we can restrict the user by specifying the maxlength for the input. LET. The input command can be written at any procedure not in setup section. What is next listing. After that data can be written to the file. e-mail. . The Syntax of MOVE command is MOVE $basic to #basic. Syntax: Open C:\Temp\EmpDetails. . LIS etc.Peoplesoft Interview Questions How do you debug an SQR program?.. The Read commands reads the file contents of the file.txt as 1 for-reading record=100:vary status=#stat The open command is always is used for reading the file. By default where SQR creates an output file? By default SQR creates an output file with the same name of the program in the same directory. fax and print these files by using the SQR Viewer. An array is a unit of storage that consists of rows and columns and exists in memory.It can be . These commands means whenever the page space is not sufficient to print the remaining lines of the address then next-listing command will be used. The syntax of get command is as follows. Its invalid in other sections. While opening the file for-writing the file will be created by the SQR on the file server. HTML.LIS and . While date and numeric variables are incompatible.spf files can be viewed and printed by the SQR viewer and also can be emailed. The ASK command will be executed at the compilation time only. read and write using file handling uses commands at the time of importing or exporting data from the database. Get $name $startdate #salary from emps (#i) PUT Command: The put command is useful for inserting the data into array.By putting Display and Show statements in the program and then check the out put file or use debug statement.SPF files? -ZIV.txt as 1 for-writing record=100:vary status=#stat For reading and writing we have to use the open command.LET #Basic = #basic + 1000 or LET #Basic = 1000 GET Command: The Get command is mostly used with the arrays.lis based on the SQR flag set. We can also change the output to any other directory using the report flags. This command is useful converting one data type to another data type. This command is useful for doing the calculation with the value of variables. SQR arrays are also advantageous in programs that produce charts. And we can also convert back to the . MOVE command in SQR? The move command is the most useful command in SQR.pdf What is the default extension to the SQR portable files? spf or . Begin-Select on-error=procedurename In Begin Select we can specify that on-error is equal to procedure name. . Can we change the directory of the output file? Yes. Open/Read Command: The Read Command is used to read the contents of the file Row by row. With the data for the chart already in the array. Page | 22 What is the default extension to the regular SQR report output files? .lis What is the default SQR format type? .spf or . The syntax for on-error is used as follows. $SQL-error. The procedure should be define in the SQR. While using with begin-SQL we must use as on-error=skip. e-mail . What is On-Error in SQR and where it can be used? The on-error is available with the begin-select paragraph.SPF files? Lis files are printer specific output report files. Whenever the error occurred the control will go to the procedure and will print the details of error by using the SQR reserved variable ex. What is the difference between . but it exists only in memory. An array is similar to a database table. The on-error is mostly used for error handling in SQR.lis files are not convinient for viewing the file before printing or to email. GET and PUT command in SQR? LET Command: The LET command in SQR is useful for assigning any value to particular variables in SQR. What output extension does the SQR will have if you run it from a client ?. Format for the date input can be specified. At the time of moving from source data type to destination data type we can use the edit command. Write Command: The write command of file handling is used for writing the data into file. which is located at the file server of the system Syntax: Open C:\Temp\EmpDetails. Input is executed at the time of execution only. By reading the data from the database. -NOLIST. Which types of command line flags are useful for creating the . These commands are mostly at the time of printing the addresses in SQR Report. The syntax of LET command is as follows. records can be write to a file by using the write command.Snn (for multiple reports) Ask and Input Command. -KEEP. The ASK command can be use in the setup section only. . PUT $name #count $date1 into names (#j) How do you open/Read and write file in SQR? The Open.

55.0) edit $999. Change: The break field will be printed only when its value is changed. What is dynamic query variables?Give example? When you use variables in a SQL statement in SQR to replace literals and more. EXP print &grand_total (+5. when you use the dynamic variable [$my_order] in the ORDER BY clause of the SELECT statement. We cannot use On-Break in Process. What is the use of the Document paragraph? We can create the Letters. execute a special procedure before or after the break. Types of PRINT commands? Function Puts data on the page at a specified position. What should we do when we want to apply On-break more than one field? We should use the level qualifier. On-Break is used for removing redundancy from the reports. Can we put multiple Documents in a single program? Yes. Page | 23 What is the dynamic variable? What is the use? Dynamic query variables are also called Dynamic SQL Variables. The values of the substitution variables are assigned during the compile stage and it will check syntax errors before the execution stage.345. . Print subtotals. Dynamic query variables are useful to build the dynamic SQL code What is a Document marker? Document marker is also a special type of variable. Print is the default qualifier for the On-break. What are the commands mainly we are using with the Letters? 1.b 3. PRINT { any_lit | _var | _col } position position means: BOLD causes the string or number to be printed in bold type. 4. What is the purpose of the . SQR places the text from the variable $my_order in that statement. we must arrange them in a hierarchy. This is the default option. These are run-time variables.EXP print #total (7. Each time the statement is executed. Perform conditional processing on variables that change. Begin-Document 2. What is the advantage with Document markers? We can mix the static text with the database values. New-Page. These are prefix with @ symbol. 20) box CENTER Centers the field on a line. For example. 20) bold BOX Draws a one-line deep graphical box around the printed data.999. This sort of arrangement is called nesting. and the breaks can be considered nested. a new statement is compiled and executed. . sometimes we may need to skip lines when the value of the column is changed. We can do all these by using the SQR break handling commands. when select is completed (after qualifiers are invoked in descending order) st What is the difference between Break and On-Break? Break is used for exiting from a loop Ex: Evaluate.67 ON-BREAK What is On-Break and what is its purpose? On-break is the special processing performed when the value of a column is changed. Never: The break field will not be printed. On-break is the special processing performed when the value of a column is changed.Peoplesoft Interview Questions How many ways we can define the substitution variables? We can define in 2 ways. What is SKIP LINE command? It is used with On-Break command to denote how many lines the printer has to skip before printing the next line. At what time SQR substitution variables values are assigned? Substitution variables are compile-time variables. What is save qualifier? Save qualifier is use to save the previous break value in string variable and to print the old values. Can we change the values of the substitution variables during the program execution? No The values of substitution variables are set during compilation stage and checked for errors before execution begins. EXP:print &name (+1. #Define Ask advantage : We can define these variables only once and but we can use them in more than one place in the program. It is only used for reports. Change/Top-Page: The break field will be printed when its value is changed plus at the top of each new page. including the last change i. and Avoid printing redundant data. Can we Use On-Break in a Process? No. etc. What is document markers paragraph? Document markers are used to place the value of variable or columns into a document. EXP :print ¶Quarterly Sales¶ (1) center EDIT edit_format EDIT causes each field to be edited before it is printed.b command? Using the . Document Markers. print a value only if changed. if the text changes.99 ! $ 12.b command we can get the blank space. Add white space to your reports. These can be referenced in the position command out side the document paragraph to establish the next printing position. It can be used for both explicit and implicit printing. What is the purpose of the On-break Qualifiers? What is the default qualifier? Qualifiers define specific actions to be taken when the break occurs. including the process of the 1 row selected(before qualifiers are invoked in ascending level order)after qualifier will automatically call the specified procedure after the column is changed. you make them dynamic variables by enclosing them in square brackets. Always: The break field will be printed for each detail group. When we have multiple breaks.e. How before and after procedures are executed? The before qualifier will automatically calls specified procedure before the column values are changed.

Array-Add . arrays are created during the compile time. And it is better way to use the substitution variables as the size parameters. The CreateArray command just allocates and initializes memory for an array. For reinitializing the array we can use ClearArray. #j) Retrieving the data from arrays using the GET command: Using the GET command we can retrieve all the array s fields at a time. An Array is a collection of similar groups of fields in the program memory. If no field What types of commands are useful to retrieve the data from arrays? Using the LET and GET commands we can retrieve the data from arrays.Put . What happened if we not specify initial value? If no initialized value specified for a field. What types of commands are useful to place the data into arrays? Using the LET and PUT commands we can place the data into the arrays. How can we initialize the arrays? By using the Clear-Array command. the default value will assign to that field. which is not possible using load lookup. At what time arrays are created? In SQR. ---An SQR array is a buffer that is useful to store the data temporarily. So that we can easily change the size of the array if the array is full. Arithmetic operations can be performed by using Arrays. What are the valid commands in SQR array? The following commands are valid with SQR arrays: Create-Array .emp_id(#Row_Num) = 100 (#Row_Num) stores the row number that can be changed by the program. before the program is executed.Array-Divide What is the use of the Create-Array command? used to create an array. --An SQR array is a memory structure that consists of rows and fields.Get .Emp_Id(10) Let $Phone= Emp_Detail. Means for one field we can specify the number of occurrences.Clear-Array . Get $Emp_Id From Emp_Detail(10) What are the arithmetic operations of an array? Array-Add . What is the starting no of multiple occurrence field in array? For multiple-occurrence fields. What is a multiple-occurrence field? An array also supports the multiple-occurrence fields.Array-Divide . Create-Array Name=name of the Array Size=Size of the Array {FIELD = name:type [ :occurs ] [ = { init_value }] Page | 24 Can we use the substitution variables as the size parameters? Yes.Phone(#I. Let Emp_Details. The string literal 100 is moved into field emp_id of the (#Row_Num) row of the Emp_Details array.Let .Array-Subtract . Lookup: Used to search through the internal memory arrays created and populated by load-lookup What is the difference between load. It will retrieve two fields key field and return value field.Array-Multiply . Placing the data into arrays using the PUT command: Put 100 into Emp_Details(10) The string literal 100 is moved into the first field of the 11th row of the Emp_Details array. .lookup and array? Load-lookup Creates internal memory array retrieving information from multiple tables. Retrieving the data from arrays using the LET command: Let $Emp_Id = Emp_Detail. In the above example Emp_Phone is the multiple-occurrence fields. Placing the data into arrays using the LET command: Let Emp_Details.Peoplesoft Interview Questions What is an Array? --An array is a collection of similar group of fields. the field occurrence number starting from occurrence number zero. key field can be string or numeric but it must refer to a unique column value. But it is better to create the arrays in the setup section. Can we create arrays in any section? We can create arrays in any section of the program. Return value field refers to just on table column or a combination of several table columns.Array-Subtract What is load-lookup and lookup command? Load lookup creates an internal memory array and populates this array with keys and column values in specified table.Array-Multiply .emp_id(10) = 100 The string literal 100 is moved into field emp_id of the 11th row of the Emp_Details array. What happened if we enter values more than the maximum array size? If we enter the values more than the maximum array size then SQR aborts the program execution and displays the error message. What is the starting no of an array row? In array the rows starts from zero. When an array is created all its field values are automatically initialized based on the default values.

Write command ----2.2. &RQST. .Schedule().TimeZone = %ServerTimeZone. Why because we are using these file with other commands like input/output and read/write. If we not specify directory name it takes the default directory that is current directory. The file is stay opened until the close command is used. What is Let command? A single Let command is capable of replacing a no of data manipulations and logic commands What is the syntax of the LET Command? LET target_variable = expression Expression can be combination of operands. Edit inputs fields using SQR function table lookup function and queries. Check for duplicates. and functions.4. How do we open. Built logic to insert data into different tables based on the specified criteria -.Peoplesoft Interview Questions How do you write sub queries in SQR? The select statement can be nested with in one query. Print and new page command. We will Read records from the input files -. the existing file is over written. How can we detect end of file? By using the #end-file command. What is for-append mode? For-append mode is for creating new file otherwise if the same file is opened and for-append is not mentioned. &RQST.RunControlID = "1". What is the difference between Move and Let command? Move command is used for data conversions where as let command used for data conversations as well as logical expressions and calculations. it can handle data of any format except date to numeric vice versa. directory name and file name. The maximum record length is 32k-1 bytes 32767. We can choose any one number instead of 1. Open c: \windows\desktop\1. Operands in the expression can be SQR columns. How you run SQR program through online page? Through process scheduler. At end of file it returns 1.SQR as 1 for-append record=80: vary We should specify the fully qualified path means Drive name. How do you read data and upload data back? Open c: \windows\desktop\1. or array fields. &RQST.SQR HRMS/PS FC: \TEMP 100 How SQR program executes? First the body executes next heading and footing. 1 is to reference the file in the program. &PRCSSTATUS = &RQST. What are different techniques for creating flat file output? 1. close a file? Opening a file: Open my_file as 1 for reading record = 80 :vary Closing a file: close 1 Here The number 1 next to the file name in the open command is the file number (file handle) 80 is the record length.ProcessType = "SQR Report". Page | 25 What is the purpose of the close command? It is used to close an opened file. What is the record length in open command? When a file is opened for reading the record length specified in the open command must be equal to or greater than the length of the longest record used in the file.OutDestType = "File".SQR as 1 for-writing record=80: fixed Open c: \windows\desktop\1. What is the purpose of the Read command? The Read command reads the records from the file into the variable. Vary: By using this all records in the file must be terminated by a line terminator. What are the requirements we should to enter for executing a SQR program from command line? The name of the SQR engine (SQRW in windows. ---5. What is the purpose of the Write command? The Write command writes a record to a file from the variable. 3.SQR as 1 for-reading record=80: vary Open c: \windows\desktop\1. Operators in the expression can be arithmetic. string or relational. If we want to run any program we should specify C:\>SQRW <PROGRAM_NAME> <DATABASE_NAME>/<PASSWORD> <OUTPUT_DIRECTORY> C:\>SQRW SAMPLE.RunLocation = "PSUNX".RunDateTime = %Datetime.SQR as 1 for-writing record=80: fixed (for upload) What is the purpose of the Open command? To open a particular file in read mode or write mode or append mode. &RQST. literals. &RQST. operators. Files with type=vary should not contain binary data. Print and audit reports. How we read a flat file and store it in database table? 1. &RQST = CreateProcessRequest(). How do we run the sqr through peoplecode? This is the code to run the sqr thru PeopleCode. Which report is useful when we want to print each row of information in a new page? Form Reports. &RQST.Status. &RQST. Which command is essential for making Form Reports? New-Page.SQR as 1 for-reading record=80: vary(for reading) Open c: \windows\desktop\1.ProcessName = "HAPDT009". SQR in UNIX) Program name Data base connectivity string SQR command line flags Application specific arguments. &RQST. &RQST.SQR HRMS/PS FC: \TEMP If we want to pass any run time values we should specify C:\>SQRW <PROGRAM_NAME> <DATABASE_NAME>/<PASSWORD> <OUTPUT_DIRECTORY> <values> C:\>SQRW SAMPLE. What is the use of the MOVE Command? It moves the data from on field to another field and it can also perform data conversions and data editing using special edit masks.OutDestFormat = "PDF".

--Then create the component.SQC. Why we have to make SQR program API aware? To allow the process monitor to reflect our program status. Process.SPF extension). which is nothing but the SQR program name Can we create temporary table in SQR if so when we use them? Yes we can create temporary tables in SQR. The output file has the same file name as the SQR file that created it.Iused PeopleCode at component level or Record level to Trigger the WF.event and mail setting the properties and connected by routing. RUNCNTLID fields. you can easily view the sample PROG¶s . Enter the Process type as SQR report and process name as our program name. it is used to increase the performance of SQR program. Using activity . click ok. the -KEEP flag . SQR displays an error message and exits the program. which are required. we have to have mail server set in Unix box. Save the page. If the process is running from outside the process scheduler get-run-control-param procedure will not detect any input values so it will identify that the process is being run from outside process scheduler. this procedure is located in hrsecty. on Windows platforms with the SQR Viewer GUI (sometimes referred to as an ³SPF viewer").. To produce the desired output file for this exercise.. How you can see the SQR Errors (after Execution)? SQR normally places the SQR PROG output files in the directory from which you run the PROG. oper id What is the use of the Process Monitor? Using the Process Monitor we can see the status of the program. Then save.set WF or Worklist.develop Business process. Save the record and build it. the command used to send email is . Schedule the process using the process scheduler manager. ---Include all other fields. I did set up the WF in such away that is send email to a person or group by settings the properties in a business process. --Specify all the options in all the tabs. Then it displays the Process Scheduler Request page. How can we prevent running SQR from running outside the process scheduler? There is a simple solution for stopping SQR execution from outside the process scheduler..lis If u specify -keep the output file will be in . What are the most important values we have to give while connecting sqr to process scheduler? Run control id. This SQC contains STDAPI-INIT and STDAPI-TERM procedures. Processing) How we attach SQR program to process schedular? For every job that runs under the peoplesoft process scheduler needs a process definition to specify the process attributes and link the process to the appropriate component. If you specified the -KEEP argument. open a new record. And include other fields. The SQR Viewer is invoked from the command line with ³sqrwv´. If the value of $prcs_oprid is null.sqc How SQR detects that it has been running from outside the process scheduler? The get-run-control-parm procedure in PRCSAPI. . Go to our component and enter the values then click on RUN. menu and then register the component. one output file is in SQR Portable Format (recognizable by its . How can we make the program to support APIAWARE? We should include STDAPI. ---Insert sub page (PRCSRUNCNTL_SBP). How can we create the Run Control Records? Go to Application Designer. The output files should appear as soon as your PROG has finished running.lis or . Include hrsecty. Page | 26 How do you attach SQR program to Process Scheduler? Steps to schedule the SQR program Go PeopleTools.spf(sqr portable format) How can you send a mail to person? If this is AE. How do you implement row level security in SQR? For this we have to add security-param procedure. I write a WF PeopoleCode using TriggerBusinessEvent function I can send a mail. Specify all actions and click ok. How can we provide security for SQR? Adding code to the program which checks for the prcsoprid variable.SPF file output. In process definition we will give the process name. which are required. Posted. which are required. Click on Add a new value. Then it displays Process & definition tab.spf. The command used to send email is. I know how to create Role queries. which is populated by the API code (in the get-run-control-parms procedure) only if the report was initiated from the process scheduler. Then it asks the process type and process name. . For this to happen. Then authorize the user to run the programs using the process group. (Success. but the file extension is different. Activity and Event where in I gave the email address of the person or used a Role Query.SQC detects whether process is calling from process scheduler or outside the process scheduler.Peoplesoft Interview Questions What is API aware? An API aware process updates the process request (PSPRCSRQST) table with the process run status. --Insert OPRID. we have to add a code that checks for $prcs_oprid variable. If this is SQR. ---Open a new page. ex1a. Process Scheduler. For WF. Go to the Process Monitor and see the status of the program.sqc program Call the security param procedure to select and build the security clause Add a security search record to your main select to restrict access to non authorised data. SQR Portable Format is discussed later in this guide but for now. Default output file is . when it is APIAWARE.

and another to summarize monthly orders by price range. We can send the beeping signals. then we need to find the mistake. Example: Display &emplid noline --Display &name noline ----Display &sal .Now the output is:100 NUTAN 10000 Can we use the edit format masks for the Show and Display commands while displaying the variables? Yes we can and effdt<=$asoftoday) End-Select (+1. Then how many substitution variables will create the SQR? SQR automatically creates four substitution variables. What happens? If we specify like the following: Suppose that debugxyz is command line flag and the following are debug statements.567. Debugx.. 3 dimensional array. summary salary) of employee --2 DA used in generating the customer details and order details ---1 DA company id How you can declare 2nd dimensional Arrays? Using multiple arrays can allow you to reduce database calls. What is the difference between Show and Display commands? The purpose of these two commands is same but the difference is Using the Display command we can display only one value at a time Using the Show command we can show more than one value at a time. 3 DA used in generating the (depend. It will specify the name of the procedure to be executed. Debugz. What happen if we not specify the -debugx command line flag? The statement will not be processed during the compile stage.#End-if Suppose that #debugx Show Test started is a statement. What are the outputs to the following? Display '123456789' xxx-xx-xxxx ==== Display 1234567. #Else 4. What is the drawback to the Display command? We can t display multiple fields in one display command. BEGIN-SETUP create-array name=order_qty size={max_products} field=product:char field=month_qty:number:3 >>>>>>>>>Create array create-array name=order_qty2 size={max_categories} field=category:char field=month_qty:number:3 END-SETUP Name : purchage array size = 100 Field1: price:num Field2: qty :num size={max_categories} field=category:char field=month_qty:number:3<<<<<<<< create-array name=order_qty . 123-45-6789 1.99 1. Show &emplid &name &sal output is: 100 NUTAN 1000000 Display &emplid &name &sal :But it gives an error because we should use separate line for each display command.89 999. and underline.eff_status(+1) from ps_company_tbl a where a. What are the commands SQR supports for Conditional Debugging purpose? 1.#if 3. That means we have to debug the program. What is the use of the Noline parameter? Using this command we can print the values in a single line. bold. In the SETUP section. we can use these commands anywhere in the program except the setup section.effdt = (select maxof(effdt) from ps_company_tbl where company = a. sometimes the output is not what we expected. What is an effdt query to select the current data row? Begin-programme Do get current-datetime Begin-Select a. Display &emplid ---Display &name ----Display &sal Now the output is: 100 -----NUTAN ---------10000 How do you handle errors in SQL paragraphs? By using on error-argument. how can you call stored procedures in sqr? By using global or local procedures we can call procedures after begin procedure we have to put local keyword. #debugx show x ---#debugy show y ---#debugz show z ---#debugz show a ---#debugz show b The output is : show x ----show y ----show z . What is the purpose of the Show and Display commands? We can use both the commands to display the variables on the screen and write the same information into the log file. #ifdef 5.#ifdeg 6. and therefore will not be executed. and 2 dimensional. Suppose that -debugxyz is a command line flag. We can make the screen fields blinks.999. What are the commands SQR supports for Debugging purpose? Show and Display. What are the different types of Arrays in SQR? Single dimensional.234. Debug.effdt(.+1) a. #debug 2.1) a.89 What are the other advantages with the Show command? We can control the cursor position on screen..999. Debugy.Peoplesoft Interview Questions SQR DEBUGGING Why we need the Debugging concept? After completion of the program successfully. job.because #debugxyzab flag was not ccb and a. Page | 27 Can we use the Show and Display commands in setup sections? No. two arrays are created²one to summarize monthly orders by product.

Data permissions. Record and Page level Security ‡ Application Data Security a) Table Level Security( Works only for queries (SQL). Roles. appear either through a Primary Permissions List or a Row Security PL. Examples: Employee. receiving an email etc. Roles: Intermediate objects that link User Profile with permissionlists.(2) Process Groups. Some Permission Lists. Data permissions. PERSON_DATA User Profiles :This data includes everything from the low-level data that PeopleTools requires. A security definition refers to a collection of related security attributes that you create using Maintain views.(3) Restricting off-line RDBMS access) b) Reporting Security (Report Repository at Web Server.--Different from application data tables e. User Profile Types: Security related: Passwords Descriptive: Email Address Preference: Multilingual When User Profiles are relevant: When user interacts with the system by: logging in. application data. Tailored to specific applications) c) Field Level Security ( Securing fields or columns by using PeopleCode) ________ User Profile: Set of data describing a particular user of PeopleSoft system. Server should be locked from outside access Can distribute reports and view them based on Roles) ‡ Object Security --Field. They store: Sign-on times. Customer. Permission Lists: List or group of authorizations that are assigned to a Role. such as batch processes. Manager.Doesn t control run-time page access table data) b) Row Level Security (SQL views . such as Process Profile or row-level security. object definitions. PeopleSoft Security Types Sign-on and Time-out Security (Sign-on : Monday to Friday 9am to 5:45pm. Permission Lists ‡ ‡ ‡ A User Profile inherits most of its permissions through the Role(s) or roles that have been assigned to the User Profile. you apply directly to a User Profile. appear either through a Primary Permissions List or a Row Security Permissions list.g. LDAP and Query Tools) You can assign multiple Roles to a User Profile.Time-out: 20mins. you apply directly to a User Profile. such as Language Code. SETIDs etc. PeopleTools access etc. Roles can be assign in two ways: Manually. or row-level security. The fewer types of permissions in a Permission List the more modular and scalable your implementation. Some Permission Lists. Page access.Query Access Groups in Tree Manager. Data includes Language Code. and so on. such as the SETIDs a user is authorized to access within the PeopleSoft financial applications. . The three main PeopleSoft security definition object types are: User Profiles. Student etc. and you can assign multiple Permission Lists to a Role. Vendor. such as Process Profile or row-level security. or row-level security. Dynamically(by using PeopleCode. viewing his/her worklist entry. Idle time) Page | 28 Page and Dialog Security -Menus or specific actions (Enabled/Disabled) Batch Environment Security: a) Process Security((1) Run Control ID. saving only rows of data. to application-specific data.Peoplesoft Interview Questions SECURITY: What is PS Online Security? The PeopleSoft system is comprised of many components. Permission Lists Permission Lists ‡ A Permission List may contain one or more types of permissions. Using PeopleTools security tools you can control access to most of these components.

With tableset sharing. The combination of these two items grants users online access to the PeopleSoft system. The User ID is also the key used to distinctly identify the User Profile definition. It is the key on all control tables in tableset sharing Every row in a control table includes a setid as its key. a single table can offer different values based on underlying business rules. Business Unit? What are the major functions? A business unit is a way of tracking specific business information for reporting and other roll-up data collection. Access IDs ‡ ‡ When you create any User ID. Connect ID : Using Connect ID means you don't have to create a new database user for every PeopleSoft user you add to the system. you must assign it an Access Profile. which specifies an Access ID and password. The system can also use a User ID stored within an LDAP directory server. Table set sharing simply consists of assigning specific SetIDs to specific record groups for individual business units to restrict the view of rows of data within control tables. It¶s a way of organizing your organization. Consequently. ‡ ‡ ‡ User IDs : A PeopleSoft User ID is the ID you enter at the PeopleSoft signon dialog. Table Sharing? Tableset Sharing is a method of filtering prompt data so that only appropriate values are available for data entry. It¶s a way of organizing your data in the system.Peoplesoft Interview Questions The PeopleSoft system uses various authorization IDs and passwords to control user access to the system. So application servers and two-tier Windows Clients require a Connect ID. You use Maintain Security to assign two of these IDs: User ID and Access ID. that is. Using Maintain Security. and for Windows Clients you specify the Connect ID in the Startup tab of the Configuration Manager. Business unit and a setid? A business unit is a way of tracking and reporting specific business information for reporting and other roll up data collection. So when the Access ID. An Access ID typically has administrator-level database access. This is extremely important for large or multinational companies. it has all the RDBMS privileges necessary to access and manipulate data for an entire PeopleSoft application. It performs 2major functions 1) It allows you to maintain a tree structure to facilitate customer-specific roll-up reporting. which is stored in PSACCESSPRFL. You specify the Connect ID for an application server in the Signon section of the PSADMIN utility.--Access ID is stored in PSACCESSPRFL table The PeopleSoft Access ID is the RDBMS ID with which PeopleSoft application(s) are ultimately connected to your database once the PeopleSoft System validates the User or Connect ID. Page | 29 ‡ Connect ID ‡ Note. Setids partition the data into groups or sets of data that are appropriate for each business unit. Setid? Setid's are key to linking business units to record control groups. 2) It allows you to distribute and administer certain control tables like the department table. needs to be retrieved or referenced. UserID/OPRID is stored in the PSOPRDEFN table. you'll assign each PeopleSoft user a User ID and password. It does not have to be a legal entity for HR. Important! If you are configuring a Windows Client to connect directly to the database (two-tier) then you must specify a Connect ID in the Startup tab of the Configuration Manager. Table set Sharing is organized around these basic elements: Business Units and transaction tables SetIDs and control tables Business rules. an encrypted value can't be readily referenced nor accessed. the query selects the appropriate Access ID by using the Symbolic ID as a search key. . ‡ Symbolic ID : PeopleSoft encrypts the Access ID when it is stored in the PeopleTools Security tables. A SetID is a link to Table Set Sharing. Connect ID is required for a direct connection (two-tier connection) to the database.

RECORDNAME.TASK_PROFILE_ID AND T1. The Field is nothing but EMPLID) is also referred.EDITTABLE value. Character Value. Local string &Type.Value = Record. When "L" /* Location */ &Row.JOBCODE_TBL. . T. there is no need for placing the EDITTABLE field in the Page. This is simply done by DERIVED.TASK_PROFILE_ID=T.Value = Record.Using Dynamic Views 1. Prompt table property of Record Fields should be assigned with %EDITTABLE value. This SQL should be generated dynamically and the same should be assigned to the Record Field.EDITTABLE should be assigned with value either in one of the Peoplecode events (Either in FieldChange or FieldEdit or RowInit events).GetRecord(Record.SqlText = SELECT T. Usage of Dynamic Views As we know.DERIVED). When "J" /* Job Code */ &Row.g GR_CRI_TBL) has following fields: SELECTION_TYPE.EFFDT =(SELECT MAX(T1. In the above example your need a record(e. Lets consider a scenario. Declare Function hide_unhide_popfields PeopleCode GR_CRI_TBL.EDITTABLE.TASK_PROFILE_ID.GetRecord(Record. End-Evaluate. Break. Usage of EDITTABLE Fields In this method. Break. Dynamic prompt table for Record Fields.GetRecord(Record.DERIVED). Function hide_unhide_popfields(&Row As Row). &Type = &Row.EDITTABLE. PROCESS >> CHAR_VALUE should have %EDITTABLE Prompt Table Edit Type Write the following function in any FIELDFORMULA and call the function as given below. which can be assigned both in FieldChange and RowInit events of the Record Field TASK_PROFILE_ID. Note: EDITTABLE Field should be present in the SAME Page. The Record Field DERIVED. For Department Character value prompt should be DEPT_TBL and for Job Code the Character value prompt should be JOBCODE_TBL. How can we achieve the same in our project???? This is accomplished by 2 ways: Using EDITTABLE fields for Prompt Table. 2.Peoplesoft Interview Questions Dynamic Prompt / Edittable Prompt The following steps help to make Dynamic prompt (Edit Table Prompt).--. SetDefault(GR_CRI_TBL.SELECTION_TYPE.GR_CRI_TBL).TASKGROUP = T.DEPT_TBL. based on selection Criteria the Character value prompt need to change. CHAR_VALUE.LOCATION_TBL. Evaluate &Type When "D" /* Department */ &Row.SELECTION_TYPE FieldFormula. Call the above function based on FieldChange and RowInit.GetRecord(Record. Page | 30 The Selection Criteria.DERIVED). End-Function. there is no need to specify the SQL. If the Record Field is not coming under Component Search Record Field.hide_unhide_popfields(GetRow()).CHAR_VALUE). Record Field TASK_PROFILE_ID.TASKGROUP. &maxdate are dynamic bind parameters.EFFDT<= %datein( | &maxdate | ) ) . Break. Actually what does it mean????Prompt Table value for the Record Field is populated from the Record Field DERIVED. Both &TSKGRP.Value = Record.TASKGROUP AND T1. T. where Record Field (In this case. while creating Dynamic view. Process are fields in SQL Record (May change in different case) and Edit Table (EDITTABLE field) is from DERIVED (delivered) derived and work record.TASK_PROFILE_ID.TASKGROUP = | &TSKGRP | AND T.EDITTABLE = PERSON_NAME .Value.EFFDT) FROM PS_TL_TSKGRP_PRF_W T1 WHERE T1. it is assigned with dynamic prompt table view TL_TSKGRP_DVW and this view TL_TSKGRP_DVW is dynamically initialized by the following Peoplecode.DESCR FROM PS_TL_TSKGRP_PRF_W T WHERE T.EDITTABLE.

&rsDataSource. &rs_level0 = GetLevel0().GetRowset(Scroll.IsChanged Then Page | 31 Else For &i = &LVL2. Function selectAllRows(&rs As Rowset) Local number &i. /* Make sure we only select visible rows.TEST_VW). Place the code behind a FieldChange event and users will have the option to Select or Deselect grid rows all at once.CHECKLIST_CD AND A. selectAllRows(&rs).EFFDT) FROM PS_CHECKLIST_ITEM A WHERE A.EFFDT <= %DateIn(:2))". Local Row &row. End-For. end-function.Flush(). Just replace the record and field for respective level. For &L = 1 To &rs_level2.Flush(). just change the name of the function and line &row.GetRow(&L).GetRow(1). Following is generic peoplecode which you can use for pages having parent child relationships (scrolls).SelectNew(Record. &row_level0 = &rs_level0.GetRow(&i). &rsGrid = GetLevel0(). The below function is to be used on a grid with multiple check boxes.RowCount &level1fieldvalue = &rs_level1. If &LVL2. End-If.CHECKLIST_CD = PS_CHECKLIST_ITEM.RowCount &level2fieldvalue = &rs_level2.&nEmplRcd). For &J = 1 To &rs_level1. End-For.CHECKLIST_CD) Then &LVL2. &level0fieldvalue = &rs_level0.Level1_Record). &rs_level1 = &row_level0.Value &row_level1 = &rs_level1. &rsDataSource. If All(PER_CHECKLIST. &rsDataSource.GetRow(&J).CHECKLIST_CD. "WHERE CHECKLIST_CD = :1 and EFFDT = (SELECT MAX(A. . to &row.PER_CHKLST_ITM). /*Call Function*/ &rs = GetLevel0()(1).(1).TEST_VW).GetRow(1).CHECKLIST_DT).Peoplesoft Interview Questions Changing/Selecting Grid value based on Condition The following PeopleCode can be used to change the grid value based on condition.GetRowset(Scroll.End-If. PER_CHECKLIST.Level1_Record.Selected = False. &LVL2 = &LVL1(CurrentRowNumber()).PER_CHECKLIST). The same code would work for multiple check boxes "Deselect All".scroll_table).Value End-For.Value .Level2_Record).Level2_field. &rs_level2 = &row_level1. */ If &row. &rsDataSource.ActiveRowCount &row = &rs.Visible = True Then &row.ActiveRowCount = 1 And &LVL2(1). /*main line*/ Local Rowset &rs.Level1_field. End-If. Make sure the Multiple Row (Check Box) is checked on the grid properties. We always find it confusing to write code for Scrolls.Level2_Record.Selected = True.Level0_field. For &i = 1 To &rs. Local Rowset &rsGrid.GetRowset(Scroll. &rsDataSource = CreateRowset(Record.GetRowset(SCROLL.Fill(" WHERE EMPLID = :1 AND EMPL_RCD = :2 " &sEmplId.IsNew And Not &LVL2(1). The following code can be used to Select grid value based on FieldChange(any condition) event. &rsGrid.DeleteRow(&i).GetRow(&J).GetRowset(Scroll. &LVL1 = GetLevel0().GetRowset(Scroll.Level0_Record.Selected = True.CopyTo(&rsGrid). PER_CHECKLIST.CHECKLIST_ITEM.GetRow(1).ActiveRowCount To 1 Step ± 1 LVL2. End-For.

Selected = True Then /* This is a row selected by the user. there isn't one well not in the sense of a field change anyway. You can use this functionality to get the user to select the row(s) they are interested in. End-If. but what is the event triggered by user when they use these selection indicators? Well.InsertEnabled = False. will trigger a save event when the user sets or changes the selection indicator(s). &rs_YOUR_RECORD = GetLevel0()(1). */ Local Row &row1. Place the code below behind a field change event. which. we are going to loop through the grid rows and make sure a specific field value is unique*/ For &r1 = 1 To &rs. SavePreChange. &rs = GetLevel0(). Local number &r.GetRow(&r). I've implemented such a requirement by placing a "Delete all" button above a grid to give PeopleSoft users the option to delete all rows at once instead of clicking the "-" grid button. If GetRowset()."). &RECCNT = ActiveRowCount(Record. /* if this is a different row. &row2. when set.1 DeleteRow(Record. and the field_name value matches then throw an error*/ If &r1 <> &r And &row1. &r1. You can of course modify it to check for multiple fields or even the whole row. End-For. 0.InsertEnabled = True. 0.grid_table.ActiveRowCount = 1 Then GetRowset(). "". These settings are in the page field properties of the grid (under the Use tab): This all works really well. End-For. or SavePostChange Here is a snippet of PeopleCode you could use to process the row(s) selected by the user and perform an action: Local Rowset &rs_YOUR_RECORD. .ActiveRowCount &row2 = &rs.GetRow(&r1). Duplicate values are not allowed.record_name_behind_grid). /* Check for data duplicates on a grid. Else GetRowset(). So.ActiveRowCount If &rs_YOUR_RECORD(&i). 20 rows. For &I = &RECCNT To 1 Step .GetRowset(Scroll. A single row selection indicator is a radio button (one option) while a multi-row selection indicator is a check box. there is a Set Component Changed option in the grid properties. then a user will have to click the "-" delete grid button 20 times to delete all rows. End-For.grid_table). For &r = 1 To &rs.GetRowset(Scroll.Value Then MessageBox(0.YOUR_RECORD). when they press save. Local integer &i.record_name_behind_grid. compared to one click on the "Delete all" button. "Error. However. lets say. For &i = 1 to &rs_YOUR_RECORD.ActiveRowCount /*Get grid row*/ &row1 = &rs.Value = &row2. End-If. do something here */End-If. PeopleSoft will recognise this event and fire off any code in SaveEdit. I have place this code on a record field under rowinit event.grid_table.GetRow(1).Peoplesoft Interview Questions Here is a piece of code to prevent duplicate data on a specific field on a page grid.field_name.field_name. If the gird has. /*once we have a row. It is important to point out that users will still have to save the page for the deletion to take place at the database level. This code should be helpful if you are trying to hide a grid column using PeopleCode Stop or Prevent Inserting Grid Rows Via PeopleCode The PeoleCode below will prevent users from inserting more than 2 rows on a grid. The "+" button will disappear the moment a 2nd row is added by a user. if a user selects a row in the grid (single selection radio button). Page | 32 Grid Row Selection Indicator PeopleSoft grids have the option of using a single or multi-row selection indicator. Delete All Grid Rows A very simple yet very useful code to give users the option to delete all grid rows on a page at once. &I) End-For.

]fieldname). [recordname. If &status = "ENR" Then UpdateValue((Scroll. &COLUMN. Page | 33 &RS = GetLevel0()(1).ENROLL_STATUS. Local GridColumn &COLUMN. PSU_STU_ENROLL. Local Grid &GRID.GetRowset(Scroll. PSU_STU_ENROLL. &I. "where Checklist_CD = :1 and EffDt = (Select Max(EffDt) from PS_CHECKLIST_ITEM Where CheckList_CD = :2)". End-If. &I. &RS.ENROLL_STATUS). Now you can use the GridColumn property Visible. the FetchValue and UpdateValue build-in functions can be used. The following example first flushes the hidden work scroll.PSU_STU_ENROLL) &status = FetchValue(Scroll. target_row. or any criteria that you add to the where clause . If COMPLETE_FLAG = "Y" Then &GRID = GetGrid(PAGE.record_name. "GRID1").Select(RECORD.]fieldname) UpdateValue(SCROLL. "CMP"). End-If.Flush(). In order to reference the value of a field within a looping statement. Use the "Select" function to read data from the database tables or views into either a row or rowset object. CHECKLIST_CD).Peoplesoft Interview Questions To hide a column in a grid (using the Grid and GridColumn objects).RESOURCE. You no longer must loop through every row in the grid and hide that field. &RS. and to populate them with dynamic data could be quite challenging. End-For. value) Example: For &I = 1 To ActiveRowCount(Scroll. y y FetchValue(SCROLL. The Visible property will also hide grid columns that are displayed as tabs in the PS Internet Architecture.CHECKLIST_ITEM).record_name.GetColumn("COL5").PSU_STU_ENROLL. CHECKLIST_CD. [recordname.CHECKLIST_ITEM. Grids are used all the time in PeopleSoft.Visible = False. &COLUMN = &GRID. . target_row.PSU_STU_ENROLL. then selects into it based on a field on the page.

OPRCLASS.t_cust_id AND opr. You create and update query access group trees using Query Access Manager.----Select the security record definition (usually a view) in the Query Security Record list box. 3.rowsecclass = dtl. insert one of the three row-level security fields(OPRID. 2. Page | 34 Row-Level (Data Permission) Security Views: 1. opr. by using the ROWSECCLASS field 3.rowsecclass AND cls. Example: create a view which has oprid. by using the OPRCLASS field. Use the record as the search record or query security record. . but not a List Box Item.Peoplesoft Interview Questions Query Security: PeopleSoft Query uses query access group trees to control the access of the tables in the PeopleSoft database. rowsecclass and the parent key field and in sql editor write the following sql: SELECT DISTINCT opr. dtl. 2. Attach the above view to the record in record properties (query security record). ROWSECCLASS) into the record definition. by using the OPRID field. 2. y Configure the field as a Key. Create a view depending on your security need. Query Access Manager).rowsecclass 2.oprid. You can restrict data by: 1. Grant security to that record to which the query security view is attached.rowsecclass. To implement row-level security through a security view: 1. 3. Steps for creating query security record: 1. Using PeopleSoft row-level security views enables you to restrict users from seeing certain rows of data. To apply row level security: Open the record on which you want to apply row-level security. In PIA. 3. Then CLICK ON CREATE NEW TREE. Primary permission list. 4. traverse to query access manager (Oracle PS Tools ->people tools ±> Query Security -.t_cust_id FROM psoprdefn opr. ps_t_sjt_class_dtl dtl WHERE cls. and select the Use tab from the Record Properties dialog box. 4. Row security permission list. You should create query access group trees based on your organization s needs and on any customizations you ve made. In Application Designer. User.t_cust_id = dtl. Click the Properties button. Relationship between row-level security and Query security record definitions: PeopleSoft applications implement row-level security by using a SQL view that joins the data table with an authorization table.ps_t_sjt_class cls. Save the record and build the view.rowsecclass = cls.

Step 7.Peoplesoft Interview Questions Page | 35 5. it will be redirected to the below page where you can create your own access group. then search for that access group in the prompt. If you want create a new access group then enter the access group name and PRESS ENTER. If access group is already present. step 7.1 Then insert the child records to the access group.2 . 7. 6. 6.

Peoplesoft Interview Questions Step 7. 10. NOTE: You should consider adding record definitions to the query trees in a hierarchy that matches the parent/child relationship of records in your database. In access group permissions. assign the tree name and access group. (People Tools -> Security -> Permission & Roles -> Permission list (Select the permission list)). Go to permission list and traverse to query. add the record to which the query security view is attached. 9. 9. . 10. 8.3 Page | 36 8. In query manager.

Fired only when the data value What is the different between RowInit & RowInsert? in the field changes. ‡ Workflow Event is generated. . RECORD. You should use RowInsert PeopleCode for processing specific to the insertion of new rows. Without rectification. save post change updates/inserts data into the records that have not been brought into to component buffer. y SetCursorPos(): Places the focus in a specific field anywhere in the current component. -Not field specific. Not Field Specific. FieldChange Event Used to recalculate page field values. because a RowInit event always fires after the RowInsert event. RECORD. FieldEdit Event Used to validate the contents of the field.target_recname. a source record from which to select rows and an optional SQL string. etc? or How do you retrieve a value from scroll. SaveEdit Event -Triggered when the user attempts to save the component. Both validates data but Field Edit peoplecode is used to validate the data for only that particular field which is changed and Save Edit peoplecode is used to validate all the data changes made Difference between SavePreChanges and SavePostChan. Do not put Peoplecode in RowInsert that already exists in RowInit.level2_recname..target_recname. SavePostChange Event--Triggered after the component processor updates the database. it helps by doing one last check before the save process. In parent/Child relationships. RECORD. RECORD. scrollSelect chooses all corresponding child rows and inserts them under the next higher level row.. What is scroll select. ScrollSelect (2. as the system itself issues a SQL commit statement. SavePreChange Event ‡ Initiated after SaveEdit completes without errors. --Used to validate the consistency of the data. RECORD. and the component processor issues appropriate Insert. ‡ ‡ ‡ Used to update tables ( not in the same component) using the SQLExec built-in Funtions.sel_recname). Never issue a SQL commit or rollback statement manually from within a SQL function. the Component Processor generates a RowInsert event. This occurs during component build processing and row insert processing. ScrollSelect (3. The parameters passed to ScrollSelect vary based on the scroll level at which the function is targeted. RECORD.Peoplesoft Interview Questions People Code:What are the think-time functions? The functions which will suspend processing either until the user have taken some action. The function requires the specification of the target scroll area. SaveEdit and FieldEdit? Field Edit peoplecode is fired when you try to change the value of a field on the page and Save Edit peoplecode is fired when you try to save the page. Final opportunity to manipulate or validate data. It is used for setting the initial state of component controls..level1_recname. RECORD.level1_recname. change the appearance of page controls. saveedit validates data and gives messages or warnings. Level 1 Level 2 L3 ScrollSelect (1.sel_recname). the transaction cannot be saved. to the fields on the page.target_recname. Page | 37 The RowInit event fires the first time the Component Processor encounters a row of data.sel_recname). Update or Delete SQL statements. When the end-user adds a row of data. Avoid Errors and Warnings( causes runtime errors). ‡ Use SaveEdit when a validation involves more than one component field. it is recomended not to give error or warning messages in prechange and postchange events. which will cause your code to be run twice. or a Scroll Select or related function is executed. Scroll select? ScrollSelect function selects records from a table and loads them into the scroll buffer area of a page. RECORD. It also occurs after a Select or SelectAll Rowset method. For example clicking a button in a message box y Standalone Rowsets are like regular Rowsets except they aren't associated with a component or page. When no error/warnings exist then saveprechange fires. RECORD.

To change the properties of the S. AllowEmplIdChg(true). if found it displays. Purpose: Description: Search save is nothing but a save edit. To define the component variables. Description: This event is only associated with components. Description: Search init is valid only on search key fields and Alt search key fields. Not valid for non search key fields.K and A. Application Processor: Application processor searches in database for the search record. When-other Employee Name= NO name . Emplid= %UserId SetSeachDialogBehavior(0). In this case. Update/Display All. To restrict the user to access the data from the database to Component unless knowing the S. it will not execute through out the life time of the application. Example : Component array of array of string &CommentArray. End-if. If Age>25 then MS= Y Else .K values. For example if we enter any value in search key dialog box it(Application Processor) will goes to the database and search for the required value if found it displays the data. Example: If %Page=Component. For Example: We have some code at both Record Level and Component Record level. This event also occurs after a Scroll Select or related function is executed. Break. Description: We can assign default values in 2 ways. /*********************************************/ /* Load the array */ /***************************************************/ &Min = CreateArray( 1 . Gray (EmplId). it will not execute through out the Life time of the application. End-If. End-If. first Record level code is executed first and then Component record level code is executed. Local array of string &Min. Emplid=%EmployeeId. after a prompt list is displayed. Scroll select is the Built-in function useful to retrieve the data form the buffer to the scroll.K fields programmatically. If none (Emplid. Example2: Maritial Status (Field) MS= N Field default (Event) End-if. Break. One is in Application Designer and other is by using PeopleCode Field Default event. Firing: Search init PeopleCode fires before the search record dialog box displays. Application processor brings the records from the database and place at buffer then buffer to the component. It forces the user to enter the values into the dialog box. ). 200 . If the default value is assigned in the Record field properties then the system won t execute the PeopleCode default value. If we write any code on non search key fields. search save event will Fires. Name) then Error ( you can t enter without knowing the key values ). To hide or unhide pages. Search save does not fire when Values are selected from the search list. Purpose: To change the properties of the component and component fields according to the user requirements. Break. To control processing before the user enters values in the search key and alternate search key fields. For this PS gave some Built-in functions like scroll select family. Firing: The Row Select event fires at the beginning of the Component Build process in any of the Update action modes (Update.S.S. Purpose: To filter the data while reading rows from database to component buffer. 300 ). When XYZ Employee name= nani . RowSelect Event Recommendation is don t use this event for writing the code.Peoplesoft Interview Questions SearchInit Event: Purpose: To assign the default values and change the behavior of the search dialog box. SearchSave Event: Firing: After entering all the required values into the dialog box when we click the search button. 100 . PreBuild Event FieldDefault Event: Purpose: To assign the default values to the field programmatically. Search save also Valid only on search key fields and alt search key fields. And %Mode <> A Then End-if. If we write any code on Non search key fields. Firing The PreBuild event fires before the rest of the component build events. IF Not Record Changed (psu_Student_tbl.K or A. Record Level events takes precedence over the Component Record level events. Example: Userid (Field) Field default (Event) ------------------------------------------------------------------------------Evaluate %userid When ABC Employee Name= srinivas . Page | 38 SearchInit Event Emplid (Field) Emplid (Field) Emplid (Field) SearchInit SearchInit SearchInit For example: Emplid= 100 SetSeachDialogBehavior (0).Student_id) Error ( you must enter at least one search value. End-Evaluate.BEN_PROG_PARTCIPN then If COBRA_EVENT_ID>0 Then DiscardRow(). Correction). not valid for non search key fields. The PreBuild event is also used to validate data entered in the search dialog. Means The Record field properties will override the PeopleCode.

Purpose: For writing the user defined functions in the functional libraries. Purpose: To restrict some users to insert new rows into scrolls. so it increase the network traffic and affects the performance of the Application program. RowInit Event: Firing The RowInit event fires the first time the Component Processor encounters a row of data. Purpose: To restrict some users to delete rows from the scrolls. Activate Event: Firing: Activate PeopleCode event fires every time the page is activated. &Ab_Hist_Rs. To hide or unhide pages. FieldEdit Event Firing The FieldEdit event fires on the specific field and row when it changed and the new value of the field satisfies the standard system edits. regardless of whether a field has a value. Description: PS recommendation is don t use the event for writing the PeopleCode. Purpose: In addition to the system edits we can put some more edits to validate the field values. SaveEdit Event: Firing: When we click the save button the Save Edit Event will fire. The PreBuild event is also used to validate data entered in the search dialog. for this we have to write this code in the Field Edit event.124. To recalculating the field values. so we can t enter character values to this field.EMPLID). Example: Component Rowset &Ab_Hist_Rs. */ Page | 39 FieldChange Event Firing: This event occurs when a field is changed.BUSINESS_UNIT. not valid for 0 level records. It is not used for validation. RowInsert Event Firing Row Insert event fires when a new row is inserted into Scroll bar. End-IF. Hide (Dependent Name).PERSONAL_DATA. not valid for 0 level records. RowDelete Event: Firing Row Delete event fires when a user deletes a row of data. For example: suppose that 15 users are having the permission to access the component.NAME) Then Error Emplid & Name should not be left blank . Purpose: To change the properties of the component and component fields according to the user requirements. Purpose: To assign the calculated values to the field by programmatically. . Purpose: RowInit event controls the intial appearance of the fields. unless we rectify the error the cursor won t move to the next. But I don t want to allow all the users to insert the rows. Now we want add some more edits in addition to the system edit like the salary should be >50. Example: If Not ALL(EMPLID. End-If.RETURN_DT. End-IF. Example : IF RecordNew(EMPLID) Then IF None(BUSINESS_UNIT) Then &Bus_Unit=Fetchvalue(OPR_DEF_HR_TBL.000. BUSINESS_UNIT=&Bus_Unit. &Ab_Hist_Rs=CreateRowset(Record. and the FieldEdit event is completed successfully. after a prompt list is displayed. End-if.Fill( Where Emplid=:1 . For example: Suppose that salary is one field and is a numeric value. Useful to validate the data which is available in the Component fields. Draw back is it will execute for each and every user actions (except save) for each and every row in the component buffer. END-IF. Description: Unless the Field edit executes the Field change will not execute. But use the Save Edit event when we want to validate more than one filed. Description: It is valid only if the component is having scrolls (means child records). Description: It is valid only if the component is having scrolls (means child records). So that we can increase the performance of the program.ABSENCE_HIST). End-If. It also occurs when an operator inserts a row (F7). Salary (Field) Field Edit If Salary<50000 then Error ( Minimum salary should be > 50000 ). Purpose: It works same as Field Edit. The program never executes unless there is scrolls. it is possible by writing code under Row insert event. Example: IF %Component=Component. the standard system edits have been passed. Description: This is only the one event for writing PeopleCode for Page object. To change the properties of the other field based on this field. The program never executes unless there is scrolls. /* once we get the error message. Return Date &Time). Description: Use the Field Edit event when we want to validate one field.but just on the new row of data. End-if.1). To define the component variables. I want to allow some users whose permission list is All Panels. Description: This event is only associated with components. PostBuild Event: Firing: The PostBuild event fires after all the other component build events have fired.Peoplesoft Interview Questions FieldFormula Event: Firing: Field Formula fires after Field default completes successfully. this will take care by the system nothing but system edit. Description: Do not use Error or Warning statements in RowInit PeopleCode as it leads to the cancellation of the component.ABSENCE_HISTORY Then IF REG_REGION_COUNTRY= NLD Then ABSENCE_HIST.Label=MsgGetText(6524. Purpose: To change the Properties of the page and page fields. Example: Maritial Status (Field) Field Change (Event) -----------------------------------------------------------If Maritial Staus= N then Hide (Wife Name).

in the form: inexpr_1 [. the bind variables are integers preceded by colons like :1. . End-If. If your SQL statement (or your SQL. /* set the initial value for INIT_VALUES. or record object references.DisplayOnly = True.DisplayOnly = True. Within the string. and outputvars is a list of variables.TELUGU.GR_STUDENT_REC. SQL Functions: SQLExec. record fields.ENGLISH. UPDATE.". bindexprs. GR_STUDENT_REC. Long character fields are represented in PeopleCode as strings ± You should use %TextIn() Meta-SQL to ensure these fields are represented correctly on all database platforms. GR_STUDENT_REC. To make some fields Display only (read only) in a particular page to particular user. . :2. Workflow PeopleCode is not field-specific.sqlname}. Example: If &Count=0 Then SQLEXEC( Update PS_PAYROLL_DATA set company=:1 where EMPLID=:2 .GRADE.AVERAGE. ‡ Use the SQLExec function to execute a SQL command from within a PeopleCode program by passing a SQL command string.Visible = False. GR_STUDENT_DWR. 2. if there are more than one user. you may need to calculate the fields or change the display characteristics.INIT_VALUES). the application processor applies the SavePrechange event. If errors or warnings are received before SavePostChange completes.Visible = False.DisplayOnly = True. ‡ The PS record name specified in the SQL SELECT statement must be in uppercase ‡ SQLExec commands go directly to the database server.SOCIAL.FIELD1. in the form: out_1 [. START_DT.GR_STUDENT_REC. End-If.STUDENT_NAME. .. DEPTID_TO. one for each column selected by the SQL command. not to the Component Processor Bind Variables in SQLExec: ± Bind variables are references within the sqlcmd string to record fields listed in bindvars.sqlname statement) retrieves more than one row of data. . ± The integers need not be in numerical order. &SUM). GetSQL . Description: Under this event we can write the PeopleCode that is only related to workflow. GR_STUDENT_DWR. &REC.GR_STUDENT_REC. Description: The system issues an SQL COMMIT when the SavePostChange event completes successfully. ± Bind variables can be used to refer to long character (longchar) fields. . If IsUserInRole ("TEST ROLE1") Then GR_STUDENT_DWR. ± If you need to SELECT multiple rows of data. .EMPLID). Workflow Event: Firing: Workflow PeopleCode fires immediately after SavePreChange and before the database update that precedes SavePostChange.DisplayOnly = True. . we use this event. one for each :n reference within sqlcmd or the text found in the SQL definition sqlname.DisplayOnly = True. To make some fields Invisible in a particular page to particular user. out_2]. if there are more than one user. DeleteSQL SQLExec: SQLExec({sqlcmd | SQL.FIELD1 */ --CallAppEngine ("MYAPPID". .DisplayOnly = True. &RESULT) SQLExec("Select sum(posted_total_amt) from PS_LEDGER where deptid between :1 and :2". use the CreateSQL or GetSQL functions and the Fetch SQL class method.COMPANY.DisplayOnly = True. it is an application specific means it executes for all fields and on all rows of data available in the component buffer. Example: If PER_STATUS= E Then Assign_Employee_ID(EMPLID).SCIENCE.Peoplesoft Interview Questions SavePrechange Event Firing: After SaveEdit completes successfully. inexpr_2]. GR_STUDENT_REC. Any subsequent rows are discarded. Description: Based on the validated values entered into the component. Example: We are going to use the below function in the Workflow event : TriggerBusinessUnit() Page | 40 SavePostChange Event: Firing: This is the last event before the database is committed. Purpose: To write the PeopleCode for workflow purpose (Office automation purpose). Limitations of SQLExec: ± SQLExec can only Select a single row of data. .TOTAL.Visible = False. CreateSQL.Value = "XYZ". End-If. . Purpose: To update the data not in the component buffer . all updates made to the database are rolled back. Purpose: It provides one last chance to manipulate the data before the database is updated.SQLEXEC function is used to update the database fields. INSERT. If IsUserInRole ("GDHAR") Then GR_STUDENT_REC. ± Bind variables can be passed as parameters to meta-SQL functions Example: SQLExec(". outputvars) where bindexprs is a list of expressions. DEPTID_FROM. SQLExec sends only the first row to its output variables.%datein(:1). End-If.MATHS. Call AE: &REC = CreateRecord (RECORD.HINIDI. ± SQLExec statements that result in a database update (specifically. 3. and DELETE) can only be issued in the following events: SavePreChange WorkFlow SavePostChange FieldChange 1. . &REC).

---Not field specific. SavePreChange Event ‡ ‡ Initiated after SaveEdit completes without errors. --Used to control the appearance of the popup menu.-Now used as FUNCLIB( function library) to store shared functions. .--Sets default values when in ADD mode or a new row is inserted in the scroll area.-. PostBuild Event---Initiated after all other Component Build Events have been initiated. PrePopup Event ---Initiated before the display of the popup menu. Savepostchange will be used to play with tables which are not present in ur component buffer. RowInit Event--Generally used to set the initial state of component controls.---You cannot use Errors or Warnings as they cause runtime error. database will get updated.Peoplesoft Interview Questions SearchInit Event ---This event is fired just before a search. FieldDefault Event Enables to set default values to fields. discarding rows. ‡ ‡ Used to set component variables. Update or Delete SQL statements. Saveprechange is the last event where you can validate and correct ur data before updating the database.Avoid Errors and Warnings( causes runtime errors).--Without rectification.field with code in FieldFormulae on a page. Workflow Event---Immediately after SavePreChange event and before the database updates. FieldEdit Event--Used to validate the contents of the field. ‡ We can set default values for search.----Rarely used. ---Final opportunity to manipulate or validate data. Prebuid can be used to validate your search data.---Every page has its own Activate Event. use search record views and effective dated tables. EMPLID=%employeeId. Triggered when the user attempts to delete a row of data from a page s scroll area. Component Build Events Page | 41 RowSelect Event ‡ ‡ ‡ ‡ It is initiated at the beginning of the component build process in any of the update action modes. ‡ ‡ ‡ Not Field Specific. as the system itself issues a SQL commit statement. ‡ Aids in Page Display and Page Processing. FieldChange Event---Used to recalculate page field values. --Used to prevent deletion of row. ‡ Instead.. change the appearance of page controls ‡ Fired only when the data value in the field changes. RowInsert Event (Do not use a Warning or Error in RowInsert) ‡ ‡ ‡ Triggered when the user adds a new row of data. filling up scrolls.--Used to hide/unhide pages. Triggered when the user attempts to save the component.-. Used when E-mail/Event notification need to be sent to different parties for the transaction being saved. Inefficient to filter out rows of data after they have been selected. ‡ Used to hide or unhide pages. or data-entry dialog box is displayed.Also used to force a user to enter a value in atleast one field.--Does not initiate if run from a CI.--Not field specific. This event is used to filter out rows of data as they are being loaded into the component buffer. ‡ ‡ ‡ DONOT place any record.---Only associated with pages. Also occurs after scroll select. SearchSave Event --Its Executed on all Search Key Fields after the user clicks on search. RowDelete Event SaveEdit Event ‡ Use SaveEdit when a validation involves more than one component field.--Don't write peoplecode in RowInsert that already exists in RowInit. add. Postbuild can be used to play with the pages (hide. and the component processor issues appropriate Insert. unhide).--Use RowInit and FieldChange events instead. ItemSelected Event--Initiated whenever a user selects a menu item from a popup menu.--Not supported for sub-pages. Activate Event---Initiated when page is opened/activated. Must attach it to the field to be populated.. AllowEmplIdChg(true). Triggered after the component processor updates the database. ---Used to validate the consistency of the data. Never issue a SQL commit or rollback statement manually from within a SQL function. ‡ It triggers code in the search key fields of the search record. FieldFormula Event--Not used for programming purpose. SavePostChange Event ‡ ‡ Used to update tables( not in the same component) using the SQLExec built-in Funtions. the transaction cannot be saved.---Used to set component variables. but before the search based on these keys are executed. Workflow Event is generated. Gray(EMPLID). Once it is done. PreBuild Event --Initiated before rest of the component build events.---Used to validate data entered on the search dialog. ‡ It enables us to control processing after search key values are entered.

Using default methods enables you to shorten the previous code to the following: GetRowset(SCROLL.Visible = False. GetRecord. &FIELD = &RECORD.NAME. &ROW = &ROWSET(5). Objects. The following lines of code are equivalent: _______ &FIELD = &RECORD. We can string methods and property values together into one statement If &REC_BASE..formal definition of an object and acts as a template from which an instance of an object is created at runtime.EMPLOYEE_CHECKLIST)(1). For example.) &MyField = GetField({n | FIELD. /*the next two lines of code are equivalent */ &ROW = &ROWSET.recordname).name.. The following example illustrates the long way of enabling the Name field on a second-level scroll area (the code is executing on the first-level scroll area): GetRowset(SCROLL.GetRow(5).JOB. CreateArray.GetField(FIELD.EMPLID).property or class. is evaluated as if it were GetField(JOB. CreateRecord.Name = &REC_RELLANG.IsChanged.Enabled = True.Property = Value . or to determine the state of an object. Object instantiation. is evaluated as if it were &temp = GetRecord(RECORD. there is no data in &REC2.) are converted to a corresponding object. &REC2 = CreateRecord(RECORD.class is the blueprint for something.GetField(FIELD.Visible = False Page | 42 You can return information about an object by returning the value of one of its properties. and so on.. The two specified lines of code are equivalent: They both get the fifth row of the rowset: &ROWSET = GetRowSet(). generally provide access to data that already exists.EMPLID. Enabled = True. The specified record definition must be created previously.GetCurrEffRow(). Local field &MyField Get functions.Value In the following example.GetField(&J). Furthermore. an object is the actual thing that's built using that class (or blueprint.EMPLOYEE_CHECKLIST).EMPLID. which include functions such as CreateObject. but the record does not have to exist in either the component or data buffer: Create functions.IsChanged. Create functions create only a buffer structure. generally create defined objects that do not yet exist in the data buffer. The following example hides the field &MYFIELD: &MYFIELD.ActiveRowCount <> &I Then The format is generally .EMPL_CHKLST_ITM. you must access its properties through dot notation syntax.GetRow(1).EMPLID).Visible = &X is a variable that is assigned the value found in the field &MYFIELD: &X = &MYFIELD.represents a unique instance of a data structure defined by the template provided by its class. whether in the data buffers or from an existing definition.method(). the code JOB. GetRecord (EMPL_CHKLST_ITM).GetField(&R).fieldname}). The above example creates a standalone record. ______ Expressions of the form class. Object. In the following example.NAME).Object. They do not populate it with data To set or get characteristics of an object. The GetCurrEffRow method returns a row object: &MYROW = &MYROWSET. However. a property is used as the test for a condition: If &ROWSET. which include functions such as GetField. the code &temp = RECORD.Name Then Other methods return a reference to an object.Peoplesoft Interview Questions Key areas: y y y Classes.JOB).method(. .

Component buffers get loaded while opening a component. which is not an object type. ‡ ‡ Component buffer is the area in memory that stores data for the currently active component. &NUM is of data type Number. related display records. you won't change the element in the array. the function works on the actual object. 4. End-For. &RS = GetLevel0(). &A1 = CreateArray(2. only on pressing save button the database is updated. including primary scroll records.Recordcount &REC = &ROWSET. Function Process_RowSet(& ROWSET as Rowset). &REC. Local Array of Number &A1. 6. Process_RowSet(& RS). 8. ‡ ‡ Whenever changes are made to the data on the component page the data on the component buffer also changes but the database is not affected. Local Record &REC. End-For. not on a copy of the object. The component buffer is structured and the contents of the data buffer are loaded using Depth-first algorithm. and Translate table records. &A2. The component buffer consists of rows of buffer fields that hold data for the records associated with page controls. &A1 = CreateArray(2.Peoplesoft Interview Questions Local Array of Number &A1.Rowcount For &J = 1 To &ROWSET. 10). If the next statement is &A2[5] = 12. ‡ The buffer starts at level 0 and drills down to lower levels row by row in a parent to child manner. &A2 = &A1. 6. 8. If you later change the value of &NUM in the program. . If a function is passed an object. &NUM = &A1[3].GetRow(&I). then &A1[5] also equals 12. Four Data Buffer Classes: Rowset Row Record Field.Update(). as shown in the following diagram: Page | 43 The following example is not considered an object assignment: Local number &NUM. 10). For &I = 1 To &ROWSET. End-Function. ---------Local Rowset &RS.GetRecord(& J). 4. derived/work records.

Item Selected Processing. title. The difference between the variable declarations concerns their life spans: ‡ Global: The variable is valid for the entire session. ‡ Blue Rectangles Represent actions taken by the system. start_pos. Component Buffer Functions.Pop-up Menu Display. None. PeopleSoft . ‡ Dark rohmboids represent branches (decision points) in the logic.3) Len: Len(string) Eg Len ( PeopleSoft ) will set length to 10. 3. Also allows the messages to be reused. . Performs additional processing.Push Button. ‡ Light ellipses are subprocesses.Prompts. default_msg_txt[. ‡ Dark ellipses represent peoplecode events. soft ]) Ltrim: Ltrim(source_str[. GetRowset(Rowset_name). MsgGet Function: Syntax: MsgGet(message_set. GetField(Fieldname) Logical Functions: All(fieldlist).Peoplesoft Interview Questions Page | 44 They are divided into the following types: ‡ ‡ Message Catalog Functions. People ]) Find: Find(string.) Eg Find ( e . trim_str]) Eg Rtrim ( Peoplesoft [. within_string [. ActiveRowCount . [. AllOrNone . Logical Functions Date and Time Functions. The Component Processor then: Performs search processing. message_num. Rtrim: Rtrim(source_str[. message_num. PeopleSoft .Field Modification. The Component Processor s flow of execution begins when a user selects a component from a PeopleSoft menu. default_txt [. GetRecord(Recname). trim_str]) Eg Ltrim ( PeopleSoft . Row Insert Processing. message_num. message_set. number]) Eg Find ( e . OnlyOneOrNone String Functions: Substring: Substring( source_str. paramlist]) MsgGetText(message_set. Retrieves the data reqd to build the component from the database. ‡ Local: The variable is valid for the duration of the PeopleCode program or function in which the variable is defined. Number Functions---Security Functions. paramlist]) MessageBox: MsgGetText: Syntax: MessageBox(style.Displays the component and waits for user action. String Functions. default_txt [.4). length) Eg Substring( PeopleSoft . OnlyOne . paramlist]) Component Buffer Functions:Getlevel0().Save Processing. Internet Functions Message Catalog: One central place to store all messages. ‡ Component: The variable is valid while any page in the component in which the variable is defined stays active.Row Delete Processing.

Peoplesoft Interview Questions Page | 45 .

Statements. Built-in Functions Classes Exception Handling Debugging Functions.Peoplesoft Interview Questions Page | 46 Learning PeopleCode Language       Events & Execution Flow PeopleCode Concepts: Data types. Expressions. . Operators.

and Else ± Evaluate ± For ‡ if Statement: syntax: else if <condition> stmt1.TIME./. Conventional Data Types There are many data types available and the most commonly used data types are : ‡ Any : Undeclared local variables are Any by default.Logic for Compensation Change ----.DATE. Number. end-for. Integer. Float. Ex: /* ----.> logical -> NOT. .DATETIME. Syntax: <scope> <type> &<variable_name> warning( <message> ).ANY Scope Local Variables Global Variables Component Variables Other Variables System Variables Derived/Work Fields Naming Rules must begin with & and max length 18 characters including & Declarations always on top .OR Note:. Ex: REM This is an example of commenting PeopleCode. Record. Warning Statements Syntax: peoplecode variables: Types NUMBER. ‡ break statement: syntax: break. Date. stmt2. stmt2.-.AND. Next row is based on prior value of EFFDT.*/ /* Recalculate compensation change for next row. Branching Statements:  Branching statements control program flow based on evaluation of conditional expressions. Object data types. ‡ Boolean. ‡ for for <&variable> = <start-value> to <end-value> [Step stepvalue>] stmt1. break. End-Evaluate. ‡ repeat-until repeat stmt1. end-while.PeopleCode applied NOT operator first .<>. Array. Conventional data types.**. Then. Looping Statements loop type syntax ‡ while while <condition> stmt1. Can have only comments above it. Grid. until <condition>. ± If. Error Statements Syntax : Error( <message> ). Time.<.>=. DateTime. Object.Peoplesoft Interview Questions Data Types 1. Put a semicolon at the end of a REM comment.| comparison -> =. */  Rem or Remark ± You can also use a REM (remark) statement for commenting. File. end-if. Operators: mathematical -> +.*. break.then ANDs . stmt2. String.<=. stmt2. Page | 47 ± Note: If you do not. everything up to the end of the next statement is treated as part of the comment. Row. ‡ Evaluate Statement Evaluate <field or variable> when = <value1> stmt1. when-other stmt3.*/ ± You can surround comments with /* at the beginning and */ at the end. when = <value2> stmt2.break. Object based data types are : Field. 2. Page. You can use parenthesis to explicitly define the order of precedence.and the ORs.!=. SQL PeopleCode Comments:  /* Statement .STRING. Rowset.

RowInit .num_days) y String Functions :Used to manipulate character Strings. Syntax for defining or writing a function Function should be defined in the beginning of the code in FieldFormula event.  External-Non-PC: These are routines or functions written in other language like C and loaded from a DLL (Dynamic Link Librabies).Peoplesoft Interview Questions Scope of Variables Local Variables: existence limited to current PC program runtime assignment. Stored as Function Libraries( derived/work records) named with prefix FUNCLIB_ convention and defined in the FieldFormula Event. return <expression>.Example: None(). ± In SaveEdit. Example: ScrollSelect().BEGIN_DT) < (DURATION_DAYS * 8 + DURATION_HOURS) then Warning ( "Duration of absence exceeds standard hours for number of days absent. BEGIN_DT) and 8 * (RETURN_DT .Built-in Functions User defined functions  Internal PC: PeopleCode functions contained within the same program where they are used. Component Variables: exist for the duration of the current PS component. ± Warnings in Other Events: Do not use the Warning function in any of the remaining events. OnlyOne(). . -They are usually display only fields on a page or have them as invisible fields on the page.abs()..SavePostChange Message Catalog and Message Display  Warning Syntax: Warning str ± The primary use of Warning is in Field Edit and SaveEdit PeopleCode.").Unhide().  External PC: PeopleCode functions contained in a different program from where they are used... AddToDate(date.SavePostChange Warning  Example If All(RETURN_DT.FieldChange -Prepopup .%Menu etc..%Panel.) stmt1. OnlyoneorNone() ‡ Date & Time Functions:Used to calculate and manipulate dates.RowInit -FieldChange .. We can have only comments lines preceding the function definition. Declare Function <function_name> PeopleCode <Record_name. --Error is also used in RowDelete and RowSelect PeopleCode events. Substring(Source str. In FieldEdit.<param2>.. All() . which displays a warning message. Function <function_name> (<param1. End-if.RowInsert --SavePreChange . It is distinct from Warning. Warning displays a message. which include: ± FieldDefault . ActiveRowCount() .%Time. -Begin with %.num_years.. Warning displays a message and highlights the relevant field. ± Errors in Other Events : Do not use the Error function in any of the remaining events.Min() ‡ Security Functions: Used for security purpose..etc..num_months.Max().-Hide(). y Logical Functions:Used to check if values exist for a field.FieldFormula ‡ Component Buffer Functions:Used to manipulate scroll bar records rather than the entire component s data. TotalRowcount(). AllorNone() . You can move the cursor to a specific field using the SetCursorPos function. Defined by the statement Declare. stmt2. Library .RowInsert ± SavePreChange .. -Existence limited to the current component.. End-Function. System Variables -internally maintained and can be referred by the peoplecode any time.Ungray() Message Catalog and Message Display: Error MessageBox MsgGet MsgGetText MsgGetExplainText Warning WinMessage Message Catalog and Message Display  Error Syntax: Error st ‡ ‡ ± Use the Error function in FieldEdit or SaveEdit PeopleCode to stop processing and display an error message. but does not stop processing. Syntax for Declaring a Function ‡ This should be the first statement in the event where an external function is used.start_pos.Gray(). Ex: %Date. Global Variables: exist for the complete session and are used to transfer values between panel groups. Used to transfer values between programs on the same component. Derived/Work Fields -used when we need to pass values from one program to another without the field values being stored in the database. which include: Page | 48 ± FieldDefault .FieldName>.length) ‡ Math Functions:Used to perform mathematical calculationsSine(). Also called chameleon variables as they can be assigned values of any date type within the program. but does not highlight any field. Functions: User defined functions.

Example: The All function is commonly used in SaveEdit PeopleCode to ensure that a group of related fields are all entered. It returns False if any one of the fields contains a value. 4. 2.SavePostChange. None. or a zero (0) numeric value in a required numeric field is considered a null value. The All function returns True if all of the specified fields have a value.]fieldname1 [.SavePreChange. it returns False if any one of the fields does not contain a value.]fieldname2] . BEGIN_DT) and 8 * (RETURN_DT ."). OnlyOneOrNone All : All(fieldlist) Where fieldlist is an arbitrary-length list of field names in the form: [recordname. style] [. in the form: param1 [. [recordname.767 can be used by PeopleSoft users Example &MsgText = MsgGet(30000.").]fieldname1 [. paramlist]) where paramlist is an arbitrary-length list of parameters of undetermined (Any) data type to be substituted in the resulting text string.000 through 32. A blank character field. STATE) Then WinMessage("Address should consist of at least Street (Line 1). City. For example. AllOrNone: AllOrNone(fieldlist) Where fieldlist is an arbitrary-length list of field references in the form: [recordname. message_num.."). None : None(fieldlist) Description: None returns True if none of the specified fields contain a value. ‡ Returns a Boolean value: True if all of the fields in fieldlist or none of the fields in fieldlist has a value. False otherwise. or a zero numeric value in a required numeric field is considered a Null value. ‡ The AllOrNone function takes a list of fields and returns True if either of these conditions is true: All of the fields have values OR None of the fields has a value. "Message not found").]fieldname2] . 1). Example :You could use AllOrNone as follows: If Not AllOrNone(STREET1. title])  WinMessage ± The WinMessage function is supported for compatibility with previous releases of PeopleTools. param_two) Then value_a = "y". Example: You typically use OnlyOne as follows: If OnlyOne(param_one... ± Use the WinMessage function to display a message in a message box. OnlyOne returns False. Workflow. MsgGet Syntax: MsgGet(message_set. "Message not found. --If None(&ONETIME) Then /* do processing */ End-if. CITY. End-if. Example &RESULT = WinMessage(MsgGetText(30000. . or if more than one of the fields has a value. OnlyOneOrNone Syntax: OnlyOneOrNone (fieldlist) Where fieldlist is an arbitrary-length list of field names in the form: [recordname. . WinExec . Example: The following example uses None to check whether REFERRAL_SOURCE has a value: If None(REFERRAL_SOURCE) or REFERRAL_SOURCE = "EE" Then Gray(EMP_REFERRAL_ID). "Test Application"). example: If All(RETURN_DT. Message sets 20. which means that it can t be used in any of the following PeopleCode events: SavePreChange. ± Message sets 1 through 19.BEGIN_DT) (DURATION_DAYS * 8 + DURATION_HOURS) Then Warning MsgGet(1000. The following example uses None with a variable: &ONETIME = FetchValue(POSN_INCUMB_WS. ± Use the OnlyOneOrNone function to check a list of fields and return True if either of these conditions is true: Page | 49  Only one of the fields has a value (OR) None of the fields has a value Exec. where parameter has one of the following formats: --Boolean constant --Exec_Constant + Path_Constant ± Exec is a cross-platform function that executes an external program on either UNIX or Windows ± When Exec is used to execute a program synchronously (that is.]fieldname1 [. Returns: Returns a Boolean value based on the values in fieldlist. OnlyOne : OnlyOne(fieldlist) Description: Use the OnlyOne function to check a list of fields and return True if one and only one of the fields has a value. End-if.. OnlyOne . param2] ± Use the MsgGet function to retrieve a message from the PeopleCode Message Catalog and substitutes in the values of the parameters into the text message. if its synch_exec parameter is set to True) it behaves as a think-time function.EMPLID. SavePostChange.999 are reserved for use by PeopleSoft applications. Mailing Functions: Sendmail Executable Files Functions: Executable Files Functions: Exec Syntax: Exec(command_str [. AllOrNone. RowSelect. State.Peoplesoft Interview Questions Message Catalog and Message Display Syntax: WinMessage(message [. parameter]) . [recordname. Logical All. [recordname. A blank character field.. default_msg_txt [. if field1 = 5.. and field3 = null.]fieldname2] . If all of the fields are empty. End-if. End-if. RowSelect. and Country. 1. ± Winmessage cannot be used in the following PeopleCode events: . "Duration of absence exceeds standard hours for number of days absent.. New applications should use MessageBox instead. This function is used to validate that only one of a set of mutually exclusive fields has been given a value. field2 = "Mary". AllOrNone returns False. 1.

. Createarray( &temp) 2. &MYARRAY[3] = 300. &RESULT) SQLExec("Select sum(posted_total_amt) from PS_LEDGER where deptid between :1 and :2". Bind variables can be used to refer to long character (longchar) fields.WorkFlow .fieldname]) . ‡ ‡ ‡ ± ± ± ± Use the SQLExec function to execute a SQL command from within a PeopleCode program by passing a SQL command string. SQLExec sends only the first row to its output variables.sqlname statement) retrieves more than one row of data. Limitations of SQLExec ± ± SQLExec can only Select a single row of data. SQL Class. File. Local Number &MYNUM. Built-In functions.SavePostChange . GridColumn . seperator) 4. POP ( ) : Use the POP method to select and remove an element from the end of an array Local Array of Number &MYARRAY. ---The integers need not be in numerical order. 4. . &MYARRAY. If your SQL statement (or your SQL.". Within the string.Peoplesoft Interview Questions SQL Functions: SQLExec.Unshift(100). START_DT. Use array class properties Declaration: Local Array of Number &MYARRAY. in the form: inexpr_1 [. Push ( ) : Use the Push method to add items to the end of the array.Push(100). Declare array objects. Properties OO Data Types: There are many Object based data types but the most used are the following: ‡ Field. /* this creates an empty array of number */ &MYARRAY. Createarrayrept(&temp . &MYARRAY[1] = 100.sqlname}.0). Methods . 0). &MYARRAY. Row . Field Class: Declaration : Local field &Myfield. &MYARRAY[2] = 200. &ANSWER equals 100. Bind variables can be passed as parameters to meta-SQL functions Page | 50 Bind Variables in SQLExec: Example: SQLExec(". . INSERT. Create and populate multi-dimensional arrays. Page Class. outputvars) where bindexprs is a list of expressions. in the form: out_1 [. Use array class built-in functions. DEPTID_TO. bindexprs. Object . &SUM). Chart . not to the Component Processor Bind variables are references within the sqlcmd string to record fields listed in bindvars. one for each :n reference within sqlcmd or the text found in the SQL definition sqlname. Chart Class. . Unshift ( ) : Use the Unshift method to add items to the beginning of the array: Local Array of Number &MYARRAY. RowSet Class.. :2. record fields. Create empty arrays. &ANSWER = &MYARRAY. Understand the scope of an array object. out_2]. 2. Remove items from an array. Classes:Array Class. Scope of the Variable . . . RowSet . SQL Variable Declaration: Declaration : Syn : Local / Global / Component datatype &Instance Ex : Local record &rec.Unshift(200). Use array class methods. &MYARRAY = CreateArrayRept(&MYNUM. .Shift(). Grid . UPDATE. CreateSQL. &MYARRAY = CreateArrayRept(&MYNUM.%datein(:1). &ANSWER will equal 300. 3. inexpr_2]. &MYARRAY = CreateArray().. DeleteSQL SQLExec: SQLExec({sqlcmd | SQL. &ANSWER = &MYARRAY. and outputvars is a list of variables. Local Number &MYNUM. Ex : Local Array of Number &MYARRAY.Push(300). DEPTID_FROM. The PeopleSoft record name specified in the SQL SELECT statement must be in uppercase SQLExec commands go directly to the database server. &MYARRAY[2] = 200. Two Dimensional Array Local Array of Array of Number &MYARRAY. /* this creates an empty array of number */ &MYARRAY. SQLExec statements that result in a database update (specifically.FieldChange ± PeopleCode Classes & Objects: Declarations. Built-In Functions : 1. &MYARRAY = CreateArray(). GetSQL . Populate an array. the bind variables are integers preceded by colons like :1. and DELETE) can only be issued in the following events: SavePreChange. or record object references.Any subsequent rows are discarded. CreateArrayAny from 8. Long character fields are represented in PeopleCode as strings You should use %TextIn() Meta-SQL to ensure these fields are represented correctly on all database platforms.Push(200).Pop(). . &MYARRAY. &MYARRAY[3] = 300. Record. Split(string . If you need to SELECT multiple rows of data. .4 onwards Methods : 1. Field Class. use the CreateSQL or GetSQL functions and the Fetch SQL class method. Grid Class. Local Array &ARRAYANY. File Class Array Class: This chapter provides an overview of arrays and discusses how to: Create arrays. Row Class. &MYARRAY. Record Class. . size) 3.Unshift(300). one for each column selected by the SQL command. &MYARRAY[1] = 100. SHIFT method to select and remove an element from the beginning of an array Local Array of Number &MYARRAY. Built-In function : Getfield Syntax : GetField ([recname.

&REC.DisplayFormat = "UNFORMATTED". from the row containing the currently executing program. it must have a record definition.Value = "X". DisplayFormat : Ex : If %Component = PAGE.MYRECORD).IsChanged Then Warning ("The character field has been changed").Value = "A".Value = "X".Value = "B".recname. Ex : &Rec.Delete(). GetRelated Syntax : GetRelated(recname.MYRECORD).CopyFieldsTo(&FLAGS). End-if. .KEYF2.KEYF1.Insert(). Update ( ) : Local record &REC.&REC.DisplayFormat = "STANDARD". IsChanged : This property returns True if the value for the field has been changed.pagename | %Page) 5. &Myfield = GetField(dept_tbl.CompareFields(&REC) Then WinMessage("All liked named fields have the same value"). Record Properties : 1.Value = "X". GetRecord Syntax : GetRecord([RECORD. If &FIELD. Else &CHAR. You can also have a level zero rowset. Ex : &FLAGS = CreateRecord(RECORD. End-If. If All(&INFO) Then &FLAGS. Insert( ): Local record &REC.Update().MYRF4.deptid). The specified record must have been defined previously.MYRECORD).Value = "A". End-If.KEYF1.OPC_METH).Value = "Y".OP_METH_VW). &INFO = GetRecord(@("RECORD. DisplayOnly 8. 6.&REC.IsChanged Then Warning("This Record has been changed"). 3.KEYF1.MYRF3. &REC = CreateRecord(RECORD. instantiated from a Rowset class.&REC. Example : If &CHARACTER.INTERNATIONAL &CHAR. Record Class Declaration : Local Record &rec.KEYF1 = "A". &CHARACTER. End-If. 5.recname). &REC. converted to an appropriate PeopleCode data type. Example :&CHARACTER.Value = "A". True if all like-named fields have the same value. Example: &REC = GetRecord(RECORD.Enabled = False.DR_LINE_FLG_SBR). &REC = CreateRecord(RECORD. the record does not have to be included on the current page. that is.Value.MYRECORD).KEYF2 = "X". Methods : 1.Value = Y".Value = "B".MYRF4. 7. or &REC = GetRow(). CreateRecord( ) CreateRecord ( ) Syntax : CreateRecord(RECORD.recname) Description : CreateRecord creates a free standing record definition and its component set of field objects.GetField(&I). &REC.KEYF2. End-If. 2. Declaration : Local Rowset &rs. GetLongLabel Syntax : GetLongLabel(LabelID) 2.Peoplesoft Interview Questions Example: Local Field &Myfield. SetDefault() Description : SetDefault sets the value of every field in the record to a null value." | &NAME)). FieldCount : This property returns the total number of fields contained in the record. 10.Enabled = True.MYRF3. that is.&REC.&REC. This property is read-only. GetShortLabel Syntax : GetShortLabel(LabelID) 4.&REC. 11. Enabled : This property is read-write. &REC2 = GetRecord(RECORD. A component scroll is a rowset. &REC. Ex : If &REC. SetDefault Syntax : SetDefault( ) Properties : 6. Getrecord ( ) 2.SetDefault(). &REC. Built-In Functions : 1. Page | 51 Rowset Class: A rowset object. End-For. 12.&REC.recname]) Description : GetRecord creates a reference to a record object for the current context. 4. Value : This property contains the current value of the field. This value is a number. Delete( ) : Ex : Local record &REC. &REC.SelectByKey().CopyFieldsTo(&INFO). CompareFields Syntax : CompareFields(recordobject) Returns A Boolean value. &REC = CreateRecord(RECORD. &REC = CreateRecord(RECORD.fieldname) 3. 2. Methods 1.FieldCount &FIELD = &REC. However. IsInBuf : Ex : For &I = 1 to &REC. &REC. 9. if you are calling this function from PeopleCode associated with a page. SelectByKey( ): Local record &REC.GetRecord(Record. The following code: &REC = GetRecord(). is a collection of rows associated with buffer data. is equivalent to: &REC = GetRow().KEYF2.IsInBuf Then &VALUE = &FIELD. End-If. &REC. &REC. FieldLength : This property returns the length of the field as a number. IsChanged : This property returns True if any field value on the primary database record of the row has been changed. If &REC2. SetCursorPos Syntax : SetCursorPos(PAGE. &REC.

Value = "C" Then &L2. If &f. that is. that is the row containing the currently executing program. File class built-in functions. &F2.File layout error processing. The following code: Local Rowset &RS1.GetRow(&J). &flg.Multiple file layouts Data Type of a File Object : Local File &MYFILE.File layout examples. /* Current Row number at level 1 */ If K_PROJ_TASK_TBL. Find.File class properties.Flush(). or FillAppend methods. If your data is hierarchical in nature.ActiveRowCount /* For all Zero Level rows */ &L1 = &l0. mode [. writing. "R"). &penddt).PROJTASK_RESTBL). PeopleTools supports reading and writing to plain text files. but is not tied to any data (that is. that is.Select(Record. rowset. RS1 is a level 1 rowset.Peoplesoft Interview Questions Built-In Functions : 1. GetRowset() Syntax : GetRowset([RECORD.HideAllRows(). &l0 = GetLevel0(). /* Hide the second level scroll */ Else &L2. If you don't specify pathtype the default is %FilePath_Relative.File class methods. they do not contain any data. &RS2. charset] [. or based on existing PeopleSoft records or pages.ShowAllRows().GetRow(CurrentRowNumber()). /*Procedure oriented code */ &J = CurrentRowNumber(1). End-function. &J. Getlevel0( ) CreateRowset ( ) Syntax : CreateRowset(RECORD. Any records and field references created by this function are initialized to null values. These text strings can be manipulated with built-in string functions. This simplifies reading. &K.K_PROJ_TASK_TBL.recname]) Description : GetRowset creates a reference to a rowset object for the current context.K_PROJ_TASK_TBL). A standalone rowset is a rowset that has the specified structure.GetField (Field. y If the file is a plain text file. /* Zero Level */ For &J = 1 To &l0. pathtype]) -pathtype : %FilePath_Relative (default) . Built-In Function : GetRow ( ) Use the GetRow function to obtain a row object for the current context.GetRecord(Record. */ Function DISPLAY_RECONCILE_DATA(&emplid As string. &L2. %FilePath_Absoulte . &F2. the currently executing program. &flg As string) /* Create the Row Set for Level 1 (Grid) */ &rsSummary = GetLevel0()(1). &J. GetRow() function is equivalent to: &ROW = GetRowset().PROJTASK_RESTBL).PROJTASK_RESTBL). y If the file is based on a File Layout. Note.txt".Plain text files. If a rowset object is instantiated using the CreateRowset function. Record.K_SUBCN_RECON). End-For. You can populate this rowset object using the CopyTo. File Class File Class : topics: y File object declaration . data is read or written using text strings. &L1. the rowset object that s instantiated is a standalone rowset. */ Built-in Function : Syntax : GetFile(filename. you can use text strings. /* Flush The Grid */ /* To select the rows and populates these rows in Grid */ &rows = &rsSummary.recname) Description : CreateRowset creates a non-populated standalone rowset . and to files that have a format based on a File Layout that has been created in PS Application Designer.GetRowset(Scroll. &J. &F1 = GetFile("somefile. and RS2 is a child rowset of RS1. and manipulating hierarchical transaction data with PeopleCode.EMPL_CHKLST_ITM). /*create rowset for first level */ /* Indicates first level record field */ &f = &L1.) In addition.K_PROJ_TASK_TBL. Local number &i. to the component buffer or to a message. /*Object oriented code */ Local Rowset &l0. Plain Text Files:To read and write from plain text files involves reading and writing strings of data. End-For. For &K = 1 To &L1.K_SUBCN_RECON.GetRow(&K). &RS2 = GetRowset(SCROLL.ActiveRowCount /* For First Level Rowset Rows */ /* Create the Row set for second level */ &L2 = &L1.Close(). Fill. /* Unhide the Second Level Scroll */ End-If. &rsSummary. rather than doing it line by line (or field by field.Automatic PeopleCode generation. /* Unhide the Second Level Scroll */ End-If. &penddt As date. &RS1 = GetRowset().GetRowset(Scroll. &bugl As string. from the rowset containing In the following example.K_PROJ_TASK_TBL). or record objects. Scope of a file object y File layout . File security considerations File access interruption recovery. Scope :Local File &F1. CreateRowset( ) 3. a standalone rowset isn t tied to the Component Processor. If a rowset object is instantiated using GetRowset (either the function or one of the methods) the rowset object that is instantiated is populated with data according to the context in which it was instantiated Page | 52 Row Class Declaration : local Row &Myrow.GetRow(&J).K_H_TASK_STATUS). &emplid. like RTrim. &F2 = &F1. use a File Layout definition for reading and writing your data. and so on. /* Hide the Second Level Scroll */ Else UnhideScroll(Scroll.) . Local Field &f.K_H_TASK_STATUS = "C" Then HideScroll(Record. Replace. &bugl. GetRowset ( ) 2. /* Now &F1 is also closed. "where emplid like :1 and business_unit_gl like :2 and k_recon_status like :3 and period_end_dt = :4". Record.GetRowset(Scroll.

/* Open each file */ /* Process the file contents */ &MYFILE. 0). While &MYFILE. which includes a system end of line character at the end of every line. &MYARRAY = CreateArrayRept(""."Y".Push("").Open("numbers.Fetch(&LN) &MYFILE.Close().VOL_TEST) Then &LN = CreateRecord(RECORD. The second file is not opened using GetFile. one into each "column" of the array. FindFiles Syntax: FindFiles(filespec_pattern [. It writes the contents of the record object record.txt". &MYFILE2 = GetFile("numbers.Description : The WriteLine method writes one string of text. %FilePath_Absolute) Then &MYFILE = GetFile("c:\work\item. /* do processing with array */ /* write data back to files */ &MYFILE1 = GetFile("names.txt"."14". "N". &MYFILE. Close Syntax : Close() Ex : &MYFILE. charset] [. End-If. EX : MYFILE.Len &BOTH[&LINENO]. 7. until it reaches the end of the file. %FilePath_Absolute). "R"). The end of the program writes the changes back to the files. /* loop through array and write to files */ For &I = 1 To &BOTH.Open("C:\temp\item*. use a null name */ &BOTH. "A"). 2. Local file &MYFILE. Page | 53 While &SQL2. Local File &MYFILE. "A").Close()."". &FNAMES = FindFiles("\*.Peoplesoft Interview Questions The following example creates an array of array of string. /* Read first file into first column */ &MYFILE = GetFile("names.Shift().WriteLine("This is the last line in the file. &MYFILE. Open Syntax Open(filespec."09/26/1981". Built-in Functions: FileExists GetFile FindFiles FileExists Syntax: FileExists(filename [. End-For.txt". WriteLine : Syntax : WriteLine(string). &MYFILE = GetFile("record. &MYFILE. "A"). &LINENO = &LINENO + 1. mode [.txt". ReadRecord : Ex : "8001". mode [. pathtype]) Description : The Open method associates the file object with an external file for input or output. If &MYFILE. pathtype]) Ex: The following example opens a file for appending if it exists on the system: If FileExists("c:\work\item. 0).txt". pathtype]) GetFile: File Class Methods 1. &MYFILE."VAC". but rather with Open.Len > 0 &MYFILE = GetFile(&FNAMES. &MYARRAY.writeline(&STRING1).Close(). /* read second file into second column */ &MYFILE. &MYFILE1.Len &STRING1 = &BOTH[&I][1]. "R").SetFileLayout(FILELAYOUT. Example: The following example appends all the data in a record to an existing file: Local File &MYFILE.txt". "W".Push(CreateArray("". "R").VOLNTER_ORG_TBL). add null numbers */ For &LINENO = &LINENO to &BOTH. Local string &HOLDER. &MYFILE1.ReadLine(&HOLDER).ReadLine(&HOLDER). End-For.ReadLine(&TEXT). /* if more names than numbers. "A").Open("somefile. While &MYFILE.").IsOpen Then If &MYFILE.Push(&HOLDER)."09/12/1981". using the WriteLine method. &LN). string. &SQL2 = CreateSQL("%Selectall(:1)". the Numbers file contains employee numbers. &LINENO = 1. Example : The following example reads a file called &MYFILE and puts each line as a separate element in an array.txt".Close(). end-while."" .Push(&HOLDER). to the output file Ex : &MYFILE.writeline(&STRING2). then reads in two files. WriteRecord Syntax : WriteRecord(record) Description: The WriteRecord method is a file layout method.txt".txt".Push(&TEXT). Else /* do error processing filelayout not correct */ End-If. &MYFILE. Local array of array of string &BOTH.Close().Len Then /* more number lines than names. Local array of string &MYARRAY. &STRING2 = &BOTH[&I][2]. while &FNAMES."P". End-While. to the output file. "R").Open("somefile. pathtype]) Ex : Local array of string &FNAMES. If &MYFILE.txt". you can do processing on the data."). The Names file contains names. /* Create empty &BOTH array */ &BOTH = CreateArrayRept(CreateArrayRept("". &MYFILE2. /* Process the file */ &MYFILE. Syntax: GetFile(filename. Else &BOTH[&LINENO]. &HOLDER)). charset] [.WriteLine("Some text. 5. The ReadLine method reads each successive line in a file. End-If. &MYFILE.txt". End-While. End-While. &MYFILE.Close(). 0)."0". &MYFILE. &BOTH.Close().IsOpen Then &MYFILE. Local File &MYFILE. %FilePath_Relative). 4. Else /* do error processing file not open */ End-If. If &LINENO > &BOTH."). End-While. &MYFILE2.Close(). Notice that the first file is opened using GetFile. &MYFILE = GetFile("names. Local string &TEXT.WriteLine("Some text.WriteRecord(&LN).txt").Close().Close(). While &MYFILE. Readline : Syntax : ReadLine(string) Description : The ReadLine method reads one line of text from the external file. 3. End-If. After the data is read into the array. "A").

"". SavePreChange. 1998: &SQLSTR = FetchSQL(SQL."Y". &REC = CreateRecord(RECORD.ABCD_XY. y Scope : An SQL object can be instantiated only from PeopleCode."02/02/1995".]sqlname[."" To read in the previous CSV file we use the following PeopleCode."13"."P"."03/02/1983". To insert the final data into the database. ""."". RECORD. 4. 1998: &RSLT = DeleteSQL(SQL. First each line of the file is read into a string. Example: The following code gets the text associated with the ABCD_XY SQL Definition for the current DBType and as of date: &SQLSTR = FetchSQL(SQL. FetchSQL Syntax : FetchSQL([SQL.IsOpen Then If &MYFILE. This code could also be used as part of an Application Engine program. GetSql 4. Local Record &REC. with the value of each field in the array becoming an element in the array.."??/??/".ABSENCE_HIST. For &I = 1 To &REC."VAC". If sqlname is a literal name."N"."). GetSQL : Syntax : GetSQL(SQL."0". bound. "R". The value of each field in the record is assigned a value from the array. that is."VAC".sqlname [. Page | 54 SQL Class:This chapter provides an overview of the SQL class and discusses the following topics: Declaring a SQL object Scope of a SQL object SQL class built-in functions SQL class methods SQL class properties y Declaration : SQL objects are declared as type SQL. 0). 2. CreateSql : CreateSQL([sqlstring [. inval2] . &SQL = CreateSQL("%SelectAll(:1) where EMPLID = :2"."03/07/1983". Else /* do error processing filelayout not correct */ End-If. sqlstring is a PeopleCode string value giving the SQL statement. The string is split into an array.Value = &ARRAY[&I]."". Local File &MYFILE.ABCD_XY.Insert(). Else /* do error processing file not open */ End-If. and so on) the record can be inserted into the database. Date(19981103)). DeleteSql 3. CreateSql 2.Peoplesoft Interview Questions "8001". This SQL object should be used in a series of Execute method calls:&SQL = CreateSQL("Delete from %Table(:1) where EMPLID =:2"). If &MYFILE.ABS_HIST_TEST). This SQL object has been opened.FieldCount &REC."P". End-For. &MYFILE."0". matching the dbtype and effdt. %FilePath_Absolute)."08/26/1983". WorkFlow. DeleteSQL : Syntax DeleteSQL([SQL.ReadLine(&STRING)."" "8105". Ex : This SQL object should be used in a series of Fetch method calls: Local SQL &SQL. paramlist]]) y Where paramlist is an arbitrary-length list of values in the form: inval1 [. &EMPLID). 3. The following code deletes the ABCD_XY SQL Definition for the current DBType and November 3. y SQL Class Built-In Functions : 1."0". &EMPLID)..ABS_HIST) Then While &MYFILE.Date(19981103)). dbtype[.Close(). /* do additional processing here for converting values */ &REC. &ARRAY = Split(&STRING. Ex : The following code deletes the ABCD_XY SQL definition for the current DBType and as of date: &RSLT = DeleteSQL(SQL. RECORD."".txt"."U". effdt]] ) Description : The FetchSQL function returns the SQL definition with the given sqlname as SQL. For example: Local SQL &MYSQL. After additional processing (for example. If NOT(&RSLT) Then /* SQL not found do error processing */ End-if. Returns The SQL statement associated with sqlname as a string. It reads the file into a temporary record. and is already closed again: &SQL = CreateSQL("Delete from %Table(:1) where EMPLID = :2". this code must be associated with a PeopleCode event that allows database updates.ABC_XY). The following code gets the text associated with the ABCD_XY SQL Definition for the current DBType and November 3. inval2] The CreateSQL function instantiates a SQL object from the SQL class and opens it on the given sqlstring and input values."5".GetField(&I). . SavePostChange.ABC_XY)."09/10/1983". &ARRAY = CreateArrayRept("". and so on. effdt]]) Description : The DeleteSQL function enables you to programmatically delete a SQL definition. Local array of string &ARRAY.SetFileLayout(FILELAYOUT. verifying data. it must be in quotes.]sqlname[. &MYFILE = GetFile("c:\temp\vendor. paramlist]) Where paramlist is an arbitrary-length list of values in the form: inval1 [."" "8001". StoreSql y 1."CNF". converting strings into dates or numbers. FetchSql 5.ABSENCE_HIST. "."Y". dbtype[. End-While."0".sqlname or a string value.

&NAME1. While &SQL. SQL. "U"). &SQL = GetSQL(SQL.. Processing of the SQL definition is the same as for a SQL statement created by the CreateSQL function. SQL Class Methods: 1.Close().OPRROWS_SEARCH.ABSENCE_HIST). with the database type dbtype and the effective date effdt. If sqlname is a literal name. If you want to fetch only a single row. &REC = CreateRecord(RECORD. . SELECT and SEL_ABS_HIST are the names of the SQL definitions created in PeopleSoft Application Designer. Close : Syntax : Close() Description : The Close method closes the SQL object.ABSENCE_HIST. */ &REC = CreateRecord(RECORD.ROLE_MANAGER. &AAny). Note. While /* Still something to do */ /* Set key field values of &ABS_HIST */ &ABSSQL. Returns : None. . %TextIn(:4). BarName.USE. Fetch : Fetch(paramlist) . that had PeopleCode that dynamically (that is.Close().SELECT_BY_EMPLID). You can execute the insert by: GetSQL(SQL.. "abcdefg". */ End-While. say &AAny: &AAny = CreateArrayAny("a".Fetch(&REC) /* We got a record.Peoplesoft Interview Questions Description : The GetSQL function instantiates a SQL object and associates it with the SQL definition specified by sqlname. While building an Inbound/Outbound interface.N). TESTF2. inval2] . Local SQL &SQL. .Execute(&ABS_HIST). effdt]]) Description : The StoreSQL function writes the given sqlstring value to a SQL definition. MenuName. End-While. Local SQL &SQL. Where paramlist is an arbitrary-length list of values in the form: inval1 [. "Smith"). RECORD.. as it fetches only a single row from the server. Open : Open(sql [. 1. you use the Open method only after you've already gotten a reference to another SQL object.ABSENCE_HIST).OPRROWS_SEARCH. Local Record &REC. . add it to the array and create another.SEL_ABS_HIST. Description : The Execute method executes the SQL statement of the SQL object. :2. While &SQL1. /* Get the SQL object open and ready for fetches. %DateTimeIn(:3).Open(SQL. /* Create the first record. the SQLExec function can perform better.INSERT_TEST. While &SQL. Ex : &SQL1 = CreateSQL("%Select(:1) where EMPLID = :2". outvar2] . &EMPLID). 3. Execute : Execute(paramlist).Fetch(&ABS_HIST) /* Process ABS_HIST record. Example : &SQL = CreateSQL("%Delete(:1)"). .SELECT). Example : The following code stores the select statement as a SQL definition under the name SELECT_BY_EMPLID. Page. . TESTF3. . /* Set some field values of &ABS_HIST. End-While. . For example.Execute(&ABS_HIST). 0). 4.&SQL_UP = CreateSQL("%Update(:1)"). storing it under the name sqlname. &SQL_UP. &SQL.*/ &RECS. &ABS_HIST. ItemName.]sqlname[. dbtype[. TESTF4. %DateTime.sqlname or in quotes ("sqlname"). it must be in the form SQL.Fetch(&ABS_HIST). 5. either created using PeopleSoft Application Designer or the StoreSQL function. &EMPLID). [SQL. End-While. Description : The Fetch method retrieves the next row of data from the SELECT that is open on the SQL object. . /* Create an empty array of records. at runtime) generated the following SQL statement: "INSERT INTO PS_TESTREC (TESTF1.TESTN) VALUES (:1. The SQL definition must already exist.N)". Page | 55 This line code tranfers the manager to the search page Transfer( False. suppose you had a SQL definition INSERT_TEST. */ &RECS = CreateArrayRept(&REC.Push(&REC). 2. Local Array of Record &RECS. Suppose you have placed the values to be inserted into an Array of Any. /* do other processing */ /* get next SQL statement for additional processing */ /* The open automatically closes the previous SQL statement */ &SQL. */ &SQL = CreateSQL("%SelectAll(:1) where EMPLID = :2". Here are the tips to build an efficient interface using either AE or SQR. Where paramlist is an arbitrary-length list of values in the form: outvar1 [. StoreSQL : StoreSQL(sqlstring. for the current database type and effective as of the current as of date: StoreSQL("%Select(:1) where EMPLID = :2". */ &SQL_UP. most of the time we may be in dilemma whether to use Application Engine (AE) or SQR. Any errors result in termination of the PeopleCode program with an error message. paramlist]) Example : Generally..

GetRecord(1). STP_JOBCHNG_DAT. End-Evaluate. "Message Not Found").Label = MsgGetText(18032.EMPLID = J.PERSONAL_PHONE.HR_EE_PERS_INFO ScrollFlush(Scroll. "Message Not Found").1).GetColumn("RELATIONSHIP").EMPL_RCD AND A. &CodeIn = &Xlat.C_WOTC. &gridRS.If &REG_REGION = "USA" And &FLSA_STATUS = "N" Then PER_ORG_ASGN.Label = " ".YEAR. Adding required field cue to field C_WOTC If %Component = Component.EMAIL_ADDRESSES. . &DescIn). &MostCurrent). End-If.C_NEXT_REVIEW_DT.EMPL_RCD=:3 AND J. Record.EFFDT = (select max(B.GetRow(&J).JOB_DATA_EMP And %Page = Page. &MostCurrent).Fill("WHERE CONFIG_ID = 'STPMSS_PAY_ACTREASON' AND CONFIG_VALUE = 'USA'"). "". Make thstBirthDate field is Readonly DERIVED_STP. &FLSA_STATUS = FetchValue(JOB.EFFSEQ= (select max(A. SQLExec("SELECT A. This needs to be done because when you set the values for the hyperlink. &GRIDCOLUMN.-.EFFDT)".STP_MSS_HIRE2 Then If None (PER_ORG_ASGN.HideAllRows().Value.EFFDT = (SELECT MAX(EFFDT) FROM PS_ACTN_REASON_TBL WHERE ACTION = A.ACTION_REASON_SS. PERSON_PHONE. --&GRIDCOLUMN2 = &GRID.DERIVED_HR. For &J = 1 To &Xlat.BAS_ON_DEM_EM".DERIVED_HINT.EMPLID AND B.--. the grid column heading also gets changed &GRID = GetGrid(Panel. PSUSRPRFL_WRK. To hide the grid in the page at level 1 /* Hide the sections Personalizations.EMPLID AND A.ACTION_REASON = :1 AND A.EMPL_RCD = J.-- End-For. To update the value in job table with Maximum EFFDT SQLExec ("UPDATE PS_JOB J SET J.GetColumn("EDIT").&GRIDCOLUMN.-.DERIVED_HR. Scroll. STP_JOBCHNG_DAT. &ReturnPanel = "PAGE. End-If.ACTION_REASON)".JOB_ENTRY_DT. Scroll.EMAIL_PSWD2.--.Visible = False.Component SavePostChange Declare Function RunWFSavePostChange PeopleCode FUNCLIB_WF. &HINT.EMPL_RCD). &GRIDCOLUMN2.&gridRS = GetLevel0()(1).OPRID. "EMERGENCY_CNTCT").HINT_QUESTION = &HINT. DERIVED_HINT.EFFDT = J.GetRowset(Scroll.--&GridRs.DisplayOnly = True Set the grid column label. Workflow Attributes. End-If.-.PSUSEREMAIL).DoModal(Panel. "WHERE EMPLID = :1 AND E_ADDR_TYPE <> 'LAN'". 13.USERMAINT_SELF Then Local Rowset &gridRS. &Xlat = CreateRowset(Record.STP_CONFIG_DTL).EMPLID = J.EFFDT) From PS_JOB B where B. Page | 56 To hide the Group Box in the page--.DESCR = &RESPONSE.--. "NEXT REVIEW Date is a required field").-- RunWFSavePostChange("BAS_ON_DEM_EM_PG").PERSONAL_PHONE). ScrollSelect(1.EMPLID).-. End-If.REG_REGION. 0.Visible = False.Label = MsgGetText(18032.-.ACTION_REASON_SS. &GridRs = GetLevel0()(1). Coded to call the secondary page from one component to another component .EMAIL_ADDRESSES).DESCR100.Peoplesoft Interview Questions Hide Grid (All Rows) Local Rowset &GridRs.PERSONAL_PHONE.OPTION_VALUE_1.1. Email in the page*/ If %Menu = "STP_HR_SELFSERV_ALL" Or %Menu = "STP_HR_SELFSERV_ISSC" Or %Menu = "STP_HR_SELFSERV_ASSOC" Or %Menu = " STP_HR_SELFSERV_HRADMIN_BEL" Or %Menu = "STP_HR_SELFSERV_HRADMIN" And %Component = Component.WF_RUN_SAVE_OPTION FieldFormula.JOB_ENTRY_DT = %DATEIN(:1) WHERE J.FLSA_STATUS. &SalRange(&I).JOB_DATA Then-&REG_REGION = FetchValue(JOB.ACTION = 'PAY' AND A.ShowRequiredFieldCue = True.EMPL_RCD = J.HideAllRows(). DERIVED_HINT.&GRIDCOLUMN = &GRID. &CodeIn.GetColumn("CONTACT"). 14.SECOTHERWORK.EMPLID).Value) Then End-If. Record. Populate The Secondary page using peoplecode( fieldchange) If %Menu <> "STP_HR_SELFSERV_ISSC" Then SQLExec("SELECT HINT_QUESTION.Go Group box Properties.&GRIDCOLUMN = &GRID.DESCR FROM PS_ACTN_REASON_TBL A WHERE A.EFFSEQ) From PS_JOB A where A.EMPLID.-. &Xlat. ScrollFlush(Scroll. HINT_RESPONSE FROM PSUSERATTR WHERE OPRID = :1".LABEL_TEXT_LBL.Alternate User.-.GetRowset(Scroll.EMPL_RCD) AND J. ScrollSelect(1.End-If.EMAIL_ADDRESSES.Use Enable the check Box(hide all fields when group box hidden) To make field as a required one /*Make the NEXT REVIEW Field as the required field*/ If %Component = Component. &RESPONSE). STP_JOBCHNG_DAT.EMPLID=:2 AND J.BENEF_ASOF). "WHERE EMPLID = :1 AND PHONE_TYPE <> 'MAIN'".HR_EMERGENCY_CNTCT. . Populate action reason dropdown &SalRange(&I).&GRIDCOLUMN = &GRID.Label = " ".AddDropDownItem(&CodeIn. &GRIDCOLUMN. /* Coded for transfer the Page to the confirmation page*/.GetColumn("DELETE"). /* End Staples Customization*/ Error MsgGet (0. &DescIn). Component string &ReturnPanel. PERSON_NPC_VW.ActiveRowCount.ACTION AND ACTION_REASON = A.ClearDropDownList(). Populate data into scroll area with condition Evaluate %Component When = Component.

it returns the base rowset from the current context.SetDefault(). the grid column heading also gets changed*/ &GRID = GetGrid(Panel. End-If. 16. If &ISCANMSS <> "Y" Then &ISCANMSS = IsUserRole(%OperatorId.BIRTHDATE. 65. 0) > %Date) Then Warning MsgGet(25200. 0. 10. 9.GetRowset (SCROLL. rowselect In level one to GET data in fields? . "RETMGRCANSS"). Record. 0) <= %Date) Then Warning MsgGet(25200. If (AddToDate(PERSON. ItemName.BAS_PAR_STS_KEY). 0) > %Date) And (%Menu <> MenuName. /*Set the grid column label. 0.EVENT_STATUS_UPDATE. Panel. "Employee should be at least 14 years old. "HRADMINCANSS").ADMINISTER_AUTOMATED_BENEFITS. End-If.BIRTHDATE. if I want to retrieve level2 Scroll data which commands you have used? Scrollselect. How you can retrieve data from different ScrollAreas.--&GRIDCOLUMN. "EMERGENCY_PHONE"). "Employee should be at least 16 years old. In level 1 to get data in fields? ROWSET_LEVEL0 = GetLevel0 (). Coded for to allow only the particular roles for the given condition &isrole = IsUserRole(%OperatorId. (Or) GetLevel0: Syntax: GetLevel0 () Description: GetLevel0 creates a rowset object that corresponds to level 0 of the component buffer.LEVEL1_REC).LEVEL2_REC). &ROWSET_LEVEL1 = &ROWSET_LEVEL0. Page | 57 If &ISCANMSS = "Y" Then End-If. BarName.C_NEXT_REVIEW_DT). If &isrole = "Y" Then Coded for GetField(PER_ORG_ASGN. End-If. fetchvalue.")-- End-If.") End-If. &GRIDCOLUMN = &GRID. If used from PeopleCode that isn t associated with a page. Added following code to remind the user if age is less than 14 years and more than 65 years */ If %Menu = "ROLE_MANAGER" Then &ISCANMSS = IsUserRole(%OperatorId.EVENT_STATUS_UPDATE.Peoplesoft Interview Questions DoModalPanelGroup(MenuName.GetRow (5).GetColumn("DELETE").BIRTHDATE.USE.GetRowset (SCROLL.")-Else If (AddToDate(PERSON. If (AddToDate(PERSON. This needs to be done because when you set the values for the hyperlink. /* SR. 5. 14. &ROWSET_LEVEL2 = &ROWSET_LEVEL1.HR_EMERG_CNTCT_DET.Label = " ".GetRow (1). "U". 0."ADMINISTER_WORKFORCE_(GER)") Then Warning MsgGet(25200. "Employee should not be greater than 65 years old. "MANAGERMSS").

so you can reuse your SQL statements. You can create rowsets based on record definitions. How you can retrieve data from different ScrollAreas. When you fill it with data. &ROWSET_LEVEL1 = &ROWSET_LEVEL0.&RS). &LN). &MyRowset = CreateRowset(&Level0). Standalone rowsets are not tied to the database.LEVEL2_REC). Local SQL &SQL2. "A").Peoplesoft Interview Questions ROWSET_LEVEL0 = GetLevel0 (). consider the following statement: SQLExec("Update %Table(:1) set %UpdatePairs(:1) where %KeyEqual(:2)". With the Record class you can build and execute a SQL statement by using the following methods: (Avoiding the use of SQLExec) yDelete y-nsert y SelectByKey y Update Example 1 In the following example.QA_INVEST_TRANS. it will not be automatically saved to the database. you don't have to hardcode your SQL statement. a standalone rowset isn't tied to the component processor. &RS2 = CreateRowset(RECORD.MYUPDATE.GetRow (1). you can use it with SQLExec as follows: SQLExec(SQL.GetRowset (SCROLL. &RS2. For example. &REC. If your SQL statement retrieves more than one row of data. FieldDefault. or both.QA_INVEST_LN. If you have created a SQL definition with this SQL statement and named it MYUPDATE.QA_INVEST_HDR. it returns the base Rowset from the current context. &FIELD). This means if you make changes to data in a standalone rowset. pass in the name of the existing rowset. Using the Record Class What if we can avoid the use of SQLEXEC in coding? Improved efficiency of the system. you can create a standalone rowset. The following example creates a temporary SQL statement. The existing code used SQLExec. If used from PeopleCode that isn t associated with a page. In addition.) Use the CreateRowset function to create a standalone rowset. to create a rowset based on an existing rowset.WriteRecord(&LN). End-If. and so on.&FIELD). Local File &MYFILE. For example. SQLExec is enhanced to accept the SQL definitions. If &MYFILE. SQLExec outputs only the first row to its output variables and discards subsequent rows. no PeopleCode programs or events run (like RowInit. &RS = CreateRowset(RECORD. You can use this type of object to get rid of hidden work scrolls on a page.Fetch(&LN) &MYFILE. Existing Code . End-While. This can improve single-operation performance. &MYFILE.GetRowset (SCROLL. SQL Definitions and the SQL Class Example Can you spot any best practices in the piece of code below? We can use the SQL class to create temporary SQL statements for manipulating data. &REC. End-If.use SQLExec.Close(). and the new metaSQL. rowselect Standalone Rowset: Page | 58 In addition to being able to create records on the fly. &MYFILE = GetFile("record. which can only SELECT a single row of data. &ROWSET_LEVEL2 = &ROWSET_LEVEL1. &RS2 = CreateRowset(RECORD.IsOpen Then If &MYFILE. However.&RS2) Using SQL Definitions with SQLExec There are times when SQLExec is the appropriate function to use. (Or)GetLevel0: Syntax: GetLevel0 () Description: GetLevel0 creates a Rowset object that corresponds to level 0 of the component buffer. The rewritten code uses a record object method SelectByKey. if I want to retrieve level2 Scroll data which commands you have used? Scrollselect. The parameters for this function determine if the structure of the rowset you're creating is based on an already instantiated rowset.ABSENCE_HIST). &RS_FINAL = CreateRowset(RECORD.QA_INVEST_DTL). The following code creates a rowset structure composed of four records in an hierarchical structure: QA_INVEST_HDR QA_INVEST_LN QA_INVEST_TRANS QA_INVEST_DTL Local Rowset &RS.GetRow (5).txt". &SQL2 = CreateSQL("%Selectall(:1)". If you only need a single row. on a record definition. While &SQL2. fetchvalue.SetFileLayout(FILELAYOUT.ABS_HIST) Then----&LN = CreateRecord(RECORD.&RS2). &RS_FINAL.LEVEL1_REC). &Level0 = GetLevel0(). then writes all the rows of data from a record to a file: Local Record &LN. the existing code selects all fields into one record then copies that information to another record.

rt_type. TERM. TO_CUR. &MYDATE2.Delete(). RT_TYPE. TERM. :4. the record has a single key.Insert(). &REC2 = CreateRecord(RECORD.RATE_MULT). Re-Written Code SelectByKey works by using the keys you've already assigned values for. TO_CUR.msdateout1. TO_CUR.Insert().%timein(:4). If your record has several keys.&RT_RATE_DEF_TBL = CreateRecord(RT_RATE_DEF_TBL). FROM_CUR. ---. &MYTIME1. Page | 59 SQLExec("select 'x' from ps_rt_rate_def_tbl where rt_rate_index = :1 and term = :2 and from_cur = :3 and to_cur = :4". error_type.%timein(:5).ERROR_TYPE. In this example. Here is the example: .%datetimein(:8). You can use the peoplecode function called ³ScheduleProcess´.XMSTBL1). from_cur. If you want to select multiple rows of data. Limitations of SQLExec UPDATE. The SQL command bypasses the Application Processor and interacts with the database server directly.MSKEY1 = "001". --.%datetimein(:9))". &MYDTTM3). &RT_RATE_DEF_TBL. y y Run an SQR From a PeopleSoft Application Engine Here is a good sample of how to launch an SQR from within PeopleCode. to_cur.mstimeout3.mstimeout2.msdttmout3)values(:1.MAX_VARIANCE.. REC2. FROM_CUR. to_cur. int_basis) values (:1. you can use ScrollSelect to read rows into a work scroll. &MYDATE1. :5. so only that key value is set before executing SelectByKey. RT_TYPE. %timeout(mstime1). you must set enough of those key values to return a unique record. &DEFEXISTS). &MYTIME2.%datein(:3). Local record &REC. &REC.%datein(:2). max_variance.CopyFieldsTo(&REC2). If you write a SQL statement that retrieves more than one row of data. term. End-If. If None(&DEFEXISTS) Then &RT_RATE_DEF_TBL. End-If.&MYDTTM3). &REC. RT_RATE_INDEX. term.Peoplesoft Interview Questions &MYKEY = "001". %datetimeout(msdttm2).msdateout2.SelectByKey(). :8)". TERM. Limitation of SQLExec SELECT statement: Only a single row of data. :3. &MYTIME1. If None(&EXISTS) Then &RT_RATE_TBL = CreateRecord(RT_RATE_TBL).INT_BASIS). &MYDTTM1. &MYDTTM2. &MYTIME2. SQLExec outputs only the first row to its output variables. &MYDTTM2. &MYKEY. %datetimeout(msdttm3) from ps_xmstbl1 where mskey1 = :1". %datetimeout(msdttm1). &REC2. &REC = CreateRecord(RECORD. &MYTIME3.FROM_CUR. RT_RATE_DEF_TBL. Else &RT_RATE_TBL. TERM. RATE_DIV.msdttmout1. rate_div) values (:1.SelectByKey().mstimeout1. &MYDTTM1. :3. End-If.Update(). RT_RATE_INDEX. . &MYTIME3. :7)". rate_mult.&RT_RATE_DEF_TBL. &MYKEY. It returns successfully if you assign enough key values to return a unique record. DELETE. If None(&DEFEXISTS) Then SQLExec("insert into ps_rt_rate_def_tbl (rt_rate_index. SQLExec("select %dateout(msdate1). :2. RT_RATE_INDEX. &MYDATE1.:7. Example 2 Existing Code If None(&EXISTS) Then SQLExec("insert into ps_rt_rate_tbl (rt_rate_index. from_cur.%datetimein(:7).%timei n(:6). and INSERT statements: These statements can only be issued in SavePreChange. Else SQLExec("update ps_rt_rate_tbl set rate_mult = :7.Insert().XMS_OUT1). Re-Written Code Local record &RT_RATE_TBL. SQLExec("insert into ps_xms_out1 (mskey1. :2. RT_RATE_INDEX. TO_CUR. EFFDT. %timeout(mstime2). RATE_MULT). rate_div = :8 where rt_rate_index = :1 and term = :2 and from_cur = :3 and to_cur = :4 and rt_type = :5 and effdt = %DateIn(:6)". &RT_RATE_TBL. FROM_CUR. RATE_DIV. Workflow and SavePostChange events. %DateIn(:6). &REC2. EFFDT. SQLExec("delete from ps_xms_out1 where mskey1 = :1". :6.msdttm out2. &REC. RT_RATE_DEF_TBL. &MYKEY). %dateout(msdate2). RT_RATE_DEF_TBL. effdt. &MYDATE2. %timeout(mstime3). . End-If. :5. :4. What is SQLExec function ? And what are the limitations of this command? The SQLExec function executes a SQL command from within a PeopleCode program by passing an SQL command string.

Temp table can not be used. you are not limited to the type of controls you can place in your scroll area. "2". one on top of the other as well as side by side. If there are several users running the program at the same time. 4. With scroll bars. which is SQR does not have restart ability If we use Application Engine. State record can be used for dynamically calling AE section. There are several options you can choose for a scroll area that you cannot use for a scroll bar. Temp. engine program all over again. The fields in your scroll area can be placed randomly. AE_APPLID as fields. Workflow related batch interface can be easily developed using an AE XML related processing is quiet easy when we go for AE When we go for Upgrade of the Current PS System. with in Application Designer SQRs are a 3rd party software and not maintained with in PS. therefore need a separate upgrade process. you have to place these buttons and links manually on the page. 1. What is the AE event in peoplecode? OnExecute What are the difference between AE and SQR? AE are maintained with in PS. * Scroll areas allow you to determine the text or image that displays for the action items in the navigation bars. Retrofitting of AE is done by easily identifying the impacted objects. App Engine programs stops. &RUN_CONTROL = ScheduleProcess(&PROCESS_TYPE. * The navigation tools you select for a scroll area are automatically positioned on the navigation bar or footer bar. AE flow is easy to read and understand. it s not easily possible. If you create a sql table as State Record . is a way of grouping multiple fields of data. While SQR is not systematic. you can continue from that point on provided Restart is enabled. * Scroll areas provide a row separator when you select multiple occurrences of data. 3. RC = " | &RUN_CONTROL). &RUN_CNTL_ID. copies of tables are created in order to process in parallel.Peoplesoft Interview Questions &PROCESS_NAME = "SQRNAME". It has to be a sql table. 2. AE has a restart ability. table is primarily used for set processing. If &RC != 0 /*"1" = client "2" = server*/ Winmessage("Error: Error Scheduling SQR Process. its better to go for Application Engine If the program fails. step and Action. Reusability of SQLs is very much easy when we go for AE. State record is used for restart logic. (or "SQR Process") &RUN_CNTL_ID = "YOUR_RUN_ID". With restart enabled. we can make use of Restart Control to restart the program from the position where it abends PeopleSoft Business Process related Validation will be taken care automatically when we go for AE/CI. AE is very systematic as it is structured as Section. some of the scroll areas enhanced features make designing pages easier for you and the runtime product more intuitive for the user. below points are to be taken into account If the interface is INBOUND. 2. which are not possible with AE's. While temp table can have multiple rows. &PROCESS_NAME. * Scroll areas give you the option of showing or hiding a border around your data. For this to be true. like a grid. while the temp table can have maximum of 99 instances. Also. Unlike a grid. This can be done by using Temporary Tables and State Records. Page | 60 Differences between STATE and TEMPORARY records? 1. AE is easy to debug as you can do line by line debugging. a scroll area provides you with a wider range of functionality than a scroll bar. State record at any point of time has only single line information. State record had only single instance. will be stored in the database. With SQR. 3. Parallel Processing can be easily achieved using AE. If at any point of time. &PRCS_INST). state record cannot be a derived record. And according to PeopleBooks. you can create and maintain different reports. * Scroll areas provide the option of a View All button and a Find feature. by adding AE_SECTION. 5. . This is called the restart logic. You can even place a grid inside a scroll area. 4. End-If. By using SQR. table lives only until the program runs and is dissolved immediately after Difference between grid and scroll The scroll area. as it's driven by the PROCESS_INSTANCE as key field. you don't have to run app. while SQR is not that easy. Bulk Insertion of data and Set Processing of data can be easily done in an AE COMMIT levels can be maintained either at SECTION or STEP levels Generation of Reports using File Layout. &PROCESS_TYPE = "SQR Report". here is why scroll area is better than a scroll bar: Overall.

! Checking Load lookup array for data validation Lookup EARN $input_data $output_data Note: It is good to initialize these Load Lookup Arrays in the SETUP Section related procedures. we can write the below code to load all the valid Earning Codes at once from the Database to Load Lookup Array Name EARN and then use the array to validate the input ERNCD data.ERNCD. (This Is A Parent Table For The Setup Tables) . we can reduce the database hits and thereby increasing the Performance of the SQR Program. PET. PET. KEY (This is nothing but Input Data value) is ERNCD and RETURN_VALUE (Output data value) is Combination of ERNCD.ADD_GROSS-.Peoplesoft Interview Questions If we are going to use SQR. This is like Prompt table validation in the case of Online Pages. we can use these arrays to validate the Earning Code data. then it is better to go for Load-Lookup Arrays. we will fire a SQL to check the sanity of data. If we are going to consider the Performance of the Interface Program.EFF_STATUS = A AND PET.EFFDT= (SELECT MAX (EFFDT) FROM PS_EARNINGS_TBL WHERE PET.ERNCD = ERNCD || AND EFFDT <=SYSDATE) || AND EFF_STATUS = A LOAD-LOOKUP NAME = EARN TABLE = PS_EARNINGS_TBL PET KEY = ERNCD RETURN_VALUE = ERNCD|| -'||EFFECT_ON_FLSA|| -'||ADD_GROSS WHERE = $where QUIET In this case. below points can be taken into account to build an interface Formatting of Reports is very much easy in SQR using Begin-Header. Page | 61 In this way. Benefit Setup Tabels : 1. EFFECT_ON_FLSA and ADD_GROSS database field s value. Begin-Footer and Begin-Setup commands.Ben_Defn_Pgm : Benefit Program Definition Tbl. Generally we will use the below SQL to validate the ERNCD data SELECT PET. ! Lookup array for EARNINGS CODES Let $where = PET.EFFDT = (SELECT MAX (EFFDT) || FROM PS_EARNINGS_TBL || WHERE PET. For Eg: If we want to validate the Earnings Codes present in the file.ERNCD = $Erncd In order to avoid these database hits for each and every row of data. If this data validation is to be fired for each and every row of data. Better Performance can be achieved by using Load-Lookup Arrays and Dynamic SQL Reusability of SQLs can be achieved by creating either generic Procedures or SQCs Load Lookup Arrays in SQR: How to improve the performance of the SQR using Load Lookup Arrays? For Simple database related validation. its better to go for SQR.FROM PS_EARNINGS_TBL PET WHERE PET.ERNCD = ERNCD AND EFFDT <=(SYSDATE) AND PET.EFFECT_ON_FLSA.

Bas_Elig_Rules.Option Level. The Records Can Be Rebuilt Using The Partic Sql Script. This Parent And Following 10 Tables Are Benefit Module Tables. Rate Table Id. Record Definition : Covrg_Cd_Tbl Is A Record That Defines The Coverage Codes Used To Define The Coverage Level Of A Health Benefit . Keys: All Key Are Key Fields. Effdt. Effdt.Covrg_Cd_Tbl: Description :Coverage Code Definition Table. Plan_Type. Parent Record: Ben_Defn_Optn.The Cost Are Defined As The Rate Type . Effdt. Keyfield: Covrg_Cd. Prompt Tables : Ben_Defn_Pgm. Memployment. It Contains Information On Each Plan Type Such As The Display Plan Sequence. Effdt. Page | 62 4. Option_Id.Calc_Rules_Tbl.Covrg_Cd_Tbl. The Record Is Used By The Benefit Enrollment Panels. Related Language Record : Covrg_Cd_Lang.Fmla_Plan_Tbl. Parent Record:Ben_Defn_Plan Key Fields: Benefit_Program.Geog_Locn_Tbl. Cobra_Event_Id.Abenefit Option Is A Combination Of Benefit Plan And Coverage Code.Ben_Defn_Plan : Benefit Plan-Type Definition. Table :Vacation_Ben Description: Ee Vacation Plan Enrollments . Parent Record : Ben_Defn_Pgm Key Fields: Benefit_Program. (BENFITS) 1. Related Language Record: Benef_Pgm_Lang. Empl_Rcd. Record Definition: Ben_Defn_Cost Is A Record That Defines The Costs Associated With Each Benefit Option And Is Used For Processing In Payroll And Benefit Adminstration. Application Tables.Benefit_Nbr Prompt Tables: Person. Emplid.Ben_Defn_Cost. 3. Plan_Type. Table : Benefit_Partic This Table Is Parent Table Of The Below Tables.Description:Ben Plantype Enrollmnt Control Record Description: Benefits_Partic Is A Record That Contains Information On Employee Enrollments In A Benefit Plan Type.This Table Is Used As A Prompt Table For Many Panels And Accessed Often By The Batch Processing Of The Benefits Administration Product.Recname_Edit.Benef_Plan_Tbl. Or By The Batch Processes Basoelod And Basemlod During Benefits Administration Processing.Psurldefn.Eligility Rule Id Etc.Earning Code (For Credit) And Calculation Rules.Ben_Pln_Eff_Vw. Plan_Type. It Contains Information On Each Option Such As The Option Code.For Benefit Administration . 2.Ben_Plan_ Typ_Vw. Plan_Type. Key Fields : Benefit_Program. Prompt Table: Fsa_Run_Tbl. 5. They Are Either Entered Online By The Base Benefits System.Ben_Contact_Tbl.Psurldefn. Key Fields: Benefit_Program. Each Code Is Defined By The Minimum And Maximum Dependents Allowed And Whether Spousal Coverage Is Allowed. Option_Id. Record Definition: Ben_Defn_Plan Is A Record That Defines The Plan Types For Each Benefit Program And Is Used For Processing In Payroll And Benefit Adminstation.Earnings_Tbl.Deduction_Tbl.Ben_Defn_Optn: Record Definition:Benefit Option Definition Record Definition : Ben_Defn_Optn Is A Record That Defines The Benefit Options For Each Plan Type And Is Used For Fro Processing In Payroll And Benefit Adminstrarion.Not Allowed Or Required.Bn_Plan_Type_Vw.Currency_Cd_Tbl. Effdt.For Benefit Adminstration .Event Rules Id . Prompt Table:Ben_Defn_Pgm. Record Definition: Benefit Opt Cost Definition. Cost_Id Prompt Table: Ben_Defn_Pgm.Etc. Chaild Tables.Bas_Event_Rules.Peoplesoft Interview Questions Record Definition: Ben_Defn_Pgm Is A Record That Contains Information On All Benefit Programs Offered By A Company.

Memployment. Empl_Rcd.Plan_Type. '25'-Dependent Life. Prompt Tables: Person. Plan_Type.Effdt Prompt Tables: Person. Memployment. These Benefits Are Related To The Plan Types In The '1x' Series Such As '10'-Medical.Life_Add_Ben Description: Ee Life Ad/D Benefit Enrollmnt Record Description Life_Add_Ben Is A Record That Identifies All Life.Leave_Plan Description: Ee Leave Benefit Enrollments Record Description This Record Is Used To Store Information Regarding The Employee's Choice Of Leave Plan(S). These Benefits Are Related To The Plan Types In The '2x' Series Such As '20'-Life.Cobra_Event_Id.Ben_Prog_Benpln. Or By The Automated Benefits Administration Product. These Benefits Are Related To The Plan Types In The '3x' Series Such As '30'-Std Ans '31'Ltd. Keys: Emplid.Employment.Ben_Prog_Benpln. Health_Benefit Is Populated By Online Panels When Using The Base Benefits Product Or By The Batch Processes Basemlod/Basoelog When Using The Benefits Administration Product.Pension_Plan Description: Ee Pension Benefit Enrollments . Plan_Type. 8.Plan_Type.Benefit_Nbr.Effdt Prompt Tables: Person. Earned. Prompt Tables: Person.Company_Tbl 7. Bought. It Is Populated In The Base Benefits System Using The Enrollment Panel.Cobra_Event_Id. Prompt Tables: Person. Effdt.Employment. 6. Keys: Emplid. Empl_Rcd. Plan_Type. The Fsa Claims Administration Product Looks At This Record To Verify Enrollment.Savings_Plan Description: Ee Savings Plan Enrollments Record Description: Savings_Plan Is A Record Which Defines The Savings Plan For Which An Employee Is Enrolled. Effdt.Ben_Prog_Benpln.Ben_Prog_Bencvc.Employment. Keys: Emplid. Keys: Emplid. Taken. '14'Vision/Hearing.Plan_Type. Empl_Rcd. It Is Populated In The Base Benefits System Using The Savings_Plan Panel Within The Benefits Window Or By The Basemlod/Basoelod Load Processes Of The Benefits Administration Product. Prompt Tables: Person.Memployment.Disability_Ben Description: Ee Disability Ben Enrollments Record Description: Disability_Ben Is A Record That Identifies All Disability-Related Benefit Elections For An Employee. Page | 63 Keys: Emplid. Benefit_Nbr. Keys: Emplid. This Record Is Populated By Online Panels When Using The Base Benefits Product Or By The Batch Processes Basemlod/Basoelog When Using The Benefits Administration Product. Description: Ee Leave Accruals Record Description This Record Is Used To Store Employee Leave Accrual Balances Including Hours Carried Over.Ben_Pln_Rb_Vw.Plan_Type. Benefit_Nbr. Benefit_Nbr. 3.And Accidental Death-Related Benefit Elections For An Employee. '11'-Dental. Effdt. Sold And Unprocessed.Memployment.Company. Ben_Prog_Benpln 4. Effdt. '22'-Add.Ben_Prog_Benpln 2. Etc. Empl_Rcd.Leave_Accrual. 9. Benefit_Nbr.Benefit_Nbr.Dedcd_Rb_Vw. Keys : Emplid. Empl_Rcd. Prompt Tables: Person. Effdt.Empl_Rcd. Benefit_Nbr.Peoplesoft Interview Questions Record Description: Vacation_Ben Is A Record Which Defines The Vacation Benefits For Which An Emploeee Is Enrolled.Ben_Prog_Benpln 5. Empl_Rcd. Empl_Rcd. It Is Populated In The Base Benefits System Using The Savings_Plan Panel Within The Benefits Window Or By The Basemlod/Basoelod Load Processes Of The Benefits Administation Product.Fsa_Benefit Description: Ee Fsa Benefit Enrollments Record Description: Fsa_Benefit Is A Record Used To Enroll Participants In Flexible Spending Accounts Such As Health Or Dependent Care. This Record Is Populated By Online Panels When Using The Base Benefits Product Or By The Batch Processes Basemlod/Basoelog When Using The Benefits Administration Product.Plan_Type.Plan_Type_Rb_Vw.Memployment.Health_Benefit Description: Ee Health Benefit Elections Record Description: Health_Benefit Is A Record That Identifies All Health-Related Benefit Elections For An Employee.Accrual_Proc_Dt. Keys : Emplid. Prompt Tables: Person.

Cobra_Event_Id. This Record Is Populated By Online Panels When Using The Base Benefits Product Or By The Batch Processes Basemlod/Basoelod When Using The Benefits Administration Product. Page | 64 10. Keys:Emplid. Keys:Emplid.Effdt. A)Ben_Per_Data This Is The Parent Table Of Ben_Plan_Data. Empl_Rcd. These Benefits Are Related To The Plan Types In The '80' Series. Prompt Tables: Person. Please Use The New Enrollment Reporting Snapshot Instead.Ben_Prog_Benpln. Prompt Tables: Person. These Two Are The Benefit Tables. Benefit_Nbr.Plan_Type. The Carrier Interface Process (Ben100. Effdt. Description: Ee/Dep Profile Data (Obsolete) Record Description Obsolete! This Table Is Obsolete As Of Release 8.8.Dependent_Benef B)Ben_Plan_Data This Is The Child Table Of Ben_Per_Data Description: Ee/Dep Benefit Data (Obsolete) Record Description: Obsolete! This Table Is Obsolete As Of Release 8. Such As '70'-Pers.Sqr) Is No Longer Maintained By Peoplesoft And Will Be Dropped During A Subsequent Release. Dependent_Benef These Are The HR Tables. It Is Used By The Benefits_Data View. Prompt Tables:Covrg_Cd_Tbl.Plan_Type. Keys:Emplid.Employment. These Benefits Are Related To The Plan Types In The '70' Series. Empl_Rcd. This Record Is Populated By Online Panels When Using The Base Benefits Product Or By The Batch Processes Basemlod/Basoelod When Using The Benefits Administration Product.Employment. It Is Used By The Benefits_Data View.Benefit_Nbr. Empl_Rcd.Peoplesoft Interview Questions Record Description: Pension_Plan Is A Record That Identifies All Pension-Related Benefit Elections For A Canadian Employee. .8. Plan_Type. Keys:Emplid.Ben_Prog_Benpln. Please Use The New Enrollment Reporting Snapshot Instead. The Carrier Interface Process (Ben100.Sqr) Is No Longer Maintained By Peoplesoft And Will Be Dropped During A Subsequent Release.Cobra_Event_Id. -------------------------------------------------Ben_Per_Data Is A Record That Is A Snapshot Of Personal. -------------------------------------------------Ben_Plan_Data Is A Record That Is A Snapshot Of Employee And Dependent Data. Employee And Dependent Data.Rtrmnt_Plan Description: Ee Retirement Benefit Enrlment Record Description: Rtrmnt_Plan Is A Record That Identifies All Retirement-Related Benefit Elections For A Us Employee.

You Can Create Multiple Dept_Tbl Records For A Department. Grade. Several Edits Are Done In The System To Warn That An Employee Is Over The Maximum Or Under The Mimimum For Their Salary Grade. Region. Data Also Includes Description. It Is Also Used As The Basis For Implementing Organizational Security For Employee Data.Peoplesoft Interview Questions 1)Sal_Grade_Tbl Description: Salary Grade Table Record Description: Sal_Grade_Tbl Is The Reference Table For Salary Ranges.Curency_Cd_Tbl. And Maximum Salary Are Used To Calculate Compa Ratio And Percent Of Range. Keys: Setid. Grade. And Step.Manager_Posn Prompt Tables Person_Name. Effdt. If You Are Running Position Management. Department Id Is Used As The Primary Organizational Identifier On Payroll Earnings Records. The Tree Editor Is Used To Build A Hierarchy Of These Codes. Several Edits Are Done In The System To Warn That An Employee Is Over The Maximum Or Under The Mimimum For Their Salary Grade. Page | 65 Prompt Tables:Sal_Plan_Tbl. When It Is Set To 'Yes'. Description: Salary Step Table Record Description: Sal_Step_Tbl Is Used To Store The Salary For Each Step When Multi-Step Grade Is Used. Effdt Setcontrol Field : Business_Unit. If You Are Running Peoplesoft On A Db2 Machine. Manager_Id. The Control Flag For Multi-Step Grade Is Found On The Installation Record. Sal_Admin_Plan.Dept_Tbl 2 Installation Description: Site-Specific Install Options Record Description: Use The Installation Record To Set Parameters For Running Your Peoplesoft System At Your Specific Site. If You Run Peoplesoft Payroll. Company Code. Child Tables Are A)Sal_Step_Tbl. Assign A Deptid To Each Department. Keys: Setid. B)Sal_Step_Pub Description: Salary Step Table Record Description: Sal_Step_Tbl Is Used To Store The Salary For Each Step When Multi-Step Grade Is Used. Employees Salaries Are Automatically Set To The One Stored On This Table For Their Salary Administration Plan. The Mimimum. Effdt. Grade.Rt_Type_Tbl 3) Location_Tbl Description: Company Site Locations .Empl_Ctg_L1 To L3. SAL_RATECD_TBL Description: Salary Grade Table Record Description: Sal_Grade_Tbl Is The Reference Table For Salary Ranges. Which Is Used In Your Organizational Hierarchy.Currency_Cd_Tbl. And Maximum Salary Are Used To Calculate Compa Ratio And Percent Of Range. Division. And Step. Grade. Etc. Keys:Setid. Step. You Enter The Beginning Sequence Number Here. Sal_Admin_Plan. Each With A Unique Effective Date. Use Dept_Tbl To Record Information About The Organizational Entities In Your Company. Effdt Setcontrol Field : Business_Unit. Setid_Location. Effdt Alt: Descr. Keys:Setid. Deptid. Location. Grade. Keys: Setid. HR Setup Tables. If You Use Auto-Numbering In Peoplesoft.Country_Tbl. Any Changes Made To The Hrms Definition Must Be Made To Erp Definition. Company. Setcontrol Field : Business_Unit. Prompt Tables:Company_Tbl. Step Setcontrol Field : Business_Unit. Midpoint. The Control Flag For Multi-Step Grade Is Found On The Installation Record. Midpoint. You Specify The Number Of Payroll Records To Be Run Before A 'Commit' Is Executed. Sal_Admin_Plan. And Budget Fields. Grade. The Mimimum. When It Is Set To 'Yes'. And To Identify And Group Them Into The Appropriate Organizational Levels. Such As Auto-Assignment Of Employee Ids. Sal_Admin_Plan. You Specify Whether You Are Running Partial Or Full Position Management. Employees Salaries Are Automatically Set To The One Stored On This Table For Their Salary Administration Plan.Position_Data. 1 Dept_Tbl Description: Departments The Hrms Dept_Tbl Definition Has Been Synchronized With The Erp Definition.Company_Tbl.Sal_Matrix_Tbl. You Enter Certain Parameters Here.Accdt_Ins_Tbl. For Example.Empl_Ctg.

It Contains One Row For Every Person (Emplid) In The System. Phone_Type Prompt Table:Person 6.Diversity Description: Diversity Data Record Description: Diversity Data Keys: Emplid. Setcontrol Field : Business_Unit.Employees. Use It To Record Effective Dated Personal Data About An Employee Or Applicant Including Name And Address.S.Estab_Tbl 4)Country_Tbl Description: Id For Group Of Countries. Then That Person's Most Future Dated Row Will Be Returned.Peoplesoft Interview Questions Record Description: --This Table Has Been Synchronized With The Erp Table Definition. Setup Tables in Payroll .Jobcode_Tbl.W) Are Included With All Their Empl_Rcds And The Most Current Job Row As Of The Asofdate. Keys: Emplid.P.Pers_Data_Effdt (This Is The Parent Table Of Person) Description: Effective Dated Personal Data Record Description: Pers_Data_Effdt Is One Of The Core Records In The Database.Address_Type Prompt Table:Address_Typ_Tbl 7.Effdt. Any Changes Will Need To Be Applied To The Location_Tbl Definition In The Erp Database. Employment Etc. Dept_Tbl. And Salary History.Phone Numbers. No Query Security Record Is Specified Because In Query This Would Be One Of The Joined In Records. Prompt Tables:Country_Tbl 2. And Job/Salary Data As Of The Date Indicated When The Program Is Run.Pers_Nid This Is The Parent Table Of Person) Description: Pers_Nid Record Record Description: Pers_Nid Is The Child Record Of Person And Hold The Nid_Sbr Which Contains Information About National Id. Empl_Rcd. Effdt Alt: Descr 5)Setid_Tbl Description: Tableset Ids Keys:Setid Application Tables. Company_Tbl. It Is A Snapshot Of Emploees' Personal/Demographic Data. 4. This Table Is Primarily For Reporting. Only Employees With Empl_Status (A. Use It To Record Information About Your Company's Work Sites.Person_Name (This Is The Parent Table Of Person) Description: Current Primary Name View Record Description: This View Retrieves The Currently Effective Names Record For All The Primary Name. Effdt Alt: Descr Prompt Tables: Holiday_Tbl. Keys: Emplid. You Can Create Only One Personal_Data Record Per Person. The Main Record Should Contain The Query Security. Effdt.L. Bas_Group_Tbl.Record Description: This Record Is Used To Give An Id For A Group Of Page | 66 Countries Keys: Group_Name. Keys: Emplid. It Is The Parent Record Or Pers_Data_Effdt. Job Code. Description: Non Terminated Employees Record Description: Employees Is A Table Populated By Per099 Appengine Process. Only One Row Per Emplid Is Returned. Keys: Emplid 10. Location_Tbl Is An Edit Table. (HR) 1 Person This Is Parent Table Description: Person Record Record Description: Person One Of The Core Records In The Database. Location. Keys: Emplid. Employment Data.Job (This Parent Record Is Employment Description: Ee Job History Record Description: Job Is One Of The Core Records In The Database.Name_Type_Tbl 8.Person_Phone (This Is The Parent Table Of Person) Description: Personal Data . Keys: Emplid. You Can Create Multiple Job Records For An Employee. Location. Keys: Setid. Keys: Emplid Prompt Table:Person. Location_Tbl.Phone Numbers Record Description: Personal Data . Paygroup_Tbl.Reg_Region_Tbl. Empl_Rcd 3. The Effdt Is Included Only For Reference Back To Names. If A Person Only Exists In The Future.Disability (This Is The Parent Table Of Person) Description: Disability Record Description: Information On Employee's Disability Keys: Emplid Prompt Table: Person_Name 9.Address (This Is The Parent Table Of Person) Description: Address Type Record Description: Addresses Contains Effective Dated History For Personal Addresses. Effseq Prompt Table: Person. Department. Use It To Record An Employee's Job History Data Such As Actions Taken. Keys: Emplid. Effdt 5.

Prompt Tables Company_Tbl. Pay_Sheet_Line_G (Page).Paygroup.Pay_Calndar (Parent) Description: Pay Calendar Record Description: The Pay Calendar Record Contains Cycles For Oayroll Processing Created For Pay Groups.Off_Cycle.Line_Num.Tax_Class_Lang. UNION_TABLE3 . Retropay_Messages (Page) 4. Pay_Acct_Wcan .Pay_Calendar.Pay_End_Dt Alt : Run_Id Prompt Tables Company_Tbl.Paygroup_Tbl. Pay_Acct_Work .Pay_Tax. 1. RUNCTL_PSHUP . Retroded_Msg . Hp_Pay_Chk_Susp.Off_Cycle.Pay_Line. RUN_FGPY014.Pay_Calendar. Child : G_Pay_Line.Employment.Pay_run_tbl Description: Payroll Run ID Record Description: This table is used to store information on pay run ID's.Sepchk Prompt Tables Company_Tbl.Off_Cycle.country_tbl Pages : TERM_RQST .Pay_End_Dt.Pay_End_Dt. Pay_Sheet_Line_O (Page) . Prompt table:ben_defn_pgmern_prgram_def. to identify the valid employee types for each paygroup.Page_Num. Hprtbgchk_Tao . ST_PROCESS_GRP .company_tbl. Pay_Sheet_Ln_O. Pay_Sheet_Add_D (Page). Prompt Tables Company_Tbl. Child: Gpay_Distribution.Person_Name.Paygroup.pay_clandar.Pay_Sheet_Line_D (Page) . Related language Record is paygroup_lang. Description: Payroll Line Record Description: This Record Contains The Employee Summary Payroll Information.Pay_Run_Vwded_Taken_Bn_Vw Component: Pay_Calendar_Table . if your company has both salaried and hourly employees.Page_Num.Pay_Sheet_Add_O (Page) . Key :company. Pay_Check Pay_Check_View. Componet : pay_run_tbble Pages : RUN_FGPY001 .pay_check. Keys : Company. Pay_Sheet_Add_S (Page). and another paygroup for hourly employees paid weekly. Zz_Pay_Acct_Can .Pay_End_Dt. Pay_Sheet_Add_S (Page) . Keys : Company.person_name. Pay_Sheet_Mult_S .Paygroup_Tb.Pay_Calendar.Pay_Sheet_Line_S (Page).pay_distributn:(parent record is pay_check) Description: Payroll Deposit Distribution Record Description: This record contains the details of an emplooyees direct deposit advices.Paygroup.Pay_Sheet_Mult_S (Page) Page | 67 3. Pay_Ol_Sheet_S1 (Page). For example.Page_Num.Pay_Tax_1042.Pay_Page Parent Record Is Pay_Calendar. Pages: Pay_Messages (Page).Line_Num. . Keys : Company.Effdt. Pages: Pay_Ol_Sheet_S1 (Page). Use a subordinate record.Page_Num.PAYGROUP_TBL Description: Paygroups Record Description: Use PAYGROUP_TBL to group employees by how they are paid.Paygroup.priority. Pay_Sheet_Ln_S. Pay_Sheet_Add_D (Page).paygroup. Prompt table pay_page.Pay_Sheet_Add_G (Page).Peoplesoft Interview Questions 1.Pay_T ax__Liab_Ap. Zz_Pay_Line . Pay_Message . Zz_Pchk_S_Vcan . Related language Record is PAY_RUN_LANG Key : run_id. RUN_FGPY003 .paygroup_tbl.Tax_Class. 3.Pa_Hst_Pay_Chk . Pay_Check_Vcan Pay_Earnings. Pay_Sheet_Line_G (Page) .Hp_Paychkern_Sp. Pa_Hst_Pay_Earn . ST_ESPP_DISPOSN . Pay_Sheet_Add_P (Page). RUN_FGPY002. Description: Payroll Page Record Description: This Record Contains Payroll Page Information. Child : Encumb_Msg . : Pay_Calendar_Tbl2 Pay_Calendar>>>>> Pay_Page >>>Pay_Line>>>>>Pay_Check 2.Sepchk. you might set up a monthly paygroup for the salaried employees paid once a month. Pay_Sheet_Ln_G . G_Pay_Check .Zz_Pay_Line_Can .Pay_Check: Parent Record Is Pay_Line Description: Pay Check Record Description: This Is The Summary Record That Contains The Result Of The Payroll Confirmation Process.Pay_Line: Parent Record Is Pay_Page.Pay_End_Dt.Pay_Page. 2. Pay_Sheet_Add_G . Pages : Pay_Calendar_Table. Pay_Sheet_Add_O (Page) .Line_Num. It Will Contain One Or More Subordinate Pay Earning Records.Off_Cycle. Keys : Company.Hp_Paychkctx_Sp. Pay_Sheet_Mult_P (Page) .pay_line. Pay_Sheet_Ln_D .Paygroup.Paygroup_Tbl.Paygroup_Tbl.Pay_Line. Pay_Sheet_Add_Page (Page) .Hp_Paychktax_Sp. PAYGRP_EMPLTYPE. Keys : Company.

Sign up to vote on this title
UsefulNot useful