ABAP中USING与CHANGING的用法
来源:互联网 发布:vb编程软件 编辑:程序博客网 时间:2024/05/16 12:02
在ABAP/4中参数的传递可分成
1. Call By Reference:
传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实际变量的值也会跟着改变.
语法:
PERFORM <subr> [USING <f1> <f2>…] [CHANGING <f1>…]
FORM <subr> [USING <f1> <f2>…] [CHANGING <f1>…]
Using 之后接在子程序中不会改变的变量, CHANGING接会改变值的变量
但实际上USING之后的参数在子程序中也可将值改变
Example:
SUM = 0.
NUM1 = 100. NUM2=200.
PERFORM ADD USING NUM1 NUM2 CHANGING SUM.
WRITE: / NUM1,NUM2,SUM “SUM 由 0 变成 300
FORM ADD USING NUM1 NUM2 CHANGING SUM.
SUM = NUM1 + NUM2.
ENDFORM.
执行结果: 100 200 300
2. Call By Value
传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影响外部实际变量的值.
语法:
PERFORM <subr> USING <f1>
FORM <subr> USING VALUE(<f1>…)
使用 VALUE(<f1>)表示 <f1>是 Call By Value的传递
Example:
SUM = 0.
NUM1 = 5.
PERFORM MULTI USING NUM1 CHANGING SUM.
WRITE: / NUM1,SUM “NUM1值还是5, SUM 由 0 变成 120
FORM MULTI USING VALUE(NUM1) CHANGING SUM.
SUM = 1.
WHILE NUM1 > 1
SUM = SUM * NUM1.
NUM1 = NUM1 – 1.
ENDWHILE.
ENDFORM.
执行结果: 5 120
3. Call By Value and Return Result
传入参数值的方式同Call By Value, 但在子程序结束执行时会将传入的参数值复制一份传回给外部实际变量.
语法:
PERFORM …. CHANGING …. <f1>
FORM ….. CHANGING VALUE(<f1>)
Example:
SUM = 0.
NUM1 = 100. NUM2=200.
PERFORM ADD USING NUM1 NUM2 CHANGING SUM.
WRITE: / NUM1,NUM2,SUM “SUM 由 0 变成 300
FORM ADD USING NUM1 NUM2 CHANGING VALUE(S).
S = NUM1 + NUM2.
WRITE: / NUM1,NUM2,SUM “得到结果为 100 200 0
ENDFORM.
执行结果: 100 200 0 “在子程序中 SUM值尚未改变
100 200 300 “返回程序时, 将变量 S的值复制给 SUM
1. Call By Reference:
传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实际变量的值也会跟着改变.
语法:
PERFORM <subr> [USING <f1> <f2>…] [CHANGING <f1>…]
FORM <subr> [USING <f1> <f2>…] [CHANGING <f1>…]
Using 之后接在子程序中不会改变的变量, CHANGING接会改变值的变量
但实际上USING之后的参数在子程序中也可将值改变
Example:
SUM = 0.
NUM1 = 100. NUM2=200.
PERFORM ADD USING NUM1 NUM2 CHANGING SUM.
WRITE: / NUM1,NUM2,SUM “SUM 由 0 变成 300
FORM ADD USING NUM1 NUM2 CHANGING SUM.
SUM = NUM1 + NUM2.
ENDFORM.
执行结果: 100 200 300
2. Call By Value
传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影响外部实际变量的值.
语法:
PERFORM <subr> USING <f1>
FORM <subr> USING VALUE(<f1>…)
使用 VALUE(<f1>)表示 <f1>是 Call By Value的传递
Example:
SUM = 0.
NUM1 = 5.
PERFORM MULTI USING NUM1 CHANGING SUM.
WRITE: / NUM1,SUM “NUM1值还是5, SUM 由 0 变成 120
FORM MULTI USING VALUE(NUM1) CHANGING SUM.
SUM = 1.
WHILE NUM1 > 1
SUM = SUM * NUM1.
NUM1 = NUM1 – 1.
ENDWHILE.
ENDFORM.
执行结果: 5 120
3. Call By Value and Return Result
传入参数值的方式同Call By Value, 但在子程序结束执行时会将传入的参数值复制一份传回给外部实际变量.
语法:
PERFORM …. CHANGING …. <f1>
FORM ….. CHANGING VALUE(<f1>)
Example:
SUM = 0.
NUM1 = 100. NUM2=200.
PERFORM ADD USING NUM1 NUM2 CHANGING SUM.
WRITE: / NUM1,NUM2,SUM “SUM 由 0 变成 300
FORM ADD USING NUM1 NUM2 CHANGING VALUE(S).
S = NUM1 + NUM2.
WRITE: / NUM1,NUM2,SUM “得到结果为 100 200 0
ENDFORM.
执行结果: 100 200 0 “在子程序中 SUM值尚未改变
100 200 300 “返回程序时, 将变量 S的值复制给 SUM
“所以 SUM值变成 300
阅读全文
0 0
- ABAP中USING与CHANGING的用法
- ABAP中USING与CHANGING的用法
- ABAP中USING与CHANGING的用法
- ABAP中USING与CHANGING的用法
- ABAP中 PERFORM USING与CHANGING的用法
- ABAP using 和 changing 的使用方法
- ABAP using 和 changing 的使用方法 .
- abap的子程序参数 USING 和 CHANGING 使用问题
- ABAP中COLLECT的用法
- ABAP中Collect的用法
- abap中VIEW_MAINTENANCE_GIVEN_DATA的用法
- abap中VIEW_MAINTENANCE_CALL的用法
- C++/cli中 using与import 的用法
- c#中using的用法
- C#中using的用法
- c#中Using的用法
- c#中using的用法
- C#中using的用法
- iOS
- 数据连接池(数据源)的配置方法
- 自定义标题栏
- 用户添加
- jquery-属性操作
- ABAP中USING与CHANGING的用法
- 综合(侧拉+TabLayout+ListView+t跳转+轮播+GridView)
- html5/Css 聊天框素材
- 0921 PL/SQL
- Unity 渲染教程(十四):雾
- centos6.5编译安装mysql5.6
- okhttp封装okhttp-utils
- 3秒倒计时跳转页面
- Android:这是一份全面 & 清晰易懂的Application类使用指南