Betriebssystembefehl aus einem Abap ausführen

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Betriebssystembefehl aus einem Abap ausführen

Beitrag von stele (ForumUser / 12 / 0 / 0 ) »
Mit diesem Coding-Beispiel wird erläutert, wie man aus einem ABAP heraus ein Betriebsystemkommando oder ein Betriebssystem-Skript aufrufen kann (z.Bsp FTP Upload/Downlaoad anstarten)
-----------------------------------------------

Code: Alles auswählen.

* Ausgabetabelle (rückgabe des stdout)
DATA: BEGIN OF syscalltab OCCURS 0,
         line(200),
      END OF syscalltab.

* Befehl der ausgeführt wird.
DATA:os_command(30).
os_command = 'ls -la'.

* Befehl ausführen
call 'SYSTEM'
   id 'COMMAND'
    field os_commando
   id 'TAB'
    field syscalltab-*sys*.


* Rückgabe des Befehles ausgeben
LOOP AT syscalltab.
  WRITE:/ syscalltab.
ENDLOOP.

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


Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Auch wenn diese Beispiele von Generation zu Generation weitergegeben werden (sieht man z.B. daran, dass itab-*sys* seit Release 3.0 obsolet ist - wenn man schon eine itab mit Kopfzeile nimmt, kann man den Body auch mit itab[] ansprechen):

Das taugt nichts.

1. sollte kaum ein Nutzer die Berechtigung dazu haben, und wenn die Berechtigung fehlt, gibt es einen Dump.
2. ist am SY-SUBRC nicht ohne weiteres erkennbar, ob der Befehl erfolgreich war
(Eigentlich soll SY-SUBRC = 0 Erfolg und SY-SUBRC > 0 Fehler bedeuten, aber es kommt des öfteren dazu, dass SY-SUBRC = -1 ist, unabhängig davon, ob der Befehl erfolrgeich war oder nicht.
3. muss man Besonderheiten des Betriebssystems per hart kodierter Fallunterscheidung vornehmen, wehe es kommt später mal ein Applikationsserver mit anderem OS hinzu.
4. gibt es den FB SXPG_COMMAND_EXECUTE und die Transaktionen SM49 und SM69.

Beitrag von Ullendahl (ForumUser / 44 / 0 / 0 ) »
Mal ne Frage...
Werden die Commandos an das Applikationsserver Betriebsystem weitergegeben oder an den Präsentationssserver?

Suche eine Möglchkeit auf dem Präsentationsserver ein Commando abzusetzten (z.B. Net Send)

kann der oben gezeigte Code dafür verwendet werden?

Gruß aus Köln

Hardy

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Ullendahl hat geschrieben:Werden die Commandos an das Applikationsserver Betriebsystem weitergegeben oder an den Präsentationssserver?
1. Ich liebe Replies mit Fragen, wie man ein Feature nutzt, wenn ich versucht habe zu erklären, warum man es lieber bleiben lassen sollte.
2. Ich habe schon lange nicht mehr die F1-Hilfe zu CALL cfunc aufgerufen, meine aber, sie wäre in diesem Punkt klar.
Suche eine Möglchkeit auf dem Präsentationsserver ein Commando abzusetzten (z.B. Net Send)

kann der oben gezeigte Code dafür verwendet werden?
Nein.
Je nach Release funktionsbaustein WS_EXECUTE oder die passende Methode aus der Klasse CL_GUI_* (ich vergess den Namen immer wieder, aber so viele Klassen kommen da nicht in Frage).

Ein anderes Problem ist auch hier (ähnlich dem Problem beim Ausführen von Befehlen aus Applikationsservern mit unterschiedlichen Betriebssystemen) die evtl. nötige Fallunterscheidung für Frontend-OS.

Auf meinem PC würde

Code: Alles auswählen.

net send ...
nur zur Ausgabe von
  • No command: send
und Anzeige der verfügbaren Befehle und Options von /usr/bin/net führen.

Beitrag von Ullendahl (ForumUser / 44 / 0 / 0 ) »
Hallo Herr Dittrich,

hat funktioniert! mit dem FB WS_Execute kann ich Nachtichten per Net send versenden.

(Falls jemand die Info braucht)
Hierzu wird der FB folgendermaßen angesprochen:

CALL FUNCTION 'WS_EXECUTE'
EXPORTING
COMMANDLINE = 'send ullehara Das Programm ist durch'
PROGRAM =
'c:\winnt\system32\net.exe'
EXCEPTIONS
PROG_NOT_FOUND = 3.

ullehara ist mein Benutzername kann aber auch duch eine IP ausgetauscht werden.

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Warum plötzlich nicht mehr mit TH_POPUP (dazu muss man natürlich an SAP angemeldet sein)?

Und wenn es die Methode CL_FUI_FROMTEND_SERVICES=>EXECUTE schon gibt, sollte man besser die nehmen statt WS_EXECUTE. (Function WS_EXECUTE sollte dann auch als obsolet gekennzeichnet sein.)

Korrektur: die Klasse heißt natürlich CL_GUI_FRONTEND_SERVICES
Zuletzt geändert von Frank Dittrich am 10.09.2004 08:47, insgesamt 2-mal geändert.

Beitrag von Ullendahl (ForumUser / 44 / 0 / 0 ) »
Der Vorteil liegt bei mir darin, das ich das Programm laufen lassen kann und bei Beendigung eine Person in der Fachabteilung eine Meldung zukommen lassen kann.
Diese Person braucht dann auch nicht unbedingt im SAP angemeldet zu sein.

Jezt zu der Methode:
CL_FUI_FROMTEND_SERVICES=>EXECUTE
Leider kenne ich das nicht - weiß auch im Moment nicht wie ich das benutzen könnte...
Da ich noch nicht so lange ABAP Programmiere. Lasse mich aber gener aufklären ;-) Man lernt ja nie aus.

Gruß aus Kölle

Hardy

Beitrag von Chrisu (Specialist / 225 / 0 / 1 ) »
Ullendahl hat geschrieben:Jezt zu der Methode:
CL_FUI_FROMTEND_SERVICES=>EXECUTE
Leider kenne ich das nicht - weiß auch im Moment nicht wie ich das benutzen könnte...
Da ich noch nicht so lange ABAP Programmiere. Lasse mich aber gener aufklären ;-) Man lernt ja nie aus.

Gruß aus Kölle

Hardy

Code: Alles auswählen.

CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
  EXPORTING
    param1 = lclparam
    ......
hab Grad kein SAP System vor mir. aber sieh dir die F1 zu CALL METHOD an.

lg
Chris

Didi Klugsch#@*

Beitrag von Gast ( / / 0 / 3 ) »
Herr Dietrich scheint ja eine richtige Forumszecke zu sein !?
Siehe Antworten zu anderen Threads ...

TH_POPUP lässt übrigens je nach BS und Alertlogeinstellung dieses überlaufen.

Re: Klugscheißer?

Beitrag von Frank Dittrich (Expert / 674 / 0 / 15 ) »
Gast hat geschrieben:Herr Dietrich
Ich nehme mal an, Du meinst mich.
scheint ja eine richtige Forumszecke zu sein !?
Was denn nun, Ausrufezeichen oder Fragezeichen?

Und was genau passt Dir an meinen Antworten/Fragen nicht?
Habe ich mit meinen Warnungen bzgl. CALL 'SYSTEM' nicht recht?
Ist an der von mir genannten Alternative (SXPG_COMMAND_EXECUTE) etwas auszusetzen?
Wenn ja, was?

Oder stört Dich meine Antwort an Hardy Ullendahl?
Wenn ja, welcher Teil?

1. wollte ich noch mal deutlich auf die Probleme mit CALL 'SYSTEM' hinweisen.
2. taugte der Verweis auf die F1-Hilfe zur Beantwortung der Frage, ob CALL 'SYSTEM' zur Ausführung von Programmen auf dem Frontend geeignet ist.
3. habe ich Lösungsvorschläge genannt, wie man Programme auf dem Frontend ausführen kann.
Und auch, wenn gelegentlich ein spezieller Gast nichts von Antworten hält, die auf Einschränkungen der Lösungsvorschläge hinweisen, habe ich deutlich gemacht, dass es auch hier Abhängigkeiten (z.B. zum Frontend-OS) gibt.
Ob diese Einschränkungen für den vorgesehenen Anwendungsfall relevant sind, muss dann jeweils geprüft werden.
(Vielleicht sind sie ja für jemanden relevant, der im Forum nach einer Antwort sucht und dabei auf diesen Thread stößt.)

Scheinbar war Herr Ullendahl ja mit dem Lösungvorschlag zufrieden.

In meinem dritten Beitrag ging es mir zunächst um TH_POPUP.
Der Hintergrund der Frage ist vielleicht nach mehr als 2 Monaten nicht mehr ohne Weiteres erkennbar, aber es gab von Herrn Ullendahl kurz zuvor eine Frage, wie man eine Nachricht an einen Benutzer senden kann:
http://www.abapforum.com/viewtopic.php?p=7901
In dem Thread kamen verschiedene Lösungsvorschläge, und TH_POPUP schien zunächst für die Anforderung auszureichen.
(Auch in dem Thread kommen Randbedingungen/Einschränkungen beim Einsatz von TH_POPUP ... zur Sprache.)
Und manchmal lerne ich eben auch gerne etwas dazu.

Die Antwort von Herrn Ullendahl fand ich nachvollziehbar.

Die Warnung, einen von SAP als obsolet gekennzeichneten FB in neuen Programmen möglichst nicht mehr einzusetzen, finde ich auch nicht übertrieben.
(Etwas anders sieht der Fall in Programmen aus, die bisher schon entsprechende FB-Aufrufe enthalten.
Solange die FBs auch noch in etlichen SAP-Standard-Programmen verwendet werden, besteht nicht unbedingt Handlungsbedarf.)
Leider hatte ich mich in der Eile beim Alternativ-Vorschlag vertippt (und meinen Beitrag erst nachträglich korrigiert).
Aber bei mehr als 400 Beiträgen ist mir klar, dass da der eine oder andere Fehler vorkommt.
Und wenn ich Unsinn erzähle, gibt es ja genügend andere, die mich korrigieren können.
Siehe Antworten zu anderen Threads ...
Welche genau? Beispiele, Links?


Noch mal zusammengefasst:
Hast Du an meinen inhaltlichen Aussagen etwas auszusetzen?
Dann korrigier mich oder weise mich auf Fehler hin, vielleicht kann ich ja von Dir etwas lernen.

Oder geht es Dir eher um Stil-Fragen?
Da ist mir ziemlich egal, ob Dir meine Beiträge gefallen oder nicht.

Wer Streicheleinheiten (und nicht Lösungsvorschläge) sucht, ist meines Erachtens in den meisten technischen Foren an der falschen Adresse.
Und dass man nicht auf jede Frage die Antwort bekommt, die man gerne hören möchte, dürfte ja auch nicht neu sein.

Auch in Zukunft werde ich, wenn ein Problem in der F1-Hilfe beschrieben ist, darauf verweisen, statt den Text per cut&paste zu kopieren.
Oder einen Link auf einen anderen Beitrag bzw. eine sonstige Quelle posten, wo das Thema schon mal erörtert wurde.
Ein wenig Eigeninitiative kann man auch von Leuten fordern, die Antworten auf Fragen suchen.
Sonst verkommt ein Forum früher oder später zu einer endlosen Ansammlung der immer gleichen, auf einfache Art von jedem selbst zu beantwortenden Fragen.
Beispiele davon gibt es zur Genüge, s. http://www.sapfans.com/forums/viewforum.php?f=13 oder andere sapfans-Foren.
Trotz sticky Posts mit "Basic Rules" und mehrerer Moderatoren, die mit Sperren oder Löschen von Beiträgen gegen das zunehmende Chaos ankämpfen, sind inzwischen etliche Regulars vergrault worden, weil das Verhältnis von nützlichen Informationen zu lauter Müll immer miserabler wird.
Und das wäre doch schade.

Das sollte jetzt keinen flame war gegen newbie-Fragen lostreten.
Jeder hat mal angefangen, und ich helfe auch Neulingen.
Vorzugsweise so, wie ich mir als Neuling auf einem Gebiet Hilfe erhoffen würde: durch Verweis auf Quellen, in denen man sich selbst informieren kann.
Oder bei der Klärung von Fragen, die nach Erledigung der "Hausaufgaben" noch offen geblieben sind.

Daher hier noch ein hoffentlich hilfreicher Link, auch wenn abapforum.com vielleicht keine Hacker community im engeren Sinne ist:
Wie man Fragen richtig stellt - http://www.lugbz.org/documents/smart-questions_de.html

Und da ich nicht weiß, wie aktuell die Übersetzung ist, hier das Original:
How To Ask Questions The Smart Way - http://www.catb.org/~esr/faqs/smart-questions.html

Rein präventiv extra noch der Unterpunkt: http://www.catb.org/~esr/faqs/smart-que ... not_losing

Ausfallend gegenüber anderen wurden, soweit ich das beurteilen kann, auch überwiegend irgendwelche sich hinter ihrer vermeintlichen Anonymität versteckenden Leute.
(Meist führt das dazu, dass irgendwann nur noch registrierte Nutzer posten dürfen.
Auch das wäre eine Entwicklung, die ich schade fände.)

TH_POPUP lässt übrigens je nach BS und Alertlogeinstellung dieses überlaufen.
Wenigstens noch eine technische Aussage.
Aber:
Warum verschweigst Du Details? Welches Betriebssystem, welches SAP-Release, welche Alert-Log-Einstellungen?
Spielen nicht noch ein paar Randbedingungen eine Rolle (verfügbarer Platz auf dem Dateisystem, Häufigkeit der TH_POPUP-Aufrufe, ...)
Und kann man nicht auch mit diversen anderen protokollierten Ereignissen und Log-Einstellungen das Dateisystem zumüllen?

Frank

Beitrag von Gast ( / / 0 / 3 ) »
Aber bei mehr als 400 Beiträgen ist mir klar, dass da der eine oder andere Fehler vorkommt.
Und wenn ich Unsinn erzähle, gibt es ja genügend andere, die mich korrigieren können.
Was grundsätzlich in Diskussionen ausartet, bei Denen DU immer versuchst recht zu behalten oder noch einen draufzusetzen.

Deine Beiträge kommen einfach zu "klugscheisserisch" rüber.

Lösungen von Anderen werden von Dir grundsätzlich "versucht" in den Schatten zu stellen.

Manchmal ist weniger einfach mehr.

Beitrag von Joe ( / / 0 / 3 ) »
Gast hat geschrieben:
Aber bei mehr als 400 Beiträgen ist mir klar, dass da der eine oder andere Fehler vorkommt.
Und wenn ich Unsinn erzähle, gibt es ja genügend andere, die mich korrigieren können.
Was grundsätzlich in Diskussionen ausartet, bei Denen DU immer versuchst recht zu behalten oder noch einen draufzusetzen.

Deine Beiträge kommen einfach zu "klugscheisserisch" rüber.

Lösungen von Anderen werden von Dir grundsätzlich "versucht" in den Schatten zu stellen.

Manchmal ist weniger einfach mehr.
Hallo Gast.

Deiner Meinung kann ich mich überhaupt nicht anschließen. Ich finde an den Beiträgen von Frank nichts 'klugscheisserisch'.
Im Gegenteil, war ich seither immer sehr dankbar detaillierte Hintergrundinformationen, Alternativlösungen oder Tips in puncto Sicherheit oder 'Fallstricke' eines Ansatzes zu erhalten. Das möchte ich nicht missen.

Gruß


Joe.

Beitrag von flashback (ForumUser / 23 / 0 / 1 ) »
wie wär's denn mit dem FB GUI_RUN? Ist zwar auch obsolet, funktioniert aber bei einfachen Sachen auch prima (oder glaubt jemand daran, dass jemals ein obsoleter FB gelöscht werden wird :wink: )
Gruss flashback

Seite 1 von 1

Vergleichbare Themen

3
Antw.
1994
Views
String als ABAP-Befehl ausführen
von Trulchen » 29.07.2014 10:15 • Verfasst in ABAP® für Anfänger
6
Antw.
5759
Views
Datei jeden Formats in ABAP-Quelltext einbetten u. ausführen
von Stefan Schnell » 10.10.2012 11:08 • Verfasst in Tips + Tricks & FAQs
0
Antw.
795
Views
SQL Scripte ausführen
von herr mb » 09.02.2010 08:45 • Verfasst in ABAP® Core
1
Antw.
1698
Views
script ausführen
von bohne » 14.05.2007 21:18 • Verfasst in ABAP® für Anfänger
5
Antw.
4775
Views
BOR methode ausführen
von stroker64 » 27.08.2008 10:44 • Verfasst in ABAP Objects®

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.