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

FBCJ posting error ABAP prg

Former Member
0 Likes
383

hai friends

i have created on BAPI to FBCJ

it is used to RECEIPT FROM BANK & PAYMENT TO BANK and its working fine

i have created one RFC to posting the data.

it posted only one record but i want to post all records. please rectified the error in the following conding

&----


*& Report ZFBCJ_TEST_POSTING *

*& *

&----


*& *

*& *

&----


Report ZFBCJ_TEST_POSTING .

DATA: it_advance TYPE TABLE OF ZFI_IBSADVANCE WITH HEADER LINE.

DATA: NODATA_CHARACTER VALUE '/'.

DATA: BDCDATA LIKE TABLE OF BDCDATA WITH HEADER LINE.

data: BDCDATA1 LIKE TABLE OF BDCDATA WITH HEADER LINE.

DATA: MESSTAB LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE.

data: MESSTAB1 LIKE TABLE OF BDCMSGCOLL WITH HEADER LINE.

  • DATA: IT_TEMP LIKE TABLE OF ZTEMPFBCJ WITH HEADER LINE.

data: IT_TEMP type ZTEMPFBCJ.

data: docu_dat like bkpf-bldat.

data: docu_num like bkpf-xblnr.

select single * into it_temp from ZTEMPFBCJ where comp = 'X'.

*Capture whether a 'receipt' or 'payment' has been made in txn FBCJ

SELECT single xblnr bldat INtO (DOCU_NUM, DOCU_DAT) FROM bkpf

where xblnr = it_temp-REF_DOC_NO.

IF DOCU_NUM <> it_temp-ref_doc_no.

*LOOP AT IT_TEMP." WHERE COMP = 'X'.

IF NOT IT_TEMP-PAYMENTS IS INITIAL. "If a cash entry has been made

perform bdc_dynpro using 'SAPMFCJ0' '0100'.

perform bdc_field using 'BDC_OKCODE' '=CHCJ'.

perform bdc_field using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(01)'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_dynpro using 'SAPMFCJ0' '0050'.

perform bdc_field using 'BDC_CURSOR' 'TCJ_C_JOURNALS-CAJO_NUMBER'.

perform bdc_field using 'BDC_OKCODE' '=OK50'.

perform bdc_field using 'TCJ_C_JOURNALS-COMP_CODE' '1000'.

perform bdc_field using 'TCJ_C_JOURNALS-CAJO_NUMBER' IT_TEMP-CJ_NUMBER.

perform bdc_dynpro using 'SAPMFCJ0' '0100'.

perform bdc_field using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(01)'.

perform bdc_field using 'BDC_OKCODE' '=TODA'.

perform bdc_dynpro using 'SAPMFCJ0' '0100'.

perform bdc_field using 'BDC_OKCODE' '=SELE'.

perform bdc_field using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(01)'.

perform bdc_dynpro using 'SAPMFCJ0' '0100'.

perform bdc_field using 'BDC_OKCODE' '=POST_ALL'.

perform bdc_field using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(01)'.

*perform bdc_field using 'F_LINE_SEL'

CALL TRANSACTION 'FBCJ' USING BDCDATA

MODE 'A'

UPDATE 'A'

MESSAGES INTO MESSTAB.

----


*Values for 'MODE'

"A: show all dynpros

"E: show dynpro on error only

"N: do not display dynpro

*Values for 'UPDATE'

"S: synchronously

"A: asynchronously

"L: local

----


*

*UPDATE ZIBSCASHPAYMENTS SET PAYMT = ' '

  • WHERE CJ_NO = IT_TEMP-CJ_NUMBER.

ENDIF.

IF NOT IT_TEMP-RECEIPTS IS INITIAL. "If a cash entry has been made

perform bdc_dynpro1 using 'SAPMFCJ0' '0100'.

perform bdc_field1 using 'BDC_OKCODE' '=CHCJ'.

perform bdc_field1 using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(01)'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_dynpro1 using 'SAPMFCJ0' '0050'.

perform bdc_field1 using 'BDC_CURSOR' 'TCJ_C_JOURNALS-CAJO_NUMBER'.

perform bdc_field1 using 'BDC_OKCODE' '=OK50'.

perform bdc_field1 using 'TCJ_C_JOURNALS-COMP_CODE' '1000'.

perform bdc_field1 using 'TCJ_C_JOURNALS-CAJO_NUMBER' IT_TEMP-CJ_NUMBER.

perform bdc_dynpro1 using 'SAPMFCJ0' '0100'.

perform bdc_field1 using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(04)'.

perform bdc_field1 using 'BDC_OKCODE' '=TODA'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_dynpro1 using 'SAPMFCJ0' '0100'.

perform bdc_field1 using 'BDC_OKCODE' '=TAB2'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_field1 using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(04)'.

perform bdc_dynpro1 using 'SAPMFCJ0' '0100'.

perform bdc_field1 using 'BDC_OKCODE' '=SELE'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_field1 using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(06)'.

perform bdc_dynpro1 using 'SAPMFCJ0' '0100'.

perform bdc_field1 using 'BDC_OKCODE' '=POST'." '=POST_ALL'.

perform bdc_field using 'F_DISPLAY_PERIOD_LO' IT_TEMP-DOCUMENT_DATE.

perform bdc_field using 'F_DISPLAY_PERIOD_HI' IT_TEMP-DOCUMENT_DATE.

perform bdc_field1 using 'BDC_CURSOR' 'ISCJ_E_POSTINGS-TRANSACT_NAME(06)'.

CALL TRANSACTION 'FBCJ' USING BDCDATA1

MODE 'A'

UPDATE 'A'

MESSAGES INTO MESSTAB1.

*

*UPDATE ZIBSCASHPAYMENTS SET RECPT = ' '

  • WHERE CJ_NO = IT_TEMP-CJ_NUMBER.

ENDIF.

*UPDATE ZTEMPFBCJ SET COMP = ' ' WHERE REF_DOC_NO = IT_TEMP-REF_DOC_NO .

*ENDLOOP. "END OF LOOP AT IT_TEMP

ENDIF.

  • endselect.

----


  • Start new screen *

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM.

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

IF fval <> NODATA_CHARACTER.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

ENDIF.

ENDFORM.

----


  • Insert field *

----


FORM BDC_NODATA USING P_NODATA.

NODATA_CHARACTER = P_NODATA.

ENDFORM.

----


  • Start new screen *

----


FORM BDC_DYNPRO1 USING PROGRAM DYNPRO.

CLEAR BDCDATA1.

BDCDATA1-PROGRAM = PROGRAM.

BDCDATA1-DYNPRO = DYNPRO.

BDCDATA1-DYNBEGIN = 'X'.

APPEND BDCDATA1.

ENDFORM.

----


  • Insert field *

----


FORM BDC_FIELD1 USING FNAM FVAL.

IF fval <> NODATA_CHARACTER.

CLEAR BDCDATA1.

BDCDATA1-FNAM = FNAM.

BDCDATA1-FVAL = FVAL.

APPEND BDCDATA1.

ENDIF.

ENDFORM.

thanks & regards

vallamuthu

1 REPLY 1
Read only

Former Member
0 Likes
313

Loop at IT_TEMP for all records to populate the bdcdata and then call the CALL TRANSACTION statement <b>outside</b> of the loop (at present I see it coded within the loop).

Doing this will call the FBCJ just once, to post all data, instead of posting once for each loop.

Hope this helps.

Sudha