PERFORM SUB_FORM_OPEN USING 'ZSCREEN_TESTFORM' '1' 'X' 'X' 'E'. "FORM_NAME "pcopies,preview,print dialog,print language
PERFORM SUB_FORM_WRITE_DATA.
PERFORM SUB_FORM_CLOSE.
================================================
*******************BEGIN FOR PRINTER FORM*******************************
FORM SUB_FORM_OPEN USING PF_NAME PF_COPIES PF_VIEW PF_DIALOG PF_LANGU.
data: L_ITCPO like ITCPO.
*------------------------------------
L_ITCPO-TDIMMED = 'X'.
L_ITCPO-TDNEWID = 'X'.
L_ITCPO-TDFINAL = 'X'.
IF PF_COPIES > 1.
L_ITCPO-TDCOPIES = PF_COPIES.
ELSE.
L_ITCPO-TDCOPIES = 1.
ENDIF.
"preview
L_ITCPO-TDPREVIEW = PF_VIEW.
L_ITCPO-TDNOPRINT = PF_VIEW.
"print
IF PF_VIEW = ''.
L_ITCPO-TDNOPREV = 'X'.
ELSE.
L_ITCPO-TDNOPREV = ''.
ENDIF.
*------------------------------------
CALL FUNCTION 'OPEN_FORM'
EXPORTING
form = PF_NAME
language = PF_LANGU
dialog = PF_DIALOG
options = L_ITCPO
EXCEPTIONS
canceled = 1
device = 2
others = 3.
IF sy-subrc <> 0.
WRITE: 'Error in open_form',sy-subrc.
EXIT.
ENDIF.
ENDFORM.
FORM SUB_FORM_WRITE_DATA.
DATA: L_MODX TYPE I,
L_INDEX LIKE SY-TABIX,
L_TOINDEX TYPE I.
DESCRIBE TABLE ETABLE LINES L_TOINDEX.
* --FOOT
PERFORM SUB_FORM_WRITE USING 'S_PAGE' 'FOOT'.
PERFORM SUB_FORM_WRITE USING 'S_TEST' 'FOOT'.
LOOP AT ETABLE INTO WA_ETABLE.
L_INDEX = SY-TABIX.
* --MAIN
PERFORM SUB_FORM_WRITE USING 'TEST01' 'MAIN'.
******************换页***********************
L_MODX = L_INDEX MOD 2.
IF WA_ETABLE IS NOT INITIAL AND L_MODX = 0 AND L_INDEX < L_TOINDEX.
PERFORM SUB_FORM_WRITE USING 'NEW_PAGE' 'MAIN'. "打印换页
ENDIF.
ENDLOOP.
ENDFORM.
FORM SUB_FORM_WRITE USING PF_ELEM PF_WIND.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
element = PF_ELEM
window = PF_WIND
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
WRITE 'Error write_item_form'.
EXIT.
ENDIF.
ENDFORM.
FORM SUB_FORM_CLOSE.
CALL FUNCTION 'CLOSE_FORM'"关闭FORM
EXCEPTIONS
OTHERS = 1.
IF sy-subrc <> 0.
WRITE 'Error in close_form'.
EXIT.
ENDIF.
ENDFORM.
******************* END FOR PRINTER FORM *******************************