Lieber Klaus1,
über eine RFC-Aufruf bekomme ich von SAP eine Tabelle zurück.
meinst Du eine Datenbank-Tabelle?
In der Tabelle liegt die PDF-Datei augesplittet alle 1022 Zeichen.
Das bedeutet, dass zuallererst alle Zeichen zusammengesetzt werden müssen, ehe man etwas anderes damit tut.
$rows = saprfc_table_rows ($fce,"CONTENT_BIN");
Was leistet die Funktion/Methode saprfc_table_rows
? Allem Anschein nach liefert sie eine Ganzzahl, welche die Anzahl der Teildaten ermittelt.
Frage: Kannst Du beweisen, dass $row
auch wirklich die richtige Zahl liefert?
$pdfData = ""; for ($i=1;$i<=$rows;$i++) { $aline = saprfc_table_read ($fce,"CONTENT_BIN",$i); $pdfData .= hex2bin($aline["LINE"]); }
Wenn $row
die richtige Anzahl liefert, muss hier der Hase im Pfeffer liegen.
- Sind die benötigten Tabellen-Zeilen wirklich der Reihe nach in der Tabelle abgelegt? Also: Bekommst Du mit
saprfc_table_read
wirklich nur die betroffenen Zeilen, und sind diese fortlaufend nummeriert, dass$i
keine fremden Zeilen einliest (und dafür andere auslässt)? - Warum sammelst Du nicht die PDF-Daten zuerst vollständig in einer Variable, ehe Du
hex2bin
darauf anwendest? Wenn die Anzahl der Zeichen aus welchem Grund auch immer ungerade sein sollte, dann könnte es sein, dass Du fehlerhafte Teildaten generierst, weil „halbe Bytes“ zu ganzen Bytes umgewandelt werden (1a2b3
+c4d5e
=>1a
2b
03
+c4
d5
06
anstatt1a
2b
3c
4d
5e
). Also zuerst alles in einen String einlesen und dannhex2bin
anwenden.
Liebe Grüße
Felix Riesterer