本篇文本將以一個小實例來介紹如何創建SMARTFORM並在ABAP代碼中調用SMARTFORM。
首先還是先看下要實現的SMARTFORM報表的最終預覽效果:
從圖中我們可以看出這張報表包含一個表頭TITLE,一張LOGO,日期頁碼及一張TABLE。
所以,先創建一個STYLE命名為ZS_FLIGHT。創建完后進入頁面在左邊的樹形菜單找到“PARAGRAPH FORMATS”並右擊選擇“CREATE NODE”,輸入節點名稱“PT”,然后進行相關設置:
接着在“CHARACTER FORMAT”處右鍵,選擇"CREATE NODE"創建一個節點“CT”,設置字體樣式,
相關的設定就做的差不多了。你也可以多定義幾種風格樣式。這都是沒有問題的。最后點擊火柴棒激活樣式。
由於本報表程序是由外部程序將內表數據導入,再由FORM邏輯來生成報表。所以先創建一個結構(STRUCT:ZSFLIGHTIN)結構如下表格所示,
Component | Component Type | Data Type | Length | DECIMAL PLACES | SHORT TEXT | REFERENCE TABLE | REFERENCE FIELD |
CARRID | S_CARR_ID | CHAR | 3 | 0 | 航線承運人ID | ||
CARRNAME | S_CARRNAME | CHAR | 20 | 0 | 航班名稱 | ||
CARRCODE | S_CURRCODE | CUKY | 5 | 0 | 航班的本地貨幣 | ||
URL | S_CARRURL | CHAR | 255 | 0 | |||
PRICE | S_PRICE | CURR | 15 | 2 | 航空運費 | SFLIGHT | CURRENCY |
PLANETYPE | S_PLANETYE | CHAR | 0 | 飛機類型 | |||
SEATSMAX | SEATSMAX | INT4 | 10 | 0 | 最大容量 |
由於PRICE是CURR類型的,所以在創建STRUCT的時候要對其參考表及參考字段進行設置,具體找法如下:
1.SE11打開SFLIGHT這個數據表
2.找到PRICE字段,如下圖:
3.雙擊PRICE字段在彈出的窗口中可以找到其引用的表及字段並將其信息寫入相應的引用欄內如下:
最后,記得激活你創建的結構,這很重要。
此時我們返回SMARTFORM創建一個名有“ZS_SFLIGHT”的報表程序,如下圖,做相關設置。
由於報表數據是從ABAP內表中導入的,所以在"FORM INTERFACE"添加表類型參數引用上面創建的STRUCT,如下。
接着在左邊樹形菜單“PAGE”處右擊,創建一個"WINDOW",如下所示:
並將其命名為“HEADER”,如下所示:
可以打開表格繪制器對窗體進行拖拉到合適的位置,就像.NET WINFORM拖拉控件那樣簡單。
接着在"PAGE"上右鍵,在聯級菜單中選擇CREATE GRAPHIC命令,新增一個圖標對象,並在右邊屬性窗口是將其命名為LOGO及設置圖片信息。打開圖形編輯器將名為"LOGO"的圖片拖動到右上角。
這樣就做完了LOGO的設置了,接着在HEADER處右鍵選擇CREATE-->TEMPLATE通過使用SMARTFORM提供的模板工具來設置表格。並將其命名為“HEADER_TEMPLATE”。
TEMPLATE的主要屬性如下:
1.WIDTH(寬度):模板寬度,該寬度等於各字段寬度和,必須小於或等於WINDOW的寬度。
2.HORIZONTAL ALIGNMENT(水平對方):水平對齊方式,可設置偏移位置大小。
3.VERTIAL ALIGMENT(垂直對方):設置垂直位置對齊方式。
4.TABLE PAINTER(表繪制工具):通過圖形界面繪制表格(在繪圖界面可以用等也可以右鍵操作,右鍵可操作性強些)。
表格部分即為模板具體字段設置
1.NAME(名稱):設置模板格式名,一個模板可以有多個格式,分布在對應表格的不同行。
2.FROM/TO(從/至):設置某模板格式具體行數,即輸出表格行數。
3.REFERENCE(參考):參考一個模板格式名稱建立新的模板格式。
4.HEIGHT(高度):某模板高度,即表格行高度。
5.1.2...:具體字段名及其寬度,一個模板可以有多欄,單擊向“右箭頭”圖標可按需求增加字段,名字段寬度和必須等於模板寬度。
6.UNIT/UNIT OF MEASURE(單位):用於設置高度及寬度的單位。