Skip to Content

Preface

Not so long ago I discovered the “GET_SCREENSHOT” method of class “CL_GUI_FRONTEND_SERVICES”. The method creates an image of your current SAP GUI window in the “Portable Network Graphics” format (shortly called “PNG”).

My first thought was: “Great, useful for support teams.” Second thought was: “Support teams would need more information such as transaction code or report name.” Third thought was: “Would it be really necessary to have these information in an extra (text) file?” I did a little research and found a workable solution in the PNG format itself.

This blog is about my implementation to demonstrate the mentioned solution. Please use it as starting point for your own research and share your ideas and thoughts about if you want.    

Required ressources

  • SAP Netweaver stack (I used SAP Netweaver Trial 7.40 on MaxDB)
  • W3C PNG specification (second edition, all mentioned chapter in this blogs belongs to this document)
  • TweakPNG (freeware for examining and modifying PNG image files)
  • ASCII/Hex-Converter (I used an online converter)
  • IrfanView (freeware image viewer)

Basic idea

The method “GET_SCREENSHOT” will be used to create a PNG image of the current SAP GUI window. PNG images consist of different chunks (cf. chapter 5.3). Each chunk has a chunk type to specify its function (cf. chapter 4.7.2). The chunk type “tEXt” is used to store text strings (cf. chapter 11.3.4.3). Keywords can be used to identify the content of the text string. Here are some useful keywords (cf. 11.3.4.2):

  • Title: short title or caption
  • Author: name of creator
  • Description: more details than in title
  • Creation Time: time of original image creation
  • Comment: miscellaneous comment

A Keyword and his associated text string are called chunk data. Now we have all fundamentals for implementing our own solution.

Source code of demo report

You can download the demo from GitHub.

Example

For our example we us “Title” as keyword and “Hello World!” as text string.

Step Description
1 We get a screenshot of our current SAP GUI window.
2

We combine chunk type, keyword and our text string.

Result: “tEXtTitle Hello World!”

3

We convert it to hex and place the “Zero Byte” delimiter between keyword and text string (in hex it’s “00”).

Result: “744558745469746C650048656C6C6F20576F726C6421”

  • “74455874” corresponds to “tEXt”,
  • “5469746C65” corresponds to “Title”
  • “00” is a zero byte
  • “48656C6C6F20576F726C6421” corresponds to “Hello World!”
4

We get the length of the chunk data (that are keyword and text string).

Result: 18 bytes

5

We generate a CRC32 for chunk type and chunk data.

Result: “1373921944” (in hex it is “51E46298”)

6

We build the complete chunk. It consists of length, chunk type, chunk data and CRC32.

Result “00000012744558745469746C650048656C6C6F20576F726C642151E46298”

7 We place our tEXt-chunk before the IEND-chunk.
8 We download our enhanced screenshot to desktop.

After downloading the image to your desktop, you can use IrfanView for displaying.

Demo.jpg

Have a look at the function “View->Show HEX view” of IrfanView.

HexView.jpg

With TweakPNG you can have a look at the different chunks. You will find our tEXt-chunk “Title” with the corresponding text string “Hello World!”.

TweakPNG.jpg

Idea for practical use

It’s just an idea and not a well proofed business case: Create your own generic object service to get a screenshot of the current SAP GUI window. Analyze the business context (given business object type and id, sy-structure, callstack and more – perhaps I will show that in another blog) and encode the gathered data into the PNG image as shown above. Download the image to the user’s desktop so he can mail it to his support team. Support team of course would need a tool to show the PNG image and decode all tEXt chunks in it. Even if the user puts no additional information in his mail there are some helpful business context information in the image. As I said before just an idea …

To report this post you need to login first.

2 Comments

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

  1. Alexey Telitsyn

    Michael, thanks for a good idea!

    It would be great if it will be standard SAP GUI functionality 🙂 , in my case as a tester it useful to have an ability fast creation of such kind of “smart” screenshots when I describe an issue.

    Thanks! 

    (0) 
    1. Michael Keller Post author

      Hi Alexey,

      thanks for your comment. The term “smart screenshot” is great, I like it 🙂

      There are so much possibilities to improve the collaboration of users within the system. If enough SCN members would be interested in and would find it useful for their daily work perhaps we can develop a basic solution for everyone. In this case please contact me.

      Kind regards

      Michael

      (0) 

Leave a Reply