Skip to Content

How to Call DLL Functions Inside ABAP

A long time ago I presented here a possibility how to call DLL functions from a library of the presentation server inside ABAP.

Not so long ago I presented here the possibility how to use Windows PowerShell inside ABAP.

Here now a symbiosis, how to call DLL functions via PowerShell inside ABAP:

  Program zCallDLL.

      Type-Pools OLE2 .

      Constants CrLf(2) Type c Value %_CR_LF.
      Constants OUTPUT_CONSOLE Type i Value 0.
      Constants OUTPUT_WINDOW Type i Value 1.
      Constants OUTPUT_BUFFER Type i Value 2.

      Data PS Type OLE2_OBJECT.
      Data Result Type i Value 0.
      Data strResult Type String Value ''.
      Data tabResult Type Table Of String.
      Data PSCode Type String Value ''.

      Define _.
        Concatenate PSCode &1 CrLf Into PSCode.

      Create Object PS 'SAPIEN.ActiveXPoSH'.
      If sy-subrc = 0 And PS-Handle <> 0 And PS-Type = 'OLE2'.

        Call Method Of PS 'Init' = Result Exporting #1 = 0.
        If Result = 0.

          Call Method Of PS 'IsPowerShellInstalled' = Result.
          If Result <> 0.
            Set Property Of PS 'OutputMode' = OUTPUT_BUFFER.

_ '$sig = @"'.
_ '[DllImport("User32.dll")]'.
_ 'public static extern int MessageBoxA(int hWnd, String Text, String Caption, int Type);'.
_ '"@;'.
_ '$DLL_User32 = Add-Type PBexpMsgBox -MemberDefinition $sig -PassThru'.
_ '$DLL_User32::MessageBoxA(0, "Hello World", "From WinAPI", 0);'.

            Call Method Of PS 'Execute' Exporting
              #1 = PSCode.

            Call Method Of PS 'OutputString' = strResult.

            Split strResult At cl_abap_char_utilities=>cr_lf
              Into Table tabResult.
            Loop At tabResult Into strResult.
              Write: / strResult.



        Free Object PS.



The example above shows the using of a WinAPI call.

You must be Logged on to comment or reply to a post.
  • GUI 7.30 is used as the first operation:

    Create Object PS ‘SAPIEN.ActiveXPoSH’.

    causes an error => SY-SUBRC = 2. Provides that use the object SAPIEN.ActiveXPoSH?

    • Hello Hai Wang,

      the solution above is only for SAP GUI for Windows, I am no Unix expert but as far as I know SAP offers no special SAP GUI for Unix. Also Unix offers no equivalent to ActiveX, which is natively supported by the SAP GUI for Windows.

      One ot the ways I see is a server application, which runs on the presentation server, something like I describe here. So I think it is possible to build a bridge between an SAP ABAP application and Unix script.

      Maybe somewhere is an expert who can present a way.



      • Hi Stefan,

        There is only the Java SAPGui for UNIX systems. Mostly we use it for simple administration tasks on X-Windows.

        With Java you could in theory attach to other Jar files which you could run in-line with SAPGui but I don’t think there is an API for this.

        Better to write a web app for all your needs, in most cases.