ALV結合Smartforms打印報表

首先確保ALV報表正常輸出,輸出ALV完整流程,再在狀態欄添加一個按鈕,實現跳轉至打印的功能。

  • 按鈕的實現
    添加一個GUI狀態,可以引用標準模板,也可以單獨加一個按鈕(為整潔美觀一般使用標準模板)
    定義在ALV輸出展示中的'SET_PF_STATUS'方法,具體代碼如下:
     SET PF-STATUS '1100'."1100為GUI的名字
   ENDFORM. "F_SET_STATUS```
* 按鈕功能的實現
實現 ```USER_COMMAND``` 的方法,具體代碼如下:
    ```FORM USER_COMMAND USING R_UCOMM LIKE SY-UCOMM
     RS_SELFIELD TYPE SLIS_SELFIELD.
   CASE R_UCOMM.
     WHEN 'SKIP'. "我的按鈕鍵名字為 SKIP
     DATA:   L_FM_NAME  TYPE  RS38L_FNAM,
 OUTPUT TYPE SSFCOMPOP,
   CONTROL_PARAMETERS TYPE SSFCTRLOP,
   LW_SSFCRESCL       TYPE SSFCRESCL,
   OPTION             TYPE SSFCRESCL.
    DATA :LS_ZZS_11 LIKE  ZZS_011_09."ZZS_011_09為自建的表結構,定義一個工作區和表
    DATA :G_L LIKE TABLE OF  ZZS_011_09.
   CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' "實現Smartforms
     EXPORTING
 FORMNAME                 = 'ZSF_11_09' "自建的Smartforms名字
     IMPORTING
     FM_NAME                  = L_FM_NAME "DATA出來參照RS38L_FNAM的工作區,前面有定義
  IF SY-SUBRC <> 0.
  ENDIF.
 "打印設置
 CONTROL_PARAMETERS-NO_OPEN   = 'X'.
 CONTROL_PARAMETERS-NO_CLOSE  = 'X'.
  OUTPUT-TDDEST = 'LP01'. "默認的打印設備
OUTPUT-RQPOSNAME = ''.
  OUTPUT-TDDATASET = ''.
   OUTPUT-TDSUFFIX1 = ''.
    OUTPUT-TDSUFFIX2 = ''.
 OUTPUT-TDIMMED   = 'X'.
OUTPUT-TDDELETE  = 'X'.
CALL FUNCTION 'SSF_OPEN'
EXPORTING
CONTROL_PARAMETERS = CONTROL_PARAMETERS
  OUTPUT_OPTIONS     = OUTPUT
EXCEPTIONS
FORMATTING_ERROR   = 1
  INTERNAL_ERROR     = 2
 SEND_ERROR         = 3
   USER_CANCELED      = 4
  OTHERS             = 5.
 LOOP AT GT_LINE INTO WA_LINE WHERE BOX = 'X'."把選中的哪一行數據傳給LS_ZZS_11工作區
LS_ZZS_11-EBELN  = WA_LINE-EBELN.
 LS_ZZS_11-BUKRS = WA_LINE-BUKRS.
 LS_ZZS_11-EBELP  = WA_LINE-EBELP.
LS_ZZS_11-MATNR = WA_LINE-MATNR.
 APPEND ls_zzs_11 to g_l."更新到表
 ENDLOOP.```

       "#  調用Smartforms的Function Module打印
      CALL FUNCTION L_FM_NAME
         EXPORTING
           CONTROL_PARAMETERS = CONTROL_PARAMETERS
           OUTPUT_OPTIONS     = OUTPUT
           WA_ZZS_011_09      = LS_ZZS_11 "傳向Smartforms的工作區
         TABLES
           GT_LINE_11         = G_L  "傳向Smartforms的表
         EXCEPTIONS
           FORMATTING_ERROR   = 1
           INTERNAL_ERROR     = 2
           SEND_ERROR         = 3
           USER_CANCELED      = 4.
       "#  關閉打印機設置
      CALL FUNCTION 'SSF_CLOSE'
         IMPORTING
           JOB_OUTPUT_INFO  = LW_SSFCRESCL
         EXCEPTIONS
           FORMATTING_ERROR = 1
           INTERNAL_ERROR   = 2
           SEND_ERROR       = 3
           OTHERS           = 4.
       IF SY-SUBRC <> 0.
       ENDIF
      ENDCASE.
       ENDFORM. "USER_COMMAND
引用Smartforms就是幾個方法,改的地方也不多,接下來就是畫Smartforms中要注意的地方。
* 表格接口中定義一個表參照自己建的結構。
* 全局定義中定義一個表一個工作區一些參數以及結構中參考貨幣/數量的字段。
* 一般都為表循環至工作區
* 在限定行數的循環內:先判斷循環條件,同時定義一個變量賦值。程序行給變量每循環一次+1
######因為沒有全粘代碼,所以本文適合有一點Smartforms基礎的同學。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 一些悲喜 一些不眠 換青春里的一場醒悟 在紅塵里待久了 就再難清醒 在世事里打久了盹 就再難相信純粹 在孤獨里徘徊...
    晨初_閱讀 292評論 2 2
  • 輪胎是汽車整車唯一落地的地方,與地面常年接觸,路面磨損那是自然。不僅要經過路面的磨損,還要經過歲月的氧化,都威脅到...
    茜茜車閱讀 737評論 0 2
  • 情出自愿,事過無悔。這是我前一陣的簽名。 十八歲,有的人在享受著青春的美好,有的人在為夢想一如既往地奮斗,有的...
    女王是妖怪閱讀 731評論 1 2