My Knowledge Collection
SAP UI Automation
VBA Code Snippet to Detect Information about SAP GUI Elements
23.08.2020
In a few cases it is in business context not allowed to install additional analyze software or tools. So applications that are permissible and available must be used, e.g. like Microsoft Office applications. This makes things a bit more laborious, but not impossible. Here a Visual Basic for Application (VBA) example to detect a few information of the UI Elements of a session of the SAP GUI for Windows with SAP GUI Scripting. The result is written into a Microsoft Excel table.
With the access to this kind of information you can detect what you need, e.g. like ID, text, type, name or position, size, etc. On this way you can e.g. easily compare two versions of an UI, to find the differences. With the filter options in Excel the desired information can then be found very quickly. Here the
corresponding post in the SAP Community. Here the
source code of the modul class with a type definition and here the
source code of the sheet.
Web UI Automation
10.06.2017 / 21.11.2020
More and more desktop applications are being replaced by web applications. Selenium is recommended for this kind of automation approaches. To use it you need the WebDriver language bindings and a web driver for the browser. Of course, this depends on the browser used. After obtaining the necessary components, a simple test can be carried out using this
Java sample program.
Mobile Device Automation
06.05.2018 / 26.07.2020
Native Windows Application Automation
03.10.2018
- Windows Application Driver
Hint: To use this driver you need the Appium client libraries. These are the same as mobile device automation above.
Check the Existence of an SAP GUI Scripting Object Without Exception
18.11.2013
Different SAP environments are not always identical. So it is possible that an GUI object is available in one environment, but not in another. Here a method how to check the existence of a GUI object. In a normal case, if an object not exists, you get an exception error in a messagebox and the script terminates immediately. With this method you can choose whether the script terminate or not. I think this method is a way to make scripting more robust for the work in different environments.
A sub procedure C checks the existence. It gets the SAP GUI Scripting command as string parameter and delivers it to the method Exe of the Check class. This method calls the method FindById and if it doesn't find an object, an exception is thrown. Now the class was destroyed and the destructor calls the method ErrCatch. This method opens a messagebox and sets a global flag. If the flag is set, with a positive answer of the messagebox, the script terminate immediately or runs again with a negative answer. The
example code checks the objects of the logon screen.
Access to SAP via ActiveX control
17.08.2012 / 17.11.2013
With the installation of SAP GUI for Windows on the presentation server you get also some ActiveX controls to connect and to communicate with an SAP system. You can use these ActiveX controls easily inside Visual Basic Script and therefore inside of an HTML application - but only with Microsoft Internet Explorer. It is possible to build a HTML GUI and use it with data from an SAP system. Inside the HTML there is a VBScript functionality necessary, which gets the data from the SAP system and uses the Document Object Model (DOM).
With this
source code you can view any SAP table content as HTML table. It shows an easy GUI, with only one the connection parameters, an input field for a SAP table name and a button to view the table content in the HTML table.
Important hint:Do not use ActiveX controls furthermore, they are deprecated.
How to read any table with SAP GUI Scripting and write it to a CSV file
16.04.2012
You can do a lot of things with SAP GUI Scripting. Beside the simulation of user inputs you can automize a lot of other stuff. But therefore it is necessary to mix the possibilities e.g. with Visual Basic Scripting. In this
source code shows how to read any SAP table from the ALV-Grid of the transaction code SE16 record by record and write it in a text file. The delimiter between each field is a semicolon.
If you want to process the records of the table inside your Visual Basic Scripting code, it is not in any case a benefit to work with a file. This
source shows a way to read a table in an array - not a file.
With this examples it is very easy to export any table from SAP and import the data e.g. in Microsoft Excel to analyze or process it.
My collection of posts
23.08.2020 / 08.10.2020
ABAP code snippets
Import CSV file into table
09.04.2017
In a few cases it is necessary to transfer table data from one system to another. Here a
report how to import table data from a csv file in an SAP system. To export table data you can use transaction code SE16. This method doesn't work with a table which contains RAW data fields.
Reset Passwords of SAP Standard Users in Different Clients
10.01.2016
In a normal case you configure the SAP standard users like SAP* or DDIC once when you install the application server. But later, month ago, it could be possible that you forget the passwords of the standard users in the different clients of the application server. Here a
program to set or copy the passwords of the standard users in the client 000 from client 001.
Examples of ActiveX Library Integration in ABAP
With ABAP it is possible to use ActiveX applications on the presentation server. Now a few examples to show some possibilities.
-
How to use SAP GUI Scripting inside ABAP
04.12.2011 / 22.07.2016
In current versions from SAP for Windows the security options don't allow the using of SAP GUI Scripting inside ABAP. Disable this security rules to try the source. This source shows the possibility to use SAP GUI Scripting inside ABAP
-
Easy Way of ABAP ActiveX Connectivity
06.08.2014
-
How to use Visual Basic Script
24.10.2011
It is also possible to use Microsoft Visual Basic Script inside ABAP. This means you can execute scripts direct from ABAP. Here a source to execute VBScript from ABAP and here an alternative source to execute VBScript from ABAP.
-
How to use Google translate
24.01.2011
With the Microsoft Internet Explorer it is possible to call web sites via COM. In the following code we call Google translate and send a text to translate it and get the result back. It translate from German to English language. Here the ABAP source to call Google translate.
This program bases on a VBA code snippet from Jean Pierre Allain, thanks to Jean Pierre.
-
How to use Microsoft Word spell and grammar checker
03.10.2010
The Microsoft Office applications are a quasi standard, installed on most of the business computers and it can be use via OLE. Now it is a small step to use the functionalities of the Office applications also in ABAP. In the following code we look at the spelling and grammar checker of Microsoft Word. You get any text you want from ABAP to Word, check it and it is returned in a corrected form. Here the ABAP source to use Words spell and grammar checker.
-
How to call a Windows CHM help file with ABAP
10.08.2009
With this ABAP code it is possible to call each CHM help file on the presentation server and control them. You can switch between the tabs, open the content you want and close the file. Here the ABAP source to use CHM help files.
-
How to control a client with AutoItX from SAP ABAP
04.07.2009
It is very easy to control a client system from SAP ABAP with AutoIt. Do not forget to register AutoItX on the client system via regsvr32.exe AutoItX.dll. Now you can use AutoIt from ABAP, look at the simple example, it calls notepad and type a text in it:
Data: AutoIt Type OLE2_OBJECT,
pid Type i.
Create Object AutoIt 'AutoItX3.Control'.
Call Method Of AutoIt 'Run' = pid
Exporting #1 = 'notepad.exe'.
Call Method Of AutoIt 'WinWaitActive'
Exporting #1 = 'Unbenannt - Editor'.
Call Method Of AutoIt 'Send'
Exporting #1 = 'Hello from ABAP'.
Free Object AutoIt.
Use DLL calls in ABAP
26.09.2009
It is not ordinary but very easy to use DLL calls in ABAP or script languages, e.g. VBScript. Yuri Popov programmed a module, called DynamicWrapperX. It is an ActiveX component, which allow to call each function in a DLL you want via COM. A great module. Here the module
DynamicWrapperX.
Thanks to Yuri Popov for this module.
The library offers a lot of functions but I miss the possibility to set a string on an address. So I programmed a small extension library to do it. The library contains only one function, with the name StrPut. Here the
DynamicWrapperX extension.
-
How to call Windows API OutputDebugString with ABAP
25.01.2011
To view ABAP debug output on the presentation server you can use the Windows API function OutputDebugString. zDebug is an example, it is a small collection of ABAP procedures or classes to use an external debugger, e.g. like DebugView from Microsoft TechNet, to catch the debug output. Here the ABAP source to use Windows API debug functions.
Important hint: These procedures only works with foreground jobs and online processes. They does not work with background jobs and batch processes.
-
How to call each DLL function in ABAP
26.06.2009
With this module you can use DLL calls in ABAP, the SAP programming language, very easy too.
And it is necessary to register DynamicWrapperX on the presentation server too, with regsvr32.exe dynwrapx.dll.
Look at the ABAP source code to call a DLL function.
Important hint: This method works only with foreground jobs and online processes. It works not with background jobs and batch processes.
See also my thread in the SCN.
RFC Read Table in JSON Format
21.01.2017
More and more is JSON (JavaScript Object Notation) the standard in data exchange. I extend the remote enabled function module RFC_READ_TABLE to deliver SAP table data also in JSON format. Here the
extended function module of RFC_READ_TABLE with the possibility to export the content in JSON format. Here the
corresponding post in the SAP Community.
My collection of posts
21.01.2017 / 08.10.2020
Robotic Process Automation (RPA)
Combine PowerShell with UiPath
25.12.2018 / 27.09.2020
To combine PowerShell with UiPath we use a tiny test script which needs a parameter and delivers the result of a message box as string.
#-Begin-----------------------------------------------------------------
Param(
[String]$UserName
)
#-Sub Main--------------------------------------------------------------
Function Main {
Add-Type -AssemblyName System.Windows.Forms;
[String]$Result = [System.Windows.Forms.MessageBox]::Show("Hello $($UserName)", `
"Hello", [System.Windows.Forms.MessageBoxButtons]::OKCancel);
$Result;
}
#-Main------------------------------------------------------------------
Main;
#-End-------------------------------------------------------------------
Now the integration of this PowerShell script into a UiPath sequence. Here is one way to read the PowerShell script as text file into a UiPath variable. This variable is the command text for the UiPath activity Invoke PowerShell. It is necessary to set the IsScript flag of the PowerShell Invoke activity in this case. The parameter for the script must be defined also as parameter for the activity, with the same name. Set the TypeArgument property to string and the result of the script will be a collection of strings too, which are stored in the variable Result. With the Write Line activity this result is shown in the output window of UiPath.
Here the workflow file of UiPath. On this way it is possible to combine PowerShell in UiPath seamlessly and to communicate directly from UiPath with the PowerShell script and vice versa.

On the other way it is also possible to call the PowerShell script directly, with its full file name, include the path. In this case it is necessary to disable the IsScript flag in the properties.
Orchestration Changes
08.10.2020
Since the release 20.8.0 are some changings in the Orchestrator settings to install the Community Edition. It is necessary to activate in the Users section the switch "Automatically create an attended robot for this user" and to choose "License Type Studio". Also it is necessary in the Settings section to activate the option "Allow both user authentication and robot key authentication".
My collection of posts
26.12.2018 / 09.01.2021
Here a collection of interesting links from different perspectives for using UiPath:
Here a collection of interesting links from different perspectives for using SAP Intelligent RPA:
Links
25.12.2018 / 05.12.2020
.NET
My collection of posts
23.08.2020
Links
26.07.2020 / 05.12.2020
PowerShell
How to use UnRAR library with PowerShell
05.01.2020
RAR is a very good archive format to compress any type of files in archives. RARLAB offers a free library to unpack those kind of archive files. You can find
the UnRAR library here. It is very easy possible to use this library with PowerShell. Therefore you need the definitions of constants, structures und functions as C# code. This code is read as here-string from a file,
here the C# code. The following example script contains a function with the name UnpackRAR with the parameters filename and destination path. It reads the C# definition and sets, if necessary, a definition to decide which version (x86 or x64) of the library should be used. It opens the archive and extracts all contained files in the destination path.
Here the PowerShell script example how to use the UnRAR library. On this way it is very easy now to extract RAR compressed archives with PowerShell.
How to use any scripting language with PowerShell
01.01.2019
PowerShell script offers the possibility to start any scripting language interpreter with additional arguments and to catch the result. The following examples shows Python and AutoIt, try it with .\CallScriptFromPS.ps1 """Hello World""".
Here the PowerShell script to call any scripting language interpreter.
Here the Python example script. and
here the AutoIt example script.
How to use VB.NET via PowerShell inside Java
21.06.2016
Here an example how to use VB.NET inside Java, equivalent to the
ABAP example. The VB code is in an external file in a project directory from Eclipse.
Look at the source here.
Java code in Eclipse
VB.NET code in Eclipse
How to use PowerShell Inside Java
13.06.2016
I use
JaCoB (Java COM Bridge) with SAPIEN Technologies ActiveX PowerShell library. On this way it is possible to use PowerShell; seamless and easily inside Java. With regard to the Eclipse IDE this may be an interesting aspect - but I must admit a little bit exotic.
Look at the source here.
How to use SQLite ODBC with PowerShell
05.06.2016
Here is an approach how to use SQLite databases with PowerShell script language via an
ODBC driver. On this way we have the possibility to export tables from an SAP system into a SQLite container, to use it from the backend via ABAP and also to use it from the frontend via PowerShell. It should be also considered that SQLite is available for Android, Linux, Mac OS X and different Windows platforms e.g. like Windows Phone. So we can exchange static data or data without permanent changes easily.
Look at the source here.
My collection of posts
25.12.2016 / 19.01.2020
Here a collection of interesting links from different perspectives for using Microsoft PowerShell with SAP:
- Machine Learning
- Automatization Approach
- ABAP
- Connectivity
- SAP GUI Scripting
- COM Bridge to PowerShell
- eCATT
Links
21.10.2016 / 23.09.2020
Python
SAP Developer News
31.01.2018
The January issue of the SAP developer newsletter "debug and deploy" contains a reference to my blog post
How to use Python Seamlessly Inside ABAP in the SAP Community.
My collection of posts
23.09.2017 / 03.05.2019
Here a collection of interesting links from different perspectives for using Python:
Links
23.09.2017 / 03.05.2019
Helpful Hints for Microsoft Windows
01.08.2008 / 03.01.2020
How to find drivers and updates for Windows
Microsoft offers a very good
database to find hardware drivers and update packages.
Also you can use the
Windows 10 Update history.
How to update Windows Defender without online connection
It very easy to update Windows Defender, the actual security program in Windows, without an online connection. Use the link to
microsoft.com and download the correct file. Execute the file, e.g. mpam-feX64.exe, from the Explorer with administration rights. Now the Defender is up to date.
Setting up Database Storage for ArchiveLink
03.06.2013
OLE experience
20.08.2010
OLEView is an OLE/COM viewer from Microsoft and a part of the Windows SDK. It is possible with a simple mouse click to view the type library of the COM library with this tool in IDL (Interface Definition Language). But something is to notice: You must use a version number for the COM library 1.0 and higher. If you use a version number 0.x, it is not possible to view the interface - you get an error. The COM library works with a version number 0.x perfect, but OLEView can not read the interface and store the IDL file. The COM viewer, also from Microsoft, shows the interface without any problems.
Microsoft Word Document Templates
04.07.2009
The Word document files have the extension doc. But Word knows also other formats, e.g. the document templates, with the extension dot. Dot files are not the same as doc files.
Here a few different procedures to handle these kind of files:
-
If the document templates are to be changed, they must never be opened with a double click. e.g. from the desktop or via Windows Explorer. With this type of opening, mechanisms are started in Word and the file is handled differently. Dot files that are to be changed must always be opened via an open Word instance and the menu item File > Open.
-
The standard start mechanisms are replaced by the AutoNew event, when opened this kind of file with a double click. E.g. DocumentOpen etc. only works when opened via the menu item File > Open. Programs which are to be executed when document templates are opened are to be assigned to the AutoNew event.
Tips for Technical Documentation
Explore CHM Files and Get the HTML Files
10.12.2008 / 02.01.2010
The
7-Zip packer offers the possibility to open CHM files and to get the HTML files.
With the HTML Help File Explorer from Paul A. O’Rear it is possible to analyze the content of CHM files. In a tree structure all integrated files are viewed. With Display you can view the rendered file and with TextView the source code. You can find the
HTML Help File Explorer tool here.
How to Save Information from HLP file in the Post XP World
01.10.2008
Microsoft stops the support for the HLP help files with Vista. HLP is a (very) old format, it exists since Windows 3. It bases on the Rich Text Format (RTF). The official format since Windows 98 is the CHM format, which bases on Hyper Text Markup Language (HTML). At the moment the actual format is HxS, which bases on eXtended Markup Language (XML).
We have a lot of information store in HLP files. What can we do to save the information from the HLP files in the post XP world? It is very easy to do that.
At first you must get all your source files from the HLP files, e.g. RTF, BMP, SHG etc. But the first problem is: where are the files? Often we have only the HLP file, but not all sources. No problem, if you have the HLP file, you have all what you need. Now you need a decompiler, which extracts all files from the HLP file. You can load a very good decompiler
call HELPDECO. It is a command line tool: open a console window, type HELPDECO MYHELP.HLP and a few seconds later you have all your source files.
The next step is to load and install the
HTML Help SDK from Microsoft. Create a new project to convert an existing HLP file. Choose your project and a few seconds later the HLP project is converted to a CHM project. Now compile the project and you get your HLP content in CHM format. My experience is, after a conversion, that you loose a lot of format information but all links work well.
UPX and/or Molebox compression and protection fires virus scanner phobia
01.05.2008
It is a normal day, the sun is shining, I feel good and put my memory stick in a strange computer. Suddenly, the virus scanner gives alarm. He detects, that one of my programs is infected with a trojan. Mhmm, I programmed and compiled it and the virus scanner of my system means, it is all okay. Now I look a little bit nearer and analyze this situation:
- 1. Step: I send my program to www.virustotal.com and it gives me a report back. Several virus scanners found different viruses and trojans and mean my program is suspicious.
- 2. Step: I wrote a very easy program and compiled it and sent it to www.virustotal.com again. I was surprised about the result. One virus scanner gave alarm (see the results).
- 3. Step: Then I compressed the program with UPX and sent it to www.virustotal.com again. Now I was more surprised, three virus scanners found different viruses, and the virus scanner from the second step not (see the results).
- 4. Step: Then I protected the programs with Molebox and sent it to www.virustool.com and checked it again. It came what I expected: more different viruses and trojans (see the results).
Okay, what is the result of this test:
Virus scanners are necessary, nothing more to say, but if the phobia of the scanner makes users feel insecure, it goes to far. To use security mechanism in our programs is also necessary and allowed. But the scan technic of the virus scanner uses the same mechanism as a virus or trojan and our programs protect against "scan attack". So the virus scanner thinks, oh, it defends my "scan attack", it is suspicious and brands the program. The user thinks, oho, it is a virus or trojan in the program and deletes it, great.
What can we do?
- Check each program with www.virustotal.com and inform the user about the results.
- Create for each program a checksum e.g. MD5 and publish it with the link and with the file.
Thanks to the
UPX team for the great program.
Thanks to the Molebox team for the great tool.
Thanks to
Virustotal for the great scan service.
Look at:
Virus scanning test results, Adobe Reader expected.
More information:
McAfee Support Community