Betriebssystembefehl aus einem Abap ausführen

Hinweise, Tips und Tricks, FAQs - keine Anfragen!!

Betriebssystembefehl aus einem Abap ausführen

Postby Yagmur4551 » Fri Apr 16, 2004 9:04 am

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. * Ausgabetabelle (rückgabe des stdout)
  2. DATA: BEGIN OF syscalltab OCCURS 0,
  3.          line(200),
  4.       END OF syscalltab.
  5.  
  6. * Befehl der ausgeführt wird.
  7. DATA:os_command(30).
  8. os_command = 'ls -la'.
  9.  
  10. * Befehl ausführen
  11. call 'SYSTEM'
  12.    id 'COMMAND'
  13.     field os_commando
  14.    id 'TAB'
  15.     field syscalltab-*sys*.
  16.  
  17.  
  18. * Rückgabe des Befehles ausgeben
  19. LOOP AT syscalltab.
  20.   WRITE:/ syscalltab.
GeSHi ©
Yagmur4551
..
..
 
Posts: 12
Joined: Thu Apr 15, 2004 11:43 am

Postby Willy1492 » Fri Apr 16, 2004 7:05 pm

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.
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Fatima5020 » Thu Sep 09, 2004 8:40 am

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
Fatima5020
..
..
 
Posts: 53
Joined: Fri Apr 30, 2004 8:33 am

Postby Willy1492 » Thu Sep 09, 2004 9:05 am

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. net send ...
GeSHi ©
nur zur Ausgabe von
    No command: send
und Anzeige der verfügbaren Befehle und Options von /usr/bin/net führen.
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Fatima5020 » Thu Sep 09, 2004 11:31 am

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.
Fatima5020
..
..
 
Posts: 53
Joined: Fri Apr 30, 2004 8:33 am

Postby Willy1492 » Thu Sep 09, 2004 8:32 pm

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
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Postby Fatima5020 » Fri Sep 10, 2004 8:06 am

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
Fatima5020
..
..
 
Posts: 53
Joined: Fri Apr 30, 2004 8:33 am

Postby Leona853 » Fri Sep 10, 2004 1:34 pm

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: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
  1. CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
  2.   EXPORTING
  3.     param1 = lclparam
  4.     ......
  5.  
GeSHi ©


hab Grad kein SAP System vor mir. aber sieh dir die F1 zu CALL METHOD an.

lg
Chris
Leona853
...
...
 
Posts: 223
Joined: Mon Mar 01, 2004 5:50 pm

Didi Klugsch#@*

Postby Alva1590 » Tue Nov 16, 2004 11:14 am

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.
Alva1590
.....
.....
 
Posts: 4387
Joined: Mon Dec 02, 2002 3:01 pm

Re: Klugscheißer?

Postby Willy1492 » Tue Nov 16, 2004 10:53 pm

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://bb1.gate2app.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
Willy1492
....
....
 
Posts: 581
Joined: Tue Dec 03, 2002 4:44 pm

Next

Return to Tips + Tricks & FAQs

Who is online

Users browsing this forum: No registered users and 38 guests