ABAP實戰Smart Forms設計

分類:IT技術 時間:2016-10-11
Smart Forms是ABAP設計單據打印的工具,設計過程由兩部分組成:
(1)在Smart Forms設計單據的樣式、輸入輸出數據接口;
(2)編程調用設計單據、輸出數據,實現打印輸出。
本博文先以一個簡單的例子,將Form與程序聯調,快速了解整個設計過程,再詳細介紹Smart forms相關設計及較復雜的例子。

1、一個簡單的例子

本例完成有圖標(公司LOGO)、表頭(公司名稱)、文字說明(表身)、含當前時間的表尾的單據。打印預覽界面如圖


1.1、Form的制作

輸入TCODE:SMARTFORMS,輸入要建立的Form名稱後單擊“創建”按鈕,如圖


輸入描述,單擊“表格繪制器(Form Painter)”按鈕,如圖


右屏顯示設計圖形界面,如圖


左屏顯示Form所有對象樹,當雙擊對象時,中間屏幕顯示對象的屬性,右屏顯示Form圖形設計界面。系統默認建立一個頁面,一個主窗口,一個Form可以有多個頁面,一個頁面可以有多個窗口,但主窗口只能有一個,右屏顯示該頁及MAIN主窗口。

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名稱,單擊創建按鈕,如圖


進入設計界面,如圖


Header data:表頭數據,定義默認段落屬性等參數。
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名稱,單擊“創建”按鈕,如圖


輸入完成後,直接保存,如圖


然後在設計Form時選擇Text屬性為Text Module時就可以選擇定義的文本,如圖


4、圖片的上傳 

之前我們用過SWM0上傳圖片,該命令也可以上傳其他一些二進制文件(如上傳一些Excel模塊,供用戶下載到PC端,再通過OLE來操作此文檔)。

這裏我們用SE78命令上傳圖片,那是為Smart/Script Form設計使用的。

在基礎例子中,使用了一個圖片,是系統內部的,在制作公司內部的各類單據時需要公司的LOGO,這就需要上傳圖片。

輸入TCODE:SE78,系統顯示如圖


選擇“Stored on Document Server”-->“GRAPHICS General Graphics”-->“BMAP Bitmap Images”,單擊工具欄標出的按鈕導入圖片,選擇屏幕界面如圖

註意:上傳的圖片一定要是BMP或DIB格式的單色位圖或16位色圖



確定後,圖片被導入,如圖


在設計Form就可以選擇上傳圖片,如圖

執行效果如圖


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對象如圖


這樣整個Table設定完成,接著定義數據和導入參數。

回到Form接口,在“Table”頁中定義I_SFLIGHT,如圖


選擇表格,再選擇數據頁,如圖


輸入內部表格I_SFLIGHT,然後將Table內的各個字段賦值操作如下:

打開字段列表,在Table內雙擊Text字段,在左下角的“Table interfance”-->“I_SFLIGHT”節點中將CARRID、CONNID、FLDATE、PRICE字段拖到相關的文本對象內的描述信息中,如圖


保存後激活,單擊測試按鈕,如圖


到此,Form的制作已完成。

調用程序:

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 圖片 程序 黃色

文章來源:


ads
ads

相關文章
ads

相關文章

ad