Esempio n. 1
4
 public function callFunctionTest()
 {
     $rfc = $this->open();
     $fce = saprfc_function_discover($rfc, 'ZBAPI_RECEIVING');
     if (!$fce) {
         echo 'Discovering interface of function module ZBAPI_RECEIVING failed';
         exit;
     }
     saprfc_import($fce, RSINPUT, array('ZEX_VBELN' => '1500000000', 'KUNNR' => 'ANGELITO', 'MATNR' => 'ANGELITO0002', 'LFIMG' => '5.000', 'CHARG' => '1427279260', 'WERKS' => 'BBL2', 'LFART' => 'ZEL', 'LGORT' => 'B201', 'XABLN' => 'ZXY12345', 'WADAT' => '04/25/2015', 'WDATU' => '04/25/2015', 'HSDAT' => '04/03/2014', 'VFDAT' => '04/05/2015', 'CRATES_IND' => '', 'EXIDV' => '', 'VHILM' => '36', 'VHILM2' => '36', 'REMARKS' => 'TEST', 'LAST_ITEM_IND' => ' '));
     saprfc_import($fce, 'PRINTER', 'ZWI6');
     saprfc_table_init($fce, 'ET_PALLETS');
     saprfc_table_init($fce, 'ET_PALLETS_W_TO');
     $sn = saprfc_export($fce, 'VBELN');
     $ol = saprfc_export($fce, 'OBJECT_LOCKED');
     $nc = saprfc_export($fce, 'NOT_COMPATIBLE');
     $vc = saprfc_export($fce, 'VOLUME_CAP_ERROR');
     $oe = saprfc_export($fce, 'OTHER_ERROR');
     if (saprfc_call_and_receive($fce) == SAPRFC_OK) {
         echo '<h2>Pulled Data</h2>';
         echo 'SAP #:' . $sn . '<br />';
         echo 'Object Locked:' . $ol . '<br />';
         echo 'Not Compatible:' . $nc . '<br />';
         echo 'Volume Cap Error:' . $vc . '<br />';
         echo 'Other Error:' . $oe . '<br />';
     }
     $data_et_pallets = saprfc_table_rows($fce, 'ET_PALLETS');
     $data_et_pallets_w_to = saprfc_table_rows($fce, 'ET_PALLETS_W_TO');
     $this->close($fce, $rfc);
 }
Esempio n. 2
0
 private function initTable($n)
 {
     if (!isset($this->init[$n])) {
         saprfc_table_init($this->func, $n);
         $this->init[$n] = true;
     }
 }
Esempio n. 3
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);
 }
Esempio n. 4
0
 /**
  * Copy class variables to the interface function module
  *
  */
 function ExportVars()
 {
     if ($this->def == false) {
         return;
     }
     for ($i = 0; $i < count($this->def); $i++) {
         $interface =& $this->def[$i];
         $name = strtoupper($interface[name]);
         $type = $interface[type];
         $members =& $interface[def];
         if ($type != "TABLE" && $members[0][name] != "") {
             $type .= "_STRUCT";
         }
         switch ($type) {
             case 'IMPORT':
                 if ($this->server == false) {
                     if (isset($this->{$name})) {
                         $rc = @saprfc_import($this->fce, $name, $this->{$name});
                     } else {
                         $rc = @saprfc_import($this->fce, $name, "");
                     }
                     assert($rc);
                 }
                 break;
             case 'IMPORT_STRUCT':
                 if ($this->server == false) {
                     $vars = array();
                     for ($j = 0; $j < count($members); $j++) {
                         $mname = $members[$j][name];
                         $mstruct =& $this->{$name};
                         if (isset($this->{$name}) && isset($mstruct[$mname])) {
                             $vars[$mname] = $mstruct[$mname];
                         } else {
                             $vars[$mname] = "";
                         }
                     }
                     $rc = @saprfc_import($this->fce, $name, $vars);
                     assert($rc);
                     unset($vars);
                 }
                 break;
             case 'EXPORT':
                 if ($this->server == true) {
                     if (isset($this->{$name})) {
                         $rc = @saprfc_server_export($this->fce, $name, $this->{$name});
                     } else {
                         $rc = @saprfc_server_export($this->fce, $name, "");
                     }
                     assert($rc);
                 }
                 break;
             case 'EXPORT_STRUCT':
                 if ($this->server == true) {
                     $vars = array();
                     for ($j = 0; $j < count($members); $j++) {
                         $mname = $members[$j][name];
                         $mstruct =& $this->{$name};
                         if (isset($this->{$name}) && isset($mstruct[$mname])) {
                             $vars[$mname] = $mstruct[$mname];
                         } else {
                             $vars[$mname] = "";
                         }
                     }
                     $rc = @saprfc_server_export($this->fce, $name, $vars);
                     assert($rc);
                     unset($vars);
                 }
                 break;
             case 'TABLE':
                 if (!isset($this->{$name}) || !is_object($this->{$name})) {
                     @saprfc_table_init($this->fce, $name);
                 }
                 break;
         }
         //switch
     }
     //for
 }
Esempio n. 5
0
 function setTable($fieldName, $value)
 {
     global $rfc, $fce;
     saprfc_table_init($fce, $fieldName);
     saprfc_table_append($fce, $fieldName, $value);
 }
Esempio n. 6
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;	
	}
Esempio n. 7
0
   $rfc = saprfc_open ($LOGIN);
   if (! $rfc )
   {
       echo "RFC connection failed with error:".saprfc_error();
       exit;
   }

   $fce = saprfc_function_discover($rfc, "RFC_READ_REPORT");
   if (! $fce )
   {
       echo "Discovering interface of function module RFC_READ_REPORT failed";
       exit;
   }

   saprfc_import ($fce,"PROGRAM",$REPORT);
   saprfc_table_init ($fce,"QTAB");

   $rc = saprfc_call_and_receive ($fce);
   if ($rfc_rc != SAPRFC_OK)
   {
       if ($rfc == SAPRFC_EXCEPTION )
           echo ("Exception raised: ".saprfc_exception($fce));
       else
           echo ("Call error: ".saprfc_error($fce));
       exit;
   }
   
   $SYSTEM = saprfc_export ($fce,"SYSTEM");
   $TRDIR = saprfc_export ($fce,"TRDIR");
   $rows = saprfc_table_rows ($fce,"QTAB");
   echo "<PRE>";
Esempio n. 8
0
 /**
  * @author Manuel Will
  * @since 2013
  *
  * @param SAP_Module_Abstract $module
  */
 public function reset(SAP_Module_Abstract $module)
 {
     $this->debug = array('Funktions-Baustein' => $module->getModuleName());
     $this->debugCompressed = array('Funktions-Baustein' => $module->getModuleName());
     $this->tableLoop = array();
     $this->moduleResource = null;
     foreach (array_keys($module->getTables()) as $tableName) {
         @saprfc_table_init($this->getModuleResource($module->getModuleName()), $this->getLastClassPrefix($tableName));
     }
 }
Esempio n. 9
0
   }
}

if ( $p == "call" )              // set input parameters and tables, call function module, show results
{
      for ($i=0;$i<count($def);$i++)
      {
         $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>",
Esempio n. 10
0
 /**
  * Init internal table
  */
 function Init()
 {
     if ($this->__CheckParams()) {
         return @saprfc_table_init($this->fce, $this->name);
     }
 }