People Code - Events
Post on 27-Oct-2014
Embed Size (px)
Activate Event The Activate event is initiated each time that a page is activated, including when a pagei s f i r s t d i s p l a y e d b y a u s e r , o r i f a u s e r p r e s s e s T a b b e t w e e n d i f f e r e n t p a g e s i n a component. Each page has its own Activate event. The Activate event segregates PeopleCode that is related to a specific page from the resto f the applications PeopleCode. Place PeopleCode related to page d i s p l a y o r p a g e processing, such as enabling a field or hiding a scroll area, in this event. Also, you canuse this event for security validation: if an user does not have clearance to view a pagein a component, you would put the code for hiding the page in this event. Note. PeopleSoft builds a page grid one row at a time. Because the Grid class applies toa complete grid, you cannot attach PeopleCode that uses the Grid class to events thatoccur before the grid is built; the earliest event you can use is the Activate event. TheActivate event is not associated with a specific row and record at the point of execution This means you cannot use functions such as GetRecord, GetRow, and so on, which relyon context, without specifying more context.Activate PeopleCode can only be associated with pages. This event is valid only for pages that are defined as standard or secondary. This event isnot supported for subpages. 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 thandata validation. To validate the contents of the field, use the FieldEdit event. The FieldChange event applies to the field and row that just changed.F i e l d C h a n g e P e o p l e C o d e i s o f t e n p a i r e d w i t h R o w I n i t P e o p l e C o d e . I n t h e s e RowInit/FieldChange pairs, the RowInit PeopleCode checks values in the component andinitializes the state or value of page controls accordingly. FieldChange PeopleCode thenrechecks the values in the component during page execution and resets the state orvalue of page controls. To take a simple example, suppose you have a derived/work field called PRODUCT, thev a l u e o f w h i c h i s a l w a y s the product of page field A and page field B. When t h e component is initialized, you would use RowInit PeopleCode to initialize PRODUCT equalto A B when the component starts up or when a new row is inserted. You could thenattach FieldChange PeopleCode programs to both A and B which also set PRODUCT equalto A B. Whenever a user changes the value of either A or B, PRODUCT is recalculated.FieldChange PeopleCode can be associated with record fields and component recordfields. FieldDefault Event The FieldDefault PeopleCode event enables you to programmatically set fields to defaultvalues when they are initially displayed. This event is initiated on all page fields as partof many different processes; however, it triggers PeopleCode programs only when thefollowing conditions are all true: The page field is still blank after applying any default value specified in the recordfield properties. This is true if there is no default specified, if a null value is specified, or if a 0 isspecified for a numeric field. The field has a FieldDefault PeopleCode program.
In practice, FieldDefault PeopleCode normally sets fields by default when new data isbeing added to the component; that is, in Add mode and when a new row is inserted intoa scroll area.If a field value is changed, whether through PeopleCode or by a user, the IsChangedproperty for the row is set to True. The exception to this is when a change is done in theFieldDefault or FieldFormula events. If a value is set in FieldDefault or FieldFormula, therow is not marked as changed.At save time, all newly inserted and changed rows are written to the database. All newlyinserted but not changed rows are not written to the database. You must attach FieldDefault PeopleCode to the field where the default value is beingpopulated. Note. An error or warning issued from FieldDefault PeopleCode causes a runtime error.FieldDefault PeopleCode can be associated with record fields and component recordfields. FieldEdit Event Use FieldEdit PeopleCode to validate the contents of a field, supplementing standardsystem edits. If the data does not pass the validation, the PeopleCode program shoulddisplay a message using the Error statement, which redisplays the page, displaying anerror message and turning the field red. T o permit the field edit but alert the user to a possible p r o b l e m , u s e a W a r n i n g statement instead of an Error statement. A Warning statement displays a warning dialogbox with OK and Explain buttons. It permits field contents to be changed and continuesprocessing as usual after the user clicks OK.I f t h e v a l i d a t i o n m u s t c h e c k f o r c o n s i s t e n c y a c r o s s p a g e f i e l d s , t h e n u s e S a v e E d i t PeopleCode instead of FieldEdit. The FieldEdit event applies to the field and row that just changed.FieldEdit PeopleCode can be associated with record fields and component record fields. FieldFormula Event The FieldFormula event is not currently used. Because FieldFormula PeopleCode initiatesin many different contexts and triggers PeopleCode on every field on every row in thecomponent buffer, it can seriously degrade application performance. Use RowInit andFieldChange events rather than FieldFormula. If a field value is changed, whether through PeopleCode or by a user, the IsChangedproperty for the row is usually set to True. However, if a value is set in FieldDefault orFieldFormula, the row is not marked as changed.At save time, all newly inserted and changed rows are written to the database. All newlyinserted but not changed rows are not written to the database. Note. InPeopleSoft Pure Internet Architecture, if a user changes a field, but there isnothing to cause a trip to the server on that field, default processing and FieldFormulaPeopleCode do not run. They only run when another event causes a trip to the server.As a matter of convention, FieldFormula is now often used in FUNCLIB_ (function library)record definitions to store shared functions. However, you can store shared functions inany PeopleCode event.FieldFormula PeopleCode is only associated with record fields. ItemSelected Event The ItemSelected event is initiated whenever a user selects a menu item from a pop-upmenu. In pop-up menus, ItemSelected PeopleCode executes in the context of the pagef i e l d f r o m w h e r e t h e p o p - u p m e n u i s
a t t a c h e d , w h i c h m e a n s t h a t y o u c a n f r e e l y reference and change page fields, just as you could from a button. Note. This event, and all its as sociated PeopleCode, does not initiate i f r u n f r o m a component interface.ItemSelected PeopleCode is only associated with pop-up menu items. PostBuild Event The PostBuild event is initiated after all the other component build events have beeni n i t i a t e d . T h i s e v e n t i s o f t e n u s e d t o h i d e o r u n h i d e p a g e s . I t s a l s o u s e d t o s e t component variables.PostBuild PeopleCode is only associated with components. PreBuild Event The PreBuild event is initiated before the rest of the component build events. This eventis often used to hide or unhide pages. Its also used to set component variables. Note. If a PreBuild PeopleCode program issues an error or warning, the user is returned to the search page. If the search record has no keys, a blank component page appears.Also use the PreBuild event to validate data entered in a search page after a prompt listi s d i s p l a y e d . F o r e x a m p l e , a f t e r a u s e r s e l e c t s k e y v a l u e s o n a s e a r c h , t h e P r e B u i l d PeopleCode program runs, catches the error condition, and issues an error message. The user receives and acknowledges the error message. The c o m p o n e n t i s c a n c e l e d (because of the error), and the user is returned to the search page. PreBuild PeopleCodeis only associated with components. PrePopup Event The PrePopup event is initiated just before the display of a pop-up menu. You can use PrePopup PeopleCode to control the appearance of the pop-up menu. Note. This event, and all its associated PeopleCode, does not initiate i f r u n f r o m a component interface.PrePopup PeopleCode can be associated with record fields and component record fields. RowDelete Event The RowDelete event is initiated whenever a user attempts to delete a row of data froma page scroll area. Use RowDelete PeopleCode to prevent the deletion of a row (using anE r r o r o r W a r n i n g s t a t e m e n t ) o r t o p e r f o r m a n y o t h e r p r o c e s s i n g c o n t i n g e n t o n r o w deletion. For example, you could have a page field called Total on scroll area level zerowhose value is the sum of all the Extension page fields on scroll area level one. If th euser deleted a row on scroll area level one, you could use RowDelete PeopleCode torecalculate the value of the Total field. The RowDelete event triggers PeopleCode on any field on the row of data that is beingflagged as deleted. Note. RowDelete does not trigger programs on derived/work records.RowDelete PeopleCode can be associated with record fields and component records.Deleting All Rows from a Scroll AreaWhen the last row of a scroll area is deleted, a new, dummy row is automatically added.As part of the RowInsert event, RowInit PeopleCode is run on this dummy row. If a field ischanged by RowInit (even if its left blank), the row is no longer new, and therefore is notreused by any of the ScrollSelect functions or the Select method. In this case, you maywant to move your initialization code from the RowInit event to FieldDefault. RowInit Event
The RowInit event is initiated the first time that the Component Processor encounters arow of data. Use it to set