在ABAP/4 Subroutine的呼叫可分成 Internal Call和 External Call, 前者撰写在程序
中, 后者存在另一程序中, 通常为专存放Subroutine的公用程序集, 可提供结不同的
过程调用.
1.Subroutine 的宣告
FORM <subr> [<pass>].
<subroutine statement block>
ENDFORM.
2.呼叫的方法
(1).Internal Call
语法:
PERFORM <subr> [<pass>]
Example:
NUM1 = 100. NUM2 = 200.
PROFORM ADD.
FORM ADD.
SUM = NUM1 + NUM2.
WRITE: / ‘NUM1 + NUM2 = ‘,SUM.
ENDFORM.
执行结果: NUM1 + NUM2 = 300
(2).External Call 另一程序
语法:
PERFORM <subr>(<prog>) [<pass>] [IF FOUND]
<subr>:子程序名称
<prog>:存放子程序的程序名称
IF FOUND: 找到才执行
Example:
PROGRAM FORMPOOL.
FORM HEADER.
WRITE: / ‘USER NAME: ‘,SY-UNAME.
ENDFORM.
在程序中呼叫HEADER子程序
PROGRAM YTEST1.
PERFORM HEADER(FORMPOOL) IF FOUND.
(3).External Call 另一专存放子程序的程序文件
语法:
PERFORM (<fsubr>) [IN PROGRAM (<fprog>) [<pass>] [IF FOUND]
Example:
存放子程序的程序文件
PROGRAM FORMPOOL.
FORM SUB1.
WRITE: / ‘USER NAME:’,SY-UNAME.
ENDFORM.
FORM SUB2.
WRITE: / ‘HOST SERVER:’,SY-HOST.
ENDFORM.
在程序中呼叫 FORMPOOL中的SUB2 子程序
SUBNAME = ‘SUB2’.
PROGNAME = ‘FORMPOOL’.
PERFORM (SUBNAME) IN PROGRAM (PROGNAME) IF FOUND