在ABAP/4中参数的传递

在ABAP/4中参数的传递可分成 三种,地址传输、值传输、有返回值的值传输
1. Call By Reference:

传参数时将资料的存放地址(address)传至参数中, 也就是子程序中的参数变量与外部实际

变量共享地址内的值, 又称为 Call By Address, 若在子程序中地址中的值改变了, 外部实

际变量的值也会跟着改变.

语法:

FORM <subr> [USING <f1> <f2>…] [CHANGING <f1>…]

PERFORM <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

传参数时将数据的值复制一份至另一地址中, 所以在子程序中参数变量值改变, 并不会影

响外部实际变量的值.

语法:

FORM <subr> USING VALUE(<f1>…)

使用 VALUE(<f1>)表示 <f1>是 Call By Value的传递

PERFORM <subr> USING <f1>

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, 但在子程序结束执行时会将传入的参数值复制

一份传回给外部实际变量.

语法:

FORM ….. CHANGING VALUE(<f1>)

PERFORM …. CHANGING …. <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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值