Beispiel #1
0
 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);
 }
Beispiel #2
0
 function setTable($fieldName, $value)
 {
     global $rfc, $fce;
     saprfc_table_init($fce, $fieldName);
     saprfc_table_append($fce, $fieldName, $value);
 }
Beispiel #3
0
 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));
 }
Beispiel #4
0
	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;	
	}
Beispiel #5
0
 /**
  * @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;
 }
Beispiel #6
0
      {
         $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");
Beispiel #7
0
 /**
  * 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);
 }