Hallo Jens,
eine traurige Nachricht zum Abschluss: wir konnten nicht herausfinden, woran es schließlich lag, es bleibt bei der Umschlüsselung.
Die Idee mit Multibyte hat mir sehr gefallen, aber die Leute konnten aus Zeitgründen keine weiteren Tests mehr machen (ich habe Sie gebeten, für einen CHAR8 Feld mal @@ zu übergeben, das hätte ja von der Länge her passen können). Allerdings haben Sie mir gemeldet, dass in einem CHAR50 Feld, wo der Inhalt doch deutlich unter der max.Länge war, die Zeichnfolge @@ auch zurückgewiesen wurde, und zwar mit dem selben Fehler (timeout). Ich konnte diesen Fall gar nicht debuggen, weil der Prozess abgebrochen wurde noch bevor unser RFC-Baustein aufgerufen war. Also es wurde die Umschlüsselung generell eingebaut (nicht nur für das eine CHAR3 Feld, sondern grundsätzlich für alle Felder, und 2@ und 3@ brauchen nicht der gesamte Inhalt zu sein, diese Zeichenfolgen können auch irgendwo zwischen drin stehen.) So funktioniert das OK, und die Leute freuen sich, und die wollen auch nicht unbedingt verstehen warum das so ist
Nochmal die Zusammenfassung:
1.
Zeichenfolgen wie @@ und @@@ verursachen einen bis jetzt unbekannten Fehler der irgendwo bei der Überleitung vom RFC-System ins SAP System auftaucht. Im SAP kann man den Fehler nicht sehen. Eine Erklärung wurde nicht gefunden, stattdessen wurde eine Umschlüsselung eingebaut (2@ wiord im SAP auf @@, 3@ auf @@@ umgeschlüsselt).
2.
Tabellenparameter werden, wenn Sie bei einem lesenden Zugriff im RFC-.Baustein befüllt werden, beim sofort darauffolgenden Schreibenden Zugriff nicht automatisch initialisiert. Wenn im RFC-System die Tabelle nicht explizit initialisiert wird, kommt der gerade gelesene Inhalt zurück. (AUfgabe der beiden AUfrufe: erst Kundenstamm lesen, dann im RFC-Syytem entscheiden ob etwas geändert werden soll, wenn ja, dann den selben RFC-Baustein im Schreibemodus rufen).
3.
Tabellenparameter müssen im RFC-System richtig versorgt werden, insbesondere reicht es nicht aus, nur den Kopfsatz zu befüllen (auch nicht wenn man grundsätzlich immer nur eine Zeile in die Tabelle einstellen möchte). Der Kopfsatz wird ja nie übergeben, die Tabelle kommt leer an. (Weil es immer nur eine "Zeile" ist. hätte man auch mit einer flachen Struktur arbeiten können, aber der lesende Zugriff - s.oben - kann durchaus mehrere Zeilen zurückliefern, dann reicht eine Struktuer nicht aus.)
Vielen Dank nochmals an Euch für die guten Hinweise
Schöne Grüße,
scsaba