"-Begin-----------------------------------------------------------------
  Report zVBScript.

    "-Type pools--------------------------------------------------------
      Type-Pools OLE2.

    "-Constants---------------------------------------------------------
      Constants CrLf(2) Type c Value %_CR_LF.

    "-Variables---------------------------------------------------------
      Data ScriptCtrl Type OLE2_OBJECT.
      Data Command Type String Value ''.
      Data Line Type String Value ''.
      Data Module Type String Value ''.
      Data Result Type Integer.

    "-Macros------------------------------------------------------------
      Define AddLine.
        Concatenate Module &1 CrLf Into Module.
      End-Of-Definition.

    "-Main--------------------------------------------------------------
      Create Object ScriptCtrl 'MSScriptControl.ScriptControl'.

      If sy-subrc = 0.

        "-Allow to display UI elements----------------------------------
          Set Property Of ScriptCtrl 'AllowUI' = 1.

        "-Intialize the VBScript language-------------------------------
          Set Property Of ScriptCtrl 'Language' = 'VBScript'.

        "---------------------------------------------------------------
        "-
        "- Execution of a single VBScript command
        "-
        "---------------------------------------------------------------
          Command = 'MsgBox "This is a test", vbOkOnly, "MessageBox"'.
          Call Method Of ScriptCtrl 'ExecuteStatement'
            Exporting #1 = Command.

        "---------------------------------------------------------------
        "-
        "- Execution of a VBScript procedure
        "-
        "---------------------------------------------------------------
          AddLine 'Sub foo()'.
          AddLine 'MsgBox "This is a test", vbOkOnly, "MessageBox"'.
          AddLine 'End Sub'.
          Call Method Of ScriptCtrl 'AddCode' Exporting #1 = Module.
          If sy-subrc = 0.
            Call Method Of ScriptCtrl 'Run' Exporting #1 = 'foo'.
          EndIf.

        "---------------------------------------------------------------
        "-
        "- Execution of a VBScript function
        "-
        "---------------------------------------------------------------
          Clear Module.
          AddLine 'Function foo2()'.
          AddLine 'foo2 = MsgBox("This is a test", vbOkCancel, "MessageBox")'.
          AddLine 'End Function'.
          Call Method Of ScriptCtrl 'AddCode' Exporting #1 = Module.
          If sy-subrc = 0.
            Call Method Of ScriptCtrl 'Eval' = Result
              Exporting #1 = 'foo2'.
            Write: / Result.
          EndIf.

        "---------------------------------------------------------------
        "-
        "- Execution of a VBScript function with parameters
        "-
        "---------------------------------------------------------------
          Clear Module.
          AddLine 'Function foo3(Text)'.
          AddLine 'foo3 = MsgBox("This is" & Text, vbOkCancel, "MessageBox")'.
          AddLine 'End Function'.
          Call Method Of ScriptCtrl 'AddCode' Exporting #1 = Module.
          If sy-subrc = 0.
            Call Method Of ScriptCtrl 'Eval' = Result
              Exporting #1 = 'foo3(" a test")'.
            Write: / Result.
          EndIf.

        "-Free the object-----------------------------------------------
          Free Object ScriptCtrl.

      EndIf.

"-End-------------------------------------------------------------------