Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 12

Object-Oriented PeopleCode

USM Regional Oracle/PeopleSoft Conference


June 8, 2007

Object-Oriented PeopleCode
How to use object-oriented PeopleCode to manipulate data in the component buffer.

Understanding the four object classes that are used to "traverse the buffer": Rowsets, Rows, Records, and Fields.

Data Buffer Access Classes

What is a Rowset Object?


What is a Row Object? What is a Record Object? What is a Field Object?

Data Buffer Access Classes

Functions, Methods, and Properties


Function( )
GetLevel0( )

<object>.Method( )
&RSLevel2.GetRow(12)

<object>.Property
&FldEmplid.Enabled = False;

Longhand and Shorthand Notation


Understanding both longhand notation and shorthand notation -- A four-step recipe to convert from longhand to shorthand.
Optimizing your code for re-usability in multiple applications - the benefits of object-oriented code.

Advantages of Object-Oriented PeopleCode


A different style of programming is not justified unless it has advantages.
Object-oriented PeopleCode is better organized, easier to maintain, and more reusable than older procedural style PeopleCode.

Data Buffer Access Classes


&RSLevel2 = GetRowset(Scroll.TRN_CRSE_ENR_XX); For &I = 1 To &RSLevel2.ActiveRowCount &RecCourseEnr = &RSLevel2.GetRow(&I).GetRecord(Record.TRN_CRSE_ENR_XX); If TRN_CRSE_SES_XX.SESSION_STATUS <> "A" Then &RecCourseEnr.GetField(Field.EMPLID).Enabled = False; &RecCourseEnr.GetField(Field.TRAINING_REASON).Enabled = False; &RecCourseEnr.GetField(Field.STDNT_ENRL_STATUS).Enabled = False; &RecCourseEnr.GetField(Field.COMMENTS).Enabled = False; Else &RecCourseEnr.GetField(Field.EMPLID).Enabled = True; &RecCourseEnr.GetField(Field.TRAINING_REASON).Enabled = True; &RecCourseEnr.GetField(Field.STDNT_ENRL_STATUS).Enabled = True; &RecCourseEnr.GetField(Field.COMMENTS).Enabled = True; End-If; End-For;

Data Buffer Access Classes Reusable Code


&TrueOrFalse = (SESSION_STATUS = "A"); &RowCurrent = GetRow();
For &I = 1 To &RowCurrent.ChildCount &RSLevel2 = &RowCurrent.GetRowSet(&I); For &J = 1 To &RSLevel2.ActiveRowCount &RowLevel2 = &RSLevel2.GetRow(&J); For &K = 1 To &RowLevel2.RecordCount &RecLevel2 = &RowLevel2.GetRecord(&K); For &L = 1 To &RecLevel2.FieldCount &RecLevel2.GetField(&L).Enabled = &TrueOrFalse; End-For; End-For; End-For; End-For;

Reusable Code

Put reusable code in a function library or an Application Package.


Leverage the code across multiple applications.

Reusable Code Function Library


Begin-Function EnableDisable (&RowCurrent, &TrueOrFalse) For &I = 1 To &RowCurrent.ChildCount &RSLevel2 = &RowCurrent.GetRowSet(&I); For &J = 1 To &RSLevel2.ActiveRowCount &RowLevel2 = &RSLevel2.GetRow(&J); For &K = 1 To &RowLevel2.RecordCount &RecLevel2 = &RowLevel2.GetRecord(&K); For &L = 1 To &RecLevel2.FieldCount &RecLevel2.GetField(&L).Enabled = &TrueOrFalse; End-For; End-For; End-For; End-For; End-Function;

Wrap Up
Questions & Contact Information

Tim Burns tim.burns@io-consulting.com

You might also like