Mehr und mehr existiert der Wunsch eine angezeigte Liste (GridControl) mit einem einfachen GuiXT Script 1:1 in einer Exceldatei zu speichern. Dazu habe ich basierend auf dem Beispiel der Synactive Generate Excel file with several worksheets

ein eigenes Beispiel aufgebaut. In meinem Beispiel nehme ich die Daten aus einem GridControl und fülle damit eine Excel. Wobei der Header entsprechend im Excel noch eingefügt wird. Als Delimiter verwende ich einen Tabulator anstatt dem Semikolon.

IW39 als GridControl

Als gespeicherte Excelsheet:

Script Worksheet.txt

// IH-Aufträge anzeigen: Liste Aufträge
Screen SAPLSLVC_FULLSCREEN.0500
callvbasync guinet.GridControl.CopyText textname:="header" header:="X" delimiter:=" "
Set V[timestamp] "&V[today_d.m.y.h.m.s]"

// Sprachabhängige Titel in speziellem Loop einfangen
Set V[i] 1
Clear V[header_t]
Label Fill_Header_T
callvb title_t = guinet.gridcontrol.getcolumntitle colno:="&[i]"
if V[title_t]
Set V[header_t] "&V[header_t]&V[title_t] " // mit angehängtem TAB
set V[i] &[i] + 1
goto Fill_Header_T
endif
Enter

Screen SAPLSLVC_FULLSCREEN.0500
CopyText fromText="header" toString="header" Line="1"
Set V[header] "&V[header]" -lowercase
CreateStructure V[iw39_Zeile] &V[header]
CreateTable V[iw39] Include=V[iw39_Zeile]
callvbasync guinet.GridControl.GridToTable tablename:="iw39"
Enter
Screen SAPLSLVC_FULLSCREEN.0500
Set Text[header_t] "&V[header_t]"
CopyText fromText="header_t" toStructure=V[iw39_Zeile] delimiter=" "
Insertrow V[iw39_Zeile] table=V[iw39] index=1
CopyText fromtable=V[iw39] toText="temp" delimiter=" "
CopyText fromText="temp" toFile="&%[TMP]\Textfile_&V[timestamp].txt" -utf8
calljs XL_start
calljs XL_copy_textfile "&%[TMP]\Textfile_&V[timestamp].txt" "IW39"
calljs XL_save "&%[TMP]\Excelfile_&V[timestamp].xlsx"
calljs XL_close
Start "&%[TMP]\Excelfile_&V[timestamp].xlsx"
Enter

Zugehörige Scripte zu downloaden: Worksheet.zip

Empfehlen