Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_ACC_DOCUMENT_POST

0 Likes
1,964

Hi,

How to use BAPI_ACC_DOCUMENT_POST FM with multiple posting keys with Duplicate posting keys for Accounts Receivables and Account payable.Any body please provide some sample code.

Best Regards,

Surendar Reddy.

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
949

LOOP AT IST_ITEM INTO WA_ITEM.

*---read header data

CLEAR WA_HEADER.

READ TABLE IST_HEADER INTO WA_HEADER INDEX SY-TABIX.

WA_BAPI_HEADER-BUS_ACT = 'RFBU'.

WA_BAPI_HEADER-USERNAME = SY-UNAME.

WA_BAPI_HEADER-HEADER_TXT = WA_HEADER-BKTXT.

WA_BAPI_HEADER-COMP_CODE = WA_HEADER-BUKRS.

CONCATENATE WA_HEADER-BLDAT6(4) WA_HEADER-BLDAT3(2) WA_HEADER-BLDAT+0(2)

INTO WA_BAPI_HEADER-DOC_DATE.

CONCATENATE WA_HEADER-BUDAT6(4) WA_HEADER-BUDAT3(2) WA_HEADER-BUDAT+0(2)

INTO WA_BAPI_HEADER-PSTNG_DATE.

WA_BAPI_HEADER-DOC_TYPE = WA_HEADER-BLART.

WA_BAPI_HEADER-REF_DOC_NO = WA_HEADER-XBLNR.

L_ITEMNO = L_ITEMNO + 1.

L_TABIX = SY-TABIX + 1.

L_PERCT = ( SY-TABIX / L_LINE ) * 100.

*---read the posting key data

CLEAR WA_TBSL.

READ TABLE IST_TBSL INTO WA_TBSL WITH KEY BSCHL = WA_ITEM-NEWBS.

IF SY-SUBRC NE 0.

MESSAGE E398(00) WITH TEXT-N01 WA_ITEM-NEWBS TEXT-N05 ''.

ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = WA_ITEM-HKONT

IMPORTING

OUTPUT = WA_ITEM-HKONT.

CASE WA_TBSL-KOART.

WHEN 'D'. " Customer

MOVE L_ITEMNO TO WA_CUST-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_CUST-CUSTOMER.

CONCATENATE WA_ITEM-ZFBDT6(4) WA_ITEM-ZFBDT3(2) WA_ITEM-ZFBDT+0(2)

INTO WA_CUST-BLINE_DATE.

MOVE WA_ITEM-ZUONR TO WA_CUST-ALLOC_NMBR.

MOVE WA_ITEM-SGTXT TO WA_CUST-ITEM_TEXT.

MOVE WA_ITEM-BUPLA TO WA_CUST-BUSINESSPLACE.

MOVE WA_ITEM-SECCO TO WA_CUST-SECTIONCODE.

MOVE WA_ITEM-MWSKZ TO WA_CUST-TAX_CODE.

IF WA_ITEM-NEWUM NE SPACE.

MOVE WA_ITEM-NEWUM TO WA_CUST-SP_GL_IND.

ENDIF.

MOVE WA_ITEM-PRCTR TO WA_CUST-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_CUST-BSCHL.

MOVE '2MPL' TO WA_CUST-BUS_AREA.

APPEND WA_CUST TO IST_CUST.

CLEAR WA_CUST.

WHEN 'K'. " Vendor

MOVE L_ITEMNO TO WA_VEND-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_VEND-VENDOR_NO.

CONCATENATE WA_ITEM-ZFBDT6(4) WA_ITEM-ZFBDT3(2) WA_ITEM-ZFBDT+0(2)

INTO WA_CUST-BLINE_DATE.

MOVE WA_ITEM-ZUONR TO WA_VEND-ALLOC_NMBR.

MOVE WA_ITEM-SGTXT TO WA_VEND-ITEM_TEXT.

MOVE WA_ITEM-BUPLA TO WA_VEND-BUSINESSPLACE.

MOVE WA_ITEM-SECCO TO WA_VEND-SECTIONCODE.

MOVE WA_ITEM-MWSKZ TO WA_VEND-TAX_CODE.

IF WA_ITEM-NEWUM NE SPACE.

MOVE WA_ITEM-NEWUM TO WA_VEND-SP_GL_IND.

ENDIF.

MOVE WA_ITEM-PRCTR TO WA_VEND-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_VEND-BSCHL.

MOVE '2MPL' TO WA_VEND-BUS_AREA.

APPEND WA_VEND TO IST_VEND.

CLEAR WA_VEND.

WHEN 'S'. " G/L

MOVE L_ITEMNO TO WA_GL-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_GL-GL_ACCOUNT.

MOVE WA_ITEM-SGTXT TO WA_GL-ITEM_TEXT.

CONCATENATE WA_ITEM-VALUT6(4) WA_ITEM-VALUT3(2) WA_ITEM-VALUT+0(2)

INTO WA_GL-VALUE_DATE.

MOVE WA_ITEM-ZUONR TO WA_GL-ALLOC_NMBR.

MOVE WA_ITEM-MWSKZ TO WA_GL-TAX_CODE.

MOVE WA_ITEM-KOSTL TO WA_GL-COSTCENTER.

MOVE WA_ITEM-PRCTR TO WA_GL-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_GL-BSCHL.

MOVE WA_ITEM-LIFNR TO WA_GL-VENDOR_NO.

MOVE WA_ITEM-EBELN TO WA_GL-PO_NUMBER.

MOVE WA_ITEM-EBELP TO WA_GL-PO_ITEM.

MOVE WA_ITEM-XREF3 TO WA_GL-REF_KEY_3.

MOVE '2MPL' TO WA_GL-BUS_AREA .

APPEND WA_GL TO IST_GL.

CLEAR WA_GL.

ENDCASE.

*---move corrency details

MOVE L_ITEMNO TO WA_CURR-ITEMNO_ACC.

MOVE 'INR' TO WA_CURR-CURRENCY.

CASE WA_TBSL-SHKZG.

WHEN 'S'.

MOVE WA_ITEM-WRBTR TO WA_CURR-AMT_DOCCUR.

WHEN 'H'.

MOVE WA_ITEM-WRBTR TO WA_CURR-AMT_DOCCUR.

WA_CURR-AMT_DOCCUR = WA_CURR-AMT_DOCCUR * -1.

ENDCASE.

L_WRBTR = L_WRBTR + WA_CURR-AMT_DOCCUR.

APPEND WA_CURR TO IST_CURR.

CLEAR WA_CURR.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = WA_HEADER-HKONT

IMPORTING

OUTPUT = WA_HEADER-HKONT.

L_ITEMNO = L_ITEMNO + 1.

MOVE L_ITEMNO TO WA_GL-ITEMNO_ACC.

MOVE WA_HEADER-HKONT TO WA_GL-GL_ACCOUNT.

MOVE WA_HEADER-PRCTR TO WA_GL-PROFIT_CTR.

*---if total amount is greater than 0 then post doc

*---with 50 posting key or else with 40 posting key

  • IF L_WRBTR GE 0.

  • MOVE '50' TO WA_GL-BSCHL.

  • ELSE.

  • MOVE '40' TO WA_GL-BSCHL.

  • ENDIF.

  • APPEND WA_GL TO IST_GL.

  • CLEAR WA_GL.

L_WRBTR = L_WRBTR * -1.

MOVE L_ITEMNO TO WA_CURR-ITEMNO_ACC.

MOVE 'INR' TO WA_CURR-CURRENCY.

MOVE L_WRBTR TO WA_CURR-AMT_DOCCUR.

APPEND WA_CURR TO IST_CURR.

CLEAR WA_CURR.

CLEAR: L_ITEMNO, L_WRBTR.

BREAK AAB_MUNISH.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

EXPORTING

DOCUMENTHEADER = WA_BAPI_HEADER

IMPORTING

OBJ_TYPE = G_OBJ_TYPE

OBJ_KEY = G_OBJ_KEY

OBJ_SYS = G_OBJ_SYS

TABLES

ACCOUNTGL = IST_GL

ACCOUNTRECEIVABLE = IST_CUST

ACCOUNTPAYABLE = IST_VEND

CURRENCYAMOUNT = IST_CURR

RETURN = IST_RETURN.

APPEND LINES OF IST_RETURN TO IST_LOG.

*---read first record of return messages as in that we will get

*---the status of processing

CLEAR WA_RETURN.

READ TABLE IST_RETURN INTO WA_RETURN INDEX 1.

IF WA_RETURN-NUMBER = '605'.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'.

MESSAGE S398(00) WITH TEXT-N02 G_OBJ_KEY(10) TEXT-N03 ''.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ENDIF.

CLEAR: G_OBJ_TYPE, G_OBJ_KEY, G_OBJ_SYS,

IST_GL[], IST_CUST[], IST_VEND[], IST_CURR[], IST_RETURN[].

*---display progress indicator

L_TEXT = L_PERCT.

PERFORM PROGRESS_INDICATOR USING TEXT-005

L_TEXT

L_PERCT

''.

ENDLOOP.

hope this will help u

4 REPLIES 4
Read only

Former Member
0 Likes
951

LOOP AT IST_ITEM INTO WA_ITEM.

*---read header data

CLEAR WA_HEADER.

READ TABLE IST_HEADER INTO WA_HEADER INDEX SY-TABIX.

WA_BAPI_HEADER-BUS_ACT = 'RFBU'.

WA_BAPI_HEADER-USERNAME = SY-UNAME.

WA_BAPI_HEADER-HEADER_TXT = WA_HEADER-BKTXT.

WA_BAPI_HEADER-COMP_CODE = WA_HEADER-BUKRS.

CONCATENATE WA_HEADER-BLDAT6(4) WA_HEADER-BLDAT3(2) WA_HEADER-BLDAT+0(2)

INTO WA_BAPI_HEADER-DOC_DATE.

CONCATENATE WA_HEADER-BUDAT6(4) WA_HEADER-BUDAT3(2) WA_HEADER-BUDAT+0(2)

INTO WA_BAPI_HEADER-PSTNG_DATE.

WA_BAPI_HEADER-DOC_TYPE = WA_HEADER-BLART.

WA_BAPI_HEADER-REF_DOC_NO = WA_HEADER-XBLNR.

L_ITEMNO = L_ITEMNO + 1.

L_TABIX = SY-TABIX + 1.

L_PERCT = ( SY-TABIX / L_LINE ) * 100.

*---read the posting key data

CLEAR WA_TBSL.

READ TABLE IST_TBSL INTO WA_TBSL WITH KEY BSCHL = WA_ITEM-NEWBS.

IF SY-SUBRC NE 0.

MESSAGE E398(00) WITH TEXT-N01 WA_ITEM-NEWBS TEXT-N05 ''.

ENDIF.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = WA_ITEM-HKONT

IMPORTING

OUTPUT = WA_ITEM-HKONT.

CASE WA_TBSL-KOART.

WHEN 'D'. " Customer

MOVE L_ITEMNO TO WA_CUST-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_CUST-CUSTOMER.

CONCATENATE WA_ITEM-ZFBDT6(4) WA_ITEM-ZFBDT3(2) WA_ITEM-ZFBDT+0(2)

INTO WA_CUST-BLINE_DATE.

MOVE WA_ITEM-ZUONR TO WA_CUST-ALLOC_NMBR.

MOVE WA_ITEM-SGTXT TO WA_CUST-ITEM_TEXT.

MOVE WA_ITEM-BUPLA TO WA_CUST-BUSINESSPLACE.

MOVE WA_ITEM-SECCO TO WA_CUST-SECTIONCODE.

MOVE WA_ITEM-MWSKZ TO WA_CUST-TAX_CODE.

IF WA_ITEM-NEWUM NE SPACE.

MOVE WA_ITEM-NEWUM TO WA_CUST-SP_GL_IND.

ENDIF.

MOVE WA_ITEM-PRCTR TO WA_CUST-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_CUST-BSCHL.

MOVE '2MPL' TO WA_CUST-BUS_AREA.

APPEND WA_CUST TO IST_CUST.

CLEAR WA_CUST.

WHEN 'K'. " Vendor

MOVE L_ITEMNO TO WA_VEND-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_VEND-VENDOR_NO.

CONCATENATE WA_ITEM-ZFBDT6(4) WA_ITEM-ZFBDT3(2) WA_ITEM-ZFBDT+0(2)

INTO WA_CUST-BLINE_DATE.

MOVE WA_ITEM-ZUONR TO WA_VEND-ALLOC_NMBR.

MOVE WA_ITEM-SGTXT TO WA_VEND-ITEM_TEXT.

MOVE WA_ITEM-BUPLA TO WA_VEND-BUSINESSPLACE.

MOVE WA_ITEM-SECCO TO WA_VEND-SECTIONCODE.

MOVE WA_ITEM-MWSKZ TO WA_VEND-TAX_CODE.

IF WA_ITEM-NEWUM NE SPACE.

MOVE WA_ITEM-NEWUM TO WA_VEND-SP_GL_IND.

ENDIF.

MOVE WA_ITEM-PRCTR TO WA_VEND-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_VEND-BSCHL.

MOVE '2MPL' TO WA_VEND-BUS_AREA.

APPEND WA_VEND TO IST_VEND.

CLEAR WA_VEND.

WHEN 'S'. " G/L

MOVE L_ITEMNO TO WA_GL-ITEMNO_ACC.

MOVE WA_ITEM-HKONT TO WA_GL-GL_ACCOUNT.

MOVE WA_ITEM-SGTXT TO WA_GL-ITEM_TEXT.

CONCATENATE WA_ITEM-VALUT6(4) WA_ITEM-VALUT3(2) WA_ITEM-VALUT+0(2)

INTO WA_GL-VALUE_DATE.

MOVE WA_ITEM-ZUONR TO WA_GL-ALLOC_NMBR.

MOVE WA_ITEM-MWSKZ TO WA_GL-TAX_CODE.

MOVE WA_ITEM-KOSTL TO WA_GL-COSTCENTER.

MOVE WA_ITEM-PRCTR TO WA_GL-PROFIT_CTR.

  • move WA_ITEM-NEWBS to WA_GL-BSCHL.

MOVE WA_ITEM-LIFNR TO WA_GL-VENDOR_NO.

MOVE WA_ITEM-EBELN TO WA_GL-PO_NUMBER.

MOVE WA_ITEM-EBELP TO WA_GL-PO_ITEM.

MOVE WA_ITEM-XREF3 TO WA_GL-REF_KEY_3.

MOVE '2MPL' TO WA_GL-BUS_AREA .

APPEND WA_GL TO IST_GL.

CLEAR WA_GL.

ENDCASE.

*---move corrency details

MOVE L_ITEMNO TO WA_CURR-ITEMNO_ACC.

MOVE 'INR' TO WA_CURR-CURRENCY.

CASE WA_TBSL-SHKZG.

WHEN 'S'.

MOVE WA_ITEM-WRBTR TO WA_CURR-AMT_DOCCUR.

WHEN 'H'.

MOVE WA_ITEM-WRBTR TO WA_CURR-AMT_DOCCUR.

WA_CURR-AMT_DOCCUR = WA_CURR-AMT_DOCCUR * -1.

ENDCASE.

L_WRBTR = L_WRBTR + WA_CURR-AMT_DOCCUR.

APPEND WA_CURR TO IST_CURR.

CLEAR WA_CURR.

CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

EXPORTING

INPUT = WA_HEADER-HKONT

IMPORTING

OUTPUT = WA_HEADER-HKONT.

L_ITEMNO = L_ITEMNO + 1.

MOVE L_ITEMNO TO WA_GL-ITEMNO_ACC.

MOVE WA_HEADER-HKONT TO WA_GL-GL_ACCOUNT.

MOVE WA_HEADER-PRCTR TO WA_GL-PROFIT_CTR.

*---if total amount is greater than 0 then post doc

*---with 50 posting key or else with 40 posting key

  • IF L_WRBTR GE 0.

  • MOVE '50' TO WA_GL-BSCHL.

  • ELSE.

  • MOVE '40' TO WA_GL-BSCHL.

  • ENDIF.

  • APPEND WA_GL TO IST_GL.

  • CLEAR WA_GL.

L_WRBTR = L_WRBTR * -1.

MOVE L_ITEMNO TO WA_CURR-ITEMNO_ACC.

MOVE 'INR' TO WA_CURR-CURRENCY.

MOVE L_WRBTR TO WA_CURR-AMT_DOCCUR.

APPEND WA_CURR TO IST_CURR.

CLEAR WA_CURR.

CLEAR: L_ITEMNO, L_WRBTR.

BREAK AAB_MUNISH.

CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'

EXPORTING

DOCUMENTHEADER = WA_BAPI_HEADER

IMPORTING

OBJ_TYPE = G_OBJ_TYPE

OBJ_KEY = G_OBJ_KEY

OBJ_SYS = G_OBJ_SYS

TABLES

ACCOUNTGL = IST_GL

ACCOUNTRECEIVABLE = IST_CUST

ACCOUNTPAYABLE = IST_VEND

CURRENCYAMOUNT = IST_CURR

RETURN = IST_RETURN.

APPEND LINES OF IST_RETURN TO IST_LOG.

*---read first record of return messages as in that we will get

*---the status of processing

CLEAR WA_RETURN.

READ TABLE IST_RETURN INTO WA_RETURN INDEX 1.

IF WA_RETURN-NUMBER = '605'.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

WAIT = 'X'.

MESSAGE S398(00) WITH TEXT-N02 G_OBJ_KEY(10) TEXT-N03 ''.

ELSE.

CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.

ENDIF.

CLEAR: G_OBJ_TYPE, G_OBJ_KEY, G_OBJ_SYS,

IST_GL[], IST_CUST[], IST_VEND[], IST_CURR[], IST_RETURN[].

*---display progress indicator

L_TEXT = L_PERCT.

PERFORM PROGRESS_INDICATOR USING TEXT-005

L_TEXT

L_PERCT

''.

ENDLOOP.

hope this will help u

Read only

0 Likes
949

hi,

I am also facing the same problem, this BAPI doesn't have Posting key field.

I am not getting the clarity through this code can you please revrt with any other example on how to deal with posting key as I have to upload the data for transaction F-02 which will hit the GL account of the customer.

Regards

Read only

0 Likes
949

Hey All,

Im also working with this FM. in my flat file also have posting key, which is not in bapi,

but we can derive, using posting key we can find the Acct type.. for ex,

Acct receivable Acct type is 'C', Acct Payable Acct type is 'V', and GL Account Acct type is 'G'.

after we need to pass the values to relative table.

Thanks

Hema

Read only

0 Likes
949

Hi all,

Many many thanks for the suggestions and sample codes.I Written BDC Program for FB01.In this I used fast data entry button and my program working fine and it can be used for any number of line items(max 999) and any kind of posting keys.

Best Regards,

Surendar Reddy.