Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline SzPGuiXT  
#1 Geschrieben : Mittwoch, 20. Dezember 2017 07:40:55(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo zusammen,

wie Sie schon aus dem Betreff raus lesen können, versuche ich gerade eine Tabelle/Liste aus SAP, aus der Transaktion IW39, in eine .xlsx Datei in Excel abzuspeichern. Leider kann ich mit dem Recorder nur das .xls Dateiformat abspeichern. Gibt es da eine direktere Lösung anstatt indirekt über VBS oder VBNet. Wenn nein, wie funktioniert es dann darüber? Gegebenenfalls sende ich die Schritte der Vorgänge in der Transaktion.
Danke im Voraus für die Antwort und fröhliche Feiertage.

Mit freundlichen Grüßen

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Offline newgui  
#2 Geschrieben : Mittwoch, 20. Dezember 2017 09:30:57(UTC)
newgui

Beiträge: 140
Hallo,

also hab mal kurz in die Transaktion gesehen (arbeite eig. nicht damit).

Zumindest bei uns gibt es die Möglichkeit über Liste - Sichern - Datei den Abruf zu speichern. Dort kannst du sowohl den Pfad als auch die Datei hinterlegen.
Diesen Vorgang kannst du über guixt aufzeichnen und dann mittels Button durchführen lassen.

Also ich habe das schon sehr oft gemacht und das hat jedes mal noch geklappt.

mfg
newgui
Offline SzPGuiXT  
#3 Geschrieben : Mittwoch, 20. Dezember 2017 09:51:23(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo newgui,

vielen Dank für deine Antwort. Diesen Vorgang habe ich auch schon versucht aber man kann die Tabelle damit nur im .xls-Format abspeichern. Ich brauche es aber im .xlsx-Format, da ich die Tabelle im Nachhinein mit Access auslese. Deswegen dürfen die Spalten sich nicht verschieben. Ich habe gelesen, dass man dafür VBS Vbnet einbinden muss. Funktioniert es auch alternativ direkter und einfacher? wenn Nein, wie könnte es dann damit funktionieren?

Liebe Grüße
Offline SzPGuiXT  
#4 Geschrieben : Mittwoch, 3. Januar 2018 07:33:37(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo frohes, neues Jahr

hat jemand vielleicht nach den Feiertagen eine Lösung auf meine Frage? :)

Liebe Grüße
Offline SzPGuiXT  
#5 Geschrieben : Freitag, 5. Januar 2018 09:16:03(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo,

Auf jeden Fall klappt es mit dem Abspeichern einer (.xls) Datei im Laufwerk per pushbuttonklick. Kurz zur Problemstellung wieso ich unbedingt drauf bestehe eine (.xlsx) Datei abspeichern zu können. Da unsere Access Datenbank sich die Daten von der abgespeicherten Exceltabelle zieht, dürfen sich die Spalten nicht verschieben, was hier der Fall wäre. Hier mein Skript:


// SAP Easy Access - Benutzermenü für SzPGuiXT
Screen SAPLSMTR_NAVIGATION.0100
Enter "iw39"

// IH-Aufträge anzeigen: Selektion Aufträge
Screen RIAUFK20.1000
Enter "/17" // Holen...

// Variante suchen
Screen SAPLSVAR.0100
Set F[Variante] "0_IHC_AUFTRÄGE"
Set F[Erstellt von] ""
Enter "/8"

// IH-Aufträge anzeigen: Selektion Aufträge
Screen RIAUFK20.1000
Set F[Layout] "/IHC_AUFTRÄG"
Enter "/8" // Ausführen

// IH-Aufträge anzeigen: Liste Aufträge
Screen SAPLSLVC_FULLSCREEN.0500
Enter "/5"

// IH-Aufträge anzeigen: Liste Aufträge
Screen SAPLSLVC_FULLSCREEN.0500
Enter "/Menu=5,5" // Warenbewegungen

// Liste Warenbewegungen zum Auftrag: Liste Warenbewegungen
Screen SAPLSLVC_FULLSCREEN.0500
Enter "/Menu=1,7,3" // Datei...

// Liste sichern in Datei...
Screen SAPLSPO5.0110
Set R[Text mit Tabulatoren] "X"
Enter

// IH-Aufträge anzeigen: Liste Aufträge
Screen SAPLSFES.0200
Set F[Verzeichnis] "C:\SAP_Export"
Set F[Dateiname] "Ersatzteile.xls"
Enter "/11" // Ersetzen

Der letzte Abschnitt ist hierbei Interessant. Danke nochmal im Voraus für die Antwort
Offline ScriptMan  
#6 Geschrieben : Freitag, 5. Januar 2018 12:07:15(UTC)
ScriptMan

Beiträge: 241
Hallo SzPGuiXT,

worin besteht die Verschiebung. Ist es die erste leere Spalte oder was ganz anderes? Am besten wäre der Vergleich zwischen IST und SOLL.

Grüße,
ScriptMan
Offline SzPGuiXT  
#7 Geschrieben : Montag, 8. Januar 2018 10:31:04(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo ScriptMan,

IST: (.xls)-Dateiformat; die 1. Spalte der Tabelle/Liste ist die Spalte B in Excel,
SOLL: (.xlsx)-Dateiformat; die 1. Spalte der Tabelle/Liste ist die Spalte A in Excel.

Grüße,
SzPGuiXT
Offline ScriptMan  
#8 Geschrieben : Dienstag, 9. Januar 2018 08:55:14(UTC)
ScriptMan

Beiträge: 241
Hallo SzPGuiXT,

Zitat:

"Leider kann ich mit dem Recorder nur das .xls Dateiformat abspeichern."

Wie gesagt habe ich keinen Zugriff auf IW39 aber ich vermute, dass sich die Liste dort nicht mal manuell im xlsx-Format abspeichern lässt. Das hat nichts mit dem Recorder zu tun und daher müsste u.U. ein Workaround her.

Dieser könnte wie folgt aussehen:

. . .
// IH-Aufträge anzeigen: Liste Aufträge
Screen SAPLSFES.0200
Set F[Verzeichnis] "C:\SAP_Export"
Set F[Dateiname] "Ersatzteile.xls"
Enter "/11" // Ersetzen

start "&F[Verzeichnis]\xls2xlsx.vbs" parameters="&F[Verzeichnis] &F[Dateiname]"


xls2xlsx.vbs:

If Not IsObject(application) Then
Set SapGuiAuto = GetObject("SAPGUI")
Set application = SapGuiAuto.GetScriptingEngine
End If
If Not IsObject(connection) Then
Set connection = application.Children(0)
End If
set session = application.ActiveSession

PFAD = wscript.arguments(0) & "\" & wscript.arguments(1)
'msgbox PFAD

on error resume next

Set xclApp = GetObject(, "Excel.Application")
If Err.Number <> 0 Then
Err.Clear
Set xclApp = CreateObject("Excel.Application")
End If

xclapp.ScreenUpdating = true
xclapp.Visible = true
xclapp.DisplayAlerts = false

Set xclwbk = xclApp.Workbooks.Open(wscript.arguments(0) & "\xls2xlsx.xlsm")

on error goto 0

xclapp.Run "xls2xlsx.xlsm!xls2xlsx", PFAD


if xclApp.Workbooks.count = 1 then
xclwbk.close
set xclwbk = nothing
xclapp.Quit
set xclapp = nothing
else
xclwbk.close
set xclwbk = nothing
xclapp.DisplayAlerts = true
end if

Makro xls2xlsx in xls2xlsx.xlsm und Modul1:

Sub xls2xlsx(ByVal PFAD As String)

Workbooks.Open Filename:=PFAD

Columns("A:A").Select
Selection.Delete Shift:=xlToLeft
Rows("1:1").Select
Selection.Delete Shift:=xlUp
Rows("2:2").Select
Selection.Delete Shift:=xlUp
Range("A1").Select

ActiveWorkbook.SaveAs Filename:=PFAD & "x", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
ActiveWorkbook.Close
Kill PFAD


End Sub

Fazit:

Das Ergebnis ist eine XLSX-Mappe, in der die 1. Spalte und die 1. und 3. Zeile gelöscht worden sind.

Viel Spaß beim Testen!

Grüße,
ScriptMan
Offline SzPGuiXT  
#9 Geschrieben : Dienstag, 9. Januar 2018 09:18:00(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo ScriptMan,

die Liste lässt sich schon manuell in eine xlsx abspeichern, indem man die Tabellenkalkulation (Umschalt+F4) benutzt, welche sich mit dem Recorder nur bis zur Exceltabelle aufnehmen lässt aber das Abspeichern nicht. Ich wüsste jetzt auf Anhieb nicht, wie ich Ihnen das noch näher beibringen könnte außer ein Screenshot zu machen. Doch darin sind betriebsbezogene Informationen enthalten. Auf jeden Fall werde ich Ihr Script austesten und berichten. Also um es nochmal klarzustellen: Die 1. Spalte der SAP-Liste bzw. Tabelle SOLL in der Spalte A in Excel beginnen.

Grüße
SzPGuiXT
Offline ScriptMan  
#10 Geschrieben : Dienstag, 9. Januar 2018 11:11:38(UTC)
ScriptMan

Beiträge: 241
Wir arbeiten aktuell mit der SAP GUI Version 7.4. Dort lässt sich unter ALT/F12 (Lokales Layout anpassen -> Optionen -> Skriptunterstützung -> systemeigene Dialogfenster von Microsoft Windows anzeigen) einstellen, ob die Pfade mit aufgezeichnet werden oder nicht. Bei mir ist dort kein Häkchen, d.h. die Pfade werden aufgezeichnet.

z.B.
. . .
// Auswertung Rechnungseingangsbuch
Screen SAPLSLVC_FULLSCREEN.0500
Enter "%_GC 143 9"

// Auswertung Rechnungseingangsbuch
Screen SAPLSLVC_FULLSCREEN.0500
Enter control="CONTAINERCTRL.GridViewCtrl" item="&amp;XXL" event="13"

// Tabellenkalkulation auswählen
Screen SAPLSLVC_EXPORT_XML.0100
Enter

// Auswertung Rechnungseingangsbuch
Screen SAPLSFES.0200
Set F[Verzeichnis] "c:\tmp"
Set F[Dateiname] "export.XLSX"
Enter "/11" // Ersetzen

Grüße,
ScriptMan

Bearbeitet vom Benutzer Mittwoch, 10. Januar 2018 07:11:50(UTC)  | Grund: Nicht angegeben

Offline SzPGuiXT  
#11 Geschrieben : Donnerstag, 11. Januar 2018 14:26:42(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo ScriptMan,

Die Tabelle wird als xlsx Datei abgespeichert jedoch mit einer Fehlermeldung:

Script: C:\guixt\scripts\xls2xlsx.vbs
Linie: 31
Char: 1
Error: Object required:'xclwbk'
Code: 800A01A8
Source: Microsoft VBScript runtime error

mein Kollege hat das Makro in Excel geschrieben, welches in Excel nicht gespeichert wird.
Also wurde die 1. und 3. Zeile, die leer sind, noch nicht gelöscht.
Derselbe Kollege hat auch im VBScript etwas verändert, wo sich die Zeilen von Ihrem Skript mit seinem unterscheiden könnten wegen der o. g. Fehlermeldung.
Ich könnte Ihnen Screenshots schicken. Dafür bräuchte ich Ihre Email-Adresse. Hier über das Forum kann ich auch keine Screenshots schicken und Ihr Postfach ist auch voll, sodass ich Ihnen private Mails hierüber schicken könnte. Das ist schonmal ein riesen Fortschritt und sehr Hilfreich. Da fehlt nur noch das i-tüpfelchen :)
Ich freue mich schon auf Ihre nächste Antwort

Liebe Grüße

SzPGuiXT
Offline ScriptMan  
#12 Geschrieben : Freitag, 12. Januar 2018 07:54:11(UTC)
ScriptMan

Beiträge: 241
Hallo SzPGuiXT,

danke für den Hinweis mit dem Postfach. Ich habe dort Platz gemacht. Die Email-Adresse habe ich bereits per PN übermittelt. Falls nicht angekommen, bitte noch mal melden. Ansonsten müsste man den aktuellen Stand der Skripte / VBA-Programme sehen, um einen Fehler zu lokalisieren.

Grüße,
ScriptMan
Offline SzPGuiXT  
#13 Geschrieben : Montag, 15. Januar 2018 15:08:48(UTC)
SzPGuiXT

Beiträge: 8
Mann
Germany
Hallo ScriptMan,

vielen, lieben Dank für Ihre kompetente Unterstützung.
Es hat alles super geklappt :) Sie sind echt sehr hilfsbereit.
Danke nochmal. :D

Grüße
SzPGuiXT
Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -