此博客为原创博客,都是个人工作经历所得,转载请注明出处

SMARTFORM 传值的4种方法

*& 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语句从簇数据库中删除数据簇。

 

posted @ 2017-11-04 15:17  Rainystuday  阅读(1934)  评论(0编辑  收藏  举报