peoplecode 定义的名字引用
定义的名字引用是一种特殊的表达式,应用peopletools中的定义的名字,例如record,page,component,business interlink等等。语法上,一个定义的名字引用包括一个保留字指定定义的类型,然后跟着一个点号,后面再跟着peopletools的定义。例如:RECORD.BUS_EXPENSE_OER就是引用定义名BUS_EXPENSE_PER。
通常情况,定义的名字引用作为参数传递给函数。如果在类似函数试图传递一个字符串常量去替换定义的名字引用,那么会报语法错误。
我们也能在函数参数列表外使用定义的名字引用,例如在比较中:
if (%Page = PAGE.SOMEPAGE) Then
/*do stuff specific toSOMPAGE*/
end-if;
在这些情况下,定义的名字引用是作为字符串常量的值的。使用这种方式去替代字符串可以使我们在定义名称被修改时更易维护代码。
在peoplecode编辑器中,当我们用光标在任何定义上点击右键时,我们能选择查看定义去打开这个定义。
此外,对于大多数定义,如果明文指定的定义没有在peoplesoft application designer中创建,那么在保存程序的时候就会有错误信息报出。
合法和非法的定义名称
合法的定义名称,包含你当前Windows下的字母数字和字符#,@,$,_.
在一些情况下,定义也支持使用其他字符。例如,有一个菜单叫A&M,存储在菜单定义中,即使&是定义时的非法的字符当我们校验语法或者试图保存peoplecode时,非法的字符会导致报错。
以下两种方式避免问题发生:
- 重命名该定义以便它只包含合法字符
- 使用引号将定义名引起来,例如:ITEMNAME.“A&M”
第二种方法是目前遇到定义中有非法字符时普遍采用的变通方式。如果使用这种符号法,该定义名的引用不会视为字符串常量;peopleTools以维护其他定义名字引用相同方式维护该引用。
**注意:**如果定义名以数字开头,那么当我们使用该定义名引用时必须使用引号将该名称引用起来。例如:Component.“1_DISCPLIN_ACTN”。