Hallo an alle GuiXT-Kenner ;-)
Danke erstmal für die Aufnahme im Forum.
Ich bin seit ca. 3-/4-Wochen auf GuiXT gekommen und war sehr erstaunt was dieses Programm für Möglichkeiten hat und was das mir persönlich helfen könnte.
Nun habe ich anhand eines Beispiels aus dem Synactive-doc ein Script + Inputscript + VbsScript erstellt, um mit einem Pushbutton, Planauftragsnummern (aus einer Excel-Datei lesen) in CO40 umzusetzen in Ferigungsaufträge und gewisse Info-Daten aus Sap wieder in die Excel-Datei zu schreiben.
Wenn ich auf den Pushbutton drücke erscheint auch das Auswahlfenster um die Exceldatei auszuwählen, aber bei Auswahl der Datei öffnet sich keine Exceldatei obwohl "XL.Visible = True" gesetzt und das Script beendet dann auch den Vorgang. Der Einstieg der Transaction wird wieder angezeigt und auch die Message...-statusline wird angezeigt, aber natürlich mit 0 Verarbeitungen.
Script:
Box (8,1) (14,35) "Sonderfunktionen"
Pushbutton (10,2) "FAUF umsetzen über Excel Datei" process="co40_excel.txt"
InputScript:
// Select Excel file
SelectFile name="xlsfile" filter="*.xls;*.xlsx" title="Wähle Excel-Datei mit PLAUF-Nr" directory="C:\Users\2116033\Desktop\PLAUF-umsetzen"
// done?
if not Q🆗
Return "S: Keine Datei ausgewählt" -statusline
endif
// Open file in Excel
CallVBS XL_open "&V[xlsfile]" "PLAUF umsetzen in FAUF"
// Start with row
Set V[k] 0
// Count updated Auftrag
Set V[k_ok] 0
Set V[k_skip] 0
Set V[k_err] 0
label next_auftrag
Enter "/NCO40"
// Fertigungsauftrag anlegen: Einstieg
Screen SAPLCOKO1.0150
// Change screen title during processing
Title "Please wait.... umsetzen PLAUF in FAUF &V[CO40_plnum]"
label read_row_from_excel
Set V[k] &V[k] + 1
CallVBS XL_getrow &V[k]
if not V[CO40_plnum]
goto all_done
endif
// status ok? then skip this one, already done
if V[CO40_stats=OK]
Set V[k_skip] &V[k_skip] + 1
goto read_row_from_excel
endif
Set F[AFPOD-PLNUM] "&V[CO40_plnum]"
Set F[AUFPAR-PP_AUFART] "&V[CO40_aufpar]"
// PLAUF eingeben aus Excel
Enter OnError="Continue"
goto error
// Clear variables for Material text and Statustext
Set V[CO40_maktx] ""
Set V[CO40_sttxt] ""
// Fertigungsauftrag anlegen: Kopf
Screen SAPLCOKO1.0115
// Material text and Statustext
Set V[CO40_maktx] "&F[CAUFVD-MATXT]"
Set V[CO40_sttxt] "&F[CAUFVD-STTXT]"
Enter "/11" OnError="Continue" // Sichern
goto error
// Fertigungsauftrag anlegen: Einstieg
Screen SAPLCOKO1.0150
// Set status fields
Set V[CO40_stats] "OK"
Set V[CO40_error] ""
CallVBS XL_updaterow &V[k]
// increase ok count
Set V[k_ok] &V[k_ok] + 1
// process next auftrag
goto next_auftrag
// error occured
label error
Set V[CO40_stats] "Error"
Set V[CO40_error] "&V[_lasterror]"
CallVBS XL_updaterow &V[k]
// increase error count
Set V[k_err] &V[k_err] + 1
goto next_auftrag
label all_done
Set V[k] &V[k] - 1
Message "S: &V[k] auftrag, &V[k_ok] changed, &V[k_skip] skipped, &V[k_err] errors" -statusline
Enter "/N"
VbsEdit .vbs Script:
Dim XL
Function XL_open(filename, caption)
Set XL = guixt.CreateObject("Excel.Application")
' display Excel window
XL.visible = True
' Set caption
XL.caption = caption
' open file
XL.WorkBooks.Open(filename)
End Function
' Read Excel row values into GuiXT variables
Function XL_getrow(k)
' Read Excel row into GuiXT variables
Call guixt.Set("CO40_plnum", XL.Cells(k, 1).Value) ' plaufnr
Call guixt.Set("CO40_aufpar", XL.Cells(k, 2).Value) ' auftart
Call guixt.Set("CO40_stats", XL.Cells(k, 3).Value) ' status Space, OK, Fehler
End Function
' Update Excel row from GuiXT variables
Function XL_updaterow(k)
' status OK bei Fehler
XL.Cells(k, 3).Value = guixt.Get("CO40_stats")
' color depending bei status
If XL.Cells(k, 3).Value = "OK" Then
XL.Cells(k, 3).Interior.ColorIndex = 2
Else
XL.Cells(k, 3).Interior.ColorIndex = 46
End If
XL.Cells(k, 4).Value = guixt.Get("CO40_error")
XL.Cells(k, 5).Value = guixt.Get("CO40_maktx")
XL.Cells(k, 6).Value = guixt.Get("CO40_sttxt")
XL.Cells(k, 7).Value = FormatDateTime(Now(), 0)
End Function
Beim Debuggen des VbsScript wurde auch kein Fehler angezeigt.
Ich hoffe ihr könnt mir bei meinem Problem helfen, denn diese Automatisation würde mir eine Menge Zeit ersparen bei meiner wöchentlichen Arbeit.
Hat vielleicht jemand eine Idee woran das liegen könnte??
Danke im Voraus und ich wünsche allen einen schönen Sonntag Abend