Anfang des Inhaltsbereichs

Aufruf mit Referenz auf logisches System  Dokument im Navigationsbaum lokalisieren

Beispiel

Das HR leitet Abrechnungsergebnisse in das Rechnungswesen weiter. Dort werden entsprechende Belege gebucht. Jeder Beleg im Rechnungswesen referenziert auf den Ursprungsbeleg im HR. Die Referenz enthält auch das logische System, auf dem der HR-Beleg erzeugt worden ist.

Die zu rufende Methode heißt beispielsweise HRDoc.Display. Die Kennung des Referenzbelegs im HR steht im Feld BKPF-AWREF und das logische System im Feld BKPF-AWSYS.

Der Aufruf der HR-Beleganzeige aus der Beleganzeige im Rechnungswesen ist wie folgt zu implementieren:

...

DATA:

HEAD LIKE BKPF,

RETURN LIKE BAPIRET2,

SERVER_DEST LIKE TBLSYSDEST-RFCDEST,

MSG_TXT(80) TYPE C.

...

* get RFC-Destination for remote method call

CALL FUNCTION 'OBJ_METHOD_GET_RFC_DESTINATION'

EXPORTING

OBJECT_TYPE = 'HRDOC'

METHOD = 'DISPLAY'

LOGICAL_SYSTEM = HEAD-AWSYS

IMPORTING

RFC_DESTINATION = SERVER_DEST

EXCEPTIONS

NO_RFC_DESTINATION_MAINTAINED = 1

ERROR_READING_METHOD_PROPS = 2

OTHERS = 3.

IF SY-SUBRC <> 0.

IF SY-SUBRC = 1.

* application specific message saying document can't be displayed

...

ELSE.

* hard error

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDIF.

* call display function. If SERVER_DEST is initial, it's a local call.

CALL FUNCTION 'BAPI_HRDOC_DISPLAY'

DESTINATION SERVER_DEST

EXPORTING

DOCUMENT_ID = HEAD-AWREF

IMPORTING

RETURN = RETURN

EXCEPTIONS

COMMUNICATION_FAILURE = 1 MESSAGE MSG_TXT

SYSTEM_FAILURE = 2 MESSAGE MSG_TXT.

IF SY-SUBRC <> 0.

* handle remote exceptions

MESSAGE E777(B1) WITH

'HRDoc.Display' HEAD-AWSYS HEADER-AWSYS

MSG_TXT(50) MSG_TXT+50(30).

ELSEIF NOT RETURN-TYPE IS INITIAL.

* handle return parameter

...

ENDIF.

Die Nachricht B1 777 ist eine generische Nachricht. Statt dessen kann auch eine applikationsspezifische Nachrichten verwendet werden.