Show TOC

Verteilungsmodell abfragenLocate this document in the navigation structure

Voraussetzungen

Analog zum synchronen Aufruf eines BAPIs werden im Verteilungsmodell die potentiellen Empfänger eines BAPI-Aufrufs definiert. Ist die Verteilung der Daten zusätzlich an Bedingungen geknüpft, werden diese Abhängigkeiten zwischen BAPIs oder zwischen BAPIs und Nachrichtentypen als Empfängerfilter definiert.

Für jeden dieser Empfängerfilter wurde vor der Pflege des Verteilungsmodells zunächst ein Filterobjekt angelegt, dessen Wert zur Laufzeit darüber entscheidet, ob die Bedingung erfüllt ist oder nicht.

Vorgehensweise

Das Abfragen des Verteilungsmodells untergliedert sich in die zwei Teilphasen Empfänger ermitteln und Aufruf des generierten Ausgangsfunktionsbausteins.

Empfänger ermitteln

Bevor die Empfängerermittlung durchgeführt werden kann, müssen die dem BAPI zugeordneten Filterobjekte bestimmt werden. Dabei ist zu unterscheiden, ob die Filterobjekte zur Laufzeit bekannt sind oder nicht. Sind die Filterobjekte zur Laufzeit bekannt, können sie bei der Empfängerermittlung direkt angegeben werden. Andernfalls wird der Funktionsbaustein ALE_BAPI_GET_FILTEROBJECTS zur Verfügung gestellt, der zu einem bestimmten BAPI die zugehörigen Filterobjekte ausliest.

Nachdem die Filterobjekte bestimmt worden sind, können die Empfänger ermittelt werden. Bei einem asynchronen BAPI-Aufruf wird vom Anwendungsprogramm der Funktionsbaustein ALE_ASYNC_BAPI_GET_RECEIVER verwendet. Dieser Baustein liefert eine Tabelle mit allen Empfängern zurück. Diese Tabelle enthält ausschließlich die logischen Empfängersysteme. Falls die Empfängerermittlung an Bedingungen geknüpft ist, müssen dem Funktionsbaustein die Werte der Filterobjekte mitgegeben werden, die zuvor ermittelt wurden.

Die Empfängerermittlung für ein aufzurufendes Remote-BAPI aus dem ALE-Verteilungsmodell sieht dabei prinzipiell wie folgt aus:

Programmbeispiel: Asynchrone Empfängerermittlung (Teil 1)

call function 'ALE_ASYNC_BAPI_GET_RECEIVER'
        exporting
                object = 'TESTFH01'
                method = 'SAVEREPLICA'
        tables
                receivers = receivers
                filterobject_values = filterobject_values
        exeptions
                error_in_filterobjects = 1
                error_in_ale_customizing = 2.
            

Weitere Informationen zur Empfängerermittlung finden Sie im ALE-Programmierleitfaden unter Empfänger für asynchrone BAPIs ermitteln.

Aufruf des generierten Ausgangsfunktionsbausteins

Sind die Empfänger ermittelt, muss differenziert werden, ob die Empfänger lokal oder remote sind. Für lokale Empfänger kann das BAPI direkt aufgerufen werden. Für remote-Aufrufe wird dagegen der generierte ALE-Ausgangsfunktionsbaustein ausgeführt und somit die Verarbeitung an die ALE-Schicht weitergeleitet. Diesem Funktionsbaustein werden die Daten für den BAPI-Aufruf und die Liste der erlaubten logischen Empfängersysteme mitgegeben. Folgendes Programmbeispiel veranschaulicht den Aufruf des ALE-Ausgangsfunktionsbausteins:

Programmbeispiel: Asynchroner Aufruf eines Remote-BAPIs (Teil 2)

call function 'ALE_TESTFH01_SAVEREPLICA'
        exporting
                key1 = 'SAP'
                key2 = '007'
        tables
                receivers = receivers
                application_objects = application_objects
        exceptions
                error_creating_idocs    =    1.
        .....
        call function 'DB_COMMIT'.
        call function 'DEQUEUE_ALL'.
        commit work.
            
Achtung

Nach dem Aufruf des Ausgangsfunktionsbausteins der generierten BAPI-ALE-Schnittstelle muss im Programmkontext ein COMMIT WORK erfolgen. Ein Datenbankcommit am Transaktionsende reicht nicht aus. Falls kein COMMIT WORK abgesetzt wird, wird das IDoc erzeugt und hat den richtigen Status, es wird aber nicht versendet.