本片文章主要讲一些PeopleCode的基础知识,后面会有PeopleCode练习的篇章
(1)PeopleCode中的对象
Record Field
Component Record Field
Component Record
Component
Page
Menu Item 几乎用不到
注意:我们在写代码的时候优先级是从下往上的,可以在Component Record中写的不在Record中写,因为如果你把Code写在Record中,别人用这个Record时也会执行该Code,除非你的Code在所有用到这个Record时都可以用到,否则不建议使用。
(2)PeopleCode中的事件
(a)下面是PeopleCode中的所有事件
(b)下面是用户更改FIELD后触发的事件顺序
(c)用户点击Save按钮时触发的事件顺序
(d)FieldEdit VS FieldChange
FieldEdit比FieldChange先触发,并且是所有Field的FieldEdit事件触发完之后才触发FieldChange事件
一边情况,数据校验类型的code会放在FieldEdit事件中去写,按钮点击等方法会在FieldChange事件中去写。
FieldEdit事件会根据代码执行情况对当前字段进行特殊标记
(e)SaveEdit VS SavePreChange VS SavePostChange
触发的顺序是SaveEdit>>SavePreChange>>SavePostChange,并且是所有Field的某个事件都触发完之后再触发下一个事件
SaveEdit一般是在保存前字段信息校验时写在该事件中;SavePreChange保存在数据库之前进行数据合法性校验,比如已有该员工身份证号则不能录入;SavePostChange一般是保存到数据库之后触发,比如保存到数据库后给用户一个友好型提示。
分隔符:PeopleCode和大多数编程语言一样都是用分号(;)结束的
赋值语句:Varname = expression
数据声明:数据范围 数据类型 变量名
例如:
Local number #
Local Field &DATE;
Local array of number &AN;
条件语句:
if 条件 then
语句;
end-if;
Evaluate left_term
When [relop_1] right_term_1 [statement_list] . . .
When [relop_n] right_term_n [statement_list]
[When-other [statement_list]]
End-evaluate;
循环语句:
Repeat statement_list
Until ;
While
statement_list
End-while;
For <&var>= to <end-value> [Step i];
statement_list
End-for;
PeopleCode的数据类型:加粗的是常用的数据类型
Any、String、Boolean、Number、Float、Integer、Date、DateTime、Time
用户自定义常量:constant &str = “A”;
用户自定义变量:Local Field &DATE;
&DATE = GetRecord(RECORD.DERIVED_HR);
变量有效范围:
Global: 全局变量,在整个session中有效
Component: 在被激活的Component中包含的所有页面有效
Local: 在被定义的程序段或函数中有效
常用系统变量:
%Date 当前时间
%EmployeeId 当前登录员工id
运行操作:
数学运算:+ - * /
日期和时间的运算:
Time +/- Number (seconds) = Time
Time – Time = Number (seconds)
Date +/- Number (days) = Date
Date – Date = Number (days)
Date + Time = Datetime (Date and Time combined)
字符串连接运算: |
@ 操作.
比较操作: >,=,<,>=,<=,<>
逻辑操作: And, Or, Not
PeopleCode的函数
Function_name([parameter-list]);
PeopleCode 中使用的函数
Build-in函数 (不用声明,直接使用)
Internal 函数 (在Peoplesoft程序中声明、定义的函数).
External PeopleCode (defined outside the calling program-generally contained in record definitions serving as function libraries)
External non-PeopleCode(外部函数)
常用的系统Build-in函数
Warning
Error
All
None
GetLevel0
GetRowSet
GetRow
SQLEXEC
自定义函数的声明:
在Formula事件中定义函数
格式:
Function name [(paramlist)] [Returns data_type]
[statements]
End-function
PeopleCode中的注释:
单行注释: REM XXXXXXXX ;
多行注释: <*
XXXX
XXXXX
XXXXX
*>
多行注释: /* XXXXXXXX */