Smart Form不弹出假脱机设置界面直接打印预览

xiaoxiao2021-02-28  127

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 复制代码

转载请注明原文地址: https://www.6miu.com/read-28949.html

最新回复(0)