Bonjour à tous !
Le post d’aujourd’hui abordera la gestion des adresses dans SAP. J’ai récemment eu à m’y frotter, et puisque les adresses sont des données de base relativement critiques, il est bien évidemment impensable d’effectuer un direct input, à savoir une modification directe des tables (via une requête SQL). Il va donc être question ici de quelques modules fonctions à utiliser pour modifier des adresses dans SAP.
1. Adresse d’un partenaire commercial (BP – business partner)
Partons du principe que l’on souhaite modifier une adresse d’un partenaire dont on connaît le numéro (champ PARTNER de la table BUT000). Pour cet exemple, nous mettrons à jour le nom de la rue uniquement.
Dans un premier temps, il est nécessaire de récupérer le GUID (globally unique identifier) de l’adresse ciblée (car un partenaire peut avoir plusieurs adresses).
Pour cela, le module fonction BAPI_BUPA_ADDRESSES_GET peut servir : il prend en entrée le n° de partenaire et retourne la liste des adresses, incluant notamment leur GUID.
Ensuite, on utilisera le bien nommé module fonction BAPI_BUPA_ADDRESS_CHANGE.
Il prend en entrée d’une part le n° de partenaire ainsi que le GUID de l’adresse concernée, mais d’autre part une double structure contenant les champs d’adresse à modifier.
Cette double est composée d’un côté des champs proprement dits, à valoriser avec leur nouvelle valeur (ici : uniquement le champ STREET) ; et de l’autre côté, nous avons une structure contenant les mêmes noms de champs, chacun à alimenter avec la valeur « X » pour activer la mise à jour du champ.
Pour illustrer, on aura donc :
ADDRESSDATA-STREET = ‘nouvelle rue’ et ADDRESSDATA_X-STREET = ‘X’.
Dernière étape, exécuter un COMMIT WORK pour appliquer les modifications à la base de données (on utilise généralement le module fonction BAPI_TRANSACTION_COMMIT).
Et c’est tout ! L’adresse est maintenant mise à jour, du moins si tout s’est bien passé…
2. Adresse d’un fournisseur
SAP étant tellement bien fait, l’adresse d’un fournisseur est redondée. Elle est en effet stockée dans la table ADRC, mais elle est aussi répliquée dans la table LFA1. Je n’ai à ce jour pas trouvé de module fonction unique pour effectuer la mise à jour de l’adresse d’un fournisseur. La méthode ci-dessous effectuera d’une part la mise à jour de l’adresse version ADRC, et d’autre part la mise à jour de l’adresse version LFA1.
Le module fonction ADDR_UPDATE se charge de mettre à jour l’adresse stockée dans la table ADRC.
Il prend en entrée les données d’adresse modifiées quasi au même format que dans la table ADRC, et le numéro de cette adresse (champ ADDRNUMBER de la table ADRC).
Si aucune erreur ne survient, il suffira d’appeler dans la foulée le module fonction ADDR_MEMORY_SAVE qui agira, entre autres, comme un COMMIT WORK.
La seconde étape de cette mise à jour consiste à appeler le module fonction VENDOR_UPDATE qui prendra en entrée deux structures au format de la table LFA1. La première correspond aux nouvelles données, la seconde aux anciennes.
Et c’est tout !
J’espère que ces quelques informations seront utiles. Il n’est finalement pas si compliqué que cela de faire des mises à jour d’adresse dans SAP.