有很多方式向一个被调用的程序传递数据
1,通过被调用程序的接口(subroutine的接口,FM,标准选择屏幕等)
2,通过ABAP MEMORY
3,通过SAP MEMORY
4,通过数据库表
5,通过应用服务器或者前台的文件
使用EXPORT ... TO MEMORY ID <id>语句,可以复制当前程序变量的值作为一个DATA CLUSTER存储到ABAP MEMORY,ID最大32字符长,能够唯一识别这个DATA CLUSTER。EXPORT到同一个ID会覆盖掉相应的DATA CLUSTER。
使用IMPORT ... FROM MEMORY ID <id>语句,可以把数据从DATA CLUSTER中读到ABAP程序相应的变量中去。
当导入和导出的时候,源和目标变量必须格式一致。
使用FREE MEMORY ID <id>会删除相应的DATA CLUSTER,使用FREE MEMORY语句(不带ID附件条件)将会删除当前的external session中的整个的ABAP MEMORY.
SAP MEMORY可以用语句GET PARAMETER ID <id> FILED <fld>和SET PARAMETER ID <id> FILED <fld>来读和写。你可以在TPARA表中自己定义PARAMETER ID,但是ID的名字不可以超过20个字符长。
SAP MEMORY用的最多的情况还是在屏幕上,如果你想屏幕上的一个输入字段能够自动显示SAP MEMORY中相应PARAMETER ID的值,并把它作为建议用户输入的值,那么必须满足几个条件:
-屏幕输入字段对应的DATA ELEMENT必须和这个PARAMETER ID关联;
-屏幕输入字段的GET PARAMETER ID功能必须激活;
-程序中不会有地方来改变这个输入字段,意思就是这个输入字段在程序中的值是其初始值。
我们经常用下面的语句通过SAP MEMORY来向屏幕传递数据
SET PARAMETER ID <id> FIELD <fld>.
CALL TRANSACTION <tcode> AND SKIP FIRST SCREEN.
SAP MEMORY和ABAP MEMORY的适合使用的地方:
SAP MEMORY适合不同external session之间的internal session间的传递数据(数据量太大的情况下考虑用簇表)
ABAP MEMORY适用同一个external session间的不同internal session间的传递数据(注意LEAVE TO TRANSACTION <tcode>不适用)