(1)在Smart Forms設計單據的樣式、輸入輸出數據接口;
(2)編程調用設計單據、輸出數據,實現打印輸出。
本博文先以一個簡單的例子,將Form與程序聯調,快速了解整個設計過程,再詳細介紹Smart forms相關設計及較復雜的例子。
1、一個簡單的例子
本例完成有圖標(公司LOGO)、表頭(公司名稱)、文字說明(表身)、含當前時間的表尾的單據。打印預覽界面如圖
1.1、Form的制作
輸入TCODE:SMARTFORMS,輸入要建立的Form名稱後單擊“創建”按鈕,如圖
輸入描述,單擊“表格繪制器(Form Painter)”按鈕,如圖
右屏顯示設計圖形界面,如圖


1.1.1、加入公司的LOGO
選中主窗口,單擊右鍵菜單中的“Create”-->“Graphics”菜單,如圖
右屏顯示一個圖片圖標,雙擊它,中屏顯示屬性,單擊選擇圖片按鈕,如圖
選擇包含彩色選項,如圖
選擇圖片,如圖
選擇圖片後,右屏圖形對象顯示出選擇圖片,調整好圖片的位置,如圖
1.1.2、加入公司名稱
選擇頁面,單擊右鍵菜單中的“Create”-->“Window”菜單,如圖
將新建的Windows調整到合適的位置,請註意,該窗口的對象是黃色的,表示不是主窗口,選中該窗口,單擊右鍵菜單中的“Create”-->“Text”菜單添加文本,如圖
在生成的文本屬性輸入公司名稱,如圖
1.1.3、加入主表內容
和建立表頭一樣,在主窗口建立一個Text對象,並輸入相關內容,如圖
1.1.4、加入表尾
添加新的窗口和文本,再添加一個系統日期文本,單擊上圖中的工具條的字段列表按鈕,屏幕左下角會顯示系統字段,在右下屏字段中,選中system fields的“DATE”節點,並把它拖到文本“當前時間:”後面,完成後保存,如圖
1.1.5、生成和預覽
保存後,單擊主菜單中的“Form”-->“Check”菜單,檢查Form是否正確。然後單擊工具欄上的激活按鈕激活Form,再單擊工具欄上的測試按鈕
,輸出如圖
“/1BCDWB/SF00000125”是系統生成程序。單擊測試按鈕,輸出如圖
單擊執行按鈕,輸入或選擇打印機,單擊“Print preview”按鈕預覽,如圖
2、設計程序調用Form
程序代碼如下:REPORT Z_SMARTFORMSTEST_20160701001. DATA: fm_name TYPE rs38l_fnam. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.
3、Smart Forms相關技術
3.1、Style樣式制作
Style定義文字類型、大小樣式等屬性,可在Text對象內使用不同的樣式。輸入TCODE:SmartForms,選擇“Style”選項,輸入Style名稱,單擊創建按鈕,如圖
進入設計界面,如圖
Paragraph formats:段落格式,字體類型等,在設定對象時可以選擇需要的段落。
Character formats:字符格式,定義是否粗體、傾斜、大小等,在一段文字內設置不同的字體、顏色等。
選擇Paragraph formats,右鍵選擇“Create node”菜單,如圖
輸入字體、大小等信息,如圖
選擇Character formats,右鍵選擇“Create node”菜單,如圖
如圖所示,設定三種不同顏色的段落,兩種不同大小的字符格式。
在定義完成後,需要將表頭數據選擇一種段落作為該樣式的默認段落,如圖
在Form設計時,選擇樣式界面如圖
單擊主菜單“Form”-->“Check”檢查是否正確,沒有問題則激活它。
通過樣式設定,可以達到以下效果,如圖
運行效果如圖
3.2、Text Moudle文本制作
ABAP編程中很多對象、文本、消息、提示內容都可以預先設定。Form中Text對象數據來源有以下幾種:
變量,通過程序產生;
Include text,它是Sapscript text,可以通過TCODE:SE75查閱;
Include element,直接輸入文本;
Text Module,是下面將要介紹的。
輸入TCODE:SMARTFORMS,選擇“Text Module”選項,輸入Text Module名稱,單擊“創建”按鈕,如圖
輸入完成後,直接保存,如圖

4、圖片的上傳
之前我們用過SWM0上傳圖片,該命令也可以上傳其他一些二進制文件(如上傳一些Excel模塊,供用戶下載到PC端,再通過OLE來操作此文檔)。
這裏我們用SE78命令上傳圖片,那是為Smart/Script Form設計使用的。
輸入TCODE:SE78,系統顯示如圖
選擇“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,單擊工具欄標出的按鈕導入圖片,選擇屏幕界面如圖
註意:上傳的圖片一定要是BMP或DIB格式的單色位圖或16位色圖
確定後,圖片被導入,如圖
執行效果如圖
5、變量加載
設計文本可以包含動態變量,在程序中再加載實際數據。如在全局設定的接口輸入參數中定義一個字符串型的變量,如圖
單擊按鈕顯示所有已定義的字段,將它拖入文本描述內,如圖
將Form保存後激活。調整程序,加入輸入參數。
REPORT Z_SMARTFORMSTEST_20160714001. DATA: fm_name TYPE rs38l_fnam. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name exporting ytestv = '東方天空' EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.運行後,效果如圖
6、通過Table對象打印表格
表格的打印是一張單據必不可少的,比如一張送貨單,商品明細就是表格的內容。設計過程:選擇一個窗口,選右鍵菜單中的“Create”-->“Table”,如圖
先點擊如下“細節”按鈕,如圖
行格式是Table編出時每行的格式,定義表頭和表身兩種格式,表頭與表身略有不同,表寬一定要等於定義列寬之和
定義完後單擊“表繪制器”按鈕預覽定義的行列格式,如圖
單擊“選擇模式”按鈕定義表格的線條樣式,如圖
選擇Table下面的Header,創建Table line,如圖
在Line Type選擇中選擇之前定義的LINE_CON,如圖
依次在CELL下面建立Text對象,如圖
以同樣的方法,在Table對象下面的Main中創建Table line對象和Text對象如圖
回到Form接口,在“Table”頁中定義I_SFLIGHT,如圖
選擇表格,再選擇數據頁,如圖
打開字段列表,在Table內雙擊Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”節點中將CARRID、CONNID、FLDATE、PRICE字段拖到相關的文本對象內的描述信息中,如圖
保存後激活,單擊測試按鈕,如圖
調用程序:
REPORT Z_SMARTFORMSTEST_20160714002. DATA: fm_name TYPE rs38l_fnam. DATA: wa_sflight LIKE sflight OCCURS 0 WITH HEADER LINE. *將數據放入內表 SELECT * INTO TABLE wa_sflight FROM sflight. CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = 'ZTEST20160701001' variant = '' direct_call = '' IMPORTING fm_name = fm_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. IF sy-subrc <> 0. ENDIF. CALL FUNCTION fm_name EXPORTING ytestv = '東方天空' TABLES i_sflight = wa_sflight EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 OTHERS = 5. IF sy-subrc <> 0. ENDIF.運行後輸出如圖
Tags: 圖形設計 Create 圖片 程序 黃色
文章來源: