01-28-2009 7:40 AM
hi,
CALL TRANSACTION 'ME22' USING bdcdata
MODE mode
UPDATE 'S'
MESSAGES INTO itb_msg.
after this syntax, how to handle exception
i know format_message..
but i want the exact coading after the above statement..
please help me.
thanks
subhasis
02-09-2009 10:05 AM
Hi Subhasis,
Here is sample code to proceed......
data: t_mess type table of bdcmsgcoll.
data w_msg(72) type c.
fs_mess TYPE bdcmsgcoll.
LOOP AT t_mess INTO fs_mess.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = fs_mess-msgid
lang = 'sy-langu'
no = fs_mess-msgnr
v1 = fs_mess-msgv1
v2 = fs_mess-msgv2
v3 = fs_mess-msgv3
v4 = fs_mess-msgv4
IMPORTING
msg = w_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:/ fs_mess-msgv1.
........
Regards,
Mdi.Deeba
01-28-2009 7:43 AM
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.
01-28-2009 7:46 AM
HI,
DATA: l_errormsg TYPE t_error-errmsg. "Error Message
REFRESH i_msg_tab.
CALL TRANSACTION c_pa30 USING i_bdc_data MODE 'N'
MESSAGES INTO i_msg_tab.
IF sy-subrc NE 0.
* Process as error if message type is E or A. if it is type S, it is
* only an error if it is 347, 348, 344"No batch input data for screen
LOOP AT i_msg_tab INTO i_msg_tab_line
WHERE msgtyp = c_e OR msgtyp = c_a
OR ( msgtyp = 'S' AND msgid = '00' AND msgnr = '347' )
OR ( msgtyp = 'S' AND msgid = '00' AND msgnr = '348' )
OR ( msgtyp = 'S' AND msgid = '00' AND msgnr = '344' ).
CALL FUNCTION 'MASS_MESSAGE_GET'
EXPORTING
sprsl = sy-langu
arbgb = i_msg_tab_line-msgid
msgnr = i_msg_tab_line-msgnr
msgv1 = i_msg_tab_line-msgv1
msgv2 = i_msg_tab_line-msgv2
msgv3 = i_msg_tab_line-msgv3
msgv4 = i_msg_tab_line-msgv4
IMPORTING
msgtext = l_errormsg
EXCEPTIONS
message_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0. "#EC NEEDED
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
MOVE p_emp_details TO e_error_line.
MOVE l_errormsg TO e_error_line-errmsg.
APPEND e_error_line TO e_error.
EXIT.
ENDLOOP.
ELSE.
* ADD 1 TO g_success_cnt.
ENDIF.
01-30-2009 1:01 PM
Hi,
See the sample code:
CALL TRANSACTION 'MM01' USING BDCDATA MODE 'N' update 'A' messages into t_messtab.
IF SY-SUBRC EQ 0.
PERFORM COLLECT_SUCCESS_RECORDS.
ELSE.
PERFORM COLLECT_ERROR_RECORDS.
ENDIF.
ENDLOOP.
FORM COLLECT_SUCCESS_RECORDS.
READ TABLE T_MESSTAB WITH KEY MSGTYP = 'I'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = T_SMESS-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.
ELSE.
APPEND T_SMESS.
CLEAR T_SMESS.
APPEND record TO T_SUCCESS.
CLEAR T_SUCCESS.
ENDIF.
ENDFORM. " COLLECT_SUCCESS_RECORDS
FORM COLLECT_ERROR_RECORDS.
READ TABLE T_MESSTAB WITH KEY MSGTYP = 'E'.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = SY-MSGID
LANG = SY-LANGU
NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
IMPORTING
MSG = T_EMESS-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.
ELSE.
APPEND T_EMESS.
CLEAR T_EMESS.
APPEND record TO T_ERROR.
CLEAR T_ERROR.
ENDIF.
ENDFORM. " COLLECT_ERROR_RECORDS
01-30-2009 1:36 PM
CALL TRANSACTION .......... bdcdata
MODE p_update
UPDATE 'S'
MESSAGES INTO gt_bdcmsgcoll.
IF sy-subrc EQ 0.
COMMIT WORK.
ENDIF.
* To capture messages
PERFORM fr_catch_msg.
*&---------------------------------------------------------------------*
*& Form FR_CATCH_ERROR
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fr_catch_msg.
DATA: v_msg TYPE string.
READ TABLE gt_bdcmsgcoll INTO wa_bdcmsgcoll WITH KEY msgtyp = 'E'.
IF sy-subrc EQ 0.
PERFORM fr_format_msg USING wa_bdcmsgcoll-msgid wa_bdcmsgcoll-msgnr
wa_bdcmsgcoll-msgv1 wa_bdcmsgcoll-msgv2
CHANGING v_msg.
* Fill error internal table with messages from BDC
PERFORM fr_fill_output TABLES gt_error USING v_msg.
ELSE.
READ TABLE gt_bdcmsgcoll INTO wa_bdcmsgcoll WITH KEY msgtyp = 'S'.
IF sy-subrc EQ 0.
PERFORM fr_format_msg USING wa_bdcmsgcoll-msgid wa_bdcmsgcoll-msgnr
wa_bdcmsgcoll-msgv1 wa_bdcmsgcoll-msgv2
CHANGING v_msg.
* Fill error internal table with messages from BDC
PERFORM fr_fill_output TABLES gt_succ USING v_msg.
ENDIF.
ENDIF.
CLEAR: wa_bdcmsgcoll.
FORM fr_format_msg USING p_msgid
p_msgnr
p_msgv1
p_msgv2
CHANGING p_msg.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = p_msgid
lang = sy-langu
no = p_msgnr
v1 = p_msgv1
v2 = p_msgv2
IMPORTING
msg = p_msg.
ENDFORM. " FR_FORMAT_MSG
02-09-2009 10:05 AM
Hi Subhasis,
Here is sample code to proceed......
data: t_mess type table of bdcmsgcoll.
data w_msg(72) type c.
fs_mess TYPE bdcmsgcoll.
LOOP AT t_mess INTO fs_mess.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = fs_mess-msgid
lang = 'sy-langu'
no = fs_mess-msgnr
v1 = fs_mess-msgv1
v2 = fs_mess-msgv2
v3 = fs_mess-msgv3
v4 = fs_mess-msgv4
IMPORTING
msg = w_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:/ fs_mess-msgv1.
........
Regards,
Mdi.Deeba