清账
-
ABAP清账例子2
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394REPORT ztest.*--------------------------------------------------------------------** INTERNAL TABLE DECLARATION*--------------------------------------------------------------------*DATA: it_blntab TYPE TABLE OF blntab WITH HEADER LINE,it_ftclear TYPE TABLE OF ftclear WITH HEADER LINE,it_ftpost TYPE TABLE OF ftpost WITH HEADER LINE,it_fttax TYPE TABLE OF fttax WITH HEADER LINE.*--------------------------------------------------------------------** START-OF-SELECTION*--------------------------------------------------------------------*START-OF-SELECTION.DEFINE populate_ftpost.it_ftpost-stype = &1.it_ftpost-count = &2.it_ftpost-fnam = &3.it_ftpost-fval = &4.append it_ftpost.END-OF-DEFINITION.DEFINE populate_ftclear.it_ftclear-agkoa = 'D'.it_ftclear-agbuk = 'XXXX'. "company codeit_ftclear-selfd = 'BELNR'.it_ftclear-xnops = 'X'.it_ftclear-selvon = &1.append it_ftclear.END-OF-DEFINITION.CALL FUNCTION 'POSTING_INTERFACE_START'EXPORTINGi_function = 'C'i_keep = 'X'i_mode = 'A'EXCEPTIONSclient_incorrect = 1function_invalid = 2group_name_missing = 3mode_invalid = 4update_invalid = 5OTHERS = 6.populate_ftpost: 'K' 1 'BKPF-BUKRS' 'BUKRS', "Company code'K' 1 'BKPF-BLART' 'DA','K' 1 'BKPF-BLDAT' '16.09.2010','K' 1 'BKPF-BUDAT' '16.09.2010','K' 1 'BKPF-WAERS' 'RMB','K' 1 'BKPF-XBLNR' 'Test','P' 1 'RF05A-NEWBS' '11','P' 1 'BSEG-HKONT' '0090000052','P' 1 'BSEG-SGTXT' '20100916-01','P' 1 'BSEG-WRBTR' '52'.populate_ftclear '78000020772008001'. "concatenate doc number + fiscal year + line numberCALL FUNCTION 'POSTING_INTERFACE_CLEARING'EXPORTINGi_auglv = 'UMBUCHNG'i_tcode = 'FB05'i_sgfunct = 'C'IMPORTINGe_msgid = sy-msgide_msgno = sy-msgnoe_msgty = sy-msgtye_msgv1 = sy-msgv1e_msgv2 = sy-msgv2e_msgv3 = sy-msgv3e_msgv4 = sy-msgv4* E_SUBRC = SY-SUBRCTABLESt_blntab = it_blntabt_ftclear = it_ftcleart_ftpost = it_ftpostt_fttax = it_fttaxEXCEPTIONSclearing_procedure_invalid = 1clearing_procedure_missing = 2table_t041a_empty = 3transaction_code_invalid = 4amount_format_error = 5too_many_line_items = 6company_code_invalid = 7screen_not_found = 8no_authorization = 9OTHERS = 10.IF sy-subrc <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.CALL FUNCTION 'POSTING_INTERFACE_END'EXCEPTIONSsession_not_processable = 1OTHERS = 2. -
ABAP清账实现例子1
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277*&---------------------------------------------------------------------**& Report ZBAPI_POST_CLEAR_TEST*&*&---------------------------------------------------------------------**&*&*&---------------------------------------------------------------------*REPORT ZBAPI_POST_CLEAR_TEST.DATA:GT_BLNTAB TYPE STANDARD TABLE OF BLNTAB INITIAL SIZE 0,GT_BSID_CLEARING TYPE STANDARD TABLE OF BSID INITIAL SIZE 0 ,GT_FTCLEAR TYPE STANDARD TABLE OF FTCLEAR INITIAL SIZE 0,GT_FTPOST TYPE STANDARD TABLE OF FTPOST INITIAL SIZE 0 ,GT_FTTAX TYPE STANDARD TABLE OF FTTAX INITIAL SIZE 0 .DATA:GS_FTPOST LIKE LINE OF GT_FTPOST,GS_BSID_CLEARING LIKE LINE OF GT_BSID_CLEARING.START-OF-SELECTION.GS_BSID_CLEARING-BELNR = '2000000303'.GS_BSID_CLEARING-GJAHR = '2013'.GS_BSID_CLEARING-BUZEI = 1.APPEND GS_BSID_CLEARING TO GT_BSID_CLEARING.PERFORM: F_POSTING_INTERFACE_START.PERFORM: F_POSTING_INTERFACE_CLEARING.PERFORM: F_POSTING_INTERFACE_END.*&---------------------------------------------------------------------**& Form f_posting_interface_start*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM F_POSTING_INTERFACE_START .CONSTANTS: LC_FUNCTION LIKE RFIPI-FUNCT VALUE 'C'," B= BDC, C= Call TransLC_MODE LIKE RFPDO-ALLGAZMD VALUE 'E', "ERRORS onlyLC_UPDATE LIKE RFPDO-ALLGVBMD VALUE 'S' .CALL FUNCTION 'POSTING_INTERFACE_START'EXPORTINGI_FUNCTION = LC_FUNCTIONI_MODE = LC_MODEI_UPDATE = LC_UPDATEEXCEPTIONSCLIENT_INCORRECT = 1FUNCTION_INVALID = 2GROUP_NAME_MISSING = 3MODE_INVALID = 4UPDATE_INVALID = 5OTHERS = 6.IF SY-SUBRC <> 0.MESSAGE 'ERROR' TYPE 'S'.ENDIF.ENDFORM." F_POSTING_INTERFACE_START*&---------------------------------------------------------------------**& Form f_posting_interface_clearing*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM F_POSTING_INTERFACE_CLEARING.CONSTANTS: LC_AUGLV TYPE AUGLV VALUE 'EINGZAHL',LC_TCODE TYPE SYTCODE VALUE 'FB05',LC_SGFUNCT TYPE SGFUNCT_PI VALUE 'C'.PERFORM: F_PREPARE_FTPOST.PERFORM: F_PREPARE_FTCLEAR.CALL FUNCTION 'POSTING_INTERFACE_CLEARING'EXPORTINGI_AUGLV = LC_AUGLVI_TCODE = LC_TCODEI_SGFUNCT = LC_SGFUNCTTABLEST_BLNTAB = GT_BLNTABT_FTCLEAR = GT_FTCLEART_FTPOST = GT_FTPOSTT_FTTAX = GT_FTTAXEXCEPTIONSCLEARING_PROCEDURE_INVALID = 1CLEARING_PROCEDURE_MISSING = 2TABLE_T041A_EMPTY = 3TRANSACTION_CODE_INVALID = 4AMOUNT_FORMAT_ERROR = 5TOO_MANY_LINE_ITEMS = 6COMPANY_CODE_INVALID = 7SCREEN_NOT_FOUND = 8NO_AUTHORIZATION = 9OTHERS = 10.IF SY-SUBRC <> 0.CASE SY-SUBRC.WHEN '1'.MESSAGE 'ERROR' TYPE 'S'.WHEN '2'.MESSAGE 'ERROR' TYPE 'S'.WHEN '3'.MESSAGE 'ERROR' TYPE 'S'.WHEN '4'.MESSAGE 'ERROR' TYPE 'S'.WHEN '5'.MESSAGE 'ERROR' TYPE 'S'.WHEN '6'.MESSAGE 'ERROR' TYPE 'S'.WHEN '7'.MESSAGE 'ERROR' TYPE 'S'.WHEN '8'.MESSAGE 'ERROR' TYPE 'S'.WHEN '9'.MESSAGE 'ERROR' TYPE 'S'.ENDCASE.ELSE.COMMIT WORK.SET SCREEN 0.ENDIF.ENDFORM." F_POSTING_INTERFACE_CLEARING*&---------------------------------------------------------------------**& Form f_prepare_ftpost*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM F_PREPARE_FTPOST .CONSTANTS: LC_HEADER TYPE C VALUE 'K', "HeaderLC_ITEM TYPE C VALUE 'P', "ItemLC_COUNT TYPE I VALUE '001'.*fill_header(BKPF)* Convert the date format from YYYYMMDD -> DD/MM/YYYY* PERFORM: F_CONVERT_DATE USING PA_BLDAT* CHANGING PA_BLDAT.GS_FTPOST-STYPE = LC_HEADER.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BKPF-BLDAT'.GS_FTPOST-FVAL = SY-DATUM.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.* Convert the date format from YYYYMMDD -> DD/MM/YYYY* PERFORM: F_CONVERT_DATE USING PA_BUDAT* CHANGING PA_BUDAT.GS_FTPOST-STYPE = LC_HEADER.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BKPF-BUDAT'.GS_FTPOST-FVAL = SY-DATUM.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.GS_FTPOST-STYPE = LC_HEADER.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BKPF-BLART'.GS_FTPOST-FVAL = 'SA'.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.GS_FTPOST-STYPE = LC_HEADER.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BKPF-BUKRS'.GS_FTPOST-FVAL = '1000'.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.GS_FTPOST-STYPE = LC_HEADER.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BKPF-WAERS'. "CurrencyGS_FTPOST-FVAL = 'USD'.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.* GS_FTPOST-STYPE = LC_HEADER.* GS_FTPOST-COUNT = LC_COUNT.* GS_FTPOST-FNAM = 'BKPF-XBLNR'.* GS_FTPOST-FVAL = PA_XBLNR.* APPEND GS_FTPOST TO GT_FTPOST.* CLEAR GS_FTPOST.* GS_FTPOST-STYPE = LC_HEADER.* GS_FTPOST-COUNT = LC_COUNT.* GS_FTPOST-FNAM = 'BKPF-BKTXT'. "Doc. Header Text* GS_FTPOST-FVAL = PA_TEXT.* APPEND GS_FTPOST TO GT_FTPOST.* CLEAR GS_FTPOST.*Commented temporarily* gs_ftpost-stype = lc_header.* gs_ftpost-count = lc_count.* gs_ftpost-fnam = 'BKPF-KURSF'. "Exchange Rate* gs_ftpost-fval = pa_erate.* SHIFT gs_ftpost-fval LEFT DELETING LEADING space.* APPEND gs_ftpost TO gt_ftpost.* CLEAR gs_ftpost.*Item DataGS_FTPOST-STYPE = LC_ITEM.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'RF05A-NEWKO'.GS_FTPOST-FVAL = 'MA03E'.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.GS_FTPOST-STYPE = LC_ITEM.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'RF05A-NEWBS'.GS_FTPOST-FVAL = '31'.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.GS_FTPOST-STYPE = LC_ITEM.GS_FTPOST-COUNT = LC_COUNT.GS_FTPOST-FNAM = 'BSEG-WRBTR'.GS_FTPOST-FVAL = '1000'.SHIFT GS_FTPOST-FVAL LEFT DELETING LEADING SPACE.APPEND GS_FTPOST TO GT_FTPOST.CLEAR GS_FTPOST.* Convert the date format from YYYYMMDD -> DD/MM/YYYY* PERFORM: F_CONVERT_DATE USING PA_VALUT* CHANGING PA_VALUT.* GS_FTPOST-STYPE = LC_ITEM.* GS_FTPOST-COUNT = LC_COUNT.* GS_FTPOST-FNAM = 'BSEG-VALUT'.* GS_FTPOST-FVAL = SY-DATUM.* APPEND GS_FTPOST TO GT_FTPOST.* CLEAR GS_FTPOST.*** Convert the date format from YYYYMMDD -> DD/MM/YYYY* PERFORM: F_CONVERT_DATE USING PA_ZFBDT* CHANGING PA_ZFBDT.* GS_FTPOST-STYPE = LC_ITEM.* GS_FTPOST-COUNT = LC_COUNT.* GS_FTPOST-FNAM = 'BSEG-ZFBDT'.* GS_FTPOST-FVAL = PA_ZFBDT.* APPEND GS_FTPOST TO GT_FTPOST.* CLEAR GS_FTPOST.ENDFORM." F_PREPARE_FTPOST*&---------------------------------------------------------------------**& Form f_prepare_ftclear*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM F_PREPARE_FTCLEAR .DATA: LS_FTCLEAR TYPE FTCLEAR.CONSTANTS: LC_AGKOA TYPE KOART VALUE 'S', "CustomersLC_SELFD TYPE FLD30_F05A VALUE 'BELNR'.LOOP AT GT_BSID_CLEARING INTO GS_BSID_CLEARING. "Clearing TableLS_FTCLEAR-AGKOA = LC_AGKOA.* LS_FTCLEAR-AGKON = '200120'. "CustomerLS_FTCLEAR-AGBUK = '1000'. "Company codeLS_FTCLEAR-XNOPS = 'X'. "G/L IndicatorLS_FTCLEAR-SELFD = LC_SELFD.* LS_FTCLEAR-AVSID = '2000000302'.<span style="color:#FF0000"> LS_FTCLEAR-SELVON = '2000000303'.LS_FTCLEAR-SELBIS = '2000000303'.</span>APPEND LS_FTCLEAR TO GT_FTCLEAR.ENDLOOP.ENDFORM." F_PREPARE_FTCLEAR*&---------------------------------------------------------------------**& Form f_posting_interface_end*&---------------------------------------------------------------------** text*----------------------------------------------------------------------*FORM F_POSTING_INTERFACE_END .CALL FUNCTION 'POSTING_INTERFACE_END'EXPORTINGI_BDCIMMED = 'X'EXCEPTIONSSESSION_NOT_PROCESSABLE = 1OTHERS = 2.IF SY-SUBRC <> 0.MESSAGE 'ERROR' TYPE 'S'.ENDIF.ENDFORM. " F_POSTING_INTERFACE_END -
SAP批创建清账凭证的函数
POSTING_INTERFACE_CLEARINGPOSTING_INTERFACE_DOCUMENTPOSTING_INTERFACE_ENDPOSTING_INTERFACE…