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: 

Catching an error message.

Former Member
0 Kudos

Hi abapers,

There is a FM 'L_TO_CREATE_DN' which is used in inbound idoc creation program .

Just after running this FM in the code , the idoc gives an error message.

I am checking through WE19.

I need to change the error message ,so I need to catch this message .

But as soon as I do a F6 on the FM the program gets executed and the output error message popsup.

How can I catch this message.

Please help.

Thanks,

Suchi.

8 REPLIES 8

Former Member
0 Kudos

Hi,

Check the Tables parameter of the FM.you'll find a parameter named T_WMGRP_MSG.

Check the Associated Type and you will find that the corresponding messages returned by this BAPI are getting stored here :

MSGNO

MSGID

MSGTY

MSGTX

From here you can catch the required message.

Reply back if need any further help on this.

Regards

Former Member
0 Kudos

Hi,

Fill the below fields and pass the values to T_WMGRP_MSG table of parameter :

MATNR :

MSGNO :

MSGID :

MSGTY :

MSGTX :

This way you can capture the message and pass your message .

Former Member
0 Kudos

The problem is as soon as I give F6 on the function module , the program gets executed giving the message.

So I am not able to see what does the table T_WMGRP_MSG return.

Please suggest.

0 Kudos

put a break point at the FM source code and then debug to see what it returns.

0 Kudos

Hi,

Please put some sy-subrc check after FM.

I have checked and break-point is stopping after execution(F6) of FM.

Below is the code for your reference.

DATA lt_msg TYPE TABLE OF wmgrp_msg.

CALL FUNCTION 'L_TO_CREATE_DN'
  EXPORTING
    i_lgnum                          = 'EX1'
    i_vbeln                          = '80109392'
*   I_REFNR                          = ' '
*   I_SQUIT                          = ' '
*   I_NIDRU                          = ' '
*   I_DRUKZ                          = ' '
*   I_LDEST                          = ' '
*   I_KOMIM                          = ' '
*   I_EINLM                          = ' '
*   I_EINTA                          = ' '
*   I_NOSPL                          = ' '
*   I_UPDATE_TASK                    = ' '
*   I_COMMIT_WORK                    = 'X'
*   I_BNAME                          = SY-UNAME
*   I_TEILK                          = ' '
*   I_SOLEX                          = 0
*   I_PERNR                          = 0
*   IT_DELIT                         =
* IMPORTING
*   E_TANUM                          =
*   E_TEILK                          =
 TABLES
*   T_LTAK                           =
*   T_LTAP_VB                        =
   T_WMGRP_MSG                      = lt_msg
 EXCEPTIONS
   FOREIGN_LOCK                     = 1
   DN_COMPLETED                     = 2
   PARTIAL_DELIVERY_FORBIDDEN       = 3
   XFELD_WRONG                      = 4
   LDEST_WRONG                      = 5
   DRUKZ_WRONG                      = 6
   DN_WRONG                         = 7
   SQUIT_FORBIDDEN                  = 8
   NO_TO_CREATED                    = 9
   TEILK_WRONG                      = 10
   UPDATE_WITHOUT_COMMIT            = 11
   NO_AUTHORITY                     = 12
   NO_PICKING_ALLOWED               = 13
   DN_HU_NOT_CHOOSABLE              = 14
   INPUT_ERROR                      = 15
   OTHERS                           = 16
          .
IF sy-subrc <> 0.    <- Cursor is stopped at this position After F6 at FM.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.


WRITE  'A'.

0 Kudos

Hi,

Call the RFC FM as follows:-

CALL FUNCTION 'L_TO_CREATE_DN' destination 'NONE'
  EXPORTING
    i_lgnum                          =
    i_vbeln                          =
 IMPORTING
   E_TANUM                          =
   E_TEILK                          =
 TABLES
   T_LTAK                           =
   T_LTAP_VB                        =
   T_WMGRP_MSG                      =
 EXCEPTIONS
system_failure = 35
communication_failure = 36
error_message = 99

          .
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

See the exceptions as called.

In this case you will not get the error message directly but it will be trapped and passed as an exception as in a normal FM.

Regards,

Ankur Parab

Former Member
0 Kudos

The error message that comes up is actually a standard message coming from a standard program SAPMV50A when the FM L_TO_CREATE_DN is triggered.(message class VL message no:198 )

Also X is passed to the I_COMMIT_WORK export parameter.

Is this the reason that by doing F6 the report directly executes?

Please suggest.

0 Kudos

Hi,

The error comes directly becuase the exception has not been handled by using the RAISE statement.

Regards,

Ankur Parab