abap的子程序参数注意点

 

1、参数引用传递(Parameters Passed by Reference)
使用USING或CHANGING不带value关键字来声明参数引用传递。代码样例:
FORM subr USING    p1 [{TYPE type}|{LIKE field}]
                   p2 [{TYPE type}|{LIKE field}]
                   ...
          CHANGING p1 [{TYPE type}|{LIKE field}]
                   p2 [{TYPE type}|{LIKE field}]
                   ...
在引用传递的方式,参数不在堆中占有内存,传入的是变量的地址,在子程序中对变量的修改实际上是对实际参数的修改。在这种方式using和changing是等价的。

2、输入参数传值传递(Input Parameters That Pass Values)
使用USING带value关键字来声明输入参数传值传递。代码样例:
FORM subr USING    value(p1) [{TYPE type}|{LIKE field}]
                   value(p2) [{TYPE type}|{LIKE field}]
                   ...
在输入参数传值传递的方式,参数在堆中占有内存,传入的是变量的值,在子程序中对变量的修改不会对实际参数的造成修改。

3、输出参数传值传递(Output Parameters That Pass Values)
使用USING带value关键字来声明输入参数传值传递。代码样例:
FORM subr CHANGING    value(p1) [{TYPE type}|{LIKE field}]
                   value(p2) [{TYPE type}|{LIKE field}]
                   ...
在输出参数传值传递的方式,形式参数在堆中占有内存,传入的是变量的值,在子程序中对变量的修改只有正常结束 (Endform,CHECK,EXIT等语句结束)时才会有形式参数拷贝到对实际参数,如果是错误消息退出则不会影响实际参数。

***************************其它知识点**************************************************************

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
    评论
ABAP(Advanced Business Application Programming)是一种用于编写SAP应用程序的编程语言。在ABAP中,可以通过查看程序资源占用来了解程序的性能和效率。 要查看ABAP程序的资源占用情况,可以使用SAP内置的性能分析工具。以下是一些常用的方法和工具: 1. ABAP Trace:ABAP跟踪是SAP提供的一种工具,用于记录ABAP程序的执行过程,并提供详细的性能分析报告。通过ABAP跟踪,可以查看程序的执行时间、数据库读取次数、CPU使用情况等信息,以确定程序的瓶颈所在。 2. SQL Trace:SQL Trace是一种跟踪数据库执行的工具,可以记录程序执行期间所有的数据库操作。通过SQL Trace,可以查看程序执行期间的SQL语句执行时间、数据读取次数等信息,以帮助确定数据库操作的效率。 3. ABAP程序检查:ABAP程序检查是SAP提供的一种静态代码分析工具,可以检查ABAP程序的质量和性能问题。通过ABAP程序检查,可以找到代码中的潜在性能问题,如循环过多、重复的数据库查询等,从而提高程序的性能和效率。 4. ABAP性能优化建议:SAP还提供了一些性能优化建议,可以帮助开发人员改进ABAP程序的性能。这些建议包括使用合适的数据库查询语句、尽量减少数据库访问次数、优化循环和条件语句等。 通过上述方法和工具,开发人员可以详细分析ABAP程序的资源占用情况,找到程序的性能瓶颈,并采取相应的优化措施,从而提高程序的效率和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值