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: 

error handling in call transaction

Former Member
0 Kudos

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

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

5 REPLIES 5

Former Member
0 Kudos

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.

Former Member
0 Kudos

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.

Former Member
0 Kudos

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

former_member156446
Active Contributor
0 Kudos
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

Former Member
0 Kudos

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