Login a sap b1 desde php con di api

Buenos días,

Quiero consultar si conocen un ejemplo de una aplicación donde se haga login a sap b1 desde php utilizando di api.

Por ejemplo con este formulario

image

Al presionar el botón conectar se conecta pero al presionar el botón desconectar no funciona no lo desconecta.

En pocas palabras quiero hacer una app para login a sap b1.

De antemano gracias.

Código:

<html>
<head>
  <title>App SAP</title>
</head>
<body>
<h1>APP SAP DI API</h1>
    <form method="post" action ="indexLogin.php">
     Compañia: 
	<select name="DBCompany">
	<option value="0">Seleccione:</option>
	<?php
	$oCompany = new COM("SAPbobsCOM.Company")or die ("No connection");
        $oCompany->DBServerType = 7;
	$oCompany->Server = "Server";
	
	$oRecordSet = ("SAPbobsCOM.Recordset");
	$oRecordSet = $oCompany->GetCompanyList;
	
	if ($oCompany->GetLastErrorCode !==0 ) {
		 $lErrCode=0;
	     $sErrMsg="";
	     $oCompany->GetLastError($lErrCode, $sErrMsg);
	     echo '<option>'.$lErrCode." - ".$sErrMsg.'</option>';
	}
	Else{
		while(!$oRecordSet->EOF){
			echo '<option>'.$oRecordSet->Fields->Item(0)->Value.'</option>';
			$oRecordSet->MoveNext;
		 }
	    }
?></select><br><br>
	Usuario: <input type="text"name="User"><br><br>
	Clave: <input type="password"name="Pass"><br><br>
	<input type="submit" name="submit" value="Conectar a Sap">
  </form>
  <br>
<?php 
 
 if (isset($_POST['submit'])) 
 {
  set_time_limit(60);
   $oCompany->CompanyDB = $_REQUEST['DBCompany'];
   $oCompany->UserName = $_REQUEST['User'];
   $oCompany->Password = $_REQUEST['Pass'];
   $oCompany->language = 25;
   $oCompany->UseTrusted = False;
   
   $lRetCode = $oCompany->Connect();
if ($lRetCode != 0){
	$lErrCode=0;
	$sErrMsg="";
	$oCompany->GetLastError($lErrCode, $sErrMsg);
	echo "ERROR: (".$lErrCode.") ".$sErrMsg;
}else{
	echo "Conectado a: ".$oCompany->CompanyName." Version: ".$oCompany->Version;
	
}

 }
 echo '<br><br>';
 
    if (!$oCompany->Connected)
   {
	 Echo "No hay conexión"; 
   }
   else 
   {
	 //$oCompany->Disconnect();  
	 Echo "Conectado";   
   }
?>
<form method="post" action ="indexLogin.php">
  <input type="submit" name="Desconectar" value="Desconectar">
</form>
<?php 

 if (isset($_POST['Desconectar']))
 {

    if (!$oCompany->Connected)
   {
	 Echo "¡No hay conexión"; 
   }
   else 
   {
	 $oCompany->Disconnect();  
	 Echo "Desconectado";   
   }
  }
?>
</body>
</html>

Hola @YesidG
El problema que mencionas no esta en el DI-API, sino en el php y parte de los fundamentos de html, ya que al marcar el botón de desconectar se actualiza el formulario, por lo cual la información de la variable oCompany ya no existe. Te recomiendo leer sobre variables de sesión o utilizar alguna librería como jquery.

Andres Ramirez Jaramillo :colombia:

1 me gusta

Hola @andresramirez,

Muchas gracias por tu ayuda, efectivamente estoy intentando con la La función PHP session_start pero no logre que mu funcione, no se si conozcas algún ejemplo de como guardar la variable oCompany y que no se pierda, yo estoy intentando algo como esto:

session_start();
	 
	$_SESSION["Company"] = new COM("SAPbobsCOM.Company")or die ("No connection");
	
    $_SESSION["Company"]->DBServerType = 7;
  etc

Y buenas idea lo de Jquery voy a investigar.

Gracias y saludos

Buenas tardes.

Agregaste los PDO para la conexión a SQL Server ??

1 me gusta

Hola @Jesus_V,

No, no es conexión a base de datos es conexión a Sap con di api para insertar o actualizar información.

1 me gusta

Este tema se cerró automáticamente 30 días después de la última publicación. No se permiten nuevas respuestas.