*& 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語句從簇數據庫中刪除數據簇。
