![]() |
SAP RFC_READ_TEXT funktioniert nicht mehr
Delphi 10.2 und SAP GUI 7.5
Seit der Umstellung auf WIN 10 und Delphi 10.2 funktioniert mein Zugriff auf SAP mit dem Funktionsbaustein RFC_READ_TEXT nicht mehr. RFC_READ_TABLE funktioniert noch. Hat jemand das gleiche Problem? Muss ich am Zugriff etwas anpassen? Hier mein Code der mit Win 7 und Delphi XE 2 funktioniert hat:
Delphi-Quellcode:
Übrigens funktioniert die ActiveX Komponente. Mit VBA kann ich den Text lesen.
procedure TForm1.Texte_lesen_urversion;
var r : integer ; Sprache : String; connection, funct, table : olevariant; Textline, Itemsrow : oleVariant; begin Richedit1.Lines.Clear; If not SAPConnected then begin Connection:= SAPLogOnControl1.NewConnection; SAPConnected := Connection.LogOn(0,false); (* Parameter "true" = SilentLogOn *) end; if SAPConnected then begin Sprache := 'D'; SAPFunctions1.RemoveAll; SAPFunctions1.Connection := Connection; Funct := SAPFunctions1.add('RFC_READ_TEXT'); Textline := Funct.Tables.item('TEXT_LINES'); ItemsRow := Textline.rows.add; ItemsRow.Value[2]:='MVKE'; ItemsRow.Value[3]:= '000000000100000205110000'; ItemsRow.Value[4]:='0001'; ItemsRow.Value[5]:= Sprache; if not Funct.call then showMessage(Funct.exception) else begin Table := Funct.tables.item('TEXT_LINES'); For r := 1 to table.rowCount do Richedit1.lines.append(VartoStr(Table.Value(r,8))); end; end; end; Vielen Dank schon mal für die Mühe. Grüße Harald |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Zitat:
Funktioniert es mit D10.2 unter Win7? Bzw. Funktioniert es mit XE2 unter W10? |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
// Mit VBA kannst Du den Text lesen?
ItemsRow.Value[2]:= 'MVKE'; // muss da nicht 'MATERIAL' stehen? MVKE ist die Tabelle für die Verkaufsorganisationen. ItemsRow.Value[3]:= '000000000100000205110000'; // Ist das die Materialnummer? Bei uns wäre die zu lang. ItemsRow.Value[4]:= '0001'; // 0001...Vertriebstext; GRUN...Grunddatentext; PRUE...Prüftext; LTXT...Materialnotiz; BEST...Einkaufsbestelltext ItemsRow.Value[5]:= Sprache; // Sprache: string[1]; // string und ansistring funktionieren nicht; Es kommt immer der deutsche Text ... Unbedingt mit einer anderen Sprache testen! Hast Du die Unicode-Dinger importiert, die mit dem u (wdobapiu.ocx)? Liegen bei mir unter "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\Unicode" Ich habe SAP GUI 7.5; 7500.2.4.1142; Build 1821220; Patch-Level 4; Hotfix 1 Windows 10 Delphi 10.2.3 Richedit1.lines.append(VartoStr(Table.Value(r,8))) ; // VarToStr kann weg, macht Delphi automatisch |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Zitat:
@Pfaffe: Funktioniert bei dir der Zugriff mit RFC_READ_Text? Hast du mir da ein Beispiel? Wir haben hier SAP GUI 7.5; 7500.1.3.1139; Build 1805791; Patch-Level 3; Hotfix 1 |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
So kann ich die Texte holen:
Delphi-Quellcode:
procedure TForm1.btn_GrunddatentexteClick(Sender: TObject);
var Funct, Fields, Options, Table, Textline, Itemsrow: OleVariant; r: integer; // ArtNr: string[18]; Sprache: string[1]; Textart: string[4]; begin try ArtNr:= '105073'; Sprache:= 'F'; // siehe SAP-Tabelle T002 Textart:= 'GRUN'; { Grunddatentext (Text-ID GRUN) Prüftext (Text-ID PRUE) Interner Vermerk (Text-ID IVER) Materialnotiz (Text-ID LTXT) Einkaufsbestelltext (Text-ID BEST) Vertriebstext (Text-ID 0001) } // if Logon_SAP_ConnectionObject then begin SAPFunctions1.RemoveAll; Funct:= SAPFunctions1.add('RFC_READ_TEXT'); Textline:= Funct.Tables.item('TEXT_LINES'); ItemsRow:= Textline.rows.add; ItemsRow.Value[1]:= '002'; // Mandant ItemsRow.Value[2]:= 'MATERIAL'; while length(ArtNr) < 18 do ArtNr:= '0' + ArtNr; ItemsRow.Value[3]:= ArtNr; ItemsRow.Value[4]:= Textart; ItemsRow.Value[5]:= Sprache; if not Funct.call then Set_Meldung(Funct.exception) else begin Table:= Funct.tables.item('TEXT_LINES'); for r:= 1 to table.rowCount do begin // Der Text kann mehrere Zeilen haben // mmo1.lines.Add(Table.Value(r, 1)); // mmo1.lines.Add(Table.Value(r, 2)); // mmo1.lines.Add(Table.Value(r, 3)); // mmo1.lines.Add(Table.Value(r, 4)); // mmo1.lines.Add(Table.Value(r, 5)); // mmo1.lines.Add(Table.Value(r, 6)); // mmo1.lines.Add(Table.Value(r, 7)); mmo1.lines.Add(Table.Value(r, 8)); // hier steht der Text end; end; end; finally SAP_ConnectionObject.Logoff; end; end; |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Sprachcodes lesen:
Delphi-Quellcode:
procedure TForm1.btn4Click(Sender: TObject);
var Funct, Fields, Options, Table: OleVariant; r: integer; s, ss: string; Splitted: TArray<String>; begin try if Logon_SAP_ConnectionObject then begin SAPFunctions1.RemoveAll; Funct:= SAPFunctions1.add('RFC_READ_TABLE'); Funct.exports('QUERY_TABLE').value:= 'T002'; // Sprachcodes Funct.exports('DELIMITER'):= '|'; if not Funct.call then Set_Meldung(Funct.exception) else begin // Tabellenstruktur auslesen Table:= Funct.tables.item('FIELDS'); for r:= 1 to Table.rowcount do begin s:= Table.value(r,1) +#9+ Table.value(r,2) +#9+ Table.value(r,3) +#9+ Table.value(r,4) +#9+ Table.value(r,5); mmo1.Lines.Add(s); end; // Daten holen mmo1.Lines.Add('vor der Ausgabe = ' + timetostr(now)); Table:= Funct.tables.item('DATA'); for r:= 1 to Table.rowcount do begin s:= Table.value(r, 1); mmo1.Lines.Add(s); // Splitted:= s.Split(['|'], 5); // for ss in Splitted do begin // mmo1.Lines.Add(ss); // end; end; mmo1.Lines.Add('nach der Ausgabe = ' + timetostr(now)); end; end; finally SAP_ConnectionObject.Logoff; end; end; |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Ich vermute mal die gleiche Ursache wie bei
![]() |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Habe in meinem Test ein TRichEdit eingebaut und die Ausgaben dort hineinlaufen lassen. Es funktioniert.
Habe aber auch IDEFixPack installiert. Bei mir ist Windows 10 64 Bit 1703, Betriebssystembuild 15063.1088 installiert. |
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Was Pfaffe macht gibt Sinn, obwohl ich persönlich die Felder in der 'Tabelle' mit benannten 'Parametern' würde im weitern Verlauf, wenn das mal läuft, würde ansprechen.
Die ersten zwei Tabelleneinträge lässt du weg bei dir. Das Programm zieht vermutlich die falsche librfc32 & Friends. Wenn du nicht viele FUBAs verwendest fällt das nicht unbedingt sofort auf. Das wäre jetzt mal das Programm schon in einer anderen Delphi Version lief viel naheliegender, sofern ihr euer SAP System nicht hochgezogen habt in der Zwischenzeit. --- Ich habe allein MiniSAP 6.2 deswegen kann ich nicht mitreden bei dem Vertrextungsbaustein. Ich sehe die Definition des FUBAs nicht. Ich habe keinen Content außer das Flight Book und der ist nicht zwingend abendfüllend. Da das Programm in XE2 lief wird die Delphi Seite schon mal passen. Ich vermute das importierte OCX wandelt den String sowieso in die COM Welt. Meine Demos in Delphi verwenden SAPX. Der RFC Mechanismus, das Wort passt eh gut, macht einfach einen Bytestream welcher ausmaskiert wird bspw. auf der Gegenseite und das war es. Ähnlich wie beim Datenempfang über eine DB library, allein dass man im Fall von RFC ganz garstige Sachen machen kann. --- Empfängst du irgendetwas bei der Rückgabe oder wird nichts gefunden? Sind Exception definiert und werden die ausgelöst? Vermutlich nicht, aber das wäre der erste Schritt vor dem Tracen der übergebenen Parameter. --- Was kann großartig passieren. a) Im PHP bspw. wude/wird der Mandant nicht gezogen oder bspw. Systemnummer. Wäre das der Fall wäre dein wäre weder VB Implementierung noch die Delphi Version gegangen. b) Oder die Sprache geht als Charakter durch und nicht nullterminierter String usw... Und noch nicht mal b) ist irgendwie wahrscheinlich. Zitat:
|
AW: SAP RFC_READ_TEXT funktioniert nicht mehr
Vielen Dank schon mal für die Antworten. Ich vermute, es liegt an unserem SAP GUI Patch Level 3.
Hab es mit Delphi 10.2 und SAP GUI 7.3 getestet und läuft. Hab mal das Trace Logfile angeschaut. Aber auch kein Hinweis. Es gibt auch keine Exception beim Aufruf. Die zurückgegeben Tabelle ist einfach leer. Auch die Tabelle MESSAGES ist leer. Nächste Woche wird unser SAP System gewartet. Evtl. wird auch der SAP GUI upgedated und es läuft vielleicht dann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz