04-24-2007 12:41 PM
04-25-2007 5:49 AM
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
04-24-2007 12:42 PM
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
04-24-2007 6:14 PM
04-24-2007 6:33 PM
BDCMSGCOLL is the message table all the bdc messages r stored there.
to see the fields in tht tabel goto SE11 & check it.
04-24-2007 12:42 PM
04-25-2007 5:49 AM
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