*SUB( ) / *ENDSUB

通过 SUB 结构,用户可以在逻辑主体中的任意位置定义可重用的逻辑段,以便逻辑更易于读取和维护。

*SUB( ) 结构说明方式与多行 *FUNCTION( ) 结构相同,使用下列语法:

*SUB {SubName}({Param1,[,{Param2}…])

{body text}

{body text}

{body text}

[…]

*ENDSUB

随后在逻辑中的某个位置使用 SUB 时,其主体行插入到逻辑中,且所有值传递给已相应替换的参数。

SUB 行为与包含文件相似,可以向它传递任意数量的参数。在验证逻辑时,在逻辑的主体中插入 SUB,就如使用 *INCLUDE 指令进行添加。但使用 SUB 结构不需要任何特殊关键字。通过在行中插入 SUB 的名称,后接分配到其参数的值(以括号括起来),可以调用 SUB。与包含文件的其他重要区别是,SUB 不需要在它的自有文件中写入,但可以在逻辑的任何段写入,更类似于 FUNCTION

示例

在此处定义 SUB:

*SUB MYSUB(Param1,Param2,Param3,Param4)

[%ACCOUNT_DIM%].[#Param1]=[%ACCOUNT_DIM%].[Param2]+[%ACCOUNT_DIM%].[Param3]

[%ACCOUNT_DIM%].[#Param4]=[%ACCOUNT_DIM%].[#Param1]*[%ACCOUNT_DIM%].[Factor_Param4]

*ENDSUB

在此处使用 SUB:

MySub(A1,B1,C1,D1)

MySub(A2,B2,C2,D2)

MySub(A3,B3,C3,D3)

FUNCTION 相似,SUB 对位置不敏感,可以在逻辑中的任意位置进行定义,如果需要,还可以存储在随后必须使用 INCLUDE 指令与逻辑合并的单独库文件中。

SUB 可以在逻辑的任意 Commit 段中使用,无需在每个段中重新定义。但如果在逻辑文件中重新定义 SUB,那么它的新定义适用于符合重新定义的所有行。

支持无参数的 SUB,但其后必须始终跟有括号。

“本文档中包括的任何软件编码和/或代码行/字符串(“代码”)仅为示例,不可用于生产系统环境中。”“代码仅为更好、更直观地解释特定编码的语法和语法规则。”SAP 不担保本文中代码的正确性和完整性,且 SAP 不对因使用代码而造成的错误或损害负责,除非这些损害是由 SAP 故意或因其重大疏忽所造成。