AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

SAP RFC_READ_TEXT funktioniert nicht mehr

Ein Thema von heavybyte · begonnen am 12. Jun 2018 · letzter Beitrag vom 28. Okt 2019
Antwort Antwort
Seite 1 von 3  1 23      
heavybyte

Registriert seit: 25. Apr 2007
Ort: Markgröningen
6 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 12. Jun 2018, 16:46
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:
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;
Übrigens funktioniert die ActiveX Komponente. Mit VBA kann ich den Text lesen.

Vielen Dank schon mal für die Mühe.
Grüße
Harald
Der Gedanke schaut oft durchs Fenster, bevor die Tat durchs Tor schreitet.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 12. Jun 2018, 19:19
Seit der Umstellung auf WIN 10 und Delphi 10.2 funktioniert
Hier wäre es gut wenn du nicht gleichzeitig beides gemacht hättest.
Funktioniert es mit D10.2 unter Win7?
Bzw. Funktioniert es mit XE2 unter W10?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#3

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 12. Jun 2018, 23:49
// 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

Geändert von Pfaffe (13. Jun 2018 um 10:31 Uhr) Grund: ItemsRow.Value[5] := Sprache; // Sprache: string[1]
  Mit Zitat antworten Zitat
heavybyte

Registriert seit: 25. Apr 2007
Ort: Markgröningen
6 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 08:29
Zitat:
Hast Du die Unicode-Dinger importiert, die mit dem u (wdobapiu.ocx)? Liegen bei mir unter "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\Unicode"
-> Ja, hab ich.

@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
Der Gedanke schaut oft durchs Fenster, bevor die Tat durchs Tor schreitet.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#5

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 10:10
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;

Geändert von Pfaffe (13. Jun 2018 um 17:23 Uhr) Grund: Sprachcode 2 Zeichen? Nein 1 Zeichen! GRUN und nicht GRUND, 4 Zeichen.
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#6

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 10:27
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;
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#7

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 11:01
Ich vermute mal die gleiche Ursache wie bei OPC mit Kassl-Komponenten unter Windows 10 und tRichedit
  Mit Zitat antworten Zitat
Pfaffe

Registriert seit: 29. Jan 2009
297 Beiträge
 
Delphi 12 Athens
 
#8

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 11:55
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.
  Mit Zitat antworten Zitat
MichaelT

Registriert seit: 14. Sep 2005
Ort: 4020 Linz
555 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 13. Jun 2018, 12:37
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:
Hast Du die Unicode-Dinger importiert, die mit dem u (wdobapiu.ocx)? Liegen bei mir unter "C:\Program Files (x86)\SAP\FrontEnd\SAPgui\Unicode"
-> Ja, hab ich.

@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

Geändert von MichaelT (13. Jun 2018 um 13:10 Uhr)
  Mit Zitat antworten Zitat
heavybyte

Registriert seit: 25. Apr 2007
Ort: Markgröningen
6 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

AW: SAP RFC_READ_TEXT funktioniert nicht mehr

  Alt 14. Jun 2018, 09:01
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.
Der Gedanke schaut oft durchs Fenster, bevor die Tat durchs Tor schreitet.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:15 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