`
qnsong1984
  • 浏览: 17441 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

abap中调用子程序

    博客分类:
  • Sap
阅读更多

转自:http://space.itpub.net/13946941/viewspace-468356

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

分享到:
评论

相关推荐

    ABAP 子程序及其调用

    #### 四、调用子程序 - **调用内部子程序**:使用`PERFORM &lt;subrc&gt; []`语句调用内部子程序。 - **调用外部子程序**:使用`PERFORM () [] [IFFOUND]`语句调用外部子程序。其中`&lt;prog&gt;`是包含子程序的程序名,`&lt;pass&gt;...

    ABAP程序相互调用

    在被调用的程序中,我们可以使用IMPORT关键字来导入数据。例如: ```abap IMPORT T_ITAB FROM MEMORY 'ZHR_IT0008'. ``` 三、带Select-options的Submit用法 带Select-options的Submit用法可以实现报表的参数化调用...

    ABAP子程序SUBMIT调用的方法

    这是一个ABAP子程序SUBMIT调用的方法,要根据实际灵活使用。

    ABAP關鍵字說明(E文版)

    7. **PERFORM**: 在旧式ABAP中调用子程序,现代ABAP通常使用CALL METHOD代替,如`PERFORM my_subroutine.`。 8. **SELECT**: 执行数据库查询,如`SELECT * FROM my_table INTO TABLE @lt_data.`。 9. **LOOP**: ...

    ABAP Web Dynpro调用BAPI

    - 在方法中,通过 get_child_node 方法获取上下文中的子节点,然后调用 BAPI 函数模块,传递参数并处理返回的结果。 7. **运行和测试** - 编译并运行 Web Dynpro 应用,根据视图设计与用户交互,输入必要的参数...

    ABAP程序的8种类型

    子程序是一种特殊的程序类型,这种类型的程序里只包含被外部 PERFORM 语句调用的程序块。也就是说,只包含形如 FORM ... ENDFORM 块的程序代码,从外部程序里,用 PERFORM IN PROGRAM [IF FOUND]. 来调用。子程序...

    ABAP的程序的类型

    - **FORM**:子程序,通常包含一组相关操作,可以在同一程序或其他程序中多次调用。 - **DIALOG程序**:用于处理用户界面交互的程序类型。 本篇文章将重点介绍REPORT类型的ABAP程序,并通过具体示例进行解析。 ###...

    abap 练习程序

    ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于开发和维护SAP系统中的业务应用程序。本练习程序旨在帮助学习者深入理解和掌握ABAP的基本语法、数据类型、控制结构以及与...

    abap开发入门,很好的总结

    内部子程序的源代码与调用程序位于同一ABAP/4程序中,外部子程序的源代码位于另一个ABAP/4程序中。 3. 函数模块:函数模块是存储在中央库内的特殊外部子程序,具有明确定义的接口,用于与函数模块进行数据传递。...

    ABAP中文简介-1

    ABAP/4支持子程序和功能模块的定义及调用。子程序可以有多种参数传递方式,而功能模块则是一种预定义的、有明确数据接口的子程序,可以在中央库中创建和维护,便于独立测试和复用。功能模块的设计使得调用程序和被...

    ABAP中文训练手册

    6. **模块化编程**:ABAP支持子程序、函数模块和类等模块化结构,便于代码重用和维护。 7. **OO编程**:自ABAP 7.0版本起,引入了面向对象的概念,包括类、对象、继承、多态等特性,增强了ABAP的灵活性和扩展性。 ...

    ABAP学习资料doc文档

    3. ABAP允许定义和调用子程序,甚至可以调用其他程序的子程序,通过参数传递实现数据交互。 4. 功能模块是ABAP中的一种特殊子程序,它们在中央库中集中管理,并具有明确定义的数据接口,便于测试和重用。 5. ABAP...

    abap关键字的查询帮助

    查询“PERFORM”时,可以看到如何调用子程序。这种直观的教学方式对于理解抽象概念尤其有效。 此外,ABAP还支持面向对象编程(OOP),其中包含类(Class)、对象(Object)、继承(Inheritance)、多态...

    ABAP批量创建元素程序

    1. ZSE11.txt - 这是主程序文件,可能包含了调用其他子程序的逻辑。 2. ZBATCH_CREATE_ELEMENT_TOP.txt - 顶部模块,可能包含了程序的初始化和输入处理部分。 3. ZBATCH_CREATE_ELEMENT_SEL.txt - 选择模块,负责...

    ABAP链接ORACLE案例程序

    - **调用模块**:使用`PERFORM sub_conndb USING g_conexion`来调用一个子程序,打开与Oracle数据库的连接。 - **SQL查询**:在ABAP的EXEC SQL语句中,执行了一个Oracle格式的SQL查询,从`EXP_REPORT_HEADERS`和`...

    sap abap经典中文帮助

    - FORM和ENDFORM:用于定义子程序,是ABAP中的过程结构。 - DO和ENDDO:用于循环处理,可以遍历数组或内部表。 - IF和ENDIF:定义条件块,根据条件执行不同代码。 3. **ABAP面向对象编程** - 类和对象:ABAP自...

    SAP ABAP模块化开发介绍.pptx

    在子程序中,可以使用FORM语句来定义子程序,并使用PERFORM语句来调用子程序。子程序可以传递参数,传递方式有三种:值调用、值和结果调用和引用调用。值调用是指复制一份实际参数的拷贝并保存到形式参数中,值和...

    ABAP学习手册.pdf

    * 子程序的定义和调用分别用Form/Endform和perform来实现,如果想生成子程序的代码框架,则在prefom add处双击即可。 十一、内表 * 内表有三种形式:standard table、sorted table和hashed table。 十二、程序...

    ABAP4中文培训资料

    • ABAP/4 允许您定义 和调用子程 序。也可以 调用其他程 序的子程序 。参数能够 以各种方式 从子程序传 递或传递到 子程序。 • ABAP/4 包含一种特 殊子程序, 叫做功能模 块。您可以 在中央库中 创建和维护 功能...

    abap简单递归算法

    2. **主程序**:主程序部分首先调用了递归函数`jiecheng`,传入数字10,并将结果存储到`sum_num`中。最后打印出`sum_num`的值。 3. **递归函数`jiecheng`**: - 参数:接受一个输入参数`dt_num`,并返回一个输出...

Global site tag (gtag.js) - Google Analytics