* Open print job
CALL FUNCTION 'OPEN_FORM'
EXPORTING
DEVICE = 'PRINTER'
FORM = 'ZFIDOC_PRINT'
DIALOG = 'X'
EXCEPTIONS
CANCELED = 1
DEVICE = 2
FORM = 3
OPTIONS = 4
UNCLOSED = 5
OTHERS = 6.
IF SY-SUBRC <> 0.
WRITE 'Error in open_form'.
EXIT.
ENDIF.
LOOP AT ITAB_LINE.
MOVE ITAB_LINE TO LINE.
AT NEW BELNR.
IF B_FIRST = 1.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'NEWPAGE'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 1.
ENDIF.
B_FIRST = 1.
CLEAR INDEX.
CLEAR DEBIT_TOTAL.
CLEAR CREDIT_TOTAL.
TMP_CURPAGE = 1.
WRITE TMP_CURPAGE TO CURPAGE.
CLEAR TMP_LINES.
LOOP AT ITAB_LINE WHERE BELNR = ITAB_LINE-BELNR.
TMP_LINES = TMP_LINES + 1.
ENDLOOP.
TMP_PAGE = TMP_LINES DIV 5.
TMP_MOD = TMP_LINES MOD 5.
IF TMP_MOD <> 0.
TMP_PAGE = TMP_PAGE + 1.
ENDIF.
WRITE TMP_PAGE TO TOTALPAGE.
READ TABLE ITAB_T001 INTO ITAB_T001 WITH KEY
BUKRS = LINE-BUKRS.
READ TABLE ITAB_HEAD INTO HEAD WITH KEY
BELNR = LINE-BELNR.
CCODE = LINE-BUKRS. "company code.
CTEXT = ITAB_T001-BUTXT.
CDATE = HEAD-BUDAT.
ATTACH = HEAD-BKTXT.
NUM = LINE-BELNR.
READ TABLE ITAB_HEAD INTO ITAB_HEAD WITH KEY
BELNR = ITAB_LINE-BELNR.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = ITAB_HEAD-USNAM
IMPORTING
ADDRESS = ITAB_MAN
TABLES
RETURN = ITAB_RET.
CONCATENATE ITAB_MAN-LASTNAME ITAB_MAN-FIRSTNAME INTO USER.
ENDAT.
MEMO = LINE-SGTXT.
ACCOUNT = LINE-HKONT.
ACCOUNTNAME = LINE-TXT50.
COSTCNT = LINE-KTEXT.
CUSTOMERNAME = LINE-CUSTOMERNAME.
VENDORNAME = LINE-VENDORNAME.
INTERNALOR = LINE-AUFNR.
SALESOR = LINE-VBEL2.
PO = LINE-EBELN.
DEBIT = LINE-DEBIT.
CREDIT = LINE-CREDIT.
CALL FUNCTION 'WRITE_FORM'
EXPORTING
ELEMENT = 'ITEM'
FUNCTION = 'SET'
TYPE = 'BODY'
WINDOW = 'MAIN'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in write_form printing body of main'.
EXIT.
ENDIF.
IF INDEX = 6.
NEW-PAGE.
CLEAR INDEX.
TMP_CURPAGE = TMP_CURPAGE + 1.
WRITE TMP_CURPAGE TO CURPAGE.
ELSE.
INDEX = INDEX + 1.
ENDIF.
AT END OF BELNR.
SUM.
MOVE ITAB_LINE-DEBIT TO DEBIT_TOTAL.
MOVE ITAB_LINE-CREDIT TO CREDIT_TOTAL.
PERFORM CONV_AMOUNT USING DEBIT_TOTAL CHANGING CHINESE.
ENDAT.
CLEAR MEMO.
CLEAR ACCOUNT.
CLEAR ACCOUNTNAME.
CLEAR CUSTOMERNAME.
CLEAR VENDORNAME.
CLEAR COSTCNT.
CLEAR DEBIT.
CLEAR CREDIT.
CLEAR INTERNALOR.
CLEAR SALESOR.
CLEAR PO.
ENDLOOP.
* End form
* CALL FUNCTION 'END_FORM'
* EXCEPTIONS
* OTHERS = 1.
* IF SY-SUBRC <> 0.
* WRITE 'Error in end_form'.
* EXIT.
* ENDIF.
* close print job
CALL FUNCTION 'CLOSE_FORM'
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
WRITE 'Error in close_form'.
EXIT.
ENDIF.
It's surreal but nice!