Thursday 17 April 2014

PeopleSoft Technical Interview Questions & Answers (PeopleCode)

 * Order of people code events firing?
1.  Searchinit 
2.  Searchsave
3.  Rowselect
4.  Prebuild
5.  Field Default
6.  Field Formula
7.  RowInit
8.  PostBuild
9.  Activate
10. FieldEdit
11. FieldChange     (PrePopup, ItemSelected)
12. RowInsert
13. RowDelete
14. SaveEdit
15. SavePreChange.
16. WorkFlow
17. SavePostChnage.

* What is the difference between FieldChange Event and FieldEdit Event ?
   FieldChange Event -  Use FieldChange PeopleCode to recalculate page field values, change the appearance of page controls, or perform other processing that results from a field change other than data validation. To validate the contents of the field, use the FieldEdit event.
The FieldChange event applies to the field and row that just changed.
FieldChange PeopleCode is often paired with RowInit PeopleCode. In these RowInit/FieldChange pairs, the RowInit PeopleCode checks values in the component and initializes the state or value of page controls accordingly. FieldChange PeopleCode then rechecks the values in the component during page execution and resets the state or value of page controls.
  FieldEdit Event -  Use FieldEdit PeopleCode to validate the contents of a field, supplementing standard system edits. If the data does not pass the validation, the PeopleCode program should display a message using the Error statement, which redisplays the page, displaying an error message and turning the field red.
FieldEdit PeopleCode can be associated with record fields and component record fields.

* What is the difference between PostBuild Event and PreBuild Event ?
  PostBuild Event -The PostBuild event is initiated after all the other component build events have been initiated. This event is often used to hide or unhide pages. It’s also used to set component variables. PostBuild PeopleCode is only associated with components.During the PostBuild event you will have access to the data read from the database into the component buffer structure. That’s why it is called PostBuild.
 PreBuild Event -The PreBuild event is initiated before the rest of the component build events. This event is often used to hide or unhide pages. It’s also used to set component variables.
PreBuild fires before any PeopleCode events on all the rows and fields in the component such as FieldDefault and RowInit. During the PreBuild event there will not be any data in the component buffer structure other than search record as its executing prior to the component build process. That’s why it is called PreBuild.

* Describe RowInit Event ?
  The RowInit event is initiated the first time that the Component Processor encounters a row of data. IUse it to set the initial state of component controls. This occurs during component build processing and row insert processing. It also occurs after a Select or SelectAll Rowset method, or a ScrollSelect or related function, is executed. RowInit is not field-specific.it triggers PeopleCode on all fields and on all rows in the component buffer.Do not use Error or Warning statements in RowInit PeopleCode: these cause a runtime error.

* Explain SaveEdit Event in peoplecode ?
The SaveEdit event is intiated whenever a user attempts to save the component. You can use SaveEdit PeopleCode to validate the consistency of data in component fields. Whenever a validation involves more than one component field, you should use SaveEdit PeopleCode. If a validation involves only one page field, use FieldEdit PeopleCode. SaveEdit is not field-specific: it triggers associated PeopleCode on every row of data in the component buffers, except rows flagged as deleted.

* Difference between SavePrechange and SavePostchange Events.
  SavePreChange Event -The SavePreChange event is initiated after SaveEdit completes without error.SavePreChange PeopleCode provides one final opportunity to manipulate data before the system updates the database.In Save Prechange we can get the data from Component Buffer for that particular Component.
 SavePostChange Event - SavePostChg is different from all other Peoplecode events since it is performed after the updates are made on the database.SavePost change Component Buffer is cleared we have to get data from Database and this is used to update values outside the database.

* Difference between SaveEdit and Fieldedit ?
Fieldedit event is fired every time for each row when field is edited where as
SaveEdit is fired only once when a user click on save button .

* What is the component processor?                                                                                                 Component processor is a runtime engine that controls processing of an application from the time user request the component from the menu till the database is updated and processing of component is completed.

* Explain about the component buffer and data buffer?
  Component Buffer contains all the Data of active component. The data buffer is used to store data added from sources other than the component, such as from a PeopleSoft Application Engine program, an application message, and so on. PeopleTools 8 provides an alternative to the scroll level, row, and field components in the form of the data buffer classes Rowset, Row, Record, and Field, which you reference using dot notation with object methods and properties.

*Difference between SQLExec and CreateSql? 
  SQLExec can only select a single row of data. If your SQL statement retrieves more than one row of data SQLExec sends only the first row to its output variables. Any subsequent rows are discarded.  CreateSQL If you need to SELECT multiple rows of data use the CreateSQL or GetSQL functions and the Fetch SQL class method.

*Explain about ACTIVE event?
  The Activate event get fired each page gets activated. Active PeopleCode can only be associated with pages. The event is used for security validations such as field enabling and hiding a scroll, enabling user to programmatically control the display of that page controls. This event is used for component build processing in add mode and update mode.

*What is deferred processing? 
Deferred processing is used speed up the data-entry process.  This means that the system does not validate the data for each field as you Tab through a page.  You can enter in all the data for your page without unnecessary trips to the server for data validation. Entered data is validated when:

  • You navigate to another page in the component 
  • Click the Save button 
  • Click the Refresh button (access key: Alt+0) 

If there are any errors in your data, you are notified at this time.
 Field Edit event will not fire until we press the SAVE button if the deferred processing is ON.


* Difference between Getrowset and Createrowset? 
   GetRowset is used to get rowset for a record in the component buffer.
   CreateRowset is used to create rowset for a record which is in database, and is also called as standalone rowset.

* What is scrollflush()  function ? 
   Used to remove all rows inside target scroll area and frees it associated buffer. Rows that are flushed are not deleted from the database. This function is often used to clear work scroll before a call to ScrollSelect.
Syntax: ScrollFlush (scrollpath)

* Explain about the workflow event?                                                                                              WorkFlow PeopleCode executes immediately after SavePreChange and before database update that precedes SavePostChange. The main purpose of the workflow event is to segregate PeopleCode related to workflow from the rest of applications PeopleCode. Only PeopleCode related workflow (Such as triggerbusinessevent) should be in workflow programs. Your program should be deal with workflow only after my SavePreChange process completed.

* Explain Think-time function? 
Think-time functions suspended processing until the user has taken some actions (such by clicking button in message box), or until external function has run to completion (for example a remote process).
Think-time function hold avoids the following events: SavePreChange, Workflow, RowSelect, SavePostChange.
 
* In which PC events dosave function is useful?
   FieldEdit, FieldChange, or ItemSelected.