关于记录报表打印次数的记录

        最近有客户需求提出要记录打印次数记录,刚开始的思路是触发按钮事件,诶呀,这样还能基本满足,可是后面问题来了,这触发按钮记录的不准啊,为什么不准呢。

部分使用客户在投诉在打印预览或者只想看下的情况就记录了打印记录。后面想想这个按钮触发事件还是不能解决根本问题,下面是小弟解决的一个小程序,刚起步,技术含量低,让大神见笑了。

    form PRINTDATA.
  dataF_INDEX like SY-TABIX.
  dataLINES_LEN type I.
  dataLS_CONTROL_PARAMETERS  type SSFCTRLOP.
  dataLS_OUTPUT_OPTIONS      type SSFCOMPOP.
  dataL_SMF_NAME             type RS38L_FNAM.
 

  C_FORM_NAME 'ZFMM_WHG1'.          "对应的smartform的名称

以下一段只是打印部分的设置而已
  LS_OUTPUT_OPTIONS-TDIMMED       'X'.
  LS_OUTPUT_OPTIONS-TDCOPIES      '1'.
  LS_OUTPUT_OPTIONS-TDNOPRINT     ''.
  LS_OUTPUT_OPTIONS-TDDELETE      'X'.
  LS_CONTROL_PARAMETERS-NO_DIALOG ''.
  LS_CONTROL_PARAMETERS-PREVIEW   'X'.
  LS_CONTROL_PARAMETERS-LANGU     '1'.
  LS_OUTPUT_OPTIONS-TDIEXIT 'X'.

  LS_CONTROL_PARAMETERS-NO_DIALOG 'X'."没有对话窗口打开
  LS_CONTROL_PARAMETERS-PREVIEW   'X'"打印预览


调用SMARTFORM的程序
  call function 'SSF_FUNCTION_MODULE_NAME' 
    exporting
      FORMNAME C_FORM_NAME
    importing
      FM_NAME  L_SMF_NAME.

  loop at IT_HEAD1.
    LS_CONTROL_PARAMETERS-NO_CLOSE 'X'.
    at last.
      LS_CONTROL_PARAMETERS-NO_CLOSE SPACE.
    endat.

    clear IT_ITEM.
    refresh IT_ITEM[].

    loop at  ITAB4 where CHARG IT_HEAD1-CHARG
                                 and MBLNR IT_HEAD1-MBLNR
                                 and MATNR IT_HEAD1-MATNR.
      append  ITAB4 to IT_ITEM[].
    endloop.

    move IT_HEAD1[] to GT_HEAD[].

    loop at  GT_HEAD.
      append  IT_HEAD1 to GT_SF.
    endloop.

    call function L_SMF_NAME
      exporting
        CONTROL_PARAMETERS LS_CONTROL_PARAMETERS
        OUTPUT_OPTIONS     LS_OUTPUT_OPTIONS
        USER_SETTINGS      'X'
        WA_HEAD            IT_HEAD1
      importing
        JOB_OUTPUT_INFO    T_OTFDATA  “要记录打印回执数据,这个地方还是不能忘记的
      tables
        GT_HEAD            GT_SF[]
        GT_BODY            IT_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.

******打印次数的控制,每次打印机响应一次,就把返回值记录一次,

打印成功就把数据返回,添加到自定义的内表中,
**************************************************
    if SY-SUBRC 0.

      if T_OTFDATA-OUTPUTDONE 'X'.
        loop at IT_HEAD1.
          IT_PRINTCOUNT-MBLNR IT_HEAD1-MBLNR.
          IT_PRINTCOUNT-PRINTS IT_HEAD1-PRINTS + 1.
          append IT_PRINTCOUNT.
        endloop.
        modify ZMSEG3 from  table IT_PRINTCOUNT.
        clear IT_PRINTCOUNT.
        refresh IT_PRINTCOUNT[].
      endif.
    endif.
**************************************************
    clear IT_ITEM.
    refresh IT_ITEM[].

    LS_CONTROL_PARAMETERS-NO_OPEN 'X'.
    at last.
      LS_CONTROL_PARAMETERS-NO_OPEN SPACE.
    endat.
  endloop.
endform.                    "printdata


小弟不才,多有错误切勿喷俺。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值