子程序:
参数:
参数(Parameter)是指调用子程序时用于传入、传出的值。子程序中的参数与一般用 DATA语句定义的局部变量相同。调用子程序时使用的参数叫实参(Actual Parameter),在子程序中使用的参数叫虚参(Formal Parameter)。PERFORM 利用 USING、CHAING 定义参数,且使用时要与子程序的顺序一致。参数可以使用 ABAP 的所有对象,即基本数据类型、Field Smbol、内表等。
传递参数的三种方法:
- Call by value:
传入参数即实参(Actual Parameter)与传出参数即虚参(Formal Parameter)有不同的物理内存。
VALUE 语句中虚参(FormalParameter)占用自己的单独内存。调用子程序时,实参(ActualParameter)值复制到虚参中,即使改变虚参的值也不会影响实参值。
- Call by reference:
共有相同的物理内存并且互相传递地址。
子程序的虚参没有自己的内存空间。只是在调用子程序期间占用实参的地址。即在调用Subroutine 的程序的内存地址(相同名字的变量)中进行工作。
- Call by Value and Result:
传入传出变量语句执行成功时返回变更后的值。拥有不同的物理地址。
USING 语句与VALUE 语句一起搭配使用,则无法修改子程序中的实参值(Call by value),但是 CHANGING 语句与 VALUE 语句一起配套使用时,当正常结束子程序时会修改实参值练习做一个定义整数类型的3 个变量后,在FORM语句内执行加法的程序。
调用子程序:
程序内部调用子程序
程序外部调用子程序
动态调用子程序
Abap循环语句:
- DO~ENDDO 循环语句
是可以指定循环次数的语句,若不指定次数,则会无限执行循环,当前循环次数保存在系统变量 SY-INDEX 中。
- WHILE~ENDWHILE
循环语句当WHILE 语句的表达式结果为真时反复持续循环。当前循环次数保存在系统变量 SY-INDEX 中。
- LOOP~ENDLOOP
循环语句按顺序依次循环内表,将读取内表行数据保存到工作区或者表头的循环语句。当前循环次数保存在系统变量 SYINDEX 中。SY-TABX 表示内表的当前行数。
结束子程序:
子程序遇到 END FORM语句就正常结束。此外,还可以利用 EXIT、CHECK 语句强制在执行过程中结束此子程序。遇到 EXIT 语句会直接跳出子程序,遇到 CHECK 语句时,判其值结果为假时不执行后续操作会跳出子程序。
Abap条件语句:
- IF~ENDIF 分歧语句
比较条件语句中的逻辑值,当值为真时执行里面语句并跳出此语句块
- CASE~ENDCASE 分歧语句
一个变量有多个值时,根据每个值执行不同操作时使用的语句。
Function:
函数(Function Module) 是储存在中央库 (R/3 Repository)中的特殊全局子程序。在一个程序中多次使用相同功能的语句会增加代码量,另外有修改需求时要修改多处,因此效率低。此时使用函数将代码模块化就可以实现代码重复利用,从而减少代码量。
- 传入参数
往函数里传入值的参数,是可选项。
- 传出参数
从函数往 ABAP 程序里传递值的参数,也是可选项。传入/传出参数可以往函数里传值并且改变其值再传出。
- 表(Tables)
可以往函数传入/传出内表。
- 例外处理
Function模块是具有全局可见性的函数,需要在function group中定义并使用。
T-CODE:SE37
搜索帮助:
Search Help 是在屏幕上面为用户提供查询输入值的SAP标准功能
定义搜索帮助使用到的T-CODE:SE11
未使用搜索帮助,字段输入的时候需要用户手写