Skip to Content
Author's profile photo Stefan Foerster

Saving time when Debugging: BOPF returned objects, here: eo_message

Everyone, who debugs in TM, faced the situation many times: any BOPF call returns an object, which is deeply nested, e.g. eo_change or eo_message. This post is intended to suggest a way to save time investigating.

For example: In debugger you execute a BOPF call (retrieve, do_action or even save transaction) and you get failed keys or a rejected flag. As a next step you may want to check the collected messages in the eo_message object.

/wp-content/uploads/2016/07/screenshot_01_995790.jpg

You doublecklick the message object and see a high number of collected messages in the attribute mt_message:

/wp-content/uploads/2016/07/screenshot_02_995791.jpg

/wp-content/uploads/2016/07/screenshot_03_995805.jpg

In order to learn more about the collected messages you unfortunately need to doublecklick each message reference of each line in this table, find the referenced message ID and number, open a separate session to lookup the text in SE91 and then you know whether this message is relevant for your investigation:

/wp-content/uploads/2016/07/screenshot_04_995806.jpg

/wp-content/uploads/2016/07/screenshot_05_995810.jpg

/wp-content/uploads/2016/07/screenshot_06_995811.jpg

But, sure, you know all those steps and got used to it. Why then this blog post?

Wouldn’t it be nice to see all those messages in the debugger right away?

Most of us do actually not know that the BOPF colleagues provided a helping hand here already.

In debugger, include the tool section “Script Wrapper”. On the very right side, push the button ‘New Tool’.

/wp-content/uploads/2016/07/screenshot_07_995812.jpg

/wp-content/uploads/2016/07/screenshot_08_995975.jpg

In this new section load the existing debugger script ‘/BOBF/TOOL_DEBUGGER_SCRIPT_F’.

/wp-content/uploads/2016/07/screenshot_09a_995976.jpg

Into the BOPF Framework Object field you put your local object variable, which imported the returned eo_message parameter, and then you click on ‘Start’.

/wp-content/uploads/2016/07/screenshot_09b_995977.jpg

And what a nice relief! You can see all the messages right away in the debugger and there is no need to spend so much time to navigate through all the message references to pull out the texts from SE91 anymore.

/wp-content/uploads/2016/07/screenshot_10_995946.jpg

There is only a small shortcoming. Once you identified a message to be relevant for your investigation, you actually want to set a break-point at the place where the message is raised. From SE91 you usually do a where-used … etc.

Unfortunately the available debugger script does not list the message ID and number.

But no worries, here is how to add those two columns:

In SE38 just copy the program ‘/BOBF/TOOL_DEBUGGER_SCRIPT_F’ and in your own local Z* program you do the following adjustments:
/wp-content/uploads/2016/07/screenshot_11_997812.jpg

   (This is a screenshot of version management’s comparison feature. You need to insert the white lines.)

And look at that. In the debugger you get right away all the message IDs and numbers and texts of all the referenced messages of the eo_message object…

/wp-content/uploads/2016/07/screenshot_12_995945.jpg

By the way, the available script also handles other BOPF Framework objects, like eo_change.

Have fun saving time…

Assigned Tags

      3 Comments
      You must be Logged on to comment or reply to a post.
      Author's profile photo Jeffrey Schweigler
      Jeffrey Schweigler

      Thanks for the article.

      Author's profile photo Champagne Deng
      Champagne Deng

      Really practical skill!

      Author's profile photo Silvio Hey
      Silvio Hey

      Nice! Thanks a lot!