本篇文本将以一個小執行個體來介紹如何建立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
航線承運人ID
CARRNAME
S_CARRNAME
20
航班名稱
CARRCODE
S_CURRCODE
CUKY
5
航班的本地貨币
URL
S_CARRURL
255
PRICE
S_PRICE
CURR
15
2
航空運費
SFLIGHT
CURRENCY
PLANETYPE
S_PLANETYE
飛機類型
SEATSMAX
INT4
10
最大容量
由于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(機關):用于設定高度及寬度的機關。