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

La valeur du paramètre classification dépendra du niveau de paramétrage du lot '022' ou '022' (voir cours 11.01 Le paramétrage des lots (batchs))

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
©2022 - BeSAP.com - Tous droits réservés - Réalisation fantosap ! - Plan du site