在日常开发中,经常会遇到需要一次性打印多张内容不同的报表,直接调用SmartForms时,可能每次调用后都会执行一次打印操作,会在循环中反复出现打印对话框,影响程序执行效率。比如,一次性打印多张生产订单的领料单,一次性打印多张产品标签等等
SAP打印控制了假脱机功能,允许将多张表先缓存,最后一次性提交打印请求。
实现假脱机控制控制主要通过SmartForms函数的CONTROL_PARAMETERS接口的NO_OPEN、NO_CLOSE两个参数来控制。
要实现一次打印多次调用SmartForms功能,需在正式调用SmartForms前,先CALL FUNCTION 'SSF_OPEN' ,在循环调用后,最后再CALL FUNCTION 'SSF_CLOSE'即可。
示例代码:
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 =