J’essayais de penser à quelque chose à écrire ce week-end, quand je suis tombé par hasard sur ce joyau :
Après avoir arrêté de rire, j’ai commencé à pleurer, parce que j’ai réalisé que cela se produisait tout le temps dans SAP PI – c’est juste un peu différent…
Cependant, la plupart du temps, les mappages complexes peuvent être simplifiés en utilisant une approche différente. Le bloc de cartographie FixValues est un excellent outil pour réduire les inutiles. Développons donc cet exemple.
Réduire la complexité avec le bloc de mappage FixValues
Disons que je développe une interface entre une base de données contenant des informations sur les biens/matériaux et un fichier pour un système qui a besoin des données de la base de données dans un format facile à lire. Pour vous aider à visualiser, voici un pseudo-XML de la base de données :
<Database> <row> <goodName /> <goodType /> <goodQuantity /> </row> </Database>
Et voici un pseudo-XML de la présentation du fichier :
<Report> <row> <goodNumberUOM /> <goodName /> </row> </Report>
Dans cet exemple, la base de données classe les marchandises par un code de catégorie (A-Z). Le type de bien détermine l’unité de mesure. Dans ce scénario imaginaire, toutes les catégories sauf cinq ont peut-être des affectations d’unités de mesure. Tout le reste a l’unité de mesure du furlongs. Si nous convertissions les valeurs à l’aide de code (ABAP, peut-être ?), nous pourrions implémenter la logique à l’aide d’une instruction case :
CASE L_CATEGORY. WHEN 'D'. L_UOM = 'pounds'. WHEN 'C'. L_OUM = 'ounce'. WHEN 'B'. L_OUM = 'kilogram'. WHEN 'Y'. L_OUM = 'Units'. WHEN 'Q'. L_OUM = 'SQFT'. WHEN 'J'. L_OUM = 'Other unit of measure'. WHEN 'G'. L_OUM = 'Quarks'. WHEN 'F'. L_OUM = 'Kilograms'. WHEN 'E'. L_OUM = 'Units'. WHEN OTHERS. L_UOM = 'Furlongs'. ENDCASE.
Mais comment pourrions-nous accomplir la même chose en utilisant un mappage de messages SAP PI ? Eh bien, une option serait d’implémenter la logique avec des blocs IF imbriqués, mais cela a pour effet secondaire désagréable de produire le mappage de message désordonné présenté ci-dessus. Une autre option consiste à implémenter l’instruction case dans une UDF. Mais une option plus simple existe. Utilisez un bloc de mappage FixValues.
Voici la même logique de mappage utilisant un bloc de mappage FixValues :
Et voici les paramètres FixValues :
Une autre de mes astuces préférées consiste à utiliser FixValues pour évaluer VRAI et FAUX. Cela peut être utile pour le filtrage au niveau racine (par exemple, une exigence de ne pas envoyer d’enregistrement lorsque le bien est d’un type non pertinent pour le rapport que vous générez). Dans cet exemple de mappage, la ligne ne sera pas générée si le type n’est pas D, A, T, X, S, R, E ou M :
Et voici les paramètres FixValues :
Le bloc de mappage FixValues est un bloc de mappage de messages très utile qui peut être utilisé pour rationaliser les mappages de messages SAP PI complexes.