【问题标题】:Save oCompany object to reusable variable, Sap b1 Di Api将 oCompany 对象保存到可重用变量 Sap b1 Di Api
【发布时间】:2021-03-08 20:40:10
【问题描述】:

您好,我想看看是否有人知道如何将 oCompany 变量保存在 cookie 或会话中以供重复使用

例如使用此代码:

按下连接按钮连接但按下断开按钮不起作用,它不会断开连接,因为 oCompany 变量不再存在。

谢谢

    <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
php

【问题讨论】:

  • 在生成断开连接表单时,您有$oCompany$_REQUEST['DBCompany'] 等。因此,在断开连接表单中包含重新生成$oCompany 所需的任何内容作为隐藏字段,这样当处理断开连接的 POST,您可以像提交连接表单时一样设置$oCompany。 PS - 如果你能创建一个minimal, complete, and verifiable example,你会让人们更容易提供帮助。

标签: php sap-business-one-di-api


【解决方案1】:

对于与 SAP 业务的网站连接,您应该使用 DiServer 或服务层。

在这两个 API 中,您都使用用户/密码登录来获取令牌。此令牌是您必须存储在会话中的内容。那么任何调用都可以通过使用令牌来完成。


PS:我个人建议您在可用时使用服务层。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多