Smart Form主要通过SSFCTRLOP和SSFCOMPOP两个参数来配置打印控制的。
下面是一段实施代码:
-
DATA: ctrl_param TYPE ssfctrlop,
-
out_option TYPE ssfcompop,
-
fm_name TYPE rs38l_fnam.
-
-
*控制默认打印机隐藏预览功能
-
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'.
-
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
-
EXPORTING
-
formname = 'Z_TESTJSW' "Smart Form名称
-
IMPORTING
-
fm_name = fm_name
-
EXCEPTIONS
-
no_form = 1
-
no_function_module = 2
-
OTHERS = 3.
-
IF sy-subrc <> 0.
-
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
-
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
-
ENDIF.
-
CALL FUNCTION fm_name
-
EXPORTING
-
control_parameters = ctrl_param
-
output_options = out_option
-
user_settings = space
-
* TABLES
-
* itab = itab[]
-
EXCEPTIONS
-
OTHERS = 1.
复制代码
一次性输出多张报表:
有些时候可能需要一次性打印多张内容不同的报表,直接调用SmartForms时,可能每次调用后都会执行一次打印操作,会在循环中反复出现打印对话框,影响程序执行效率。SAP打印控制了假脱机功能,允许将多张表先缓存,最后一次性提交打印请求。
实现假脱机控制控制主要通过SmartForms函数的CONTROL_PARAMETERS接口的NO_OPEN、NO_CLOSE两个参数来控制。
如果我们在项目实战中需要打印多个请求,则直接用下面的perform
-
FORM SHOWFORM.
-
-
DATA: W_SFNAME TYPE RS38L_FNAM.
-
DATA: LS_CONTROL_PARAM TYPE SSFCTRLOP .
-
DATA: LS_COMPOSER_PARAM TYPE SSFCOMPOP .
-
DATA: OUTOPT TYPE SSFCRESOP.
-
DATA: I_JOB_OUTPUT_INFO TYPE SSFCRESCL.
-
-
LS_CONTROL_PARAM-LANGU = '1'. "1:CHINESE
-
LS_CONTROL_PARAM-NO_OPEN = 'X'.
-
LS_CONTROL_PARAM-NO_CLOSE = 'X'.
-
-
CALL FUNCTION 'SSF_OPEN' “调用SSF_OPEN函数设置打印机,打开输出请求
-
EXPORTING
-
CONTROL_PARAMETERS = LS_CONTROL_PARAM
-
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
-
IMPORTING
-
JOB_OUTPUT_OPTIONS = OUTOPT
-
EXCEPTIONS
-
FORMATTING_ERROR = 1
-
INTERNAL_ERROR = 2
-
SEND_ERROR = 3
-
USER_CANCELED = 4
-
OTHERS = 5.
-
-
IF SY-SUBRC <> 0.
-
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
-
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
-
EXIT.
-
ENDIF.
-
-
IF SY-SUBRC <> 0.
-
* Implement suitable error handling here
-
ENDIF.
-
-
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
-
EXPORTING
-
FORMNAME = 'ZMMF0009'
-
IMPORTING
-
FM_NAME = W_SFNAME
-
EXCEPTIONS
-
NO_FORM = 1
-
NO_FUNCTION_MODULE = 2
-
OTHERS = 3.
-
-
LOOP AT GT_DATA INTO GS_DATA.
-
CALL FUNCTION W_SFNAME " '/1BCDWB/SF00000322'
-
EXPORTING
-
CONTROL_PARAMETERS = LS_CONTROL_PARAM
-
OUTPUT_OPTIONS = LS_COMPOSER_PARAM
-
WA_HEADER = GS_DATA-HEADER
-
TABLES
-
IT_ITEM = GS_DATA-ITEMS
-
EXCEPTIONS
-
FORMATTING_ERROR = 1
-
INTERNAL_ERROR = 2
-
SEND_ERROR = 3
-
USER_CANCELED = 4
-
OTHERS = 5.
-
IF SY-SUBRC <> 0.
-
LEAVE TO LIST-PROCESSING.
-
ENDIF.
-
ENDLOOP.
-
-
CALL FUNCTION 'SSF_CLOSE' “关闭打印机
-
IMPORTING
-
JOB_OUTPUT_INFO = I_JOB_OUTPUT_INFO
-
EXCEPTIONS
-
FORMATTING_ERROR = 1
-
INTERNAL_ERROR = 2
-
SEND_ERROR = 3
-
OTHERS = 4.
-
IF SY-SUBRC <> 0.
-
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
-
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
-
ENDIF.
-
-
ENDFORM. " SHOWFORM
复制代码
|