Appels sans références au système logique 

Le système HR transmet les résultats de paie à la gestion comptable. Les documents appropriés y sont enregistrés. Le document HR n’a pas de référence au document créé dans la gestion comptable.

La méthode à appeler est nommée, par exemple, ACDoc.Display. ACDoc.Display n’a pas d’objets filtres. La zone HRKPF-DOCNR contient l’ID du document HR.

Comme le système logique ne peut pas être identifié ici, le système logique cible doit être défini à partir du modèle de répartition.

Le code source ci-dessous montre comment l’affichage du document comptable est appelé à partir de l’affichage du document HR :

 

...

DATA:

HEAD LIKE HRKPF,

SERVER LIKE BDBAPIDEST,

RETURN LIKE BAPIRET2,

MSG_TXT(80) TYPE C.

FILTER_VALUES LIKE BDI_FOBJ OCCURS 0 WITH HEADER LINE.

...

 

* obtient le système logique et la destination RFC pour le Remote Method Call

 

* aucun objet filtre n’est utilisé

REFRESH FILTER_VALUES.

 

* appelle le système serveur à partir du modèle de répartition ALE

CALL FUNCTION ‘ALE_BAPI_GET_UNIQUE_RECEIVER’

EXPORTING

OBJECT = ‘ACDOC’

METHOD = ‘DISPLAY’

IMPORTING

RECEIVER = SERVER

TABLES

FILTEROBJECTS_VALUES = FILTER_VALUES.

EXCEPTIONS

ERROR_IN_FILTEROBJECTS = 1

ERROR_IN_ALE_CUSTOMIZING = 2

NOT_UNIQUE_RECEIVER = 3

NO_RFC_DESTINATION_MAINTAINED = 4

OTHERS = 5.

 

IF SY-SUBRC <> 0.

IF SY-SUBRC = 4.

* message d’application spécifique indiquant que le document ne peut pas être affiché

...

ELSE.

* erreur grave

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

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

ENDIF.

ENDIF.

 

* appel de la fonction d’affichage Si SERVER_DEST est initial, il s’agit d’un appel local.

CALL FUNCTION ‘BAPI_HRDOC_DISPLAY’

DESTINATION SERVER-RFCDEST

EXPORTING

DOCUMENT_ID = HEAD-DOCNR

IMPORTING

RETURN = RETURN

EXCEPTIONS

COMMUNICATION_FAILURE = 1 MESSAGE MSG_TXT

SYSTEM_FAILURE = 2 MESSAGE MSG_TXT.

 

IF SY-SUBRC <> 0.

* gère les exceptions distantes

MESSAGE E777(B1) WITH

‘HRDoc.Display’ HEADER-AWSYS MSG_TXT(50) MSG_TXT+50(30).

ELSEIF NOT RETURN-TYPE IS INITIAL.

* gère le paramètre de retour

...

ENDIF.

 

Cet exemple n’utilise pas les objets filtres. Si des objets filtres existent pour la méthode objet à appeler, le modèle de répartition doit être interrogé en conséquence.