function RFC_READ_REPORT ($fce) { $REPORT = saprfc_server_import ($fce,"PROGRAM"); saprfc_table_init ($fce,"QTAB"); $fd = fopen ($REPORT,"r"); if (!$fd) return ("NOTFOUND"); // raise exception "NOTFOUND" while (!feof($fd)) { $LINE = fgets ($fd,73); saprfc_table_append ($fce,"QTAB",array("LINE"=>$LINE)); } fclose ($fd); saprfc_server_export ($fce,"SYSTEM","PHP"); return (true); }
function setTable($fieldName, $value) { global $rfc, $fce; saprfc_table_init($fce, $fieldName); saprfc_table_append($fce, $fieldName, $value); }
public function add($n, $m, array $a) { $curr = "T_CURRENCYAMOUNT"; $this->initTable($n); $j = str_pad($this->seqn++, 10, "0", STR_PAD_LEFT); $a["ITEMNO_ACC"] = $j; if ($n !== $curr) { foreach ($this->conf as $k => $v) { $a[$k] = $v; } } saprfc_table_append($this->func, $n, $a); if ($this->curr_init) { $this->initTable($curr); $this->curr_init = false; } saprfc_table_append($this->func, $curr, array("ITEMNO_ACC" => $j, "CURRENCY" => "IDR", "AMT_DOCCUR" => $m)); }
function callFunction($func_name="",$parameters) { /* typical call: $result=$saprfc->call_function("RFC_SYSTEM_INFO", array( array("EXPORT","SYSTEM","MBS") array("IMPORT","CODEPAGE") array("IMPORT","DBNAME") array("TABLE","APPLLIST",array()) ) ); */ // Initialize Variables $result_data=array(); $this->call_function_result=false; // Check SAPRFC-Installation if (! extension_loaded ("saprfc")) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction()\n SAPRFC-Extension.dll not loaded."); } // Validate given data if (empty($func_name)) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction():\n No Function-Name given"); } // Move Parameters to local Arrays $func_params_import=array(); $func_params_tables=array(); $func_params_export=array(); foreach ($parameters as $key => $param) { $type=$param[0]; $name=$param[1]; $value=isset($param[2])?$param[2]:""; switch ($type) { case "IMPORT": $func_params_import[$name]=$value; break; case "EXPORT": $func_params_export[$name]=""; break; case "TABLE": $func_params_tables[$name]=$value; if (!is_array($value)) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction()\n Wrong Parameter-Value for Table-Parameter ".$name.". We expected an Array."); } break; default: return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction()\n Wrong Parameter-Type '".$type."'. Must be IMPORT, EXPORT or TABLE."); } } // Do Login (only done in method login(), if necessary) if ($this->login()==SAPRFC_ERROR) { return $this->getStatus(); } // Discover Function in SAP $this->func_id=@saprfc_function_discover($this->rfc_conn,$func_name); if (!$this->func_id) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction()\n Function module '".$func_name."' seems not to exist. function saprfc_function_discover() failed."); } // Set Import-Parameters foreach ($func_params_import as $name => $value) { $rc=@saprfc_import($this->func_id,$name,$value); if (empty($rc)) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction('".$func_name."')\n Import-Parameter=".$name. " could not be set. (Does it exist?)"); } } // Set Table-Parameters (importing-values) foreach ($func_params_tables as $name => $value) { $rc=@saprfc_table_init($this->func_id,$name); if (empty($rc)) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction('".$func_name."')\n Table-Parameter=".$name. " could not be set. (Does it exist?)"); } foreach ($value as $key => $data) { @saprfc_table_append($this->func_id,$name,$data); } } // Execute Function $result = @saprfc_call_and_receive ($this->func_id); if ($result != SAPRFC_OK) { if ($result == SAPRFC_EXCEPTION ) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction('".$func_name."')\n saprfc_call_and_receive(): Exception raised: ".@saprfc_exception($this->func_id)); } else { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction('".$func_name."')\n saprfc_call_and_receive(): Call error: ".@saprfc_error($this->func_id)); } } // Get Exporting-Parameters foreach ($func_params_export as $name =>$value) { $rc=@saprfc_export($this->func_id,$name); // if (empty($rc)) { // llaegner removed (Reason: when export returns the -good- value "0", then empty also evaluates to true (thanks Alexander Gouriev) if (!isset($rc)) { return $this->setStatus(SAPRFC_ERROR,"saprfc::callFunction('".$func_name."')\n Export-Parameter=".$name. " could not be set (Does it exist?)".@saprfc_error($this->func_id)); } else { $result_data[$name]=$rc; } } // Get Table-Parameters foreach ($func_params_tables as $name => $content) { // Ausgabe-Tabelle initialisieren $result_data[$name]=array(); $rows=@saprfc_table_rows($this->func_id,$name); for ($i=1; $i<=$rows; $i++) { $result_data[$name][$i]=@saprfc_table_read ($this->func_id,$name,$i); } } // Save function-call result for later analysis $this->call_function_result=$result_data; // Echo Debug-Information, if flagged if ($this->debug) @saprfc_function_debug_info($this->func_id); // Falls es ein BAPI-Aufruf ist, Fehler raussuchen if ($this->check_bapi_errors) { $bapi_return=@saprfc_export($this->func_id,"RETURN"); if (isset($bapi_return) && is_array($bapi_return) && isset($bapi_return["MESSAGE"]) && $bapi_return["NUMBER"] != 0) { // FINISH FUNCTION-CALL $this->setStatus(SAPRFC_APPL_ERROR,$bapi_return); return $result_data; } } // Close Function-Execution and free results removed because it sometimes stops completly executing PHP!! //@saprfc_function_free($this->func_id); // FINISH FUNCTION-CALL $this->setStatus(SAPRFC_OK,"call function '".$func_name."' successfull."); return $result_data; }
/** * @author Manuel Will * @since 2013 * * @param string $moduleName * @param SAP_Table_Abstract $table */ public function setAppendTable($moduleName, SAP_Table_Abstract $table) { $tableName = $table->getName(); $dataSap = $this->getDataFromClass($table); $this->debug['tableAppend'][$tableName]['parameters'] = $dataSap; $this->debugCompressed['tableAppend'][$tableName]['parameters'] = $this->compressData($dataSap); $state = saprfc_table_append($this->getModuleResource($moduleName), $tableName, $dataSap); $this->debug['tableAppend'][$tableName]['successfully'] = (bool) $state; }
{ $interface = $def[$i]; if ($interface["type"] == "IMPORT") { $var="RFC_".$interface["name"]; saprfc_import ($fce,$interface["name"],$$var); // set import parameters } if ($interface["type"] == "TABLE") { saprfc_table_init ($fce,$interface["name"]); $var="RFC_TABLE_".$interface["name"]; $vararray = unserialize (urldecode($$var)); if (is_array($vararray)) { for ($j=0;$j<count($vararray);$j++) saprfc_table_append ($fce,$interface["name"],$vararray[$j]); } } } // rfc call function in connected R/3 $retval = @saprfc_call_and_receive ($fce); if ( $retval != SAPRFC_OK ) { print_error_message ( "Call error", "Calling of function module $function failed. See the error message below.<a href=\"saprfc_test.php?p=select\">Other function module</a>", saprfc_error() ); exit; } print_header ("Results of function module $function");
/** * Append row into internal table */ function Append($row) { if ($this->__CheckParams() == false) { return false; } unset($this->row); $this->row = array(); foreach ($this->rowStruct as $member) { if (is_array($row) && isset($row[$member])) { $this->row[$member] = $row[$member]; } else { $this->row[$member] = ""; } } return @saprfc_table_append($this->fce, $this->name, $this->row); }