在ABAP编程中,有效地在程序之间传递数据是实现功能的关键。本文档将介绍两种常用的数据传递方法:EXPORT/IMPORT和SPA/GPA参数,并提供实际示例。
1. 使用EXPORT/IMPORT数据(ABAP/4内存)
EXPORT/IMPORT语句允许程序在ABAP/4内存中存储和检索数据字段。这种方法适用于程序内部以及被调事务、报表或其他模块之间的数据传递。
如何使用EXPORT/IMPORT:
EXPORT数据:
EXPORT <OBJECT1> <OBJECT2> ... <OBJECTN> TO MEMORY ID <ID-NAME>.
这将数据存储在内存中,全局有效。
IMPORT数据:
IMPORT <OBJECT1> <OBJECT2> ... <OBJECTN> FROM MEMORY ID <ID-NAME>.
这将从内存中检索数据。
注意事项:
使用EXPORT时,如果多次输出同一对象到同一ID,会覆盖内存中的第一个版本。
对于外部应用程序,不推荐使用EXPORT/IMPORT,因为这些应用程序无法找到调用所需的接口。
示例:
程序A : 将参数导出数据到内存
REPORT ZDEMO_EXPORT.
DATA: lv_name TYPE string,
lv_age TYPE i.
START-OF-SELECTION.
" 设置数据
lv_name = 'John Doe'.
lv_age = 30.
" 导出数据到内存
EXPORT lv_name lv_age TO MEMORY ID 'ZDEMO_USER_DATA'.
程序B : 从内存中获取之前导出的数据
REPORT ZDEMO_IMPORT.
DATA: lv_name TYPE string,
lv_age TYPE i.
START-OF-SELECTION.
IMPORT lv_name lv_age FROM MEMORY ID 'ZDEMO_USER_DATA'.
" 在屏幕上显示导入的数据
WRITE: / 'Name: ', lv_name, ' Age: ', lv_age.
先执行程序A后再执行程序B ,程序B的执行结果如下:
2. 使用SPA/GPA参数传递数据
SPA/GPA参数是全局保存在内存中的字段值,适用于用户会话期间的数据传递。有两种方法使用SPA/GPA参数:
通过屏幕制作器设置字段属性:在屏幕制作器中,设置字段属性为“SET参数”或“GET参数”,并指定“参数ID”。
使用SET PARAMETER和GET PARAMETER语句:这些语句用于显式存储和检索SPA/GPA值。
示例:
程序A : 将参数保存到参数ID:
REPORT ZDEMO_SET_ID.
DATA :REPORTID(20).
REPORTID = 'YDMMR140' .
SET PARAMETER ID 'RID' FIELD REPORTID.
WRITE :/10 'REPORTID VALUE :', REPORTID.
程序B : 从参数ID中获取数据:
REPORT ZDEMO_GET_ID.
DATA :REPORTID(20).
GET PARAMETER ID 'RID' FIELD REPORTID.
WRITE :/10 'REPORTID VALUE :', REPORTID.
先执行程序A再执行程序B后,结果如下: