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
// 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 übernehmen. Wenn es
Fehlermeldungen der SAP Transaktion gibt, dann werden
diese in ein Logfile gespeichert, zusammen mit weiteren
Daten.
GuiXT
// 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]"
Set V[r1] "Processing done: "
Set V[r2] "&V[FB01_errors] errors, "
Set V[r3] "&V[FB01_records] documents in total"
Return "&V[r1]&V[r2]&V[r3]"
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: