模块化程序
1.子程序概要
定义:把有具体功能的代码集合在一起的程序块,可以重复使用。
2.子程序定义
FORM ENDFORM定义;
PERFORM调用;
命名:动词+宾语。
3.子程序参数
实参:调用子程序时使用;
虚参:在子程序中使用;
分类:USING、CHANGING。
例子:
(1)传递参数的方法
Call by Value:使用USING关键字传递时与VALUE语句一起搭配使用。
注:实参和虚参占有自己单独的内存空间,改变虚参的值不会影响实参。
Call by Reference:使用CHANGING关键字传递参数的情况。
注:虚参没有自己的内存空间,只是在调用子程序时占用实参的地址,改变虚参的值会影响实参。
区别:若在子例程FORM语句中不使用VALUE语句,则USING与CHANGING语句功能是相同的,将USING代表传递数据,CHANGING代表传递数据后变更其值。
为了避免发生实参值在调用子程序后不被修改的情况,当使用USING时要与VALUE语句搭配使用,无法修改实参值。
Call by Value and Result:
当CHANGING语句和VALUE语句搭配使用时,会修改实参值。
(2)定义参数类型
子例程中的虚参可以利用TYPE与LIKE语句定义所有的ABAP数据类型。若不明确指定类型,则被定义为Generic类型,继承实参的技术属性。
虚参的定义方法有如下三种:
(3)参数与结构体
当结构体当作参数使用时,不仅能使用TYPE、LIKE语句定义,还可以使用STRUCTURE语句定义结构体类型。