Es gibt
eine Reihe von sehr nützlichen Dingen, die Sie mit
Dateien in InputScripts tun können.
- Sie können
Daten aus einer Datei lesen und sie in SAP ERP
eingeben.
- Sie können
Daten aus SAP ERP über die Transaktionen extrahieren
und die so generierten Dateien in Excel oder ähnlichen
Programmen verwenden.
- Sie können
eine html Datei generieren und diese in SAP GUI
anzeigen, indem Sie den GuiXT Viewer verwenden.
Wenn Sie
solche Anwendungen planen, dann beachten Sie bitte, dass
diese Methode sehr gut für 100 Datensätze in
einer Datei funktioniert, dass aber andere Methoden (Batch
input, ABAP Programme) aus Performance-Gründen möglicherweise eine bessere Wahl
bei größeren Datenmengen sind. Technisch gibt es keine Einschränkungen
bei den Dateigrössen oder Laufzeiten. Die "Scriptingmethode",
die hier beschrieben ist, ist vor allem geeignet, um 50 Materialsätze
über eine Exceltabelle zu verändern oder um Daten aus
120 Kostenstellen zu extrahieren. Besonders für adhoc
Aufgaben stellt der InputAssistant eine leicht zu
handhabende Möglichkeit dar, um eine Menge Zeit zu
sparen, die Sie andernfalls für die Ausführung per Hand
oder für die Programmierung verwenden müßten.
Übersicht
Wir
verwenden die folgenden Anweisungen des InputAssistant:
- Öffnen
und schließen einer Datei: OpenFile,
CloseFile;
- Werte
aus einer Datei in Variablen einlesen: ReadFile;
- einen
neuen Satz in eine Datei schreiben: AppendFile;
- mit
Variablen arbeiten: Set,
if;
- Ablaufkontrolle
innerhalb eines InputScripts: Screen,
Enter, goto, label, return.
Beispiel 1
Wir
nehmen an, dass wir eine Textdatei mit
Materialnummern haben. Wir möchten eine zweite
Datei erstellen, die die Materialnummer zusammen
mit der Sparte, Warengruppe und
Berechtigungsgruppe für jedes Material enthält.
// GuiXT script:
Pushbutton
(toolbar)
"Materialdatei erstellen" "/NMM03" process="Materialdatei_erstellen.txt"
Das
InputScript Materialdatei_erstellen.txt sieht folgendermaßen
aus::
// Materialdatei erstellen
Parameter mat_file1 "C:\GuiXT\Input.txt"
Parameter mat_file2 "C:\GuiXT\Output.txt"
// Start
Screen
SAPLMGMM.0060
OpenFile "&U[mat_file1]"
OpenFile "&U[mat_file2]" "-Output"
label Read_File
ReadFile "&U[mat_file1]" mat_matnr
if not Q[ok]
CloseFile "&U[mat_file1]"
CloseFile "&U[mat_file2]"
Return "Materialdatei wurde generiert"
"&U[mat_file2]"
endif
Set F[Material] "&V[mat_matnr]"
Enter
// Bild auswählen
Screen
SAPLMGMM.0070
Set C[Grunddaten 1] "X"
Enter
// Grunddaten 1
Screen
SAPLMGMM.4000
Set V[mat_division] "&F[Sparte]"
Set V[mat_matgroup] "&F[Warengruppe]"
Set V[mat_autgroup] "&F[Berechtigungsgruppe]"
AppendFile "&V[mat_file2]" mat_matnr
mat_division mat_matgroup mat_autgroup
Enter "/NMM03"
// MM03 Neustart, zum
Beginn des Scripts gehen
Screen
SAPLMGMM.0060
goto Read_File
Beispiel 2
Angenommen
wir haben eine Textdatei mit Daten, die GL Dokumente
darstellen. Wir möchten dieses Dokumente mit
Transaktion FB01 nach SAP ERP übernehmen. Wenn es
Fehlermeldungen der SAP ERP Transaktion gibt, dann werden
diese in ein Logfile gespeichert, zusammen mit weiteren
Daten.
//
GuiXT script
Pushbutton
(toolbar) "GL upload" "/NFB01" process="FB01_GL.txt"
Das
InputScript FB01_GL.txt lautet
folgendermaßen:
//
Dateinamen
Parameter FB01FILE "C:\GL Test\FB01_data.txt"
Parameter FB01ERR "C:\GL Test\FB01_err.txt"
// Start der Dateiausführung
OpenFile "&U[FB01FILE]" delimiter=";"
OpenFile "&U[FB01ERR]" -Output
Set V[FB01_errors] 0
Set V[FB01_records] 0
Screen SAPMF05A.0100
label start
// Gibt es eine Fehlermeldung im
vorherigen Datensatz?
if V[_lasterror]
// Fehlermeldungszähler hochsetzen
Set V[FB01_errors] &[FB01_errors] +
1
// Fehler Logfile schreiben
AppendFile "&U[FB01ERR]" s_date
s_text s_pstky1 s_account1 s_amount1 s_pstky2 s_account2
s_amount2 _lasterror
// Fehlerzähler zurücksetzen (!).
Automatisches Rücksetzen nur bei Start des InputScripts
Set V[_lasterror] ""
endif
ReadFile "&U[FB01FILE]" -stripQuotationMarks s_date s_text s_pstky1 s_account1 s_amount1 s_pstky2
s_account2 s_amount2
// Ist ein weiterer Datensatz
auszuführen?
if Q[ok]
// Zähler hochsetzen
Set V[FB01_records] &V[FB01_records] + 1
Set F[Document date] "&V[s_date]"
Set F[Doc.header text] "&V[s_text]"
Set F[Company Code] "0001"
Set F[Type] "SA"
Set F[Currency/rate] "USD"
Set F[Pstky] "&V[s_bschl1]"
Set F[Account] "&V[s_account]"
Enter onError="/NFB01"
else
// Ausführung beendet, Dateien
schließen
CloseFile "&U[FB01FILE]"
CloseFile "&U[FB01ERR]"
if V[FB01_errors=0]
Return "Processing done, no
errors, &[FB01_records] documents in total"
else
// Fehlermeldungen in
Error log anzeigen
View "&U[FB01ERR]"
Return "Processing done: &V[FB01_errors] errors, &V[FB01_records] documents in total"
endif
endif
Screen SAPMF05A.0300
Set F[Amount] "&V[s_amount1]"
Set F[PstKy] "&V[s_pstky2]"
Set F[GL/ account] "&V[s_account2]"
Enter onError="/NFB01"
Screen SAPMF05A.0300
Set F[Amount] "&V[s_amount2]"
Enter "/11" onError="/NFB01"
Screen SAPMF05A.0100
goto start
Die Datei FB01_data.txt
könnte folgendermaßen aussehen:
01122000;"GL
text1";40;113100;100;50;113101;100
02122000;"GL text2";40;113100;200;50;113777;200
15122000;"GL text3";40;113100;300;50;113101;300
32122000;"GL text4";40;113100;400;50;113101;400
14122000;"GL text5";40;113100;500;50;113101;500
01122000;"GL text6";40;113100;100;50;13101M;100
02122000;"GL text7";40;113100;200;50;113777;200
15122000;"GL text8";40;113100;300;50;113101;300
32122000;"GL text9";40;113100;400;50;113101;400
|