
lire la classification d'un objet (article, lot, client ...)
contexte
il arrive fréquemment d'avoir des besoins clients pour gérer des caractéristiques sur les objets standard pour stocker des informations critiques ou utile durant les cycles de production ou flux logistiques sans avoir réaliser des développements custom.
Nous illustrerons notre exemple avec la classification lot MM.
Contexte:
Certaines industries vont avoir besoin de stocker le ph d'un produit, son titrage (potency) ou toute autre information ayant une incidence directe sur la consommation ou la vente du lot. Dans 99% des cas, ces informations seront gérées via des caractéristiques de lot.
Inévitablement, il sera nécessaire de relire ces informations ultérieurement durant des flux ou du reporting. Il existe une méthode très simple pour retrouver ces caractéristique quelque soit la classes assignée au lot.
Implémentation
Le module function 'BAPI_OBJCL_GETCLASSES' vous permet de lire l'intégralité des caractéristiques d'un lot (celles qui sont renseignées) quelque soit la classe assignée au lot (ce qui évite d'autre requêtage).
Dans notre cas, nous l'appellerons avec le numéro de paramétrage avec les leading zéros s'il s'agit d'un format numérique ou des espaces dans le cas contraire jusqu'Ã obtenir on longueur de 18 charactères et en le concaténant avec le numéro de lot
CONSTANTS : w_class(3) TYPE c VALUE '001'.
DATA : w_key LIKE bapi1003_key-object.
DATA : w_object TYPE bapi1003_key-objecttable VALUE 'MCH1'.
DATA : ws_alloc LIKE bapi1003_alloc_list OCCURS 0 WITH HEADER LINE.
DATA : wt_char LIKE bapi1003_alloc_values_char OCCURS 0 WITH HEADER LINE.
DATA : wt_num LIKE bapi1003_alloc_values_curr OCCURS 0 WITH HEADER LINE.
DATA : wt_cur LIKE bapi1003_alloc_values_num OCCURS 0 WITH HEADER LINE.
DATA : wt_ret LIKE bapiret2 OCCURS 0.
CALL FUNCTION 'BAPI_OBJCL_GETCLASSES'
EXPORTING
objectkey_imp = <numéro article avec leading zero + numéro de lot>
objecttable_imp = w_object
classtype_imp = "023" => en fonction du niveau de gestion du lot
read_valuations = "X"
keydate = SY-DATUM
language = SY-LANGU
TABLES
alloclist = lt_alloclist
allocvalueschar = lt_char
allocvaluesnum = lt_num
allocvaluescurr = lt_curr
return = lt_retour.
IF sy-subrc EQ 0.
READ TABLE lt_char INTO ls_char WITH KEY CHARACT = <ma caractéristique> .
ENDIF.
Note importante, certaines caractéristiques numériques sont disponibles dans "allocvaluescurr" et non "allocvaluesnum" mais je n'ai jamais pris le temps de comprendre pourquoi. Si quelqu'un a une réponse, je serai intéressé :-)
mots clés :

article écrit et publié par
fantosap ! le 08.09.2022