Job für externes Kommando mit Systemparameter einplanen

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Job für externes Kommando mit Systemparameter einplanen

Beitrag von damberge (ForumUser / 19 / 0 / 0 ) »
Hallo zusammen,

ich möchte in der SM36 einen Job einplanen, der mir eine Datei umbenennt und verschiebt. im Zielnamen der Datei soll das aktuelle Datum angehängt werden! Wie sieht die Syntax des Parameters dann aus?

bsp:

mv /folder/test.txt /folder/archiv/test_datum.txt


Bitte um Hilfe,

danke.
lg andreas

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


Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
z.B. so.

Code: Alles auswählen.

mv /folder/text.txt /folder/archiv/test`date -u +%Y-%B-%d`.txt
Name ist dann: test2006-September-04.txt

Aufbereitung kann man ja noch verfeinern

Beitrag von damberge (ForumUser / 19 / 0 / 0 ) »
hi, danke für die antwort.
leider erhalte ich bei der Angabe deines Strings im Parameter Feld einen Job-Abbruch.

Job-Log:

Job wurde abgebrochen
Ext. Prog.: mv: Beim Verschieben mehrerer Dateien muss das letzte Argument ein Verzeichnis sein.

SAP kann den String nicht als Systemfeld interpretieren. Hier nochmals der genaue String (als Parameter des externen Kommandos mv):

/schnitt/dpw/test_dpw.txt /schnitt/dpw/archiv/test'date -u +%Y%m%d'.txt

was mach ich hier falsch? Muss im String kein Zeichen vorkommen, dass den Beginn eines SystemBefehls anzeigt?

lg, andreas

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
du darfst auch keine Hochkommata benutzen sondern den Akzent ` (ich glaube Akzent grave heißt das Teil)


kleiner Exkurs:´

`unixbefehl` --> die Ausgabe von unixbefehl wird zurückgeliefert

während

'unixbefehl' ---> einfach nur die Zeichenkette "unixbefehl" zurückgibt

Beitrag von damberge (ForumUser / 19 / 0 / 0 ) »
wenn ich das Kommando am server ausführe (mit putty) funktionierts. nur mit der SM49 oder als Job kommt immer der Fehler:

Job wurde abgebrochen
Ext. Prog.: mv: Beim Verschieben mehrerer Dateien muss das letzte Argument ein Verzeichnis sein.

bin etwas ratlos...

hast noch eine idee?
lg, andreas

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
kopier doch bitte nochmal den genauen Parameter string hier rein, am besten als Code-Block

Beitrag von damberge (ForumUser / 19 / 0 / 0 ) »
die einzelnen Schritte:

SM49 - Externes Kommando angelegt (Betriebssystemkommando: mv); Parameter leer gelassen.

SM36 Job definiert - Step: externes Kommando (das in SM49 definierte); Parameter:


Code: Alles auswählen.

/schnitt/dpw/test_dpw.txt /schnitt/dpw/archiv/test_dpw`date -u +%Y%m%d`.txt
danke für die Hilfe

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
der Befehl an sich funktioniert, allerdings sind bei Ausführen externer Betriebssystemkommandos bestimmte Zeichen verboten, darunter auch das `
Also wird man das mv in dieser Form wohl in ein kleines Shell-Script packen müssen.

Code: Alles auswählen.

Dazu aus der R/3-Hilfe:

Sicherheitsprüfungen

Verwendung

Vor der Ausführung eines externen Kommandos werden die zusätzlich übergebenen Parameter überprüft. Werden dabei "verbotene" Zeichen gefunden, wird das Kommando nicht ausgeführt und die Ausnahme SECURITY_RISK ausgelöst. Diese "verbotenen" Zeichen wurden betriebssystemabhängig wie folgt vordefiniert:


Tabelle: Verbotene Zeichen bei Parametern

Betriebssystemtyp
 verbotene Zeichen
 
AIX
 | & ; ^ \ < > 
 
Windows NT
 | & < > ()
 
VMS
   
andere
 | & ; ^ \ < > `
 
Falls Sie weitere Zeichen verbieten wollen, empfiehlt SAP Ihnen die Verwendung von Prüfbausteinen. Wenn Sie diese Einschränkungen umgehen wollen, sollten Sie Shell-Skripte oder eigene C-Programme verwenden

Beitrag von damberge (ForumUser / 19 / 0 / 0 ) »
vielen Dank,
muss ich wohl so hinnhemen - leider.

Beitrag von zzcpak (Expert / 673 / 5 / 68 ) »
folgendes kleines Scriptchen könntest du in ein externes Kommande einbinden. Als Parameter werden der Originaldateiname und das Zielverzeichnis (mit abschließendem / erwartet).

ohne jegliche Plausi-Prüfung, funktioniert aber. der mv-Befehl ist noch auskommentiert.

Code: Alles auswählen.

#!/usr/bin/sh

FILETO=`echo $2$(basename $1) | sed -e "s/\./\-$(date -u +%Y-%B-%d)\./g"`

echo "Dateiname vorher:   " $1
echo "Dateiname nachher:  " $FILETO

# mv $1 $FILETO

Seite 1 von 1

Vergleichbare Themen

2
Antw.
5810
Views
Externes Kommando per ABAP aufrufen?
von miru77 » 07.08.2012 13:08 • Verfasst in ABAP® für Anfänger
4
Antw.
1768
Views
Kommando Substitution
von PBO » 28.07.2008 11:33 • Verfasst in ABAP® Core
2
Antw.
1223
Views
Range Kommando an Excel
von ReinholdMr » 06.04.2006 15:07 • Verfasst in ABAP® Core
5
Antw.
3007
Views
SAP-Script Position-Kommando
von ST22 » 22.06.2005 17:08 • Verfasst in ABAP® Core
6
Antw.
2995
Views
Abfrage der DB12 mittels externen Kommando
von Rainer70 » 11.05.2006 16:32 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
vor 13 Stunden von Bright4.5 1 / 269
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1908
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8511