* 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!

 

 

 

posted on 2009-07-21 16:43  学无止境 达者为先  阅读(997)  评论(0编辑  收藏  举报