abap 子函数调用 using changing 使用 例子

abap 子函数调用  using changing 使用 例子

abap脚本:

REPORT ZYHJCALLFUNCUSINCHANG.
" USING CHANGING 不加VALUE 都改变原值
"  using VALUE 不改变原值,而CHANGING VALUE 改变原值。
DATA P1 TYPE I.
DATA P2 TYPE I.
P1 = 1.  P2 = 2.
WRITE: /'字段执行前'. WRITE: / P1,P2.

PERFORM TEST USING P1 CHANGING P2.

WRITE: /'字段执行后'. WRITE: / P1,P2.

*Form Test Using Value(p1) Changing Value(p2).  "传值,不是传地址但是返回时changeing改变。
*P1 = 3. P2 = 4 .
*Write: /'字段执行中'. Write: / P1,p2.
*Endform.
*执行结果:字段执行前
*         1           2
*字段执行中
*         3           4
*字段执行后
*         1           4


*FORM TEST USING P1 CHANGING P2 .    " "传地址,不是传值 都改变!!!
*P1 = 3. P2 = 4 .
*WRITE: /'字段执行中'. WRITE: / P1,P2.
*ENDFORM.
*执行结果:字段执行前
*         1           2
*字段执行中
*         3           4
*字段执行后
*         3           4

FORM TEST USING value(P3) CHANGING value(P4).  "传地址,虽然参数P2有改变,但是返回时仍然是按照P4返回的,
P1 = 5. P2 = 4 .      "而P4没有 改变,导致形参P2还是原来的值。
WRITE: /'字段执行中'. WRITE: / P1,p3,P2,p4.
ENDFORM.
*执行结果:字段执行前
*         1           2
*字段执行中
*         5           1           4           2
*字段执行后
*         5           2       "第一个参数P1,执行完后 为什么P1是 5 而不是 1,不是传值吗 ? 因为有这个,P1 = 5. 加之P1为成全局变量了。

*FORM TEST USING P3  value(P4).  "
*P1 = 3. P2 = 5 .      "
*WRITE: /'字段执行中'. WRITE: / P1,p3,P2,p4.
*ENDFORM.
*执行结果:字段执行前
*         1           2
*字段执行中
*         3           3           5           2
*字段执行后
*         3           5      "第二个参数执行完后 为什么P2是 5 而不是 2,这里用了USING 且有 VALUE,应该是传值啊?因为有这个,P2 = 5. 加之P2为成全局变量了。

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值