Skip to Content

The TMG event 01: Before Save., can be used instead of going for event 05: New Entry if you have validation process to do.


The problem with event 05 is that, control goes into the include/form only on the newly created entries. So, if you have you had to change any existing data, the control will not pass through the validation code !!


Here is a piece of code that you can use for your development purpose.


Here,

  • <action> is a flag that will have values as ‘N’ if a new entry is made or as ‘U’ if existing entry is modified.
  • <vim_total_struc> is a structure that holds the current looped value on TOTAL table.
  • it_total_zdata, internal table should be of type table z-table.


LOOP AT total.

  IF <action> EQ ‘N’ OR <action> EQ ‘U’.

    APPEND <vim_total_struc> TO it_total_zdata.

  ENDIF.

ENDLOOP.


IF it_total_zdata[] IS NOT INITIAL.

* Perform validation

    LOOP AT it_total_zdata.

      IF it_total_zdata-name NE ‘TESTNAME’.

        MESSAGE ‘Name is not TESTNAME’ TYPE ‘S’ DISPLAY LIKE ‘E’.

        vim_abort_saving = c_abrt_save.

        sysubrc = 4.

        EXIT.

      ENDIF.

    ENDLOOP.

ENDIF.


IMPORTANT POINTS  !!

  • Message should be of type ‘S’. If not, the screen returns to SM30, which looks bad !! Make sure its displayed either as ‘Error’ or ‘Warning’.
  • vim_abort_saving has to be set to ‘X’ to avoid data being saved. (Since the message popped is of type ‘S’, control proceeds further!!)
  • Set sy-subrc as ‘4’ which stops further processing.


The above points are mandatory, if you want a message to be popped and wrong data still to be seen giving an opportunity to the user to rectify.

To report this post you need to login first.

7 Comments

You must be Logged on to comment or reply to a post.

  1. Jose Javier Pinedo Martínez

    Hi Kiran,

    Great post!! Short and precise!

    I was looking for info and found a lot of forum posts, but some of them proposed modify the pai of the auto generated dynpro or create a program to call a fm that opened the table (like sm30).

    Your post was key to my success, especially the vim_abort_save and the issue with total and the field symbol of the structure.

    I didn’t fill the z internal table, but passed the field symbol in the loop to a structure like my z table and right there I did the validations

    Thanks a lot!

    (1) 

Leave a Reply