Please enable JavaScript to view this site.

Prozess Designer

Die Datei bapi.php dient der Aufbereitung der input-Felder für die Weitergabe an das SAP-System und zum Behandeln der zurückgelieferten Daten.

<?php

 

class jobsapbapi_Z_ACC_DOCUMENT_POST

 extends BapiHandler

{

 private $nextItemNo;

 private $currencyAmount;

 

 public function __construct($webServiceId, $inputValues)

 {

         $this->nextItemNo = 1;

         $this->currencyAmount = array();

 

         parent::__construct($webServiceId, $inputValues);

 }

 ...

Der Klassenname entspricht dem Format jobsapbapi_<JobSAP-BAPI Bausteinname>. Die Klasse erweitert die JobRouter-Klasse BapiHandler. Sind zusätzliche Aktionen im Konstruktor notwendig, kann er überschrieben werden. Der Konstruktor der BapiHandler-Klasse muss auch aufgerufen werden.

Des Weiteren enthält die Klasse Funktionen, die für bestimmte Tabellen aus dem tables-Element die Feldwerte nach Bedarf aufbereiten. Hier können auch Abhängigkeiten zwischen Feldern aus verschiedenen Tabellen behandelt werden. Die Abarbeitung der Tabellen entspricht der Reihenfolge in der bapi.xml - Datei. Die Sichtbarkeit der Funktionen muss auf protected gesetzt werden, damit die BapiHandler-Klasse darauf zugreifen kann. Die Funktionsnamen entsprechen dem Format get<Tabellenname>. Als Eingabeparameter werden die Tabellenname und ein BapiDefinition-Objekt übergeben. Jede Funktion muss ein Array mit Daten für die jeweilige Tabelle zurück liefern.

protected function getACCOUNTPAYABLE($tableName, BapiDefinition $bapiDefinition)

{

 

 $inputParameters = array();

 $inputParameterRow = array();

 

 $tableInputFields = $bapiDefinition->getInputFields($tableName);

 

 foreach ($tableInputFields as $field) {

 

         $fieldName = $field['name'];

         $fieldType = $field['type'];

 

         $fieldValue = $this->getInputFieldValue($fieldName, $fieldType);

         $inputParameterRow[$fieldName] = $fieldValue;

 }

 

 $inputParameterRow['ITEMNO_ACC'] = $this->nextItemNo++;

 $inputParameters[] = $inputParameterRow;

 

 $currency = $this->getInputFieldValue('CURRENCY');

 $totalAmount = $this->getInputFieldValue('TOTAL_AMOUNT') * -1;

 $this->currencyAmount[] = array(

         'CURRENCY' => $currency, 'AMT_DOCCUR' => $totalAmount, 'ITEMNO_ACC' => $inputParameterRow['ITEMNO_ACC'],

         'AMT_BASE' => 0.00

 );

 return $inputParameters;

}

 

Die Funktion getOutputParameter kann überschrieben werden, um output-Feldern in passenden SAP-Felder zu überführen. Die Sichtbarkeit der Funktion muss auf protected gesetzt werden, damit die BapiHandler-Klasse darauf zugreifen kann.

protected function getOutputParameter($name)

{

 switch ($name) {

         case 'FISCALYEAR':

                 return 'OBJ_KEY';

                 break;

         case 'INVOICEDOCNUMBER':

                 return 'OBJ_KEY';

                 break;

         default:

                 throw new JobRouterException('Unknown name for userdefined output parameter: ' . $name);

                 break;

 }

}

Die Funktion getOutputValue kann überschrieben werden, um Rückgaben aus dem SAP-System in den passenden Tabellenfeldern in JobRouter zu speichern. Die Sichtbarkeit der Funktion muss auf public gesetzt werden, damit JobRouter-Klassen darauf zugreifen können.

public function getOutputValue($fieldName, $result)

{

 switch ($fieldName) {

         case 'FISCALYEAR':

                 $objectKey = $result['OBJ_KEY'];

                 return substr($objectKey, -4);

                 break;

         case 'INVOICEDOCNUMBER':

                 $objectKey = $result['OBJ_KEY'];

                 return substr($objectKey, 0, 10);

                 break;

         default:

                 throw new JobRouterException('Unknown field for userdefined output parameter: ' . $fieldName);

                 break;

 }

}

Hinweis: Für die Übergabe von Daten an das SAP-System werden für die Tabellen jeweils eine get<Tabellenname>-Funktion benötigt (Eingabeparameter und Eingabelisten). Die Übernahme von Daten aus dem SAP-System erfolgt anhand der Definition in der bapi.xml und der Konfiguration der Systemaktivität bzw. des Bausteins (Ausgabeparameter und Ausgabelisten).