PHP 端呼叫:
$result = $sap->callFunction("XXX", [
["IMPORT", "I_ZCZLX", "1"],
["IMPORT", "I_WRITER", "MAO"],
["IMPORT", "I_CODE", "TP-IMC-002"],
["IMPORT", "I_EXCEL_DATA", "0-JA-T00|"],
["TABLE", "T_RETURNS", []]
]);
RFC 函式內 I_EXCEL_DATA 收到空字串,其他參數正常。
I_EXCEL_DATA 定義為 CHAR 長度不足(如 CHAR10),導致截斷或轉換為空。|、-)導致截斷。I_EXCEL_DATA 完全一致。saprfc 對長字串/特殊字元處理有缺陷。I_EXCEL_DATA 對應的資料元素/網域,確認長度(如 CHAR255 或 STRING)。ST05 或 SE37 測試工具,輸入相同值觀察接收結果。"TEST123",若正常則為長度/特殊字元問題。saprfc.ini 或連線參數中 codepage 設定(如 1100 for UTF-8,4103 for BIG5)。STRING 或足夠長的 CHAR。base64_encode,RFC 端再 decode(雙方協定)。saprfc 擴展編譯無誤(參考 33256 號:PHP 5.4+ 需修原始碼 function_entry 宣告)。<?php
$conn = saprfc_open([
"ashost" => "host", "sysnr" => "00", "client" => "100",
"user" => "user", "passwd" => "pass", "lang" => "EN"
]);
if (!$conn) die("連線失敗");
$rfc = saprfc_function_discover($conn, "Z_TEST_STR");
saprfc_import($rfc, "I_STR", "0-JA-T00|");
if (saprfc_call($rfc, $conn)) {
$out = saprfc_export($rfc, "E_STR");
var_dump($out); // 應輸出 string(10) "0-JA-T00|"
}
saprfc_function_free($rfc);
saprfc_close($conn);