веб-сервисы — SAP и php SOAP COMMIT

Я создал веб-сервис из BAPI в SAP, чтобы вставить некоторые AccountDocuments в SAP. Система в этих случаях нуждается в вызове COMMIT после успешного вызова вставки. Обе эти функции должны вызываться в «одном контексте».
Теперь я сталкиваюсь с проблемой, что я не знаю, как это сделать в PHP или есть ли способ сделать это?
Я создал следующий пример, но он не работает. Функция COMMIT выполняется, но не влияет на SAP. Я не вижу данных в базах данных, хотя первый вызов возвращает «Данные успешно зарегистрированы». Я знаю, что вы должны подтвердить это с помощью вызова COMMIT в SAP. В SE37 есть способ поместить 2 вызова функции в одну последовательность. Я ищу php-способ сделать это.

    function insertAccntDoc($accntgl, $currAmount, $docHeader, $accntTax)
{
#Define Authentication
$SOAP_AUTH = array( 'login'    => SAPUSER,
'password' => SAPPASSWORD);

$WSDL = "url_to_my_wsdl";

#Create Client Object, download and parse WSDL
$client = new SoapClient($WSDL, $SOAP_AUTH);

#Setup input parameters (SAP Likes to Capitalise the parameter names)
$params = array(
'AccountGl' => $accntgl,
'CurrencyAmount' => $currAmount,
'DocumentHeader' => $docHeader,
'AccountTax' => $accntTax
);

#Call Operation (Function). Catch and display any errors
try
{
$result = $client->AcctngDocumentPost($params);
$result = $client->BapiServiceTransactionCommit();
$result->Gebucht = 'Committed';

if(count($result->Return) > 1)
{
$client->BapiServiceTransactionRollback();
$result->Gebucht = 'Rollback';
}
else if($result->Return->item->Type == 'S')
{
try
{
$client->BapiServiceTransactionCommit();
$result->Gebucht = 'Committed';
}
catch(SoapFault $exception)
{
$client->BapiServiceTransactionRollback();
$result->Fehler = "***Caught Exception***<br>".$exception."<br>***END Exception***<br>";
$result->Gebucht = 'Fehler beim Committen';
}}
}
catch (SoapFault $exception)
{
$client->BapiServiceTransactionRollback();
$result->Fehler = "***Caught Exception***<br>".$exception."<br>***END Exception***<br>";
$result->Gebucht = 'Fehler beim Anlegen';

}

#Output the results
$result->FlexRet = 'insertAccntDoc';
return $result;
}

Спасибо!

0

Решение

Эта ссылка содержит подробную информацию о том, как использовать «веб-сервисы с отслеживанием состояния». Это необходимо для совместного сеанса.

http://scn.sap.com/thread/140909

0

Другие решения

Других решений пока нет …