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