转自: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
分享到:
相关推荐
#### 四、调用子程序 - **调用内部子程序**:使用`PERFORM <subrc> []`语句调用内部子程序。 - **调用外部子程序**:使用`PERFORM () [] [IFFOUND]`语句调用外部子程序。其中`<prog>`是包含子程序的程序名,`<pass>...
在被调用的程序中,我们可以使用IMPORT关键字来导入数据。例如: ```abap IMPORT T_ITAB FROM MEMORY 'ZHR_IT0008'. ``` 三、带Select-options的Submit用法 带Select-options的Submit用法可以实现报表的参数化调用...
这是一个ABAP子程序SUBMIT调用的方法,要根据实际灵活使用。
7. **PERFORM**: 在旧式ABAP中调用子程序,现代ABAP通常使用CALL METHOD代替,如`PERFORM my_subroutine.`。 8. **SELECT**: 执行数据库查询,如`SELECT * FROM my_table INTO TABLE @lt_data.`。 9. **LOOP**: ...
- 在方法中,通过 get_child_node 方法获取上下文中的子节点,然后调用 BAPI 函数模块,传递参数并处理返回的结果。 7. **运行和测试** - 编译并运行 Web Dynpro 应用,根据视图设计与用户交互,输入必要的参数...
子程序是一种特殊的程序类型,这种类型的程序里只包含被外部 PERFORM 语句调用的程序块。也就是说,只包含形如 FORM ... ENDFORM 块的程序代码,从外部程序里,用 PERFORM IN PROGRAM [IF FOUND]. 来调用。子程序...
- **FORM**:子程序,通常包含一组相关操作,可以在同一程序或其他程序中多次调用。 - **DIALOG程序**:用于处理用户界面交互的程序类型。 本篇文章将重点介绍REPORT类型的ABAP程序,并通过具体示例进行解析。 ###...
ABAP(Advanced Business Application Programming)是SAP公司开发的一种编程语言,主要用于开发和维护SAP系统中的业务应用程序。本练习程序旨在帮助学习者深入理解和掌握ABAP的基本语法、数据类型、控制结构以及与...
内部子程序的源代码与调用程序位于同一ABAP/4程序中,外部子程序的源代码位于另一个ABAP/4程序中。 3. 函数模块:函数模块是存储在中央库内的特殊外部子程序,具有明确定义的接口,用于与函数模块进行数据传递。...
ABAP/4支持子程序和功能模块的定义及调用。子程序可以有多种参数传递方式,而功能模块则是一种预定义的、有明确数据接口的子程序,可以在中央库中创建和维护,便于独立测试和复用。功能模块的设计使得调用程序和被...
6. **模块化编程**:ABAP支持子程序、函数模块和类等模块化结构,便于代码重用和维护。 7. **OO编程**:自ABAP 7.0版本起,引入了面向对象的概念,包括类、对象、继承、多态等特性,增强了ABAP的灵活性和扩展性。 ...
3. ABAP允许定义和调用子程序,甚至可以调用其他程序的子程序,通过参数传递实现数据交互。 4. 功能模块是ABAP中的一种特殊子程序,它们在中央库中集中管理,并具有明确定义的数据接口,便于测试和重用。 5. ABAP...
查询“PERFORM”时,可以看到如何调用子程序。这种直观的教学方式对于理解抽象概念尤其有效。 此外,ABAP还支持面向对象编程(OOP),其中包含类(Class)、对象(Object)、继承(Inheritance)、多态...
1. ZSE11.txt - 这是主程序文件,可能包含了调用其他子程序的逻辑。 2. ZBATCH_CREATE_ELEMENT_TOP.txt - 顶部模块,可能包含了程序的初始化和输入处理部分。 3. ZBATCH_CREATE_ELEMENT_SEL.txt - 选择模块,负责...
- **调用模块**:使用`PERFORM sub_conndb USING g_conexion`来调用一个子程序,打开与Oracle数据库的连接。 - **SQL查询**:在ABAP的EXEC SQL语句中,执行了一个Oracle格式的SQL查询,从`EXP_REPORT_HEADERS`和`...
- FORM和ENDFORM:用于定义子程序,是ABAP中的过程结构。 - DO和ENDDO:用于循环处理,可以遍历数组或内部表。 - IF和ENDIF:定义条件块,根据条件执行不同代码。 3. **ABAP面向对象编程** - 类和对象:ABAP自...
在子程序中,可以使用FORM语句来定义子程序,并使用PERFORM语句来调用子程序。子程序可以传递参数,传递方式有三种:值调用、值和结果调用和引用调用。值调用是指复制一份实际参数的拷贝并保存到形式参数中,值和...
* 子程序的定义和调用分别用Form/Endform和perform来实现,如果想生成子程序的代码框架,则在prefom add处双击即可。 十一、内表 * 内表有三种形式:standard table、sorted table和hashed table。 十二、程序...
• ABAP/4 允许您定义 和调用子程 序。也可以 调用其他程 序的子程序 。参数能够 以各种方式 从子程序传 递或传递到 子程序。 • ABAP/4 包含一种特 殊子程序, 叫做功能模 块。您可以 在中央库中 创建和维护 功能...
2. **主程序**:主程序部分首先调用了递归函数`jiecheng`,传入数字10,并将结果存储到`sum_num`中。最后打印出`sum_num`的值。 3. **递归函数`jiecheng`**: - 参数:接受一个输入参数`dt_num`,并返回一个输出...