PeopleSoft 预定义了部分类 (such as Array, File, Field, SQL, and so on). 也可以自己创建类
实例化对象
一般通过 built-in 函数或对象的方法实例化对象.
一些对象可以通过data buffer已经存在的数据进行实例化。
一些对象可以通过已创建的 definition 实例化.
Local field &MyField
&MyField = GetField();
&ROWSET = GetRowSet();
/*the next two lines of code are equivalent */
&ROW = &ROWSET.GetRow(5);
&ROW = &ROWSET(5);
GetXXX(),可以通过data buffer 中已经存在的数据实例化对象,已经包含了数据。包括
GetField,
GetRecord等。
&REC2 =
CreateRecord(EMP_CHKLST_ITM);
&RS =
CreateRowset(Record.LS_EPORT_WRK);
CreateXXX(),是通过定义的definition创建对象。其中没有数据。
CreateObject,
CreateArray,
CreateRecord
对于没有built-in 方法的对象,只能通过Session Class 创建。
属性方法和方法调用
可以通过
. 方法对象的属性或方法。这一方式是很常见的。
&MYFIELD.Visible = False
&MYROW = &MYROWSET.GetCurrEffRow();
有些对象会提供一种默认方法的方式,这样可以省略方法名直接采用对象名+参数的方法:
&FIELD = &RECORD.GetField(FIELD.EMPLID); &FIELD = &RECORD.EMPLID;
&ROWSET = GetRowSet(); /*the next two lines of code are equivalent */ &ROW = &ROWSET.GetRow(5); &ROW = &ROWSET(5);
GetRowset(SCROLL.EMPLOYEE_CHECKLIST).GetRow(1).GetRecord(EMPL_CHKLST_ITM).GetField(FIELD.NAME).Enabled = True;
GetRowset(SCROLL.EMPLOYEE_CHECKLIST)(1).EMPL_CHKLST_ITM.NAME.Enabled = True;
&temp = RECORD.JOB.IsChanged; 等价于 &temp = GetRecord(RECORD.JOB).IsChanged;
JOB.EMPLID.Visible = False; 等价于 GetField(JOB.EMPLID).Visible = False;.
对象在赋值和传递时,都是引用方式的。
Local Array of Number &A1, &A2; &A1 = CreateArray(2, 4, 6, 8, 10); &A2 = &A1;
上面代码中 &A1和&A2是指向同一个对象的:
Local Rowset &RS;
Local Record &REC;
Function Process_RowSet(&ROWSET as Rowset);
For &I = 1 To &ROWSET.Rowcount
For &J = 1 To &ROWSET.Recordcount
&REC = &ROWSET.GetRow(&I).GetRecord(&J);
&REC.Update();
End-For;
End-For;
End-Function;
&RS = GetLevel0();
Process_RowSet(&RS);
Function Get_My_Row(&PASSED_ROWSET, &PASSED_RECORD) For &ROWSET_ROW = 1 To &PASSED_ROWSET.RowCount &UNDERLYINGREC = "RECORD." | &PASSED_ROWSET.DBRecordName; &ROW_RECORD = &PASSED_ROWSET.GetRow(&ROWSET_ROW).GetRecord(@&UNDERLYINGREC); /* Do other processing */ End-For; End-Function;