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

How to debug a program exit in a Workflow ?

Former Member
0 Likes
1,111

Hi experts,

How to debug a program exit in a workflow when the workflow is triggered ?

thanks in advance

regards

Ashwin

2 REPLIES 2
Read only

Former Member
526

In 4.6c I did this by creating a function module and a table (zsm50_debug). In the table are just two fields: User name (key), and a flag (yes/no).

The function module:

FUNCTION zsm50_debug.
*"----------------------------------------------------------------------
*"*"Local interface:
*"  IMPORTING
*"     REFERENCE(Z_DEBUG_USER) LIKE  SY-UNAME
*"----------------------------------------------------------------------
  DATA: z_exit,
        z_debug.

  CLEAR: z_debug.

  DATA: starttime   TYPE t,
        currenttime TYPE t,
        time_passed TYPE i.

  starttime = sy-uzeit.

* Check if debugging is switched on
  SELECT SINGLE debug FROM  zsm50_debug
                      INTO  z_debug
                      WHERE uname = z_debug_user.
* Debugging is switched on:
  IF z_debug = 'X'.
*   Not an endless loop, but it will continue after approx. 1 minute...
*   Plenty of time to go to SM50 to debug the program and continue!
    DO.
*     Change the value of z_exit to 'X' to exit the loop an stay in
*     debug mode.
      IF z_exit = 'X'.
        EXIT.
      ENDIF.
*     To prevent an endless loop (if the user forgot that debugging was
*     switched on in ZSM50_DEBUG, time is measured to allow the program
*     to continue after 2 minutes
      GET TIME FIELD currenttime.
      time_passed = currenttime - starttime.
      IF time_passed > 120.
        WRITE: / '!!!==========================================!!!'.
        WRITE: / '!!!DEBUGGING STILL SWITCHED ON IN ZSM50_DEBUG!!!'.
        WRITE: / '!!!    Program was delayed by two minutes    !!!'.
        WRITE: / '!!!==========================================!!!'.
        EXIT.
      ENDIF.
    ENDDO.
  ENDIF.

ENDFUNCTION.

This FM reads the table and checks if the flag is switched on. If so, it loops for two minutes. After that, it continues regardless. If not flagged, it continues immediately.

This way, you can debug any program that is running in the background.

In every method I program I add this FM right in the beginning. With authorization for SM50, I can then debug the program (in production it may be difficult to get the correct server, if there are more).

Read only

0 Likes
526

Thanks Edwin for the post, I was struggling all day long to figure out whats going on in my program exit. This really helped me and I appreciate that.