欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

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

发布时间:2025/3/20 编程问答 51 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Smart Form不弹出假脱机设置界面直接打印预览 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
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
  • 复制代码

    总结

    以上是生活随笔为你收集整理的Smart Form不弹出假脱机设置界面直接打印预览的全部内容,希望文章能够帮你解决所遇到的问题。

    如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。