ABAP中USING与CHANGING的用法
在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
“所以 SUM值变成 300
ABAP中USING与CHANGING的用法相关推荐
- ABAP中 PERFORM USING与CHANGING的用法
ABAP中FORM参数的传递有以下几种方式. 1.引用传递(CALL BY REFERENCE) 传递参数时将参数的地址(ADDRESS)传至子程序中,也就是子程序中的参数变量与外部程序的参数变量共享 ...
- ffmpeg重采样中swr_convert和swr_get_out_samples的用法
ffmpeg重采样中swr_convert和swr_get_out_samples的用法 在做mux的时候关于重采样可以用fifo,或者audiofifo做缓存处理,当做demux的时候关于重采样就可 ...
- ABAP中生成GUID、UUID的方法汇总
GUID(Globally Unique Identifier)全局唯一标识符,其广泛应用于各种程序中,在一些场景下,我们经常使用GUID作为主键.那么,在ABAP中,生成GUID的方式有哪些呢? 1 ...
- @ini_get php,php中get_cfg_var()和ini_get()的用法及区别_php技巧_脚本之家
本文实例讲述了php中get_cfg_var()和ini_get()的用法及区别.分享给大家供大家参考.具体分析如下: php里get_cfg_var()和ini_get()都是取得配置值的函数,当你 ...
- java7 javascript引擎_Java7中脚本引擎的一般用法,共三种方法获得JavaScript引擎:名称、文件扩展名、MIME类型 | 学步园...
package com.sino.java7; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; i ...
- Oracle中INSTR和SUBSTR的用法
2019独角兽企业重金招聘Python工程师标准>>> Oracle中INSTR和SUBSTR的用法 Oracle中INSTR的用法: INSTR方法的格式为 INSTR(源字符串, ...
- python threading join_Python中threading模块join函数用法实例分析
本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后joi ...
- sklearn中cross_val_score、cross_val_predict的用法比较
sklearn中cross_val_score.cross_val_predict的用法比较_程大海的博客-CSDN博客_cross_val_predict
- MapInfo中常用查询函数及用法
MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...
最新文章
- [转]预备知识—程序的内存分配
- 双轴机械臂调试:步进电机42HS348E,BH32角度传感器,MCU:STC8H1K28
- 在线html差错,易查分在线编辑功能:发现错误随时修改,不用再重新上传表格!
- Android数据库Realm实践
- qt实现QLabel上显示的文字有描边
- 调用discuz编辑器发布帖子显示html代码的解决办法
- 独家对话谢宝友:做一款类似于 Linux 的国产操作系统 | 人物志
- 软考网络规划设计师考试要求
- Tensor flow 实战Google深度学习框架 笔记摘要Pfour
- ug产品摆正高级技巧_UG8.0工件怎么摆正角度教程?
- 接口测试面试题及参考答案,轻松拿捏面试官
- 网线制作IP组网(基于华为eNSP模拟器)
- 关于Olly Dbg的使用报告
- 辽宁省计算机设计大赛三等奖英语,我校在2018年辽宁省大学生计算机设计大赛中取得佳绩...
- 凭证录入模板-检查核算项目研发项目是否录入
- 盘点Linux操作系统的十大版本
- java会导致蓝屏么_原来有这么多原因会导致电脑蓝屏啊
- 群晖NAS教程(二十二)、利用Docker安装minio
- 银联小微商户_银联旗下银联小微商户“静态码收款限额调整
- 小学生计算机课的演讲稿,小学生课前三分钟演讲稿范文5篇