====== iDoc ====== ===== Infos technique ===== [[http://web.archive.org/web/20141023161406/https://help.sap.com/saphelp_erp2004/helpdata/en/b9/c5b13bbeb0cb37e10000000a11402f/content.htm|Doc SAP]] Modules fonction appelés pour le routage technique lors de la réception d'idocs (inbound donc) : * ''IDOC_INBOUND_ASYNCHRONOUS'' pour les transfert immédiats * ''IDOC_INBOUND_IN_QUEUE'' pour les queues ===== Extension ===== L'extension d'idoc requière les étapes suivantes : __NB__ : Les définitions des segments et des types peuvent être //released// ou //not released//. Dans le cas d'objets déjà //released//, il faut se demander s'il vaut mieux modifier l'existant ou créer de nouveaux objets (si un segment est utiliser dans de nombreux types d'idoc et qu'il ne doit pas être changé partout, il vaut mieux faire une nouvelle version. Dans le cas contraire, on peut se permettre de modifier la version existante en faisant ''Edit'' > ''Cancel release''). __NB__ : Les transaction suivantes sont disponibles dans le menu ''wedi'' > ''Development'' ==== Définition du segment ==== En ''WE31'', créer ou éditer le segment. Ajouter/enlever/modifier les champs. Sauvegarder. Releaser. ==== Définition du type d'idoc ==== En ''WE31'', créer ou éditer le type. Ajouter/enlever/modifier les segments. Sauvegarder. Releaser. ==== Lier l'extension au type d'idoc et au type de message ==== Créer le type de message en ''WE81'' si nécessaire. Lier le type de base et l'extension en ''WE82''. ==== Alimentation des idocs ==== Une fois toutes les définitions créées et liées, il faut alimenter les champs des nouveaux segments via un user exit. Exemple sur la fiche client : le user-exit ''VSV00001'', FM ''EXIT_SAPLVV01_001''. Le user-exit est appelé sur chaque segment. Il faut vérifier le message type et l'idoc type puis le segment. A chaque segment on accède aux data des segments précédents. Pour alimenter un segment spécifique, il faut veiller à l'insérer dans la table représentant l'idoc au bon endroit (c'est-à-dire en respectant notamment la définition de l'idoc en ''WE30''). Si l'alimentation de ce segment nécessite des données qui ne sont pas encore présentes au moment d'insérer le segment, il faut tout de même insérer le segment spécifique. Lorsque le segment nécessaire sera disponible, on mettra à jour le segment spécifique (via un field-symbol, par exemple). [[http://ginkobox.fr/vamp/index.php?snippet=54b400763373f|Exemple]]