smartforms如何打印横向纵向

5 篇文章 0 订阅
2 篇文章 0 订阅

smartforms打印横向纵向只要调用两个表单即可,一个横向的,一个纵向的

FORM frm_print  USING    p_ucomm TYPE sy-ucomm.
  DATA:lv_formname  TYPE rs38l_fnam,
       lv_formname1 TYPE char30.

  DATA:Lv_formname2 TYPE rs38l_fnam,
       lv_formname3 TYPE char30.
  DATA: ls_head TYPE ztmm025. "打印参数
  DATA:gt_item TYPE TABLE OF ztmm025_item, "打印合同附件参数
       gs_item TYPE ztmm025_item.
  DATA : ls_control_param  TYPE ssfctrlop,
         ls_composer_param TYPE ssfcompop,
         jobinfo           TYPE ssfcrescl.
  DATA: output_options TYPE ssfcompop.
  DATA: control_parameters TYPE ssfctrlop.
  DATA: job_output_options TYPE ssfcresop.
  DATA:ls_outinfo TYPE ssfcrescl.
  DATA:job_output_info      TYPE ssfcrescl.
  DATA lv_flag TYPE c.
  DATA:ls_alv LIKE gs_alv,
       lt_alv LIKE STANDARD TABLE OF gs_alv WITH HEADER LINE.
  DATA:answer TYPE c .
  output_options-tdimmed = 'X'.
  output_options-tdnewid = 'X'.
  output_options-tddelete = 'X'.
  output_options-tdfinal = 'X'.
  output_options-tdiexit = 'X'.    "Exit after printing in print preview
  output_options-tddest = 'PRT01'.

  control_parameters-preview = 'X'.
  control_parameters-no_open = 'X'.
  control_parameters-no_close = 'X'.
*  control_parameters-no_dialog = 'X'."直接预览 如果个人数据没有维护打印机及预览数据的话 仍旧会弹出窗口
  control_parameters-device = 'PRINTER'.
  CLEAR:lv_formname,lv_formname1,Lv_formname2,lv_formname3,ls_head,gt_item[],gs_item.
  LOOP AT  gt_alv INTO gs_alv WHERE box = 'X'.
    MOVE-CORRESPONDING gs_alv TO ls_alv.
    APPEND ls_alv TO lt_alv.
    CLEAR:ls_alv,gs_alv.
  ENDLOOP.

  IF  lt_alv[] IS NOT INITIAL .

    IF p_ucomm = 'PRINT1'.  "
      lv_formname1 = 'ZMMR025A'.

    ELSEIF p_ucomm = 'PRINT2'."
      lv_formname1 = 'ZMMR025B'.
      lv_formname3 = 'ZMMR025B1'.

    ELSEIF p_ucomm = 'PRINT3'."
      lv_formname1 = 'ZMMR025C'.
      lv_formname3 = 'ZMMR025C1'.

    ELSEIF p_ucomm = 'PRINT4'."上
      lv_formname1 = 'ZMMR025D'.
      lv_formname3 = 'ZMMR025D1'.
    ENDIF.

    CALL FUNCTION 'SSF_OPEN'
      EXPORTING
*       user_settings      = 'X'
        output_options     = output_options
        control_parameters = control_parameters
      IMPORTING
        job_output_options = job_output_options
      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.

    CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
      EXPORTING
        formname = lv_formname1
      IMPORTING
        fm_name  = lv_formname.
    IF sy-subrc <> 0.
      MESSAGE ID sy-msgid TYPE sy-msgty
       NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.

    IF lv_formname3 <> ''.
      CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
        EXPORTING
          formname = lv_formname3
        IMPORTING
          fm_name  = lv_formname2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty
         NUMBER sy-msgno
           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDIF.

    SORT lt_alv BY ebeln.
    DELETE ADJACENT DUPLICATES FROM lt_alv  COMPARING ebeln.
    LOOP AT  lt_alv INTO ls_alv.
      LOOP AT  gt_alv INTO gs_alv WHERE ebeln = ls_alv-ebeln.
        MOVE-CORRESPONDING  gs_alv TO gs_item.
        CONDENSE gs_item-menge NO-GAPS.
        CONDENSE gs_item-netwr NO-GAPS.
        CONDENSE gs_item-brtwr NO-GAPS.
        APPEND gs_item TO gt_item.
        CLEAR:gs_item.
      ENDLOOP.
      MOVE-CORRESPONDING  ls_alv TO ls_head.

      ls_head-zjexx = ls_alv-brtwr."金额小写
      CONDENSE ls_head-menge NO-GAPS.
      CONDENSE ls_head-netwr NO-GAPS.
      CONDENSE ls_head-brtwr NO-GAPS.
      "金额转换成大写
      CALL FUNCTION 'ZJ_FI_BIGAMOUNT'
        EXPORTING
          i_amount    = ls_head-zjexx
        IMPORTING
          e_bigamount = ls_head-zjedx.

      CLEAR:ls_alv.
      "------------------------------------------------->调用打印模板
      IF  p_ucomm = 'PRINT1'.
        CALL FUNCTION lv_formname
          EXPORTING
            control_parameters = control_parameters
            output_options     = output_options
            user_settings      = space
            gs_head            = ls_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.
      ELSE.
        CALL FUNCTION lv_formname
          EXPORTING
            control_parameters = control_parameters
            output_options     = output_options
            user_settings      = space
            gs_head            = ls_head
          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.
        CALL FUNCTION lv_formname2
          EXPORTING
            control_parameters = control_parameters
            output_options     = output_options
            user_settings      = space
            gs_head            = ls_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.
      ENDIF.
      CLEAR:ls_alv,gt_item[],ls_head.
    ENDLOOP.
    "<----------------------------------------------
    CALL FUNCTION 'SSF_CLOSE'
      IMPORTING
        job_output_info  = ls_outinfo
      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.
    IF ls_outinfo-outputdone = 'X'."已打印
      MESSAGE '已打印' TYPE 'S'.
    ENDIF.
  ELSE.
    MESSAGE '请选中需要打印的数据' TYPE 'S' DISPLAY LIKE 'E'.
  ENDIF.
ENDFORM.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值