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

Program For Multiple Doc Posting Giving Error

Former Member
0 Likes
751

Hi ALL THE MASTERS,

I have created a program for multiple document posting with Spl G/L through BAPI BAPI_ACC_DOCUMENT_POST .For this the user can select 1 or many documents to post for a Vendor.It is working fine for 1 document posting.Now when posting for many document then the requirement is that the bank entry should be single with the total of all the amounts of all the vendors.When I post then i AM GETTING ERROR 'Balance In Transaction Currency'.

How can I rectify it.

Here is the code ssample which I have written.(T_ITAB is Vendor internal table & T_FINALN is bank Internal Table shoould contain I entry which is correct from my side)

COUNT = 0.

LOOP AT T_ITAB INTO W_ITAB WHERE CHECK = 'X'. "(CHECK indicates the rows selected from ALV which is displayed after user input)

DOCHEADER-USERNAME = SY-UNAME.

DOCHEADER-COMP_CODE = W_ITAB-BUKRS.

DOCHEADER-BUS_ACT = W_ITAB-GLVOR.

DOCHEADER-FISC_YEAR = W_ITAB-GJAHR.

DOCHEADER-REF_DOC_NO = W_ITAB-XBLNR.

DOCHEADER-DOC_DATE = W_ITAB-BLDAT.

DOCHEADER-PSTNG_DATE = W_ITAB-BUDAT.

DOCHEADER-TRANS_DATE = W_ITAB-WWERT.

DOCHEADER-FIS_PERIOD = W_ITAB-MONAT.

DOCHEADER-DOC_TYPE = 'KZ'.

ADD 1 TO COUNT.

WA_ACCOUNTPAY-ITEMNO_ACC = COUNT.

WA_ACCOUNTPAY-VENDOR_NO = W_ITAB-LIFNR.

WA_ACCOUNTPAY-GL_ACCOUNT = W_ITAB-HKONT.

  • WA_ACCOUNTPAY-GL_ACCOUNT = '0000428010'.

WA_ACCOUNTPAY-PMNTTRMS = W_ITAB-ZTERM.

WA_ACCOUNTPAY-BLINE_DATE = W_ITAB-ZFBDT.

WA_ACCOUNTPAY-BUSINESSPLACE = W_ITAB-BUPLA.

WA_ACCOUNTPAY-SECTIONCODE = W_ITAB-SECCO.

WA_ACCOUNTPAY-ALLOC_NMBR = W_ITAB-ZUONR.

WA_ACCOUNTPAY-ITEM_TEXT = W_ITAB-SGTXT.

WA_ACCOUNTPAY-W_TAX_CODE = W_ITAB-QSSKZ.

WA_ACCOUNTPAY-COMP_CODE = W_ITAB-BUKRS.

WA_ACCOUNTPAY-PROFIT_CTR = W_ITAB-PRCTR.

WA_ACCOUNTPAY-SP_GL_IND = W_ITAB-ZUMSK.

  • WA_ACCOUNTPAY-TAX_CODE = W_ITAB-MWSKZ.

  • WA_ACCOUNTPAY-PYMT_CUR = W_ITAB-PSWSL.

  • WA_ACCOUNTPAY-PYMT_AMT = W_ITAB-WRBTR.

  • WA_ACCOUNTPAY-PYMT_CUR_ISO =

IF W_ITAB-ZUMSK = 'B'.

WA_ACCOUNTPAY-TAX_CODE = 'V0'.

ENDIF.

APPEND WA_ACCOUNTPAY TO ACCOUNTPAY.

CLEAR: WA_ACCOUNTPAY.

MOVE W_ITAB-EBELN TO WA_EXTENSION1-FIELD1.

MOVE W_ITAB-EBELP TO WA_EXTENSION1-FIELD2.

  • MOVE W_ITAB-POSKI TO WA_EXTENSION1-FIELD3.

MOVE W_ITAB-PROJK TO WA_EXTENSION1-FIELD3.

MOVE W_ITAB-HKONT TO WA_EXTENSION1-FIELD4.

APPEND WA_EXTENSION1 TO EXTENSION1.

CLEAR: WA_EXTENSION1.

WA_CURRAMOUNT-ITEMNO_ACC = COUNT. " " Line Item Number

WA_CURRAMOUNT-CURR_TYPE = '00'. " " Currency Type

WA_CURRAMOUNT-CURRENCY = W_ITAB-WAERS. " " Currency Key

WA_CURRAMOUNT-CURRENCY_ISO = W_ITAB-WAERS. " " ISO Code

WA_CURRAMOUNT-AMT_DOCCUR = W_ITAB-WRBTR. " " Amount

WA_CURRAMOUNT-AMT_BASE = W_ITAB-DMBTR.

WA_CURRAMOUNT-TAX_AMT = W_ITAB-WRBTR.

APPEND WA_CURRAMOUNT TO CURRAMOUNT.

CLEAR: WA_CURRAMOUNT.

IF W_ITAB-ZUMSK = 'B'.

ADD 2 TO COUNT.

WA_ACCOUNTTAX-ITEMNO_ACC = COUNT.

WA_ACCOUNTTAX-GL_ACCOUNT = '0000428370'.

  • WA_ACCOUNTTAX-TAX_CODE = W_ITAB-MWSKZ.

WA_ACCOUNTTAX-TAX_CODE = 'V0'.

WA_ACCOUNTTAX-TAX_RATE = '0.00'.

WA_ACCOUNTTAX-ACCT_KEY = 'VS1'.

WA_ACCOUNTTAX-COND_KEY = 'JMOP'.

WA_ACCOUNTTAX-ITEMNO_TAX = COUNT - 2.

APPEND WA_ACCOUNTTAX TO ACCOUNTTAX.

CLEAR: WA_ACCOUNTTAX.

WA_CURRAMOUNT-ITEMNO_ACC = COUNT. " " Line Item Number

WA_CURRAMOUNT-CURR_TYPE = '00'. " " Currency Type

WA_CURRAMOUNT-CURRENCY = W_ITAB-PSWSL. " " Currency Key

WA_CURRAMOUNT-CURRENCY_ISO = W_ITAB-WAERS. " " ISO Code

WA_CURRAMOUNT-AMT_DOCCUR = '0.00'. " " Amount

WA_CURRAMOUNT-AMT_BASE = '0.00'. " " Base Amount

  • WA_CURRAMOUNT-TAX_AMT = W_ITAB-WRBTR.

APPEND WA_CURRAMOUNT TO CURRAMOUNT.

CLEAR WA_CURRAMOUNT.

  • MOVE-CORRESPONDING W_ITAB TO W_BSEGNEW.

  • APPEND W_BSEGNEW TO T_BSEGNEW.

*

  • MOVE-CORRESPONDING W_ITAB TO W_BKPFNEW.

  • APPEND W_BKPFNEW TO T_BKPFNEW.

  • CLEAR: W_ITAB,W_BSEGNEW,W_BKPFNEW.

ENDIF.

CLEAR: W_ITAB.

ENDLOOP.

COUNT = 0.

LOOP AT T_FINALN INTO W_FINALN.

ADD 2 TO COUNT.

WA_ACCOUNTGL-ITEMNO_ACC = COUNT. " " Line Item Number

WA_ACCOUNTGL-GL_ACCOUNT = HKONT. " " GL Account Number

WA_ACCOUNTGL-COMP_CODE = W_FINALN-BUKRS. " " Company Code

WA_ACCOUNTGL-PSTNG_DATE = W_FINALN-BUDAT. " " Posting Date

WA_ACCOUNTGL-DOC_TYPE = 'KZ'. "SA " " Document Type

WA_ACCOUNTGL-FISC_YEAR = W_FINALN-GJAHR. " " Fiscal Year

WA_ACCOUNTGL-FIS_PERIOD = W_FINALN-MONAT. " " Fiscal Period

WA_ACCOUNTGL-ITEM_TEXT = ''. " " Item Text

WA_ACCOUNTGL-ALLOC_NMBR = ''.

  • wa_accountgl-bus_area = '2500'.

  • wa_accountgl-acct_type = 'K'.

WA_ACCOUNTGL-PROFIT_CTR = V_PRCTR.

APPEND WA_ACCOUNTGL TO ACCOUNTGL.

CLEAR WA_ACCOUNTGL.

WA_CURRAMOUNT-ITEMNO_ACC = COUNT. " " Line Item Number

WA_CURRAMOUNT-CURR_TYPE = '00'. " " Currency Type

WA_CURRAMOUNT-CURRENCY = W_FINALN-WAERS. " " Currency Key

WA_CURRAMOUNT-CURRENCY_ISO = W_FINALN-WAERS. " " ISO Code

WA_CURRAMOUNT-AMT_DOCCUR = V_WRBTR * -1. " " Amount

WA_CURRAMOUNT-AMT_BASE = V_WRBTR * -1. " " Base Amount

WA_CURRAMOUNT-TAX_AMT = V_WRBTR * -1.

APPEND WA_CURRAMOUNT TO CURRAMOUNT.

CLEAR WA_CURRAMOUNT.

WA_ACCOUNTWT-ITEMNO_ACC = COUNT.

WA_ACCOUNTWT-WT_TYPE = W_FINALN-MWART.

WA_ACCOUNTWT-WT_CODE = W_FINALN-QSSKZ.

WA_ACCOUNTWT-BAS_AMT_LC = W_FINALN-QSSHB.

WA_ACCOUNTWT-BAS_AMT_TC = W_FINALN-FWBAS.

WA_ACCOUNTWT-BAS_AMT_IND = 'X'.

APPEND WA_ACCOUNTWT TO ACCOUNTWT.

CLEAR: WA_ACCOUNTWT.

ADD 2 TO COUNT.

  • WA_ACCOUNTTAX-ITEMNO_ACC = COUNT.

  • WA_ACCOUNTTAX-GL_ACCOUNT = '0000428370'.

  • WA_ACCOUNTTAX-TAX_CODE = 'V0'.

    • WA_ACCOUNTTAX-TAX_CODE = W_FINALN-MWSKZ.

  • WA_ACCOUNTTAX-ACCT_KEY = 'VS1'.

  • WA_ACCOUNTTAX-COND_KEY = 'JMOP'.

*

  • APPEND WA_ACCOUNTTAX TO ACCOUNTTAX.

  • CLEAR: WA_ACCOUNTTAX.

  • WA_CURRAMOUNT-ITEMNO_ACC = COUNT. " " Line Item Number

  • WA_CURRAMOUNT-CURR_TYPE = '00'. " " Currency Type

  • WA_CURRAMOUNT-CURRENCY = W_FINALN-WAERS. " " Currency Key

  • WA_CURRAMOUNT-CURRENCY_ISO = W_FINALN-WAERS. " " ISO Code

  • WA_CURRAMOUNT-AMT_DOCCUR = '00'. " " Amount

  • WA_CURRAMOUNT-AMT_BASE = '0.00'. " " Base Amount

  • APPEND WA_CURRAMOUNT TO CURRAMOUNT.

  • CLEAR WA_CURRAMOUNT.

ENDLOOP.

After this the BAPI is called BAPI_ACC_DOCUMENT_CHECK & BAPI_ACC_DOCUMENT_POST .It is giving error in RETURN in 1st BAPI.

Thanks In Advance

Bharti Jain

1 ACCEPTED SOLUTION
Read only

deepak_dhamat
Active Contributor
0 Likes
694

hi,

Pass Exch_rate = '1.00' while passign currencyamount table to BAPI .

Please check data which you are passing is correct .

Regards

Deepak.

5 REPLIES 5
Read only

deepak_dhamat
Active Contributor
0 Likes
695

hi,

Pass Exch_rate = '1.00' while passign currencyamount table to BAPI .

Please check data which you are passing is correct .

Regards

Deepak.

Read only

Former Member
0 Likes
694

Thanks Deepak,

I have done as u have suggested but the same error is coming while posting for multiple documents

'Balane In Transaction Currency'.

Regards,

Bharti Jain

Read only

0 Likes
694

hi ,

when you are using LOOP ENDLOOP for posting via BAPi . then do it

one by one

i.e in loop at itab .

call bapi_acc_document_check

call bapi_acc_document_post

cal bapi_transaction_commit .

endloop .

pass data by one document at a time in loop endloop..

Then you can rectify error individually .

Regards

Deepak.

Read only

Former Member
0 Likes
694

Thanks A Lot ,

If I Call The BAPI inside the loop then suppose there will 2 Documents selected then there will be 2 lines in ACCOUNTPAY and 2 lines in ACCOUNTGL.The document will be posted but if we see the document in FB03 then there will be 4 lines 2 for bank & 2 For vendor.

But we want that there will be 2 lines for vendor and 1 for bank.

Say for line 1 amt is 200 & for line 2 amt is 300 so the bank entry should contain -500. (this is required.)

Thanks In Advance,

Regards,

Bharti Jain

Read only

Former Member
0 Likes
694

Hi,

Should I call any other BAPI for posting multiple documents or I have to call BADI or else.

Regards,

Bharti Jain