需求前景:不同工作中心的工单打印格式不同;
以前是每个事务码对应一个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.