Externes Program mit Argumenten

Getting started ... Alles für einen gelungenen Start.
6 Beiträge • Seite 1 von 1
6 Beiträge Seite 1 von 1

Externes Program mit Argumenten

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
Hi

Ich bin am Implementieren eines Aufruf-Badi Methode in welcher ich via "CL_GUI_FRONTEND_SERVICES=>EXECUTE" eine Programm mit Argumenten aufrufen möchte.

Grundlegend ja kein Thema aber irgendwie will das gute Stück nicht wie ich will.
Die Application basiert auf .Net und erwartet, dass ich 3 Argumente übergebe. Diese sammele ich mir lustig im meiner Methode zusammen und concatenier diese in eine String Variabele um diese dann wiederum in dem Call zu übergeben.

Leider funktioniert das nicht!! Scheinbar wird meine App aber nicht aufgerufen und ich weiß nicht warum.
Ie Application gibt überhaupt keine Rückmeldung! Starte ich diese aus der CMD ohne Args, wirft diese die erwartete Meldung, dass "..keine Argument übergeben wurde..". Übergebe ich die falsche Anzahl an Argumenten, wirft es ebenfalls eine Meldung.

Aus dem SAP heraus: NIX!!!

Ich habe keinen Dunst warum das so ist. Mein SY = 0 also er hat gunsätzlich kein Problem die *.exe zu erreichen.
Eine dunkle Idee ist, dass die App aus dem GUI mit einem Anderen Thread oder anderen User im Background gestartet wird und ich den Output (MessageBox) einfach nicht sehe?

Hat jemand vielleicht eine Idee, wo mein Problem liegen könnten oder wie ich einen Aufruf über eigene anderen Weg realisieren kann?


Mit freundlichen Grüßen
Stephan

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Externes Program mit Argumenten

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
Moin Stephan.
probier mal bitte folgendes:

Code: Alles auswählen.

* get CMD.EXE location from local PC
  DATA lv_envi TYPE string VALUE 'ComSpec'.
  DATA lv_app TYPE string VALUE 'cmd.exe'.

  CALL METHOD cl_gui_frontend_services=>environment_get_variable
    EXPORTING
      variable             = lv_envi
    CHANGING
      value                = lv_app
    EXCEPTIONS
      cntl_error           = 1
      error_no_gui         = 2
      not_supported_by_gui = 3
      OTHERS               = 4.

  IF sy-subrc <> 0.
  ENDIF.

  CALL METHOD cl_gui_cfw=>flush
    EXCEPTIONS
      cntl_system_error = 1
      cntl_error        = 2
      OTHERS            = 3.

  IF sy-subrc <> 0.
  ENDIF.


* Copy files to Drive VS$

  DATA sync TYPE string VALUE 'X'.
  DATA min TYPE string VALUE 'X'.
  DATA lv_cpara TYPE string VALUE '/c copy "c:\temp\abc.txt" c:\tmp'.
  
      CALL METHOD cl_gui_frontend_services=>execute
      EXPORTING
        application            = lv_app
        parameter              = lv_para
        minimized              = min
        synchronous            = sync
      EXCEPTIONS
        cntl_error             = 1
        error_no_gui           = 2
        bad_parameter          = 3
        file_not_found         = 4
        path_not_found         = 5
        file_extension_unknown = 6
        error_execute_failed   = 7
        synchronous_failed     = 8
        not_supported_by_gui   = 9
        OTHERS                 = 10.

    IF sy-subrc <> 0.
      MESSAGE e050(smmss_analyze) WITH ls_file_table-filename.
    ENDIF.
lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Externes Program mit Argumenten

Beitrag von stony007_de (Specialist / 108 / 6 / 0 ) »
Hi jens


also du meinst meine Applikation nicht direkt zu rufen, sondern über die cmd?
Das werde ich checken.
Aktuelle nochmal mein "nicht" funktionierender Code

Code: Alles auswählen.

* Parameterstring zusammenbauen
  CONCATENATE ARG1 ' ZEXTDOC ' ARG1 INTO L_PARAMETER SEPARATED BY SPACE.


* Debug
*MESSAGE L_PARAMETER TYPE  'I' DISPLAY LIKE 'E'.

* Und Aufrufen
  CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
    EXPORTING
      APPLICATION            = 'C:\Temp\SZCBC.exe'
      PARAMETER              = L_PARAMETER
 *     minimized              = 
 *     synchronous            = 'X'
    EXCEPTIONS
      CNTL_ERROR             = 1
      ERROR_NO_GUI           = 2
      BAD_PARAMETER          = 3
      FILE_NOT_FOUND         = 4
      PATH_NOT_FOUND         = 5
      FILE_EXTENSION_UNKNOWN = 6
      ERROR_EXECUTE_FAILED   = 7
      SYNCHRONOUS_FAILED     = 8
      NOT_SUPPORTED_BY_GUI   = 9
      OTHERS                 = 10.

  IF SY-SUBRC <> 0.

    E_RETMAXTYPE          = 'E'.
    ES_RETURN-TYPE        = 'E'.
    ES_RETURN-MESSAGE     = 'Applikation nicht verfügbar'.
    APPEND ES_RETURN TO ET_RETURN.


  ENDIF.

Re: Externes Program mit Argumenten

Beitrag von Tron (Top Expert / 1327 / 35 / 331 ) »
...
Ja genau.
Manchmal ist es nötig, Parameter in ( " das Program.exe" ) doppelte Anführungszeichen zu setzen.
Ich würde zudem empfehlen, mal, ohne concatenate, sondern mit konstanten strings zu testen.
Der Weg über CMD.EXE hat noch den Vorteil, das man Batch Dateien (im Sinne von DOS) ausführen kann.
lg Jens
<:: XING-Gruppe Tricktresor::>
Die deutsche Rechtschreibung ist Freeware, du darfst sie kostenlos nutzen –
Aber sie ist nicht Open Source, d. h. du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

Re: Externes Program mit Argumenten

Beitrag von holger.hiller (ForumUser / 2 / 0 / 0 ) »
Hallo,
Per "CMD" handelt man sich wieder Gerödel mit Übergeben von Parametern ein... und stehen bleibendes DOS-Fenster (na gut, ein "exit" in der .bat tut es manchmal)... was die Geschichte nicht unbedingt einfacher macht. Aber wenn's am Ende funktioniert... würde mich auch interessieren, wie das ausgegangen ist!
VG,
Holger

Re: Externes Program mit Argumenten

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
holger.hiller hat geschrieben:Hallo,
Per "CMD" handelt man sich wieder Gerödel mit Übergeben von Parametern ein... und stehen bleibendes DOS-Fenster (na gut, ein "exit" in der .bat tut es manchmal)... was die Geschichte nicht unbedingt einfacher macht. Aber wenn's am Ende funktioniert... würde mich auch interessieren, wie das ausgegangen ist!
VG,
Holger
Ein DOS-Fenster bleibt nicht stehen, wenn man ein "/C" beim Aufruf mitgibt. ( Default ist sonst /K )
cmd.png
Und wenn man das dann so aufruft kann man z.B. eine Ausgabe in der DOS-Box ( hier ein einfaches Directorylisting - alternativ halt die Fehlermeldung) nachher im SAP über die Zwischenablage auslesen
Dir_to_clipboard.png

Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag (Insgesamt 2):
ewxIcke0801

live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

3
Antw.
2151
Views
Leave Program
von Stahle71 » 28.06.2016 10:48 • Verfasst in ABAP® für Anfänger
3
Antw.
5771
Views
Errors in Program
von Gast » 09.08.2005 05:03 • Verfasst in Development Related
1
Antw.
4740
Views
Program logic
von Sri » 29.08.2005 15:02 • Verfasst in Development Related
7
Antw.
909
Views
itab aus FuBa in Program
von stony007_de » 22.09.2020 12:57 • Verfasst in ABAP® für Anfänger
4
Antw.
844
Views
Falsches Layout bei Submit Program
von BMWi801 » 19.01.2021 15:58 • Verfasst in ABAP® Core

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 255

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 255

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140