SAP Jobsuche bei DV-Treff
rlorenz8
  • rlorenz8
  • SAP Forum - Neuling Thema Starter
vor 4 Jahre
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

Förderer

ScriptMan
vor 4 Jahre
Hallo rlorenz8,

ich selbst arbeite nicht mit GuiXT Controls. Beim Durchsehen der Programmierung kann ich keinen Fehler sehen. Es stellt sich aber die Frage, ob die Komponente GuiXT Controls tatsächlich vor Ort vorhanden ist. Bei der Einstellung Trace <--> On in der GuiXT-Umgebung ist es bei mir eindeutig zu sehen, dass ich es nicht besitze.

Ansonsten gibt es unter XING eine Gruppe namens 'GuiXT - Anwenderfreundliche Benutzeroberflächen für das SAP GUI', wo sich sehr viele GuiXT-Experten treffen. Man kann aber auch eine direkte Anfrage an office(at)synactive.com senden.

Grüße, ScriptMan

rlorenz8
  • rlorenz8
  • SAP Forum - Neuling Thema Starter
vor 4 Jahre
Hallo ScriptMan

Danke für die Antwort.

Ich habe hier im Forum vergessen mitzuteilen, dass ich den Fehler selbst herausgefunden habe.

Der Fehler lag wahrscheinlich im Vbs-Script welches ich neu als ein JavaScript geschrieben habe. Und das Script und Inputscript habe ich auf "UTF-8 BOM" umgestellt und dann hat plötzlich alles einwandfrei funktioniert.

Trotzdem danke...