Example #1
0
 /**
  * Accept incoming RFC connection (for RFC server)
  *
  * @param [progid]         PROGRAM ID
  * @param [gwhost]         SAP gateway host
  * @param [gwserv]         SAP gateway service
  *                         if parameters is no set, $argv
  *                         is used
  *
  * @return SAPRFC_OK on success, <> SAPRFC_OK on failure
  */
 function Accept($progid = "", $gwhost = "", $gwserv = "")
 {
     global $argv;
     if ($this->rfc) {
         $this->Close();
     }
     if (empty($progid) && empty($gwhost) && empty($gwserv)) {
         for ($i = 0; $i < count($argv); $i++) {
             switch ($argv[$i]) {
                 case '-a':
                     $progid = $argv[$i + 1];
                     break;
                 case '-g':
                     $gwhost = $argv[$i + 1];
                     break;
                 case '-x':
                     $gwserv = $argv[$i + 1];
                     break;
             }
         }
         $this->rfc = @saprfc_server_accept($argv);
     } else {
         $this->rfc = @saprfc_server_accept("-a {$progid} -g {$gwhost} -x {$gwserv}");
     }
     if ($this->rfc == false) {
         return $this->SetStatus(SAPRFC_ERROR, @saprfc_error());
     }
     $this->serverReg = array("progid" => $progid, "gwhost" => $gwhost, "gwserv" => $gwserv);
     if ($this->trace) {
         $this->EnableTrace();
     } else {
         $this->DisableTrace();
     }
     if (!empty($this->codePage)) {
         $this->SetCodePage($this->codePage);
     }
     return $this->SetStatus(SAPRFC_OK, "");
 }
Example #2
0
function main($argc, $argv)
{
  global $rfc_handle, $tid_file, $lock_file, $datetime, $trace_fp, $stderr;
  global $working_dir;

  $stderr = fopen ("php://stderr","a");

  if ($argc == 1)
  {
    help();
    exit();
  }

  /*------------------------------------------------------------------*/
  /* Output argument list                                             */
  /*------------------------------------------------------------------*/

  fputs ($stderr,sprintf("\nargc    = %d", $argc));
  for ($i=0; $i<$argc; $i++)
   fputs ($stderr,sprintf("\nargv[%d] = '%s'", $i, $argv[$i]));
  fflush($stderr);

  /*------------------------------------------------------------------*/
  /* Get working directory and names of TID- and LOCK-file            */
  /*------------------------------------------------------------------*/
  $working_dir = getenv("TRFC_WORK_DIR");
  if (! empty ($working_dir) ) $working_dir.="/";
  $tid_file = $working_dir."trfcserv.tid";
  $lock_file = $working_dir."trfcserv.lck";

  if (getenv ("TRFC_TRACE") != "" && getenv ("TRFC_TRACE") != "0")
  {
      create_file_name ($trace_file);
      $trace_file.=".trc";
      $trace_fp = fopen ($trace_file,"a");
  }
  else
      $trace_fp = false;

  $tbuf = "\n********************************\n";
  $datetime = date("D M j G:i:s Y");
  $tbuf .= sprintf("*   %s   *\n", $datetime);
  $tbuf .= "********************************\n";
  TRFC_trace($tbuf);

  /*------------------------------------------------------------------*/
  /* Initialize the TID management                                    */
  /*------------------------------------------------------------------*/
  init_TID();

  /*------------------------------------------------------------------*/
  /* Accept RFC-Connection                                            */
  /*------------------------------------------------------------------*/
  $tbuf = "\n<==  RfcAccept                           rfc_handle = ";
  TRFC_trace($tbuf);

  $rfc_handle = saprfc_server_accept ($argv);

  if ($rfc_handle == false)
  {
    $tbuf = "RFC_HANDLE_NULL";
    TRFC_trace($tbuf);
    rfc_error("RfcAccept");
  }
  $tbuf = sprintf("%u", $rfc_handle);
  TRFC_trace($tbuf);

  /*------------------------------------------------------------------*/
  /* Install offering functions                                       */
  /*------------------------------------------------------------------*/
  $rfc_rc = install();
  if( $rfc_rc != SAPRFC_OK )
    exit;

  /*------------------------------------------------------------------*/
  /* Wait for Remote Function Call                                    */
  /*------------------------------------------------------------------*/
  do
  {
    $tbuf = "\n\nWait for next RFC call .....";
    TRFC_trace($tbuf);

    $rfc_rc = saprfc_trfc_dispatch($rfc_handle,$GLOBAL_FCE_LIST);

    $tbuf = sprintf("\n<==  RfcDispatch              rfc_rc = %d", $rfc_rc);
    TRFC_trace($tbuf);

  } while ($rfc_rc == SAPRFC_OK);

  if ($trace_fp != false)
    fclose($trace_fp);

  exit;
}
Example #3
0
   $GLOBAL_FCE_LIST[RFC_READ_REPORT] = saprfc_function_define(0,"RFC_READ_REPORT",$DEF_RFC_READ_REPORT);

// PHP server function
   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);
   }


// Call script with: ./server.php -a phpgw -g hostname -x sapgw00

   $rfc = saprfc_server_accept ($argv);

// Dispatch one function call
   $rc = saprfc_server_dispatch ($rfc,$GLOBAL_FCE_LIST);

   saprfc_close ($rfc);
?>