1. 程式人生 > >同一個程式中呼叫不同smartforms 方法

同一個程式中呼叫不同smartforms 方法

需求前景:不同工作中心的工單列印格式不同;

以前是每個事務碼對應一個samrtforms 格式;

計劃部每次列印時,需要區分不同的工作中心用不同的事務碼列印;特別是一個計劃員管理多個工作中心時,會面臨區分不同中心用哪個事務列印,造成一定的混亂;為此提出系統實現用一個事務碼列印,系統自動判別不同的工作中心列印不同格式;

方法1:可以在一個smartforms 中設計不同的格式;可惜本人很懶,不想重新畫格式,多的讓人頭痛

方法2:在一個事務中呼叫不同的samrtforms格式;以下是程式碼

  DATA: ctrl_param TYPE ssfctrlop,
       out_option TYPE ssfcompop.

 

out_option-tddest = 'LP01'.        "指定預設印表機名,一般為四位字元
 out_option-tdnoprev = 'X'.        "隱藏報表預覽功能,預設為空
 out_option-tdimmed = 'X'.                "是否勾選快速列印項
* out_option-tdarmod = 1.                "確認本地設定是否有效,必選項
**不顯示對話方塊直接預覽
ctrl_param-preview = 'X'.
ctrl_param-no_Dialog = 'X'.
ctrl_param-no_open = space.     “第一次列印設定”
ctrl_param-no_close = 'X'

 .       “第一列印設定”

IF i_tab_detail[] IS NOT INITIAL.
    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING

      formname = 'ZPP_FRM_084'
    IMPORTING
      fm_name  = l_fname  .
*   EXCEPTIONS
*     no_form            = 1
*    no_function_module = 2
*     OTHERS             = 3.


    CALL FUNCTION l_fname
    EXPORTING


    control_parameters = ctrl_param
    output_options     = out_option
    user_settings      = space


      c_company      = StrCompany
      c_factory      = StrFactory
      d_product      = p_gstrp
      c_username     = StrUserName

    TABLES
      zpp_tab_017 = i_tab_detail
      cs_mstj =    ics_mstj
      cs_jc   =  ics_jc
      cs_fz   = ics_fz
      cs_dltj   = ics_dltj
      cs_kz   = ics_kz
      cs_zs   = ics_zs
      EXCEPTIONS
       FORMATTING_ERROR           = 1
       INTERNAL_ERROR             = 2
       SEND_ERROR                 = 3
       USER_CANCELED              = 4
       OTHERS                     = 5.
endif.


if  i_tab_017[] IS NOT INITIAL.
  ctrl_param-no_open = 'X' .   “最後一次列印設定”
  ctrl_param-no_close = space.  “最後一次列印設定”

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname = 'ZPP_FRM_017'
    IMPORTING
      fm_name  = l_fname  .


    CALL FUNCTION l_fname
    EXPORTING
    control_parameters = ctrl_param
    output_options     = out_option
    user_settings      = space
      c_company      = StrCompany
      c_factory      = StrFactory
      d_product      = p_gstrp
      c_username     = StrUserName

    TABLES
      zpp_tab_017 = i_tab_017
    EXCEPTIONS
     FORMATTING_ERROR           = 1
     INTERNAL_ERROR             = 2
     SEND_ERROR                 = 3
     USER_CANCELED              = 4
     OTHERS                     = 5.
endif.