Libelle SystemCopy - 2015

Werbung
Libelle SystemCopy
Version 4.6.1
Programmierhandbuch
Automatisierte SAP Systemkopien
Libelle AG
Gewerbestr. 42
70565 Stuttgart, Germany
T +49 711 / 78335-0
F +49 711 / 78335-190
[email protected]
www.libelle.com
© 2017 Libelle AG. Printed in Germany. Alle Rechte vorbehalten.
Libelle AG haftet nicht für etwaige Fehler in dieser Dokumentation. Die
Haftung für mittelbare und unmittelbare Schäden, die im Zusammenhang
mit der Lieferung oder dem Gebrauch dieser Dokumentation entstehen,
ist ausgeschlossen, soweit dies gesetzlich zulässig ist. Alle Rechte,
insbesondere das Recht der Vervielfältigung und Verbreitung, sowie der
Übersetzung, bleiben vorbehalten. Kein Teil der Dokumentation darf in
irgendeiner Form (durch Fotokopie, Mikrofilm oder ein anderes Verfahren)
ohne vorherige Zustimmung von Libelle reproduziert oder unter Verwendung
elektronischer Systeme verarbeitet, vervielfältigt oder verbreitet werden.
®
®
®
Libelle, das Libelle Logo, BusinessShadow , DBShadow und FSShadow
sind eingetragene Warenzeichen der Libelle AG. Alle weiteren genannten
Marken- und Produktnamen sind Bezeichnungen und zum Teil eingetragene
Warenzeichen der jeweiligen Firmen.
Dieses Produkt verwendet die nachfolgenden Bibliotheken:
avalon (Apache License Version 2.0)
batik (Apache License Version 2.0)
boost 1.49.0 (Boost Software License - Version 1.0 - August 17th, 2003)
commons (Apache License Version 2.0)
eclipse 3.6 (Eclipse Public License - v 1.0)
fop 1.1 (Apache License Version 2.0)
jsyntaxpane 0.9.5-b29-custom1 (Apache License Version 2.0)
junit 4.8.1 (BSD License Copyright (c) 2000-2006, www.hamcrest.org)
ldap 0 (The OpenLDAP Public License Version 2.8, 17 August 2003)
log4j 1.2.15 (Apache License Version 2.0)
org-netbeans-lib-profiler-treetable repack (COMMON DEVELOPMENT AND
DISTRIBUTION LICENSE (CDDL) Version 1.0)
serializer (Apache License Version 2.0)
xalan (Apache License Version 2.0)
xercesc 3.1.1 (Apache License Version 2.0)
xercesImpl (Apache License Version 2.0)
xml-apis (Apache License Version 2.0, W3C® DOCUMENT LICENSE, W3C®
SOFTWARE NOTICE AND LICENSE)
xmlgraphics (Apache License Version 2.0)
Die Lizenzen sind abgelegt im Verzeichnis
LSC_HOME/docs/3rdparty_licenses.
Programmierhandbuch
Libelle SystemCopy
Inhaltsverzeichnis
1 Übersicht................................................................
1
2 Globale Parameter.................................................
3
3 Lokale Parameter...................................................
5
4 Tabellen-Parameter................................................
7
5 Bedingungen..........................................................
9
6 Datum und Uhrzeit................................................
13
7 Allgemeine Funktionen.........................................
17
8 Attribute der Konfiguration..................................
23
9 Attribute der Ausführung......................................
25
10 Systemattribute....................................................
27
11 Attribute des Kopierwerkzeugs..........................
31
12 Attribute externer Tools......................................
33
13 Taskattribute.........................................................
35
14 Alarmattribute......................................................
39
15 Alias......................................................................
43
16 Verwendung des JDBC-Connectors..................
45
17 Verwendung des SAP-Connectors.....................
53
Inhaltsverzeichnis • III
Libelle SystemCopy
Programmierhandbuch
18 Index ....................................................................
IV• Inhaltsverzeichnis
59
Programmierhandbuch
Libelle SystemCopy
1 Übersicht
Dieses Programmierhandbuch wurde verfasst, um den
Programmierern, die eigene Tasks erstellen, einen Überblick über die
Parameter der Libelle SystemCopy zu geben. Es gibt verschiedene
Parametertypen, die alle in den folgenden Kapiteln beschrieben sind.
Parameter der Libelle SystemCopy sind unabhängig von Großund Kleinschreibung. Parameternamen können aus den 26
Grundbuchstaben des Alphabets gebildet werden, von a-z
oder A-Z, ebenso aus den Ziffern 0-9 sowie dem Unterstrich.
Jeder Parametername muss mindestens einen Buchstaben
enthalten. Geklammerte Parameterschlüsselwörter dürfen nicht in
Anführungszeichen gesetzt zu werden.
Die Beschreibung der Parameter und Funktionen zusammen
mit den Beispielen sollte Ihnen dabei helfen, Probleme beim
Taskprogrammieren zu beheben. Falls dennoch Probleme bestehen
bleiben, wenden Sie sich bitte an das Libelle Professional Services
Team.
Übersicht • 1
Libelle SystemCopy
2 • Übersicht
Programmierhandbuch
Programmierhandbuch
Libelle SystemCopy
2 Globale Parameter
Ein globaler Parameter ist ein vom Libelle SystemCopy Benutzer
manuell definierter Parameter, der von allen Tasks genutzt werden
kann. Die Abbildung unten zeigt, wie globale Parameter mit dem
Grafischen Leitstand gesetzt werden können.
Um einen globalen Parameter vom Code aus auszulesen, benutzen
Sie folgende Syntax:
$_param(<parameter_name>)_$
Globale Parameter • 3
Libelle SystemCopy
Programmierhandbuch
Das ursprüngliche Code-Beispiel
sappfpar pf=$_param(target_profile_file)_$
all | findstr rdisp/max_wprun_time
würde wie folgt ersetzt:
sappfpar pf=C:\usr\sap\SID\profile\sid_DVEBMSG003_profile
all | findstr rdisp/max_wprun_time
Für bestimmte Plattformen werden standardmäßig globale Parameter
bereitgestellt, diese können ohne weitere Definition angesprocen
werden. Siehe separate Dokumentation über Importierte globale
Parameter.
Hinweis:
Bevor eine Task nach dem Wert eines $_param(<name>)_$ bei den
globalen Parametern sucht, prüft sie, ob $_param(<name>) als lokaler
Parameter definiert ist. Ein lokaler Parameter ist dem gleichnamigen
globalen Parameter übergeordnet. Siehe Kapitel Lokale Parameter.
4 • Globale Parameter
Programmierhandbuch
Libelle SystemCopy
3 Lokale Parameter
Ein lokaler Parameter ist ein für eine bestimmte Task geschaffener
Parameter. Er wird in einer Taks definert, und nur diese Task kann den
Parameter benutzen. Lokale Parameter können mit dem Taskdialog
gesetzt werden.
Um einen lokalen Parameter in einer Task zu benutzen, verwenden
Sie die folgende Syntax:
$_param(<parameter_name>)_$
Lokale Parameter • 5
Libelle SystemCopy
Programmierhandbuch
Das ursprüngliche Code-Beispiel
REPORT zsm02add.
START-OF-SELECTION.
CALL FUNCTION 'SM02_ADD_MESSAGE'
EXPORTING
message = '$_param(MESSAGE1)_$'
message2 = '$_param(MESSAGE2)_$'
message3 = '$_param(MESSAGE3)_$'
würde wie folgt ersetzt:
REPORT zsm02add.
START-OF-SELECTION.
CALL FUNCTION 'SM02_ADD_MESSAGE'
EXPORTING
message = 'WARNING: SAP System Copy will be executed!'
message2 = ''
message3 = ''
Für bestimmte ausgelieferte Tasks sind standardmäßig einige
lokale Parameter verfügbar, diese können ohne weitere Definition
angesprocen werden. Siehe separate Dokumentation über Importierte
lokale Parameter.
6 • Lokale Parameter
Programmierhandbuch
Libelle SystemCopy
4 Tabellen-Parameter
Bei Parametern mit dem Typ "table" kann mithilfe des folgenden
Platzhalters auf die gesamte Tabelle oder gewählte Spalten oder
Zeilen in verschiedenene Formaten zugreifen:
$_table(paramName, output, rowSelection, columns)_$
Das Argument paramName muss angegeben werden, die restlichen
Argumente haben Standard-Werte, die greifen, sollten sie nicht
überschrieben werden. Zusätzlich zu den globalen und TaskParametern gibt es zum Zugriff auf die Mandanten-Tabelle die
virtuellen Parameter ?system(ROLE, clients), wobei ROLE wie beim
system-Platzhalter (siehe im entsprechenden Kapitel) "current", eine
System-Rolle oder eine System-ID sein kann. Diese Tabelle hat das
interne Format table{id:string{3,3}; username; password:password;
logsys; copy:bool; default:bool:unique}, ihre Spalten heißen also id,
username, password, logsys, copy und default.
Mögliche Werte für output sind:
•
•
•
csv(RowSeperator, CellSeperator): Standard-Wert. Gibt
die Tabelle als CSV-Text aus, wobei die Zeilen- und ZellenTrennzeichen angegeben werden können. Standard-Werte
dafür sind Zeilenwechsel und Semikolon. Beide müssen hier
umgeben von " angegeben werden. Dabei wird \n durch einen
Zeilenwechsel, \r durch einen Wagenrücklauf, \t durch einen
Tab, \" durch ein Anführungszeichen und \\ durch einen \ ersetzt.
Enthält die Zelle eines der Zeichen ";:, oder Tab, wird sie in "
eingeschlossen und enthaltene " werden verdoppelt.
csvFile(fileName, RowSeperator, CellSeperator): wie csv,
jedoch wird der Text in eine Datei auf dem Worker ausgegeben.
fileName hat den Standard-Wert paramName + ".csv". Diese
Datei wird im task_home-Verzeichnis ausgegeben, der
Platzhalter durch ihren absoluten Pfad ersetzt.
lsh(variableName): erzeugt LSH-Code, der eine LSH-Variable
vom Typ Tabelle anlegt und mit den Werten der auszugebenden
Tabelle füllt. Jede Zeile (Schlüssel: Index ab 1) ist wiederrum
Tabellen-Parameter • 7
Libelle SystemCopy
Programmierhandbuch
eine Tabelle, wobei die Spalten-Namen der Schlüssel sind.
Standard-Wert für variableName ist paramName.
Mit dem Argument rowSelection können Bedingungen angegeben
werden, die für jede Zeile entscheiden, ob sie ausgegeben wird.
Mehrere Bedingungen müssen durch Semikolon getrennt werden,
und können SpaltenName = Wert, SpaltenName != Wert oder eine
Zeilennummer (beginnend bei 1) sein.
Im Argument columns können, durch Semikolon getrennt, die
auszugebenden Spalten mittels ihrer Namen oder ihrer Indexe
(beginnend mit 1) gewählt werden. Ist nichts angegeben, werden alle
Spalten ausgegeben.
8 • Tabellen-Parameter
Programmierhandbuch
Libelle SystemCopy
5 Bedingungen
Mithilfe verschiedener Bedingungen lässt sich der Ablauf einer
Task steuern. Dies ist beispielsweise sehr hilfreich, um den Code
abhängig von der eingesetzten SAP-Version gestalten zu können.
Eine Bedingung wird mit folgendem Platzhalter formuliert:
$_if(condition, then)_$
Wenn die von umgebenden Whitespaces befreite (getrimmte)
condition "true" ist, unabhängig von Groß- und Kleinschreibung,
wird der Platzhalter durch das getrimmte then ersetzt, sonst durch
nichts. Das then darf dabei z. B. Zeilenwechsel, Klammern, Kommata
und andere Platzhalter enthalten, nicht aber allein stehende _$. Die
Zeichenkombination _$ könnte allerdings durch zwei hintereinander
folgende Bedingungen erzeugt werden, wobei die erste den
Unterstrich und die zweite das Dollarzeichen ausgibt.
Für alle Platzhalter dieses Kapitels gilt: Whitespaces hinter der ersten
öffnenden Klammer, vor der letzten schließenden Klammer und rund
um Kommata außerhalb des then werden ignoriert.
Condition-Platzhalter
Die folgenden Platzhalter der condition werden durch "true" ersetzt,
wenn die zugehörige Bedingung zutrifft. Anderenfalls nehmen die
Platzhalter den Wert "false" an. Wenn condition oder ein Argument
von and, or oder not weder "true" noch "false" ist, wird ein Fehler
geworfen.
Bedingungen • 9
Libelle SystemCopy
Platzhalter
$_lt(a, b)_$
$_le(a, b)_$
$_ne(a, b)_$
$_eq(a, b)_$
$_gt(a, b)_$
$_ge(a, b)_$
$_and(a, b)_$
$_or(a, b)_$
$_not(a)_$
Programmierhandbuch
Bedingung
a lexikografisch vor b
a lexikografisch vor b oder gleich b
a ungleich b
a gleich b
a lexikografisch hinter b
a lexikografisch hinter b oder gleich b
a als Boolean und b als Boolean
a als Boolean oder b als Boolean
a ist "false"
Beispiel:
Nehmen wir an, in einem ABAP-Programm müsste bei SAP-Versionen
ab 720 noch die Funktion FutureFunction aufgerufen werden.
Schreiben wir das aber in einen ABAP-Anweisungsblock, werden
ältere SAP-Versionen Probleme bekommen, weil sie FutureFunction
nicht kennen. Das darf also gar nicht als auszuführender Code im
SAP-System landen, sondern muss ähnlich wie Präprozessor-Code
zuvor abgehandelt werden. Der Task-Code könnte dann wie folgt
aussehen:
$_if($_ge($_system(current, sap.release)_$, 720)_$,
CALL FUNCTION FutureFunction
EXPORTING a = 'David'.
)_$
Das alles wird bei SAP-Versionen kleiner als 720 komplett entfernt. Ab
Versionsnummer 720 wird es durch Folgendes ersetzt:
CALL FUNCTION FutureFunction
EXPORTING a = 'David'.
10 • Bedingungen
Libelle SystemCopy
Programmierhandbuch
SAP-Release-Bedingungen
Für Verzweigungen, die von der SAP-Version abhängig sind, werden
vereinfachte Platzhalter bereitgestellt. Das obige Beispiel lässt sich
damit kompakter und übersichtlicher codieren:
$_if_saprel_ge(720,
CALL FUNCTION FutureFunction
EXPORTING a = 'David'.
)_$
Die SAP-Version muss natürlich bekannt sein, sonst würde der
Vergleich mit einem leeren String durchgeführt und das Ergebnis
möglicherweise verfälscht. Die folgenden SAP-Release-Bedingungen
verursachen daher einen Fehler, wenn die SAP-Version nicht ermittelt
werden kann. Kontrollieren Sie bitte im Graphischen Leitstand der
Libelle SystemCopy, ob die SAP-Version richtig eingetragen ist:
Einrichten → Systeme → <system> → SAP-Daten → SAP BasisRelease.
Die SAP-Release-Bedingungen lassen sich durch diesen Ausdruck
darstellen:
$_if_saprel_operator(b, then)_$
Hierbei wird die Zeichenkette operator mit einem Kürzel der
nachfolgenden Tabelle ersetzt. Die SAP-Version wird dann mit der
entsprechenden Operation mit dem Wert b verglichen. Falls die
Bedingung zutrifft, wird der Ausdruck durch den Wert then ersetzt,
anderenfalls durch eine leere Zeichenkette.
Kürzel
gt
ge
eq
ne
lt
le
Bedeutung
größer als
größer gleich
gleich
ungleich
kleiner als
kleiner gleich
Symbol
>
≥
=
≠
<
≤
Bedingungen • 11
Libelle SystemCopy
Programmierhandbuch
Um zu prüfen, ob die SAP-Version in einem bestimmten Bereich liegt,
können mit dem folgenden Ausdruck untere und obere Grenze sowie
die zugehörigen Operatoren definiert werden. Zur unteren Grenze
b definieren Sie als Operator lower entweder das Kürzel gt oder ge,
siehe obige Tabelle. Zur oberen Grenze c definieren Sie entsprechend
als Operator upper entweder das Kürzel lt oder le.
$_if_saprel_lower_upper(b, c, then)_$
Die SAP-Version wird dann mit dem festgelegten Bereich verglichen.
Falls die Bedingung zutrifft, die SAP-Version also innerhalb des
Bereiches liegt, wird der Ausdruck durch den Wert then ersetzt,
anderenfalls durch eine leere Zeichenkette.
Beispiel:
Die Funktion RangeFunction soll für den Fall aufgerufen werden, dass
die SAP-Version zwischen 720 und 730 liegt. In diesem Bereich sei
lediglich die untere Grenze eingeschlossen:
$_if_saprel_ge_lt(720, 730,
CALL FUNCTION RangeFunction
EXPORTING a = 'Sarah'.
)_$
12 • Bedingungen
Programmierhandbuch
Libelle SystemCopy
6 Datum und Uhrzeit
Um in Tasks mit Datum und Uhrzeit zu arbeiten, bietet Libelle
SystemCopy eine Reihe von Platzhaltern, die im Folgenden
vorgestellt werden.
Zeitstempel
Die folgenden Platzhalter werden durch einen Zeitstempel
ersetzt. Diese Zeitstempel beziehen sich auf die UTC-Zeit auf
dem Master und sind im ISO-8601-kompatiblen Format %Y%m
%dT%H%M%S%F (ohne Zeitzonen-Angabe) geschrieben, z.B.
20160314T102601.913050 für den 14.03.2016 11:26:01 MEZ, denn
MEZ ist UTC plus eine Stunde. Der letzte Teil %F sind Bruchteile
einer Sekunde startend mit Punkt und je nach Plattform eventuell
unterschiedlich lang. Sollte es keine solche Bruchteile geben, endet
der String direkt nach den Sekunden ohne Punkt.
Platzhalter
$_now()_$
Bedeutung
Die aktuelle Zeit, zu der dieser Platzhalter
ersetzt wird, direkt vor dem Ausführen der
Task.
$_execution(startTime)_$ Der Start-Zeitpunkt der aktuellen
Ausführung.
$_task(UID, startTime)_$ Der Start-Zeitpunkt der frühesten TaskInstanz (ihr letzter Lauf zählt) einer
anderen Task UID.
$_task(UID, endTime)_$ Der End-Zeitpunkt der letzten Task-Instanz
(ihr letzter Lauf zählt) einer anderen Task
UID.
Datum und Uhrzeit • 13
Libelle SystemCopy
Programmierhandbuch
Berechnungen
Mit solchen Zeitstempeln kann gerechnet werden, indem eine
bestimmte Dauer hinzugefügt oder entfernt wird. Der Platzhalter dafür
lautet:
$_timeCalc(timestamp, +/-duration)_$
Dabei muss timestamp dem Format %Y%m%dT%H%M%S%F (%F
ist ein leerer String, wenn es keine Sekundenbruchteile gibt) folgen,
in dem auch die Ersetzung des Platzhalters formatiert wird. Der Wert
der Dauer, duration, kann zwei verschiedene Formate haben, mit
Einheiten für Tage, Minuten usw. oder ohne, wobei die Stelle die
Einheit angibt.
Dauer mit Einheiten
Die Dauer kann durch mehrere, optional mit Leerzeichen getrennte
Folgen von Zahlen und dazugehörigen Einheit ausgedrückt werden.
Beispiele:
$_timeCalc(20151231T235900, +1 m)_$
--> 20160101T000000
$_timeCalc($_now()_$, - 1d 12h)_$
--> Zeitpunkt vor eineinhalb Tagen
Mögliche Einheiten sind: d für Tage, h für Stunden, m für Minuten und
s für Sekunden.
Dauer ohne Einheit
Die Einheiten von Zeitangaben können sich auch durch ihre Stelle
ergeben, ähnlich wie bei Angaben der UTC-Abweichung. Jeweils zwei
Ziffern ergeben einen Block. Blöcke sind optional durch Doppelpunkt
voneinander getrennt. Die Anzahl der Blöcke ergibt die Einheit jedes
Blocks. Zwei Blöcke sind %H%M, drei Blöcke %H%M%S, vier Blöcke
%d%H%M%S, wobei d hier beliebig viele Ziffern haben darf.
14 • Datum und Uhrzeit
Programmierhandbuch
Libelle SystemCopy
Beispiele:
$_timeCalc(20151231T235900, +00:01)_$
--> 20160101T000000
$_timeCalc(20151231T235900, +0100)_$
--> 20160101T005900
$_timeCalc(20131231T235900, -365:00:00:00)_$
--> 20121231T235900
$_timeCalc($_now()_$, -1:12:00:00)_$
--> vor eineinhalb Tagen
Zur besseren Lesbarkeit empfiehlt es sich, Doppelpunkte einzufügen.
Sie ändern am Verhalten nichts, die duration des letzten Beispiels
hätte ebenso mit -1120000 angegeben werden können.
Formatierte Ausgabe
Die Ausgabe solcher Zeitstempel kann wie folgt definiert werden:
$_timeFormat(timestamp, pattern)_$
Dabei muss timestamp dem Format %Y%m%dT%H%M%S%F folgen
(%F ist ein leerer String, wenn es keine Sekundenbruchteile gibt),
pattern darf beliebige Zeichen (auch weitere Kommata) außer %
enthalten. Folgende Ersetzungen im pattern finden statt, wenn nicht
anders angegeben zweistellig mit führender 0:
Muster
%Y
%y
%m
%B
%b
%d
%A
%a
%H
%I
Bedeutung
Jahr vierstellig
Jahr
Monat
Voller Monatsname
Abgekürzter Monatsname
Tag
Voller Wochentag
Abgekürzter Wochentag
Stunde 24h-Format
Stunde 12h-Format
Beispiel
1999
99
09
April
Apr
31
Monday
Mon
19
07
Datum und Uhrzeit • 15
Libelle SystemCopy
%p
%P
%M
%S
%f
%F
Programmierhandbuch
AM/PM
am/pm
Minute
Sekunde
Bruchteile einer Sekunde
Wenn %f nur 0en wären: nichts, sonst
Punkt + %f
PM
pm
58
59
000000
.123456
Abkürzungen
Zur leichteren Benutzung sind die folgenden Abkürzungen definiert.
$_toLocalTime(timestamp)_$
=> $_timeCalc(timestamp, $_system(current, utcOffset)_$)_$
Dabei wird die UTC-Abweichung des Systems, für das die Task
ausgeführt wird, zum timestamp addiert.
$_timeFormatTr(timestamp)_$
=> $_timeFormat(timestamp, %d.%m.%Y %H:%M:%S)_$
®
Gibt den Zeitstempel so aus, wie BusinessShadow ihn erwartet.
$_toLocalTimeTr(timestamp)_$
=> $_timeFormatTr($_toLocalTime(timestamp)_$)_$
Die UTC-Abweichung des Systems, für das die Task ausgeführt wird,
wird zum timestamp addiert und das Ergebnis so ausgegeben, wie
®
BusinessShadow es erwartet.
16 • Datum und Uhrzeit
Libelle SystemCopy
Programmierhandbuch
7 Allgemeine Funktionen
Libelle SystemCopy bietet die folgenden Funktionen an, um die
Taskprogrammierung zu vereinfachen. Die Funktionswerte werden
dynamisch bestimmt und können in jeder Task verwendet werden.
Funktion
$_correct_path(a/b\c)_$
$_include(path[,row[,row]])_$
Beschreibung
Ersetzt die Dateipfadtrennzeichen
im Argument mit den Trennzeichen
des lokalen Betriebssystems, d.
h. Backslashs für Windows und
Schrägstriche für Unix.
Fügt den Inhalt der Datei mit
dem angegebenen Pfad ein.
Dateipfadtrennzeichen werden
automatisch korrigiert. Optional
kann eine bestimmte Zeile oder
ein Block aus Zeilen ausgewählt
werden. Dabei referenziert
man die erste Zeile mit row = 1
usw. Negative Zeilennummern
bedeuten, dass vom Dateiende
zurück gezählt wird.
Wenn beide Zeilenangaben
vorhanden sind, so bedeuten
sie von Zeile und bis Zeile.
Ist nur eine Zeile angegeben,
bedeutet das von dieser Zeile
bis zum Dateiende. Wenn die
Zeilenangaben nicht vorhanden
sind, wird das gesamte Dokument
eingefügt.
Diese Funktion wird von einem
Worker ausgeführt, Variablen
innerhalb des einzufügenden
Allgemeine Funktionen • 17
Libelle SystemCopy
$_include_tool(
path[,row[,row]])_$
$_tool_to_file(
path[,targetPath])_$
$_abap_string_assign(name,
value)_$
18 • Allgemeine Funktionen
Programmierhandbuch
Textes können nicht aufgelöst
werden. Dies dient vor allem
dazu, den Inhalt von zuvor von
anderen Tasks erzeugten Dateien
einzubinden.
Fügt den Inhalt einer Datei
ein. Dabei werden Dateipfadtrennzeichen automatisch korrigiert
und Platzhalter im Text ersetzt.
Path ist hier der relative Pfad
zum Tools_custom oder ToolsVerzeichnis. Optional kann eine
bestimmte Zeile oder ein Block aus
Zeilen ausgewählt werden. Dabei
referenziert man die erste Zeile mit
row = 1 usw. Diese Funktion wird
nur vom Master ausgeführt und
dient zur Auslagerung mehrfach
genutzter Code-Stücke ins ToolsVerzeichnis.
Schreibt den Inhalt der Tool-Datei
in eine Datei. Path ist hier der
relative Pfad zum Tools_custom
oder Tools-Verzeichnis. Mit dem
Parameter targetPath kann die
Datei an einen anderen Pfad,
entweder absolut oder relativ
zu TASK_HOME, geschrieben
werden. Auf Unix ist diese Datei
ausführbar. Der Platzhalter im
Task-Code wird ersetzt durch den
Pfad der geschriebenen ToolDatei.
Erzeugt ABAP-Code, der den
value der Variablen name zuweist.
Dabei wird das Limit von 72
Zeichen pro Zeile durch Verkettung
von Teilstrings umgangen. Der
Programmierhandbuch
$_date([format][, diff])_$
$_warnIfEmpty(s)_$
$_errorIfEmpty(s)_$
$_snippet(sName)_$
$_snippet_to_file(sName [,
sPath])_$
Libelle SystemCopy
Name darf maximal 24 Zeichen
lang sein.
Der Platzhalter date liefert das
aktuelle Tagesdatum. Als Format
wird zunächst nur YYYYMMDD
unterstützt. Für eine optionale
Zeitdifferenz steht der Parameter
diff bereit. Es können Minuten (m),
Stunden (h) oder Tage (d) ergänzt
bzw. abgezogen werden: <diff> ::=
+ | -<Anzahl><m | h | d>.
Meldet eine Warnung, wenn s der
leere String ist oder höchstens
Leerzeichen enthält. Der
Platzhalter wird durch s ersetzt.
Dadurch wird die Ausführung
nicht unterbrochen, und die Task
wird nicht automatisch gelb im
Reiter Überwachen des Grafischen
Leitstands.
Meldet einen Fehler, für den Fall,
dass s der leere String ist oder
höchstens Leerzeichen enthält.
Die Systemkopie kann dann nicht
fortgesetzt werden, und die Task
wird nicht automatisch rot im
Reiter Überwachen des Grafischen
Leitstands. Anderenfalls wird der
Platzhalter durch s ersetzt.
Ersetzt den Platzhalter mit dem
Wert des Snippets sName.
Schreibt den Wert des
Snippets sName in eine Datei.
Der Standardpfad ist dabei
TASK_HOME/sName. Mit dem
Parameter sPath kann die
Datei an einen anderen Pfad,
entweder absolut oder relativ
zu TASK_HOME, geschrieben
Allgemeine Funktionen • 19
Libelle SystemCopy
$_lower(text)_$
$_upper(text)_$
20 • Allgemeine Funktionen
Programmierhandbuch
werden. Der Platzhalter im TaskCode wird ersetzt durch den Pfad
der geschriebenen Snippet-Datei.
Ersetzt im Text alle
Großbuchstaben A-Z durch
entsprechende Kleinbuchstaben
a-z (keine Sonderzeichen wie z.B.
Umlaute).
Ersetzt im Text alle
Kleinbuchstaben a-z durch
entsprechende Großbuchstaben
A-Z (keine Sonderzeichen wie z.B.
Umlaute).
Programmierhandbuch
Libelle SystemCopy
Beispiele
Folgender Ausdruck im Task-Code wird durch den Dateiinhalt von
inf.txt im lsc-Home-Verzeichnis ersetzt:
$_include($_system(current, lsc.home)_$/inf.txt)_$
Folgender Ausdruck im Task-Code wird durch den lsc_bdls_header
im Verzeichnis LSC_HOME\tools\mssql\ ersetzt. Dabei wird ein im
Header selbst enthaltener lsc-Systemparameter aufgelöst.
$_include_tool(mssql/lsc_bdls_header.sql)_$
Immer fünf Tage nach der Task-Ausführung ist das Ablaufdatum
expires erreicht.
expires=$_date(YYYYMMDD, +5d)_$
Allgemeine Funktionen • 21
Libelle SystemCopy
22 • Allgemeine Funktionen
Programmierhandbuch
Libelle SystemCopy
Programmierhandbuch
8 Attribute der Konfiguration
Die Tabelle unten beschreibt die Attribute der Konfiguration, die mit
der nachfolgenden Syntax bestimmt werden können:
$_config(<attribut>)_$
Attribut
name
master.hostname
master.port
Beschreibung
Der Name der gegenwärtigen
Konfiguration.
Der Name des Rechners, auf dem
der Master der Konfiguration läuft.
Der Port für die Kommunikation mit
dem Master-Server.
Beispiel
Folgender Ausdruck im Task-Code wird durch den Namen des
Rechners, auf dem der Master-Server der Konfiguration läuft, ersetzt.
$_config(master.hostname)_$
Attribute der Konfiguration • 23
Libelle SystemCopy
24 • Attribute der Konfiguration
Programmierhandbuch
Libelle SystemCopy
Programmierhandbuch
9 Attribute der Ausführung
Die Tabelle unten beschreibt die Attribute der Ausführung, die mit der
nachfolgenden Syntax benutzt werden können:
$_execution(<attribut>)_$
Attribut
id
startTime
createdBy
checksOnly
Beschreibung
Die ID der aktuellen Ausführung
Die Start-Zeit der aktuellen
Ausführung im Format %Y
%m%dT%H%M%S%F, z.B.
20160314T102601.913050
Der Name des Benutzers, der die
Ausführung gestartet hat.
Ergibt true, falls nur Start-Checks
ausgeführt werden, und false, falls
alle Phasen ausgeführt werden.
Beispiel
Folgender Ausdruck im Task-Code wird durch die ID der Ausführung
ersetzt:
$_execution(id)_$
Attribute der Ausführung • 25
Libelle SystemCopy
26 • Attribute der Ausführung
Programmierhandbuch
Libelle SystemCopy
Programmierhandbuch
10 Systemattribute
Die Tabelle unten beschreibt die Systemattribute, die mit folgendem
Aufruf bestimmt werden können:
$_system(<rolle> | <systemID>, <attribut>)_$
Mögliche Werte für rolle sind
•
•
•
•
•
source_db
source_sap
target_db
target_sap
current
Anstelle der Rolle können Sie auch die Systemkennung (SystemID)
angeben.
Da eine Konfiguration mehrere Satelliten enthalten kann, ist die
Rolle satellit mehrdeutig und passt nicht notwendigerweise zu einem
physischen System. Daher kann sie auch nicht dazu verwendet
werden, einen bestimmten Satelliten zu identifizieren. Nichtsdestotrotz
kann die Rolle current in Tasks benutzt werden, die auf beliebigen
Serverkomponenten ausgeführt werden, um lokale Systemattribute zu
bestimmen, also auch auf Satelliten.
Attribut
id
hostname
worker.hostname
utcOffset
jre_home
os.name
os.version
Beschreibung
Systemkennung (SystemID).
Der Rechnername dieses Systems.
Der Name des Rechners, wo der Worker
dieses Systems läuft.
Die Abweichung der lokalen Zeit zur UTC,
z.B. +0100
Pfad zum Java Runtime Environment, der
das Bin-Verzeichnis enthält.
Name des Betriebssystems, z. B. Linux.
Die Version des Betriebssystems.
Systemattribute • 27
Libelle SystemCopy
os.user
lsc.home
lsc.version
db.type
db.name
db.instance
db.user
db.password
db.home
db.port
db.abap_stack.
schema_user
db.abap_stack.
schema_password
db.java_stack.
schema_user
db.java_stack.
schema_password
sap.type
sap.release
sap.support_stack
sap.system_id
sap.instance_number
sap.sidadm.user
sap.sidadm.password
sap.license_type
sap.license_path
28 • Systemattribute
Programmierhandbuch
Der Benutzername des Betriebssystems.
Das Home-Verzeichnis der Libelle
SystemCopy, endet nicht mit / oder \.
Die Version der Libelle SystemCopy.
Der Datenbankproduktname, z. B. DB2.
Der Datenbankname.
Die Instanz, zu der die Datenbank gehört.
Ein registrierter Benutzername für
Datenbankverbindungen.
Das Passwort zum Benutzer für
Datenbankverbindungen.
Installationsverzeichnis der Datenbank,
endet nicht mit / oder \.
Der Datenbankport ist notwendig für
Sybase ASE oder DB2 zOS.
Der Benutzer des ABAP-Schemas
Das Password des ABAP-Schemas.
Das Schema zum Java-Stack.
Das Passwort des Java-Stack-Schemas.
Der Typ des SAP-Systems, z. B. CRM.
Das SAP Basis-Release, z.B. 720.
Der Support-Package-Level des SAP
Basis-Releases, zu finden neben dem
SAP Basis-Release im SAPGUI.
Name des SAP-Systems.
Die Instanznummer für die
Kommunikation, z. B. 00.
Der Benutzername des
Betriebssystembenutzers <sid>adm.
Das Passwort des
Betriebssystembenutzers <sid>adm.
Alter oder neuer Lizenztyp.
Der Pfad zur SAP-Lizenz.
Programmierhandbuch
Libelle SystemCopy
sap.java_instance_home Das Verzeichnis, wo die StandardKonfigurationsdateien für den Java-Stack
im SAP-System untergebracht sind.
sap.profile_file
Dateipfad der aktuellen Profildatei, die der
SAP-Application-Server benutzt.
clients
Die Mandanten-Tabelle als CSV-Text mit
Semikolon als Trennzeichen.
Um weitere Informationen über die Mandanten eines Systems
herauszufinden, kann folgender Aufruf benutzt werden:
$_system(<rolle>, client[nr].<mandant_attribut>)_$
Die Variable nr in obigem Ausdruck muss durch eine der folgenden
Zahlen oder Zeichenketten ersetzt werden:
•
•
•
Mandanten-ID
"current" (der Mandant, mit dem die Task ausgeführt wird)
"default" (der Standardmandant)
Die verfügbaren Mandantenattribute werden in nachstehender Tabelle
beschrieben.
Mandantenattribut
id
number
user
password
logsysname
copy
default
Beschreibung
Die Mandantenkennung.
Die Mandantenkennung.
Der Benutzername des Mandanten
Das Passwort des Mandanten.
Logischer Systemname des Mandanten.
Ist das Kopieren-Attribut für diesen
Mandanten aktiviert?
Ist dieser Mandant der
Standardmandant?
Systemattribute • 29
Libelle SystemCopy
Programmierhandbuch
Beispiele
•
•
Der Datenbank-Home-Verzeichnispfad des
Datenbankquellsystems mit den an das lokale Betriebssystem
angepassten Pfadtrennzeichen:
$_correct_path($_system(source_db, db.home)_$)_$
Wenn der folgende Ausdruck mit TRUE ersetzt wird, hat der
Standardmandant des SAP Quellsystems das Kopieren-Attribut
aktiviert:
$_system(source_sap, client[default].copy)_$
30 • Systemattribute
Programmierhandbuch
Libelle SystemCopy
11 Attribute des Kopierwerkzeugs
Die Attribute des Kopierwerkzeugs hängen ab von der
implementierten Lösung. Gegenwärtig unterstützen wir
®
®
BusinessShadow mit seinen Komponenten DBShadow und
®
FSShadow als Kopierwerkzeug. Siehe die verfügbaren Attribute
in der nachstehenden Tabelle. Sie können mit folgendem Aufruf
bestimmt werden:
$_copy_tool(<attribut>)_$
Attribut
tr.port
Beschreibung
®
Der Port der beteiligten DBShadow
Systeme.
tr.cfc_config_name
Name der Copy-from-Copy-Konfiguration
(Konfiguration AB).
tr.config_name
Name der Quelle-Ziel-Konfiguration
(Konfiguration AC).
®
tr.switch_at
Der Zeitpunkt, zu dem DBShadow auf das
Standby-System umschaltet.
tr.recover_until
Der Zeitpunkt, bis zu dem die StandbyDatenbank Logdateien recovert, ehe sie in
Betrieb geht.
tr.variant
Produktabhängiger Name der Binärdatei, z.
B. trd, trdb2, trsql, trsap, etc.
®
tr.source.hostname
Rechnername des DBShadow
Quellsystems (A).
®
tr.source.home
Home-Verzeichnis des DBShadow
Quellsystems (A), endet nicht mit / oder \.
tr.cfc_target.hostname Rechnername des Copy-from-CopyZielsystems (B).
tr.cfc_target.home
Home-Verzeichnis des Copy-from-CopyZielsystems (B), endet nicht mit / oder \.
®
tr.target.hostname
Rechnername des DBShadow Zielsystems
(C).
Attribute des Kopierwerkzeugs • 31
Libelle SystemCopy
tr.target.home
trff.port
trff.config_name
trff.source.hostname
trff.source.home
trff.target.hostname
trff.target.home
Programmierhandbuch
®
Home-Verzeichnis des DBShadow
Zielsystems (C), endet nicht mit / oder \.
®
Der Port der beteiligten FSShadow
Systeme.
®
FSShadow Konfigurationsname.
®
Rechnername des FSShadow
Quellsystems (Primärsystem).
®
Home-Verzeichnis des FSShadow
Quellsystems (Primärsystem), endet nicht
mit / oder \.
®
Rechnername des FSShadow Zielsystems
(Sekundärsystem).
®
Home-Verzeichnis des FSShadow
Zielsystems (Sekundärsystem), endet nicht
mit / oder \.
Beispiele
•
•
®
Den Namen der produktabhängigen DBShadow Binärdatei in
einem Command-Script setzen:
SET TR_BINARY=$_copy_tool(tr.variant)_$
®
Den Rechnernamen des FSShadow Sekundärsystems in einem
Command-Script setzen:
SET HOST=$_copy_tool(trff.target.hostname)_$
32 • Attribute des Kopierwerkzeugs
Libelle SystemCopy
Programmierhandbuch
12 Attribute externer Tools
Die Attribute von externen Tools hängen von den gewählten Tools ab.
Gegenwärtig unterstützen wir Libelle DataMasking (ldm). Siehe die
verfügbaren Attribute in der nachstehenden Tabelle. Sie können mit
folgendem Aufruf bestimmt werden:
$_tool(ldm, <attribut>)_$
Attribut
hostname
port
protocol
configuration
username
password
Beschreibung
Der Hostname auf dem der LDM server
läuft.
Der Port hinter dem der LDM server läuft.
Das Protocol unter dem LDM erreichbar ist
(http, https).
Die LDM Konfiguration auf diesem Server,
die verwendet werden soll.
Der Benutzername, mit dem die Befehle
an LDM abgesetzt werden sollen, wenn es
Authentifizierung benötigt.
Das zugehörige Passwort.
Beispiel
•
Die URL des LDM-Frontends bestimmen:
SET URL=$_tool(ldm, protocol)_$://$_tool(ldm,
hostname)_$:$_tool(ldm, port)_$
Attribute externer Tools • 33
Libelle SystemCopy
34 • Attribute externer Tools
Programmierhandbuch
Libelle SystemCopy
Programmierhandbuch
13 Taskattribute
Die Tabelle unten beschreibt die Taskattribute, die mit folgendem
Ausdruck bestimmt werden können:
$_task(<uid>, <attribut>)_$
Erster Parameter ist entweder der Unique Identifier der Task oder der
Begriff current.
Attribut
uid
name
task_home
phase
clientdependent
active
startTime
endTime
Beschreibung
Der Unique Identifier der Task.
Der Name der Task.
Pfad, wo alle Ausführungsdateien der Task
gespeichert sind.
Die Phase, zu der die Task gehört, z. B. post.
Ergibt true, falls die Task
mandantenabhängig ist, andernfalls false.
Ergibt true, falls die Task in der Konfiguration
aktiviert ist, andernfalls false.
Die Start-Zeit der frühesten Instanz einer
anderen Task im Format %Y%m%dT%H%M
%S%F, z.B. 20160314T102601.913050
Die End-Zeit der letzten Instanz einer
anderen Task im Format %Y%m%dT%H%M
%S%F, z.B. 20160314T105409.154675
Ausführungsdateien
Tasks können spezielle Ausführungsdateien schreiben (output_files):
datafile, custompath1, custompath2, ..., custompath5 für allgemeine
Daten zur späteren Verwendung sowie logfile für den Fortschritt. Tasks
müssen ihr Ergebnis im logfile festhalten, damit eine Zuordnung der
Rückgabewerte und damit die Auswertung der Task stattfinden kann.
Taskattribute • 35
Libelle SystemCopy
Programmierhandbuch
Die Pfade dieser Ausführungsdateien können mit folgender Syntax
bestimmt werden:
$_task(<uid>, <output_file>,
system=<systemrole | systemID>, client=<client_id>)_$
Die Variablen system und client sind optional und können in beliebiger
Reihenfolge angegeben werden. Sind sie nicht angegeben, werden
die Werte der aktuellen Task probiert. Wenn es keine Task-Instanz der
gegebenen UID mit den aktuellen Werten gibt, sondern genau eine
Instanz, wird diese Instanz benutzt.
Die Verwendung von Ausführungsdateien zum Datenaustausch bietet
folgende Vorteile gegenüber herkömmlichen Dateien:
•
•
•
Ausführungsdateien können im Grafischen Leitstand angezeigt
werden.
Ausführungsdateien werden automatisch zum Master
transportiert und stehen Tasks auch auf anderen Systemen zur
Verfügung. Dabei spielt es keinen Rolle, wo jeweils der Pfad
LSC_HOME eingerichtet ist.
Ausführungsdateien werden nicht überschrieben, sondern
werden mit einer angehängten Ziffer versehen, die bei jeder
Ausführung erhöht wird. Somit bleiben Ausführungsdateien für
die Auswertung erhalten.
Beispiele
•
•
•
Der Pfad zur Datendatei der Task ABC für den Mandanten 100
auf dem SAP Zielsystem:
$_task(ABC, datafile, system=target_sap,
client=100)_$
Der Pfad zur Logdatei der Task DEF für den aktuellen
Mandanten auf dem aktuellen System oder der einzigen Instanz
von DEF:
$_task(DEF, logfile)_$
Die Daten, die von Task LT000CS exportiert wurden, importieren:
Import
Client=all
36 • Taskattribute
Programmierhandbuch
•
•
Libelle SystemCopy
file="$_task(LT000CS, datafile)_$"
Informationen in eine Ausführungsdatei schreiben:
echo information >
$_task(current, custompath1)_$
Inhalt einer Ausführungsdatei verarbeiten:
$_include($_task(GHI, custompath1)_$)_$
Taskattribute • 37
Libelle SystemCopy
38 • Taskattribute
Programmierhandbuch
Programmierhandbuch
Libelle SystemCopy
14 Alarmattribute
Die Tabelle unten beschreibt die Alarmattribute, die mit dem folgenden
Ausdruck bestimmt werden können:
$_alert(<attribut>)_$
Attribut
email.enabled
email.messagetypes
email.messagenumbers
repeat.time
email.server
email.recipient
email.sender
email.user
email.password
Beschreibung
Liefert true, wenn E-MailAlarmierung aktiviert ist,
andernfalls false.
Die aktivierten Meldungstypen als
Summe der Typwerte:
0 - Nichts
1 - Fehler
2 - Warnung
4 - OK
Nummern und Nummernbereiche
der Meldungsnummern, die
alarmiert werden, werden mit
Semikolon getrennt gelistet, z. B.
1; 3; 5-10.
Die Zeit in Sekunden, die
verstreichen muss, ehe die gleiche
Meldung abermals E-Mail-Alarm
auslöst.
Name des Mail-Servers oder eine
Liste von Servern, getrennt durch
Semikolon.
E-Mail-Adresse des Empfängers.
Der Absender der E-Mail.
Ein gültiger Benutzer mit Zugang
zum Mail-Server.
Das Passwort zum Benutzer mit
Zugang zum Mail-Server.
Alarmattribute • 39
Libelle SystemCopy
snmp.enabled
snmp.messagetypes
snmp.messagesnumbers
snmp.repeattime
snmp.server
snmp.community
snmp.objectid
winevents.enabled
winevents.messagetypes
winevents.messagenumbers
40 • Alarmattribute
Programmierhandbuch
Liefert true, wenn SNMPAlarmierung aktiviert ist,
andernfalls false.
Die aktivierten Meldungstypen als
Summe der Typwerte:
0 - Nichts
1 - Fehler
2 - Warnung
4 - OK
Nummern und Nummernbereiche
der Meldungsnummern, die
alarmiert werden, werden mit
Semikolon getrennt gelistet, z. B.
1; 3; 5-10.
Die Zeit in Sekunden, die
verstreichen muss, ehe die gleiche
Meldung abermals SNMP-Alarm
auslöst.
Name des SNMP-Servers oder
eine Liste von Servern, mit
Semikolon getrennt.
Name der Community.
Die SNMP-Trap Objektkennung.
Liefert true, wenn WindowsEvents-Alarmierung aktiviert ist,
andernfalls false.
Die aktivierten Meldungstypen als
Summe der Typwerte:
0 - Nichts
1 - Fehler
2 - Warnung
4 - OK
Nummern und Nummernbereiche
der Meldungsnummern, die
alarmiert werden, werden mit
Semikolon getrennt gelistet, z. B.
1; 3; 5-10.
Programmierhandbuch
Libelle SystemCopy
winevents.repeattime
Die Zeit in Sekunden, die
verstreichen muss, ehe die gleiche
Meldung abermals ein WindowsEvent auslöst.
Beispiele
•
Wie lautet der Name des Mail-Servers?
•
Welche Ereignisse lösen SNMP-traps aus?
$_alert(email.server)_$
$_alert(snmp.messagetypes)_$
Nehmen wir an, der Rückgabewert sei 3. Das bedeutet, dass
Fehler (1) und Warnungen (2) SNMP-Traps hervorrufen.
Alarmattribute • 41
Libelle SystemCopy
42 • Alarmattribute
Programmierhandbuch
Programmierhandbuch
Libelle SystemCopy
15 Alias
Für häufig gebrauchte Systemparameter werden praktische Alias
als Kurzformen bereitgestellt. Die Alias sind in der folgenden
Tabelle aufgelistet. $_Alias_$ ist somit gleichbedeutend
mit $_Entsprechung_$. Auch bei den Alias gilt: Groß- oder
Kleinschreibung ist irrelevant.
Alias
logFile
dataFile
customPath1
customPath2
customPath3
customPath4
customPath5
traceFile
taskHome
uid
taskVersion
hostName
lscHome
lscVersion
client
defaultClient
logsys
logsys_old
logsys_new
Entsprechung
task(current, logfile)
task(current, datafile)
task(current, custompath1)
task(current, custompath2)
task(current, custompath3)
task(current, custompath4)
task(current, custompath5)
task(current, tracefile)
task(current, task_home)
task(current, uid)
task(current, version)
system(current, hostname)
system(current, lsc.home)
system(current, lsc.version)
system(current, client[current].number)
system(current, client[default].number)
system(current, client[current].logsysname)
system(source_sap, client[current].logsysname)
system(target_sap, client[current].logsysname)
Alias • 43
Libelle SystemCopy
Programmierhandbuch
Beispiele
•
•
Die erwartete Ausgabe einer Command-Task in die Logdatei
umleiten:
R3trans -d > $_logFile_$
Tabellen mit Struktur und Inhalt speichern. Genutzt in ExportTasks, um Datendateien für die zugehörigen Import-Tasks zu
erzeugen:
Export
Client=all
file="$_dataFile_$"
select * from T000
44 • Alias
Libelle SystemCopy
Programmierhandbuch
16 Verwendung des JDBC-Connectors
Der Libelle SystemCopy JDBC-Connector (lscjc) kann in eine
Systemarchitektur eingebunden werden, um über eine JDBCVerbindung SQL-Statements auf einer Datenbank auszuführen. Das
ist wichtig für den Fall, dass die Datenbank nicht auf dem eigentlichen
Server läuft, sondern auf einem verbundenen Rechner, wie z. B. in
einem z/OS oder einem System i Umfeld.
lscjc ist ein Konsolenprogramm und wird als Java-Archiv im
Verzeichnis plugins/task_execute ausgeliefert. Dies ist eine kurze
Übersicht über das Programm mit einem Beispiel, wie wir empfehlen
es zu benutzen. Aber zunächst sollten Sie einen Blick auf den lscjc
Hilfebildschirm mit den Parametern werfen. Dazu geben Sie folgendes
Kommando an Ihrer Konsole ein, wo Java und lscjc verfügbar sind:
>java -jar lscjc.jar -h
Libelle JDBC Connector
lscjc
Libelle AG
Usage: lscjc.jar <check connection>
Only check
the connection
to the
database.
Execute
statements.
Show help.
Show version.
or lscjc.jar <exec_statements>
or lscjc.jar -h
or lscjc.jar -v
<check connection> ::= [<loadJars>] [<jdbc>]
-check_connection [<files>]
[<connection>] [<user>]
[<password>] [<options>]
<exec_statements>
::= [<loadJars>] [<jdbc>] [<files>]
[<connection>] [<user>]
[<password>] [<options>]
Verwendung des JDBC-Connectors • 45
Libelle SystemCopy
<files>
Programmierhandbuch
::= [<input>] [<output] [<error>]
[<trace>]
<loadJars>
::= -load <jars>
<jdbc>
::= -jdbc <jdbc-driver>
<input>
::= -i <input-file>
<output>
::= -o <output-file>
<error>
::= -e <error-file>
<connection>
::= -connection
<conn-string>
<user>
::= -user <user-name>
<password>
::= -password
<password-text>
<options>
::= -options
<(no_)feedback,
(no_)heading>
46 • Verwendung des JDBC-Connectors
Jars
containing
the jdbc
driver,
seperated
by comma.
Connect to
database with
the class name
<jdbc-driver>.
Get the
commands from
the file.
Contains the
results from
the SQL
statemenets.
Contains the
error messages.
Databasespecific
connection
string.
Defines the
user.
Defines the
password.
Feedback:
shows all
messages from
lscjc.
Heading: shows
all headings
from the
selected
tables.
Libelle SystemCopy
Programmierhandbuch
<trace>
::= -t <trace-file>
Contains the
trace.
The lscjc parameters can be replaced with the following
environment variables:
LSCJC_LOAD_JARS
LSCJC_JDBC_DRIVER
LSCJC_INPUT_FILE
LSCJC_OUTPUT_FILE
LSCJC_ERROR_FILE
LSCJC_CONNECTION
LSCJC_USER
LSCJC_PASSWORD
LSCJC_OPTIONS
::=
::=
::=
::=
::=
::=
::=
::=
::=
-load <jars>
-jdbc <jdbc-driver>
-i <input-file>
-o <output-file>
-e <error-file>
-connection <conn-string>
-user <user-name>
-password <password-text>
-options <(no_)feedback,
(no_)heading>
The lscjc paramters have a higher priority than the
environment variables.
In addition to the SQL statements of the inputfile, you
can use the following commands:
Internal Statements:
if <cond> then <statement>;
[else <statement>;]
fi
echo <text>;
Only integer values are
allowed for the if-elsestatemenet.
Displays the text on stdout
or in the output file.
Internal Variables:
$_exec_status_$
if ($_exec_status_$ == 0) the statement
was successful.
if ($_exec_status_$ != 0) the statement
was not successful.
$_row_count_$
Returns the number rows resulting from
select, input, delete or update.
Verwendung des JDBC-Connectors • 47
Libelle SystemCopy
Write Comments:
/* <text> */
// <text>
#
<text>
Programmierhandbuch
Text from /* to */ is commented.
Text from // to the end of the line is
commented.
Text from # to the end of the line is
commented.
Ein JDBC-Treiber für Ihre Datenbank wird benötigt für die
Datenbankverbindung (LOAD), ebenso der Klassenpfad der Klasse,
die die Verbindung einrichtet (DRIVER) sowie den zugehörigen
Verbindungsstring (CONNECTION). Diese Informationen finden Sie in
Ihrem Datenbankhandbuch oder in den nachfolgenden Beispielen.
DB2
LOAD
DRIVER
CONNECTION
db2jcc.jar,db2jcc_license_cisuz.jar
com.ibm.db2.jcc.DB2Driver
jdbc:db2://$SERVER:$PORT/$DBNAME
MySQL
LOAD
DRIVER
CONNECTION
mysql-connector-java-5.1.12-bin.jar
com.mysql.jdbc.Driver
jdbc:mysql://$SERVER:$PORT/$DBNAME
Sybase
LOAD
DRIVER
CONNECTION
jConn4.jar,jTDS3.jar
com.sybase.jdbc4.jdbc.SybDriver
jdbc:sybase:Tds:$SERVER:$PORT/$DBNAME
48 • Verwendung des JDBC-Connectors
Libelle SystemCopy
Programmierhandbuch
Die SQL-Query wird als Textdatei mit dem Eingabeparameter
-i übergeben. Das Ergebnis wird an die Konsole ausgegeben, es
sei denn, Sie geben eine Ausgabedatei mit dem Parameter -o an.
Mit den Optionen feedback und heading können Sie festlegen, ob
Datenbankmeldungen oder Spaltenüberschriften zurückgegeben
werden oder nicht.
Permanenter Trace wird nach <lsc-home>/lscjc_trace/
lscjc_trace<timestamp>.txt geschrieben. Dieser Pfad kann über den
Parameter -t <trace-file> bei einem lscjc-Aufruf geändert werden.
Wenn Sie Fragen haben, wenden Sie sich bitte an das Libelle
Professional Service Team.
Beispiel
1.
Die Umgebung für lscjc mithilfe des folgenden Shell-Skripts
setzen:
SAP_NAME=$_system(current, Sap.system_id)_$
JAVA_HOME=$_system(current, jre_home)_$
DB_SERVER=$_param(DB2ZOS_$_current_role_$_SERVER)_$
DB_PORT=$_param(DB2ZOS_$_current_role_$_PORT)_$
DB_NAME=$_system(current, Db.name)_$
LSCJC_USER=$_system(current, Db.user)_$
LSCJC_PASSWORD=$_system(current,
Db.password)_$
export
export
export
export
export
export
JAVA_HOME
DB_SERVER
DB_PORT
DB_NAME
LSCJC_USER
LSCJC_PASSWORD
LSC_LOAD=/sapmnt/$SAP_NAME/global/db2/jdbc/db2jcc.jar
LSC_LOAD=$LSC_LOAD,/sapmnt/$SAP_NAME/global/db2/jdbc/
db2jcc_license_cisuz.jar
export LSC_LOAD
LSCJC_DRIVER="com.ibm.db2.jcc.DB2Driver"
export LSCJC_DRIVER
Verwendung des JDBC-Connectors • 49
Libelle SystemCopy
Programmierhandbuch
LSCJC_CONNECTION_STRING="jdbc:db2://$DB_SERVER:
$DB_PORT/$DB_NAME"
export LSCJC_CONNECTION_STRING
2.
LSCJC_PARAMS=" -load $LSC_LOAD -jdbc $LSCJC_DRIVER
-connection $LSCJC_CONNECTION_STRING
-user $LSCJC_USER -password $LSCJC_PASSWORD"
export LSCJC_PARAMS
Eine SQL-Query absetzen:
>java -jar lscjc.jar -options feedback
-i $_execfile_$.sql -o $_logFile_$ $LSCJC_PARAMS
Die folgenden Meldungen sind die möglichen Rückgabewerte eines
Aufrufs des JDBC Connectors lscjc.
OK-Meldungen
LSCJC-1000:
LSCJC-1001:
LSCJC-1002:
LSCJC-1003:
LSCJC-1004:
LSCJC-1005:
LSCJC-1006:
LSCJC-1007:
LSCJC-1008:
LSCJC-1009:
LSCJC-1010:
LSCJC-1011:
LSCJC-1012:
Verbunden mit Datenbank (...) mit Benutzer (...).
Abgemeldet von der Datenbank (...).
Anweisung erfolgreich ausgeführt.
(...) Datensätze selektiert.
(...) Datensätze aktualisiert.
(...) Datensätze eingefügt.
(...) Datensätze gelöscht.
Tabelle erfolgreich angelegt.
View erfolgreich angelegt.
Index erfolgreich angelegt.
Tabelle erfolgreich gelöscht.
View erfolgreich gelöscht.
Index erfolgreich gelöscht.
50 • Verwendung des JDBC-Connectors
Libelle SystemCopy
Programmierhandbuch
Warnungen
LSCJC-2000:
LSCJC-2001:
LSCJC-2002:
LSCJC-2003:
LSCJC-2004:
0 Datensätze ausgewählt.
0 Datensätze aktualisiert.
0 Datensätze eingefügt.
0 Datensätze gelöscht.
Eingabedatei ist leer.
Fehlermeldungen
LSCJC-3000:
LSCJC-3001:
LSCJC-3002:
LSCJC-3003:
LSCJC-3004:
LSCJC-3005:
LSCJC-3006:
LSCJC-3007:
LSCJC-3008:
LSCJC-3009:
LSCJC-3010:
LSCJC-3011:
LSCJC-3012:
LSCJC-3013:
Keine Verbindung zur Datenbank, <jdbc-driver>
ist falsch oder existiert nicht.
Keine Verbindung zur Datenbank (...),
Verbindungsdaten fehlen oder sind falsch.
Keine Verbindung zur Datenbank (...), Benutzer
oder Passwort ist falsch.
Fehler bei Ausführung, Kommando (...)
Syntaxfehler.
Tabelle konnte nicht angelegt werden.
View konnte nicht angelegt werden.
Index konnte nicht angelegt werden.
Tabelle konnte nicht gelöscht werden.
View konnte nicht gelöscht werden.
Index konnte nicht gelöscht werden.
(...) ist kein gültiger Parameter oder unerwartet
an dieser Position.
Zu viele Parameter an lscjc übergeben.
Für die Ausführung von lscjc fehlen Parameter.
SQL-Anweisung nicht mit Semikolon beendet.
Verwendung des JDBC-Connectors • 51
Libelle SystemCopy
52 • Verwendung des JDBC-Connectors
Programmierhandbuch
Programmierhandbuch
Libelle SystemCopy
17 Verwendung des SAP-Connectors
Der Libelle SystemCopy SAP Connector (lscsc) kann in eine
Systemarchitektur eingebunden werden, um über SAP-Verbindungen
ABAP-Programme oder SAP-Transaktionen auszuführen. Derartig
verwendet lsc lscsc, um ABAP-Tasks und TX-Tasks auszuführen.
lscsc kann aber auch schlicht dazu benutzt werden, um zu prüfen, ob
eine Verbindung zu einem SAP-System hergestellt werden kann.
lscsc ist ein Konsolenprogramm und wird als Java-Archiv im
Verzeichnis plugins/task_execute ausgeliefert. Dies ist eine kurze
Übersicht über das Programm mit Beispielen, wie es eingesetzt
werden kann.
Systemanforderungen
Ein Java-Runtime-Environment (jre) Version 1.4 oder neuer wird
benötigt, um lscsc auszuführen.
Außerdem werden verschiedene Bibliotheken für die Kommunikation
mit SAP via Remote Function Call (RFC) benötigt. Der Einsatz
der Bibliotheken hängt ab vom Betriebssystem. Die folgende
Tabelle zeigt die erforderlichen Bibliotheken sowie die zugehörigen
Umgebungsvariablen, welche den Pfad zu diesen Bibliotheken
enthalten müssen.
Verwendung des SAP-Connectors • 53
Libelle SystemCopy
Betriebssystem
AIX
HP-UX
Linux
Solaris
Windows
Programmierhandbuch
Bibliotheken
librfccm.o,
libsapjcorfc.so
librfccm.so,
libsapjcorfc.so
librfccm.so,
libsapjcorfc.so
librfccm.so,
libsapjcorfc.so
librfc32.dll, sapjcorfc.dll
54 • Verwendung des SAP-Connectors
Umgebungspfad
LIBPATH
SHLIB_PATH
LD_LIBRARY_PATH
LD_LIBRARY_PATH
PATH
Libelle SystemCopy
Programmierhandbuch
Syntax
Als erstes sollten Sie einen Blick auf den lscsc Hilfebildschirm mit den
Parametern werfen. Dazu geben Sie folgendes Kommando an Ihrer
Konsole ein, wo Java und lscsc verfügbar sind:
>java -jar lscsc.jar -h
Libelle SAP Connector
Libelle AG
Usage:
lscsc.jar
<check_connection>
or
lscsc.jar
<exec_abap>
or
lscsc.jar
<exec_trans>
or
or
lscsc.jar
lscsc.jar
-h
-v
Check SAP
connection
Execute ABAP
program
Execute SAP
transaction
Show help
Show version
<check_connection>
::= <connection> -check_connection
[-options <feedback>]
<exec_abap>
::= <connection> -exec_abap <files>
[-options <feedback>]
<exec_trans>
::= <connection> -exec_trans
-transaction <tCode> <files>
[-options <feedback>]
<connection>
::= -host <hostname> -system <sysnum>
-client <clientnum> -user <user>
-password <password>
<files>
::= -i <input-file>
[-o <output-file>]
[-e <error-file>]
[-t <trace-file>]
Verwendung des SAP-Connectors • 55
Libelle SystemCopy
Programmierhandbuch
The lscsc parameters can be replaced with the following
environment variables:
LSCSC_HOST
LSCSC_SYSTEM
LSCSC_CLIENT
LSCSC_USER
LSCSC_PASSWORD
LSCSC_INPUT_FILE
LSCSC_OUTPUT_FILE
LSCSC_ERROR_FILE
LSCSC_OPTIONS
::=
::=
::=
::=
::=
::=
::=
::=
::=
-host <hostname>
-system <sysnum>
-client <clientnum>
-user <user>
-password <password>
-i <input-file>
-o <output-file>
-e <error-file>
-option
<feedback | no_feedback>
The lscsc paramters have a higher priority than the
environment variables.
Beispiele
Wir wollen herausfinden, ob wir eine Verbindung zum System 00
mit Mandant 100 auf Host bsrv05p herstellen können. Dies ist das
Kommando, um lscsc auf einem 32-Bit-Rechner auszuführen:
>java -jar lscsc.jar -host bsrv05p -system 00 -client 100
-user dev -password ****** -check_connection
-options feedback
Um lscsc auf einem 64-Bit-Rechner auszuführen, müssen wir den
Parameter -d64 zum Kommando hinzufügen. Das ergibt Folgendes:
>java -d64 -jar lscsc.jar -host bsrv05p -system 00
-client 100 -user dev -password ****** -check_connection
-options feedback
Dies ist das Resultat unseres Kommandos. Man sieht die
standardisierten Meldungen für Verbindungsauf- und -abbau.
Connecting to SAP...
LSCSC-1000: Connected to SAP with user "dev".
LSCSC-1001: Disconnected from SAP.
56 • Verwendung des SAP-Connectors
Libelle SystemCopy
Programmierhandbuch
Das folgende Beispiel benutzt den lscsc, um ein in der Datei
report_abap.txt enthaltenes ABAP-Programm auszuführen. Das
Ausgaberesultat des ABAP-Programms wird in die Datei report.out.txt
geschrieben.
>java -jar lscsc.jar -host bsrv05p -system 00
-client 100 -user dev -password ****** -exec_abap
-i report_abap.txt -o report_out.txt
Für SAP-Transaktionen wird ein zusätzlicher Parameter
-transaction bereitgestellt, um die Transaktionskennung anzugeben,
beispielsweise SCC4. Die Eingabedatei wird benutzt, um die
benötigten Daten für die Transaktion zu übergeben. Das könnte
eine vom Aufzeichnungstool SHDB exportierte Datei sein. Sei es die
Datei scc4_in.txt, und schreiben wir das Resultat der Transaktion in
scc4_out.txt, so liegt uns das komplette Kommando vor, um eine SAPTransaktion via lscsc auszuführen:
>java -jar lscsc.jar -host bsrv05p -system 00
-client 100 -user dev -password ****** -exec_trans
-transaction SCC4 -i scc4_in.txt -o scc4_out.txt
Alle möglichen Rückgabewerte, verursacht durch lscsc-Aufrufe,
sind standardisierte Meldungen, sie erscheinen in den folgenden
Abschnitten.
OK-Meldungen
LSCSC-1000:
LSCSC-1001:
LSCSC-1002:
LSCSC-1003:
Verbunden mit SAP mit Benutzer (...).
Getrennt von SAP.
Programm erfolgreich ausgeführt.
Transaktion erfolgreich ausgeführt.
Warnungen
LSCSC-2000:
Eingabedatei ist leer.
Verwendung des SAP-Connectors • 57
Libelle SystemCopy
Programmierhandbuch
Fehlermeldungen
LSCSC-3000:
LSCSC-3001:
LSCSC-3002:
LSCSC-3003:
LSCSC-3004:
LSCSC-3005:
Keine Verbindung zu SAP, ...
Fehler bei der Programmausführung.
Fehler bei der Ausführung der Transaktion.
... ist kein gültiger Parameter oder unerwartet an
dieser Position.
Zu viele Parameter an lscsc übergeben.
Für die Ausführung von lscsc fehlen Parameter.
Hinweis:
Der Libelle SystemCopy SAP Connector schreibt automatisch
permanente Trace-Informationen. In Unix-Umgebungen werden die
Traces gewöhnlich im Verzeichnis /tmp/lscsc_traces gespeichert. In
Windows-Umgebungen werden die Traces gewöhnlich im Verzeichnis
%TEMP%\lscsc_trace aufbewahrt - wenn kein anderes TraceVerzeichnis spezifiziert ist.
Falls Sie Fragen haben, wenden Sie sich bitte an das Libelle
Professional Service Team.
58 • Verwendung des SAP-Connectors
Libelle SystemCopy
Programmierhandbuch
18 Index
A
Alarmattribut...................................................................................... 39
Alias................................................................................................... 43
allgemeine Funktion.......................................................................... 17
Alphabet.............................................................................................. 1
Anwendungsdaten............................................................................. 35
Attribut............................................................................. 27, 31, 35, 39
Attribute der Ausführung................................................................... 25
Attribute der Konfiguration................................................................. 23
Ausführung........................................................................................ 25
B
Bedingung........................................................................................... 9
Beispiele.............................................................. 17, 27, 31, 35, 39, 43
Block.................................................................................................. 17
D
DataMasking...................................................................................... 33
Datum.......................................................................................... 13, 17
F
Index • 59
Libelle SystemCopy
Programmierhandbuch
Funktion............................................................................................. 17
G
globale Parameter............................................................................... 3
Groß-/Kleinschreibung........................................................................ 1
H
Home-Verzeichnis............................................................................. 31
Host................................................................................................... 23
I
Installationsverzeichnis..................................................................... 27
J
JDBC-Connector............................................................................... 45
K
Klammern............................................................................................ 1
Kopierwerkzeug................................................................................. 31
60 • Index
Libelle SystemCopy
Programmierhandbuch
L
ldm..................................................................................................... 33
Leerzeichen......................................................................................... 1
Libelle DataMasking.......................................................................... 33
lokale Parameter................................................................................. 3
lokale parameter.................................................................................. 5
lscjc.................................................................................................... 45
lscsc................................................................................................... 53
M
mandantenabhängig.......................................................................... 35
Master................................................................................................ 23
S
SAP-Connector................................................................................. 53
System i............................................................................................. 45
Systemattribut.................................................................................... 27
T
Tabelle................................................................................................. 7
table..................................................................................................... 7
Task................................................................................................. 3, 5
Task-Ausführungsdaten..................................................................... 35
Taskattribut........................................................................................ 35
tool Eigenschaft................................................................................. 33
Index • 61
Libelle SystemCopy
Programmierhandbuch
Trennzeichen..................................................................................... 17
Ü
Übersicht.............................................................................................
1
U
Uhrzeit............................................................................................... 13
ungültig.............................................................................................. 31
Z
z/OS...................................................................................................
Zeile...................................................................................................
Zeit.....................................................................................................
Zusatzfunktionalität...........................................................................
62 • Index
45
17
13
35
Herunterladen