Calls With References to the Logical System
HR forwards payroll results to Accounting. Here the appropriate documents are posted. Each document in Accounting has a reference to the source document in HR. The logical system in which the HR document was created is included in the reference.
The method to be called is named, for example, HRDoc.Display. The field BKPF-AWREF contains the ID of the reference document in HR and the field BKPF-AWSYS contains the name of the logical system.
The source code below shows how the HR document display is called the from the document display in Accounting:
...
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 cannot 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.
The message B1 777 is a generic message. An application-specific message could be used instead.