同一個程式中呼叫不同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.