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

How can we know the return code of BDC Program ?

Former Member
0 Likes
992

Hi All,

Please tell me : How can we know the return code of BDC Program when being exceuted in Session or in Transaction mode.

In my program, we are uploading data from Excel sheet to SAP via BDC

The records that are not updated we want to create a log file.

Now to know whether a record is updated ot not, wat syst field shloud be used?

Its urgent....

<b>Reward Point will be there ....</b>

Thanks,

Harish

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
749

Hi,

hi if u are using CALL TRANSACTION then we generally have those errors in BDCMSGCOLL structure.

check the link below which discusses about this in detail, award points if found helpful

https://forums.sdn.sap.com/click.jspa?searchID=907612&messageID=745186

reward if it helps..

Regards,

omkar.

Hi All,

Please tell me : How can we know the return code of BDC Program when being exceuted in Session or in Transaction mode.

In my program, we are uploading data from Excel sheet to SAP via BDC

The records that are not updated we want to create a log file.

Now to know whether a record is updated ot not, wat syst field shloud be used?

Its urgent....

<b>Reward Point will be there ....</b>

Thanks,

Harish

4 REPLIES 4
Read only

Former Member
0 Likes
749

HI,

You can pass a message table parameter in the BDC. The structure is BDCMSGCOLL You can check the internal table returned for any errors.

Regards,

Yogesh

Read only

Former Member
0 Likes
749

Hi Harish,

check the sy-subrc value after call transaction if it not 0 move the error record into one more internal table and do session moethod for these error records,

reward points to all helpful answers

kiran.M

Read only

Former Member
0 Likes
750

Hi,

hi if u are using CALL TRANSACTION then we generally have those errors in BDCMSGCOLL structure.

check the link below which discusses about this in detail, award points if found helpful

https://forums.sdn.sap.com/click.jspa?searchID=907612&messageID=745186

reward if it helps..

Regards,

omkar.

Read only

Former Member
0 Likes
749

Hi harish,

try the logic in this code ...

i had attached input file in the end.

TYPES: begin of errmess,

msgnr type t100-msgnr,

text type t100-text,

end of errmess.

TABLES : t100.

DATA: BEGIN OF DD_VA01,

AUART TYPE VBAK-AUART,

KUNNR TYPE RV45A-KUNNR,

BSTKD TYPE VBKD-BSTKD,

MABNR TYPE RV45A-MABNR,

KWMENG(2) type C,

KBETR(2) type C,

END OF DD_VA01.

DATA:IT_VA01 Like TABLE OF DD_VA01,

WA_VA01 Like LINE OF IT_VA01,

WA_VA01_F Like LINE OF IT_VA01,

IT_BDCDATA TYPE TABLE OF BDCDATA,

WA_BDCDATA Like Line OF IT_BDCDATA,

W_FNAME TYPE STRING,

messtab like bdcmsgcoll occurs 0 with header line,

it_errmess type table of errmess,

wa_errmess like line of it_errmess,

err_message type string.

data: zf1 type i,

zc1 type c value '2',

fn(20) type c.

                  • Main Code ************************************************************

PERFORM get_input using 'C:\Documents and Settings\ic881592\Desktop\Daran_bdc_VA01-e.txt'.

SORT IT_VA01 BY AUART KUNNR BSTKD.

LOOP AT IT_VA01 INTO WA_VA01.

if WA_VA01_F-AUART <> WA_VA01-AUART OR

WA_VA01_F-KUNNR <> WA_VA01-KUNNR OR

WA_VA01_F-BSTKD <> WA_VA01-BSTKD.

PERFORM set_header_flag.

PERFORM create_bdc_header_data.

endif.

PERFORM create_bdc_item_data.

ENDLOOP.

PERFORM call_transaction.

PERFORM errorlog.

                    • Procedures ***********************************************************

form get_input using w_fname.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = W_FNAME

HAS_FIELD_SEPARATOR = '#'

TABLES

DATA_TAB = IT_VA01.

endform.

**********

form call_transaction.

PERFORM bdc_field using 'BDC_OKCODE' '/11'.

CALL TRANSACTION 'VA01' USING IT_BDCDATA MODE 'A' messages into messtab.

refresh it_bdcdata.

endform.

**********

FORM set_header_flag.

WA_VA01_F-AUART = WA_VA01-AUART.

WA_VA01_F-KUNNR = WA_VA01-KUNNR.

WA_VA01_F-BSTKD = WA_VA01-BSTKD.

if zf1 = 1.

PERFORM call_transaction.

endif.

zf1 = 1.

endform. "set_header_flag.

***************

form create_bdc_header_data.

perform bdc_dynpro using 'SAPMV45A' '0101'.

perform bdc_field using 'VBAK-AUART' WA_VA01-AUART.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMV45A' '4001'.

perform bdc_field using 'KUAGV-KUNNR' WA_VA01-KUNNR.

perform bdc_field using 'VBKD-BSTKD' WA_VA01-BSTKD.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMSSY0' '0120'.

perform bdc_field using 'BDC_CURSOR' '04/06'.

perform bdc_field using 'BDC_OKCODE' '=CHOO'.

perform bdc_dynpro using 'SAPMV45A' '4001'.

PERFORM bdc_field USING 'BDC_OKCODE' '=POAN'.

endform. "create_bdcdata

**********

FORM create_bdc_item_data.

CONCATENATE 'RV45A-KWMENG(' zc1 ')' INTO FN.

perform bdc_field using 'BDC_CURSOR' FN.

perform bdc_field using FN WA_VA01-KWMENG.

CONCATENATE 'KOMV-KBETR(' zc1 ')' INTO FN.

perform bdc_field using FN WA_VA01-KBETR.

CONCATENATE 'RV45A-MABNR(' zc1 ')' INTO FN.

perform bdc_field using FN WA_VA01-MABNR.

perform bdc_dynpro using 'SAPMV45A' '4001'.

PERFORM bdc_field USING 'BDC_OKCODE' '=POAN'.

ENDFORM.

***************

form errorlog.

LOOP AT MESSTAB .

if MESSTAB-MSGNR = '311' or MESSTAB-MSGTYP = 'E'.

SELECT SINGLE msgnr text FROM T100

into wa_errmess

WHERE SPRSL = MESSTAB-MSGSPRA

AND ARBGB = MESSTAB-MSGID

AND MSGNR = MESSTAB-MSGNR.

IF SY-SUBRC = 0.

err_message = wa_errmess-TEXT.

IF err_message CS '&1'.

REPLACE '&1' WITH MESSTAB-MSGV1 INTO err_message.

REPLACE '&2' WITH MESSTAB-MSGV2 INTO err_message.

REPLACE '&3' WITH MESSTAB-MSGV3 INTO err_message.

REPLACE '&4' WITH MESSTAB-MSGV4 INTO err_message.

ELSE.

REPLACE '&' WITH MESSTAB-MSGV1 INTO err_message.

REPLACE '&' WITH MESSTAB-MSGV2 INTO err_message.

REPLACE '&' WITH MESSTAB-MSGV3 INTO err_message.

REPLACE '&' WITH MESSTAB-MSGV4 INTO err_message.

ENDIF.

CONDENSE err_message.

WRITE: / MESSTAB-MSGTYP, err_message .

ELSE.

WRITE: / MESSTAB.

ENDIF.

endif.

ENDLOOP.

endform. "errorlog

**********

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

WA_BDCDATA-PROGRAM = PROGRAM.

WA_BDCDATA-DYNPRO = DYNPRO.

WA_BDCDATA-DYNBEGIN = 'X'.

APPEND WA_BDCDATA TO IT_BDCDATA.

CLEAR WA_BDCDATA.

ENDFORM.

**********

FORM BDC_FIELD USING FNAM FVAL.

WA_BDCDATA-FNAM = FNAM.

WA_BDCDATA-FVAL = FVAL.

APPEND WA_BDCDATA TO IT_BDCDATA.

CLEAR WA_BDCDATA.

ENDFORM.

input file :

OR 2148 0001235 R-1162 8 17

OR 2148 0001235 R-1161 2 30

OR 2148 0001235 100-400 6 25

OR 2148 0001235 R-1162 4 12

OR 2148 0001236 R-1162 3 12

OR 2148 0001236 R-1161 2 30

OR 2148 0001236 100-400 1 25

OR 2148 0001236 R-1162 7 12

OR 2148 0001236 R-1161 8 30

OR 2148 0001236 100-400 10 25

OR 2148 0001235 R-1161 5 30

OR 2148 0001235 100-400 2 25

OR 2148 0001235 R-11621 3 12

OR 2148 0001235 R-1161 2 30

OR 2148 0001235 100-400 1 25

OR 2148 0001235 R-1162 7 12

OR 2148 0001235 R-1161 8 30

OR 2148 0001235 100-400 10 25

OR 2148 0001236 R-1162 8 17

OR 2148 0001236 R-1161 2 30

OR 2148 0001236 100-400 6 25

OR 2148 0001236 R-1162 4 12

OR 2148 0001236 R-1161 5 30

OR 2148 0001236 100-400 2 25