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

call transaction

Former Member
0 Likes
798

how can u handle the errrors in call transaction

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
765

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

5 REPLIES 5
Read only

Former Member
0 Likes
765
Read only

marcelo_ramos1
SAP Mentor
SAP Mentor
0 Likes
765

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

Read only

Former Member
0 Likes
765

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.

Read only

Former Member
0 Likes
765

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.

Read only

Former Member
0 Likes
766

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>