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

BDC Call Transaction

Former Member
0 Likes
663

Hi all,

Can you pls explain how to catch error msgs in call transaction ?

Thanks ,

Vijay

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
643

CALL TRANSACTION tcode USING gi_bdcdata "#EC CI_CALLTA

MODE gv_ctumode

UPDATE gc_cupdate

MESSAGES INTO gt_messtab.

l_subrc = sy-subrc.

IF sy-subrc <> 0.

WRITE: / 'CALL_TRANSACTION',

tcode,

'returncode:',

l_subrc,

'RECORD:',

sy-index.

LOOP AT gt_messtab INTO gwa_messtab.

CLEAR lwa_t100.

SELECT SINGLE * FROM t100 INTO lwa_t100 WHERE sprsl = gwa_messtab-msgspra

AND arbgb = gwa_messtab-msgid

AND msgnr = gwa_messtab-msgnr.

IF sy-subrc = 0.

l_mstring = lwa_t100-text.

IF l_mstring CS '&1'.

REPLACE '&1' WITH gwa_messtab-msgv1 INTO l_mstring.

REPLACE '&2' WITH gwa_messtab-msgv2 INTO l_mstring.

REPLACE '&3' WITH gwa_messtab-msgv3 INTO l_mstring.

REPLACE '&4' WITH gwa_messtab-msgv4 INTO l_mstring.

ELSE.

REPLACE '&' WITH gwa_messtab-msgv1 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv2 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv3 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv4 INTO l_mstring.

ENDIF.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = gwa_messtab-msgid

lang = sy-langu

no = gwa_messtab-msgnr

v1 = gwa_messtab-msgv1

v2 = gwa_messtab-msgv2

v3 = gwa_messtab-msgv3

v4 = gwa_messtab-msgv4

IMPORTING

msg = l_mstring

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CONDENSE l_mstring.

IF NOT l_mstring IS INITIAL.

WRITE: / gwa_messtab-msgtyp, l_mstring(250).

MESSAGE l_mstring TYPE 'I'.

ENDIF.

ELSE.

WRITE: / gwa_messtab.

ENDIF.

Hi all,

Can you pls explain how to catch error msgs in call transaction ?

Thanks ,

Vijay

4 REPLIES 4
Read only

Pawan_Kesari
Active Contributor
0 Likes
643

All the message triggered during the call transaction is filled in internal table specified using MESSAGES clause of CALL TRANSACTION

CALL TRANSACTION ta [USING bdc_tab [bdc_options]] MESSAGES INTO itab .

itab has structure BDCMSGCOLL

Read only

Former Member
0 Likes
644

CALL TRANSACTION tcode USING gi_bdcdata "#EC CI_CALLTA

MODE gv_ctumode

UPDATE gc_cupdate

MESSAGES INTO gt_messtab.

l_subrc = sy-subrc.

IF sy-subrc <> 0.

WRITE: / 'CALL_TRANSACTION',

tcode,

'returncode:',

l_subrc,

'RECORD:',

sy-index.

LOOP AT gt_messtab INTO gwa_messtab.

CLEAR lwa_t100.

SELECT SINGLE * FROM t100 INTO lwa_t100 WHERE sprsl = gwa_messtab-msgspra

AND arbgb = gwa_messtab-msgid

AND msgnr = gwa_messtab-msgnr.

IF sy-subrc = 0.

l_mstring = lwa_t100-text.

IF l_mstring CS '&1'.

REPLACE '&1' WITH gwa_messtab-msgv1 INTO l_mstring.

REPLACE '&2' WITH gwa_messtab-msgv2 INTO l_mstring.

REPLACE '&3' WITH gwa_messtab-msgv3 INTO l_mstring.

REPLACE '&4' WITH gwa_messtab-msgv4 INTO l_mstring.

ELSE.

REPLACE '&' WITH gwa_messtab-msgv1 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv2 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv3 INTO l_mstring.

REPLACE '&' WITH gwa_messtab-msgv4 INTO l_mstring.

ENDIF.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = gwa_messtab-msgid

lang = sy-langu

no = gwa_messtab-msgnr

v1 = gwa_messtab-msgv1

v2 = gwa_messtab-msgv2

v3 = gwa_messtab-msgv3

v4 = gwa_messtab-msgv4

IMPORTING

msg = l_mstring

EXCEPTIONS

not_found = 1

OTHERS = 2.

IF sy-subrc <> 0.

MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

CONDENSE l_mstring.

IF NOT l_mstring IS INITIAL.

WRITE: / gwa_messtab-msgtyp, l_mstring(250).

MESSAGE l_mstring TYPE 'I'.

ENDIF.

ELSE.

WRITE: / gwa_messtab.

ENDIF.

Read only

Former Member
0 Likes
643

Hi,

Check below link.

[Error catch call transaction method|]

Thanks,

Asit Purbey.

Read only

Former Member
0 Likes
643

Hi,

Plz check below code :

CALL TRANSACTION 'VD01' USING IT_BDC MODE 'A' UPDATE 'S'

MESSAGES INTO IT_MESSAGES.

IF NOT IT_MESSAGES[] IS INITIAL.

PERFORM FORMAT_MESSAGE.

ENDIF.

FORM FORMAT_MESSAGE.

DATA: L_MSG(100).

LOOP AT IT_MESSAGES.

READ TABLE IT_CUSTOMER INDEX L_INDEX.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = IT_MESSAGES-MSGID

LANG = SY-LANGU

NO = IT_MESSAGES-MSGNR

V1 = IT_MESSAGES-MSGV1

V2 = IT_MESSAGES-MSGV2

V3 = IT_MESSAGES-MSGV3

V4 = IT_MESSAGES-MSGV4

IMPORTING

MSG = L_MSG

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC 0.

    • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

write:/ l_msg.

ENDLOOP.

ENDFORM. " FORMAT_MESSAGE

Thanks

Siva Prasad