Application Development 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: 

BDC(call Transaction)

Former Member
0 Kudos

how can one decide that call transaction method is succesfull?

1 ACCEPTED SOLUTION

Former Member
0 Kudos

hi,

after call transaction syntax check

if sy-subrc = 0 means successful or else we have to catch errors using BDCMSGCOLL or FORMAT_MEssages.

even we can open session for unprocessed records also.

check below program.

report ZSR_BDC_DEMO

no standard page heading line-size 255.

TABLES : LFA1, RF02K.

DATA : BEGIN OF ITAB OCCURS 0 ,

LIFNR LIKE RF02K-LIFNR,

KTOKK LIKE RF02K-KTOKK,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

LAND1 LIKE LFA1-LAND1,

SPRAS LIKE LFA1-SPRAS,

END OF ITAB.

DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

BDCMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'c:\call.txt'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = ITAB

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

LOOP AT ITAB.

REFRESH BDCTAB.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '100'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'RF02K-ktokk'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_FIELD USING 'RF02K-LIFNR' ITAB-LIFNR.

PERFORM BDC_FIELD USING 'RF02K-ktokk' ITAB-KTOKK.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '110'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfa1-spras'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_FIELD USING 'lfa1-name1' ITAB-NAME1.

PERFORM BDC_FIELD USING 'lfa1-sortl' ITAB-SORTL.

PERFORM BDC_FIELD USING 'lfa1-land1' ITAB-LAND1.

PERFORM BDC_FIELD USING 'lfa1-spras' ITAB-SPRAS.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '120'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfa1-kunnr'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '130'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfbk-banks(01)'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_DYNPRO USING 'SAPLSP01' '300'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/=yes'.

call transaction 'XK01' using bdctab mode 'a' update 'a' messages into bdcmsg.

read table bdcmsg with KEY MSGTYP = 'E'.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = bdcmsg-MSGID

LANG = 'EN'

NO = bdcmsg-MSGNR

V1 = bdcmsg-MSGV1

V2 = bdcmsg-MSGV2

V3 = bdcmsg-MSGV3

V4 = bdcmsg-MSGV4

IMPORTING

MSG = bdcmsg-MSGV1

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 😕 bdcmsg-MSGV1.

ENDLOOP.

&----


*& Form bdc_dynpro

&----


  • text

----


FORM BDC_DYNPRO USING P_P1

P_P2.

CLEAR BDCTAB.

BDCTAB-PROGRAM = P_P1.

BDCTAB-DYNPRO = P_P2.

BDCTAB-DYNBEGIN = 'X'.

APPEND BDCTAB.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


FORM BDC_FIELD USING P_P3

P_P4.

CLEAR BDCTAB.

BDCTAB-FNAM = P_P3.

BDCTAB-FVAL = P_P4.

APPEND BDCTAB.

ENDFORM. " bdc_field

5 REPLIES 5

Former Member
0 Kudos

Hello,

By trapping the message of the CALL TRANSACTION.

If all the message type of the message table is S or I or W then the run is succesful.

If useful reward.

Vasanth

0 Kudos

wats message table?

0 Kudos

BDCMSGCOLL is the message table all the bdc messages r stored there.

to see the fields in tht tabel goto SE11 & check it.

Former Member
0 Kudos

based on the SY-SUBRC and BDCMSGCOLL table.

Regards

Prabhu

Former Member
0 Kudos

hi,

after call transaction syntax check

if sy-subrc = 0 means successful or else we have to catch errors using BDCMSGCOLL or FORMAT_MEssages.

even we can open session for unprocessed records also.

check below program.

report ZSR_BDC_DEMO

no standard page heading line-size 255.

TABLES : LFA1, RF02K.

DATA : BEGIN OF ITAB OCCURS 0 ,

LIFNR LIKE RF02K-LIFNR,

KTOKK LIKE RF02K-KTOKK,

NAME1 LIKE LFA1-NAME1,

SORTL LIKE LFA1-SORTL,

LAND1 LIKE LFA1-LAND1,

SPRAS LIKE LFA1-SPRAS,

END OF ITAB.

DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE,

BDCMSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

START-OF-SELECTION.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = 'c:\call.txt'

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

  • HEADER_LENGTH = 0

  • READ_BY_LINE = 'X'

  • DAT_MODE = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • CHECK_BOM = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = ITAB

  • EXCEPTIONS

  • FILE_OPEN_ERROR = 1

  • FILE_READ_ERROR = 2

  • NO_BATCH = 3

  • GUI_REFUSE_FILETRANSFER = 4

  • INVALID_TYPE = 5

  • NO_AUTHORITY = 6

  • UNKNOWN_ERROR = 7

  • BAD_DATA_FORMAT = 8

  • HEADER_NOT_ALLOWED = 9

  • SEPARATOR_NOT_ALLOWED = 10

  • HEADER_TOO_LONG = 11

  • UNKNOWN_DP_ERROR = 12

  • ACCESS_DENIED = 13

  • DP_OUT_OF_MEMORY = 14

  • DISK_FULL = 15

  • DP_TIMEOUT = 16

  • OTHERS = 17

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

LOOP AT ITAB.

REFRESH BDCTAB.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '100'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'RF02K-ktokk'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_FIELD USING 'RF02K-LIFNR' ITAB-LIFNR.

PERFORM BDC_FIELD USING 'RF02K-ktokk' ITAB-KTOKK.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '110'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfa1-spras'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_FIELD USING 'lfa1-name1' ITAB-NAME1.

PERFORM BDC_FIELD USING 'lfa1-sortl' ITAB-SORTL.

PERFORM BDC_FIELD USING 'lfa1-land1' ITAB-LAND1.

PERFORM BDC_FIELD USING 'lfa1-spras' ITAB-SPRAS.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '120'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfa1-kunnr'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_DYNPRO USING 'SAPMF02K' '130'.

PERFORM BDC_FIELD USING 'bdc_cursor' 'lfbk-banks(01)'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/00'.

PERFORM BDC_DYNPRO USING 'SAPLSP01' '300'.

PERFORM BDC_FIELD USING 'bdc_okcode' '/=yes'.

call transaction 'XK01' using bdctab mode 'a' update 'a' messages into bdcmsg.

read table bdcmsg with KEY MSGTYP = 'E'.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = bdcmsg-MSGID

LANG = 'EN'

NO = bdcmsg-MSGNR

V1 = bdcmsg-MSGV1

V2 = bdcmsg-MSGV2

V3 = bdcmsg-MSGV3

V4 = bdcmsg-MSGV4

IMPORTING

MSG = bdcmsg-MSGV1

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 😕 bdcmsg-MSGV1.

ENDLOOP.

&----


*& Form bdc_dynpro

&----


  • text

----


FORM BDC_DYNPRO USING P_P1

P_P2.

CLEAR BDCTAB.

BDCTAB-PROGRAM = P_P1.

BDCTAB-DYNPRO = P_P2.

BDCTAB-DYNBEGIN = 'X'.

APPEND BDCTAB.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


FORM BDC_FIELD USING P_P3

P_P4.

CLEAR BDCTAB.

BDCTAB-FNAM = P_P3.

BDCTAB-FVAL = P_P4.

APPEND BDCTAB.

ENDFORM. " bdc_field