2007 Aug 14 1:52 PM
2007 Aug 15 4:31 PM
Hi Mayuri,
Errors Messages are captured using the table BDCMSGCOLL.
See the sample code in Creating customer using TCode XD01.
TYPES: BEGIN OF ty_cust,
ktokd TYPE kna1-ktokd,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
sortl TYPE kna1-sortl,
ort01 TYPE kna1-ort01,
land1 TYPE kna1-land1,
spras TYPE kna1-spras,
pstlz TYPE kna1-pstlz,
lzone TYPE kna1-lzone,
END OF ty_cust.
DATA: itab TYPE TABLE OF ty_cust,
wa LIKE LINE OF itab,
bdctab TYPE TABLE OF bdcdata,
wa1 LIKE LINE OF bdctab,
messtab TYPE TABLE OF bdcmsgcoll,
wa2 LIKE LINE OF messtab,
d_mode(1) TYPE c,
d_update(1) TYPE c,
message(73) TYPE c.
PARAMETERS:
mode LIKE d_mode DEFAULT 'A',
update LIKE d_update DEFAULT 'A',.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\XXX.txt'
filetype = 'ASC'
has_field_separator = 'X'
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.
PERFORM call_transaction.
&----
*& Form CALL_TRANSACTION
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_transaction .
LOOP AT itab INTO wa.
REFRESH bdctab.
REFRESH messtab.
PERFORM bdc.
CALL TRANSACTION 'XD01' USING bdctab
MODE mode
UPDATE update
MESSAGES INTO messtab.
<b> LOOP AT messtab INTO wa2.
SELECT SINGLE text INTO message
FROM t100
WHERE arbgb = wa2-msgid
AND msgnr = wa2-msgnr
AND sprsl = 'EN'.
IF sy-subrc = 0.
REPLACE '&' IN message WITH wa2-msgv1.
WRITE:/ message.
ENDIF.
ENDLOOP.</b>
ENDLOOP.
ENDFORM. " CALL_TRANSACTION
&----
*& Form BDC
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc .
SCREEN 1
PERFORM bdc_dynpro USING 'SAPMF02D' '0100'.
PERFORM bdc_field USING 'RF02D-KTOKD' wa-ktokd.
PERFORM bdc_field USING 'RF02D-KUNNR' wa-kunnr.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
SCREEN 2
PERFORM bdc_dynpro USING 'SAPMF02D' '0110'.
PERFORM bdc_field USING 'KNA1-NAME1' wa-name1.
PERFORM bdc_field USING 'KNA1-SORTL' wa-sortl.
PERFORM bdc_field USING 'KNA1-ORT01' wa-ort01.
PERFORM bdc_field USING 'KNA1-LAND1' wa-land1.
PERFORM bdc_field USING 'KNA1-SPRAS' wa-spras.
PERFORM bdc_field USING 'KNA1-PSTLZ' wa-pstlz.
PERFORM bdc_field USING 'KNA1-LZONE' wa-lzone.
PERFORM bdc_field USING 'BDC_OKCODE' '=UPDA'.
ENDFORM. " BDC
&----
*& Form bdc_dynpro
&----
text
----
-->P_0294 text
-->P_0295 text
----
FORM bdc_dynpro USING program
dynpro.
CLEAR wa1.
wa1-program = program.
wa1-dynpro = dynpro.
wa1-dynbegin = 'X'.
APPEND wa1 TO bdctab.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0299 text
-->P_0300 text
----
FORM bdc_field USING fnam
fval.
IF fval <> space.
CLEAR wa1.
wa1-fnam = fnam.
wa1-fval = fval.
APPEND wa1 TO bdctab.
ENDIF.
ENDFORM. " bdc_field
<b>Reward if Useful.</b>
Thanks,
<i><b>Adithya M.</b></i>
how can u handle the errrors in call transaction
2007 Aug 14 1:54 PM
see following link:
http://www.geekinterview.com/question_details/37416
http://www.sap-img.com/abap/question-about-bdc-program.htm
Reward points if helpful.
Regards.
Srikanta Gope
2007 Aug 14 2:05 PM
HI,
Try this way.
DATA: BDCDATA TYPE TABLE OF BDCDATA.
DATA: ITAB TYPE TABLE OF BDCMSGCOLL.
DATA: PROGRAM LIKE SY-REPID,
WA_BDCDATA TYPE BDCDATA.
WA_BDCDATA-PROGRAM = 'SAPMS38M'.
WA_BDCDATA-DYNPRO = '0100'.
WA_BDCDATA-DYNBEGIN = 'X'.
APPEND WA_BDCDATA TO BDCDATA.
CLEAR WA_BDCDATA.
WA_BDCDATA-FNAM = 'RS38M-PROGRAMM'.
WA_BDCDATA-FVAL = PROGRAM.
APPEND WA_BDCDATA TO BDCDATA.
...
CALL TRANSACTION 'SE38' USING BDCDATA MODE 'N'
MESSAGES INTO ITAB.
"Get your messages from ITAB.
Regards.
Marcelo Ramos
2007 Aug 14 2:17 PM
hi,
data: BDCMSCCOLL1 like standard table of BDCMSCCOLL.
use can declare a internal table of type BDCMSCCOLL1 and use in CALL TRANSACTION as
CALL TRANSACTION MM01 USING [ITAB] // internal table name
MODE 'A' OR 'E' OR 'N' // a- all screen, e- error screen, n- no screen
UPDATE 'A' OR 'S' /// a-asynchronous, s- synchronous
INTO BDCMSCCOLL1 . // internal table which holds all errors during call transaction.
if helpful reward some points.
with regards,
Suresh Aluri.
2007 Aug 14 2:20 PM
Hi,
Please STOP posting numerous very simple questions that look like yuo have been given a technical exam for a job.
Please START using the search function and help.sap.com.
Thanks.
Gareth.
2007 Aug 15 4:31 PM
Hi Mayuri,
Errors Messages are captured using the table BDCMSGCOLL.
See the sample code in Creating customer using TCode XD01.
TYPES: BEGIN OF ty_cust,
ktokd TYPE kna1-ktokd,
kunnr TYPE kna1-kunnr,
name1 TYPE kna1-name1,
sortl TYPE kna1-sortl,
ort01 TYPE kna1-ort01,
land1 TYPE kna1-land1,
spras TYPE kna1-spras,
pstlz TYPE kna1-pstlz,
lzone TYPE kna1-lzone,
END OF ty_cust.
DATA: itab TYPE TABLE OF ty_cust,
wa LIKE LINE OF itab,
bdctab TYPE TABLE OF bdcdata,
wa1 LIKE LINE OF bdctab,
messtab TYPE TABLE OF bdcmsgcoll,
wa2 LIKE LINE OF messtab,
d_mode(1) TYPE c,
d_update(1) TYPE c,
message(73) TYPE c.
PARAMETERS:
mode LIKE d_mode DEFAULT 'A',
update LIKE d_update DEFAULT 'A',.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = 'C:\XXX.txt'
filetype = 'ASC'
has_field_separator = 'X'
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.
PERFORM call_transaction.
&----
*& Form CALL_TRANSACTION
&----
text
----
--> p1 text
<-- p2 text
----
FORM call_transaction .
LOOP AT itab INTO wa.
REFRESH bdctab.
REFRESH messtab.
PERFORM bdc.
CALL TRANSACTION 'XD01' USING bdctab
MODE mode
UPDATE update
MESSAGES INTO messtab.
<b> LOOP AT messtab INTO wa2.
SELECT SINGLE text INTO message
FROM t100
WHERE arbgb = wa2-msgid
AND msgnr = wa2-msgnr
AND sprsl = 'EN'.
IF sy-subrc = 0.
REPLACE '&' IN message WITH wa2-msgv1.
WRITE:/ message.
ENDIF.
ENDLOOP.</b>
ENDLOOP.
ENDFORM. " CALL_TRANSACTION
&----
*& Form BDC
&----
text
----
--> p1 text
<-- p2 text
----
FORM bdc .
SCREEN 1
PERFORM bdc_dynpro USING 'SAPMF02D' '0100'.
PERFORM bdc_field USING 'RF02D-KTOKD' wa-ktokd.
PERFORM bdc_field USING 'RF02D-KUNNR' wa-kunnr.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
SCREEN 2
PERFORM bdc_dynpro USING 'SAPMF02D' '0110'.
PERFORM bdc_field USING 'KNA1-NAME1' wa-name1.
PERFORM bdc_field USING 'KNA1-SORTL' wa-sortl.
PERFORM bdc_field USING 'KNA1-ORT01' wa-ort01.
PERFORM bdc_field USING 'KNA1-LAND1' wa-land1.
PERFORM bdc_field USING 'KNA1-SPRAS' wa-spras.
PERFORM bdc_field USING 'KNA1-PSTLZ' wa-pstlz.
PERFORM bdc_field USING 'KNA1-LZONE' wa-lzone.
PERFORM bdc_field USING 'BDC_OKCODE' '=UPDA'.
ENDFORM. " BDC
&----
*& Form bdc_dynpro
&----
text
----
-->P_0294 text
-->P_0295 text
----
FORM bdc_dynpro USING program
dynpro.
CLEAR wa1.
wa1-program = program.
wa1-dynpro = dynpro.
wa1-dynbegin = 'X'.
APPEND wa1 TO bdctab.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0299 text
-->P_0300 text
----
FORM bdc_field USING fnam
fval.
IF fval <> space.
CLEAR wa1.
wa1-fnam = fnam.
wa1-fval = fval.
APPEND wa1 TO bdctab.
ENDIF.
ENDFORM. " bdc_field
<b>Reward if Useful.</b>
Thanks,
<i><b>Adithya M.</b></i>
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |