Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Daten aus SAP mit WSH auslesen (https://www.delphipraxis.net/83230-daten-aus-sap-mit-wsh-auslesen.html)

PeteSky 29. Dez 2006 14:38


Daten aus SAP mit WSH auslesen
 
Hallo,

Mein Problem besteht darin, Daten aus einem SAP Grid in meinem Programm einzulesen. Es sind nur jeweils einzelne Zellen. Da mir Berechtigungen fehlen, habe ich mich entschlossen den Windows Script Host (WSH) zu benutzen.
Ausführen der Scripte klappt wunderbar mit WSH Control. Das speichern der Zellen in einer Datei funktioniert. Nur will ich diese Daten nicht in einer Datei speichern (war hier nur als Test gedacht), sondern in meinem Programm verarbeiten. Nur wie stelle ich das an ? :gruebel:
Dachte eigentlich an die Zwischenablage. Abrufen wäre dann nicht das Problem, nur wie kriege ich die Daten dahin? Also ohne die gespeicherten Daten wieder einzulesen. Irgendwie schaffe ich es nicht mit "getCellValue" einen Wert in einer Variablen zu packen und dann in den Zwischenspeicher zu laden.

Hier mal das Testscript:
Code:
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
If Not IsObject(session) Then
   Set session   = connection.Children(0)
End If
If IsObject(WScript) Then
   WScript.ConnectObject session,    "on"
   WScript.ConnectObject application, "on"
End If

Set GRID1 = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell")
Set oFS = CreateObject("Scripting.FileSystemObject")
Set oTS = oFS.CreateTextFile("C:\script.txt")

for i = 0 to GRID1.rowCount - 1
oTS.writeLine(GRID1.getCellValue(i,"QMTXT")+"."+GRID1.getCellValue(i,"TPLNR"))
Next
Ich bedanke mich im voraus für eure Hilfe. :wink:

marabu 29. Dez 2006 16:29

Re: Daten aus SAP mit WSH auslesen
 
Herzlich willkommen in der Delphi-PRAXiS, PeteSky.

Ich vermute, dass mit Variants gearbeitet wird. Also kannst du die Zellwerte einfach einer internen Variablen zuweisen, statt sie mit WriteLine() in die Textdatei zu schreiben:

Delphi-Quellcode:
uses
  Variants;

var
  n: Integer;
  s: String;

begin
  // ...
  s := VarToStr(GRID1.getCellValue(i, "QMTXT"));
  n := GRID1.getCellValue(i, "TPLNR");
end;
Freundliche Grüße vom marabu

PeteSky 29. Dez 2006 18:16

Re: Daten aus SAP mit WSH auslesen
 
Hi marabu,

Der gepostete Code von mir ist das WSH-Script bzw. SAPscript und nicht der Delphi-Code. Den rufe ich vom Delphiprogramm auf. Eine andere Schnittstelle zum SAP bleibt mir nicht. Ich kann doch nicht einfach auf die Funktionen im SAPscript zugreifen, oder? :gruebel:

cu PeteSky

marabu 29. Dez 2006 18:25

Re: Daten aus SAP mit WSH auslesen
 
Nun ja, für deine Skript-Lösung benötigst du im Prinzip die gleichen Informationen, welche du auch für die Automatisierung mittels Delphi benötigst. Bei mir ist der Eindruck entstanden, dass dein Skript - nicht ohne Anpassungen - auf Delphi übertragen werden könnte.

Freundliche Grüße

PeteSky 29. Dez 2006 18:41

Re: Daten aus SAP mit WSH auslesen
 
Von Delphi rufe ich das Script auf und dieses Script schreibt mir die Daten in der Script.txt. Die Funktion (im SAPscript)
Code:
session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").getCellValue i,"QMTXT"
gibt mir den Inhalt der Zelle als String zurück (laut SAP-Documentation). Wie kann ich den in einer Variablen (im SAPscript) oder im Zwischenspeicher laden?

Die nachfolgende Zuweisung funzt nicht. Gibt mir als Fehler im SAP "Ende der Anweisung Erwartet" zurück.
Code:
MyString = session.findById("wnd[0]/usr/cntlGRID1/shellcont/shell").getCellValue i,"QMTXT"

pertzschc 29. Dez 2006 18:47

Re: Daten aus SAP mit WSH auslesen
 
Zitat:

Zitat von PeteSky
Wie kann ich den in einer Variablen (im SAPscript) oder im Zwischenspeicher laden?

Das VB-Script im Kontext des WScriptingHost kennt Variablen wie normales VB. D.h. Du könntest zuerst versuchen MyString per
Delphi-Quellcode:
Dim MyString
zu initialisieren.
Unabhängig davon kannst Du im Script selber COM-Objekte instanzieren und benutzen.
Ein Weg an die Daten zu kommen wäre, in Deinem Programm selber eine COM-Klasse als Daten-Proxy bereitzustellen.

Gruß,
Christoph

PeteSky 30. Dez 2006 12:46

Re: Daten aus SAP mit WSH auslesen
 
Danke für die Antworten. Kann ich erst nächstes Jahr ausprobieren. :mrgreen:
Habe aber noch etwas im INet gefunden:
SAP GUI Scripting Beispiele
SAP GUI Scripting API

Wünsche allen DP Usern einen guten Rutsch ins neue Jahr.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz