ABAP 调用smartforms打印

1、主要控制逻辑放到程序中。

2、主要控制逻辑放到smartforms中。

一、主要控制逻辑放到程序中。这样在smartforms中就的简单些,对于多单连打也方便设置。

FORM print.
  DATA: lw_control     TYPE ssfctrlop.
  DATA: lw_options     TYPE ssfcompop.
  DATA: cn_locn(4) TYPE VALUE 'LOCN',
        cn_lojp(4) TYPE VALUE 'LOJP',
        cn_lohk(4) TYPE VALUE 'LOHK',
        cn_flagx TYPE VALUE 'X'.
  "CONSTANTS: cn_flagx TYPE c VALUE 'X'.
  DATA: lv_fmnam TYPE rs38l_fnam,
        lv_sfnam TYPE tdsfname.

  lw_control-no_dialog = cn_flagx.
  lw_control-preview   = cn_flagx.
  lw_control-langu     = sy-langu .
  lw_control-no_open   = cn_flagx.
  lw_control-no_close  = cn_flagx.
  lw_options-tdimmed   = cn_flagx.
  lw_options-tdnewid   = cn_flagx.
  IF sy-langu = '1'.
    lw_options-tddest    = cn_locn.
  ELSEIF sy-langu = 'J'.
    lw_options-tddest    = cn_lojp.
  ELSEIF sy-langu = 'E'.
    lw_options-tddest    = cn_lohk.
  ENDIF.
  lv_sfnam = 'ZMM_PURCHASE'.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname           = lv_sfnam
    IMPORTING
      fm_name            = lv_fmnam
    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 'SSF_OPEN'    "打开打印窗口
         EXPORTING
           control_parameters = lw_control
           output_options     = lw_options
*        user_settings      = cn_flagx
         EXCEPTIONS
           formatting_error   = 1
           internal_error     = 2
           send_error         = 3
           user_canceled      = 4
           OTHERS             5.
  "开始循环打印--------------每次以一页为单位,所以每次传参的时候也把页码之类的传入
  CALL FUNCTION lv_fmnam
              EXPORTING
                control_parameters = lw_control
                output_options     = lw_options
                "gw_head            = gw_head       “结构存放表头信息
              "TABLES
                "gt_item            = gt_item       "内表存放行项目信息
              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.
  ENDIF.
  "循环打印结束-----------------------------
*ssf_close               "关闭打印窗口,如点打印预览会关闭此窗口
  CALL FUNCTION 'SSF_CLOSE'
    EXCEPTIONS
      formatting_error = 1
      internal_error   = 2
      send_error       = 3
      OTHERS           4.
ENDFORM. 

 

 

二、简单调用。这样调用简单,但复杂的逻辑都要到smartforms中实现。

FORM print2.
  DATA: fm_name TYPE rs38l_fnam.
  CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
    EXPORTING
      formname                 = 'SMARTFORMS_NAME'
*   VARIANT                  = ' '
*   DIRECT_CALL              = ' '
   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
    "TABLES
      "t_head            = t_head
      "t_item            = t_item
    EXCEPTIONS
      formamtting_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.
  ENDIF.

ENDFORM.

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值