*& 20161019 160300
smartform传值的方法
- 1.通过结构 传值;
最通常的用法是通过SE11中建立STRUCTURE XXX(表则没用),
在REPORT中申明此结构的数据类型,在SMARTFORMS中的FORM接口
申明同样的结构后就可以传值了(itabTYPE XXX)
- 2.Fieldsimble 传值;
DATA:FIELD(100).
FIELD-SYMBOLS:<FS_PRINT> TYPE ANY,
<FS_ITEM> TYPE ANY.
FIELD = '(ZZCPPRP_0018)GS_ALV'. "zx为程序名,output为内表名
ASSIGN (FIELD) TO <FS_PRINT>.
IF SY-SUBRC EQ 0.
* WA_PRINT = <FS_PRINT>."notes:dump 【Operation not supported for incompatible data objects.
MOVE-CORRESPONDING <FS_PRINT> TO GS_HEAD.
ENDIF.
FIELD = '(ZZCPPRP_0018)GT_ITEM'.
ASSIGN (FIELD) TO <FS_ITEM>.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING <FS_ITEM> TO GT_ITEM.
ENDIF.
Step1.创建FORM (需求:打印页面格式, 横打/竖打, 字体有无特殊要求, 有无图片 )
2.设置页格式 和 样式
3.如果不是用自建表传值, 表格接口可以不用修改
4.使用 Field-symble 指针方式传值,全局定义中设置,
FORM 类型中参考结构定义和程序的打印内表保持一致
动态赋值, 注意输入输出参数
然后,就是FORM 中表头,表身,表尾 的设计
- 3.通过SAP内存( export,import )传值;
SAP内存语句含义:
使用EXPORT TO MEMORY语句在内存中存储数据对象。
使用IMPORT FROM MEMORY语句从内存中读取数据对象。
使用FREE MEMORY语句从内存中删除数据簇。
若是传递一两个很单一的变量,比较简单的做法是在REPORT程序中用EXPORT,在SMARTFORMS中用IMPORT。
IMPORT和EXPORT我们一般能不用就不用,后续维护难以跟踪。
- 4.通过数据库中的簇数据库方式
SAP数据库中的簇数据库语句含义:
使用EXPORT TO DATABASE语句将数据对象存储到簇数据库中。
使用IMPORT FROM DATABASE语句为数据簇生成目录表,并从簇数据库中取数据对象。
使用DELETE FROM DATABASE语句从簇数据库中删除数据簇。