其实增加打印次数的难点在于:如何判断用户点了一个按钮之后,在下面弹出的窗口中到底是点的打印,还是打印预览。
因为下图中的两个按钮都是系统标准的按钮,我们没有办法加入自己的代码的,所以我们只能在Smartforms的返回信息里面找到用户是否真正打印
下面这段代码的LS_JOB_OUTPUT_INFO就是Smartforms执行之后的返回信息,只有当
LS_JOB_OUTPUT_INFO-OUTPUTDONE = 'X'的时候,才说明用户的确点了打印的按钮,然后就可以写增加打印次数的代码了。
具体增加打印次数的代码可以根据不同的程序进行不同的设计,不过都需要建一个自定义表,如果只想记录打印次数的话,就建一个以某某单据作为主键的关键字,然后每次打印的时候,先找一下这张单据有没有打印次数的记录,如果有就把打印次数加一,如果没有找到,就把打印次数设置为1,然后保存到自定义表就可以了。
FORM SMARTFORM_END .
DATA:
LS_JOB_OUTPUT_INFO TYPE SSFCRESCL.
CALL FUNCTION 'SSF_CLOSE'
IMPORTING
JOB_OUTPUT_INFO = LS_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.
IF LS_JOB_OUTPUT_INFO-OUTPUTDONE = 'X'."用户的确点了打印按钮了,包括先预览之后,再点的打印
PERFORM FRM_ADD_DYCS.
ENDIF.
CALL FUNCTION 'SSF_READ_ERRORS'
IMPORTING
ERRORTAB = ERRTAB.
ENDFORM. " SMARTFORM_END