SAP però mette a disposizione l'ampliamento M61X0001, per definire dei filtri personalizzati, in modo che l'elaborazione MRP possa lavorare solo su alcuni codici materiale.
Nel nostro caso abbiamo un MRP massivo che gira esternamente a SAP (su uno schedulatore a capacità finita: J-Flex), ma abbiamo anche dei materiali, gestiti a scorta minima, per i quali vogliamo che l'MRP venga elaborato in SAP.
Per il lancio massivo ci sono queste 2 transazioni
MD01 esecuzione on-line
MDBT esecuzione in background e schedulazione dei job
i campi di input sono gli stessi, vediamo la pagina di lancio nella MD01
non c'è una selezione di codici, ma la possibilità di attivare la User-Exit tramite una chiave.
Io ho creato queste 2 differenti modi di selezione dei codici:
Tramite il gruppo di pianificazione oppure per Responsabile MRP, sono attributi dell'anagrafica materiale che potete trovare nella view Pianificazione MRP 1:
per inserire le voci della Exit si deve lavorare a livello di customizing:
queste le mie definizioni:
per definire le Exit transazione SMOD
Per motivi tecnici ci sono due differenti FM (le User-exit possono fare riferimento ad un solo programma principale) ma che dovrebbero puntare allo stesso codice, altrimenti si avrebbero comportamenti differenti a seconda del tipo di lancio:
EXIT_SAPMM61X_001 - per la pianificazione senza l'esecuzione parallela
EXIT_SAPLM61C_001 - per la pianificazione con l'esecuzione parallela
Parametri di ingresso:
USER_KEY
La chiave di controllo della Exit
USER_PARAMETER
Il valore del parametro passato dall'utente
Parametri di ritorno:
NO_PLANNING -
se NO_PLANNING = 'X' il materiale in elaborazione non viene pianificato
STOP_PLANNING
se STOP_PLANNING = 'X', il materiale in elaborazione non viene pianificato e l'elaborazione si ferma.
Per attivare il codice:
Doppio click su una delle due righe, per esempio EXIT_SAPMM61X_001, si apre la definizione della relativa funzione:
quindi doppio click sul nome dell'include.
A questo punto, se non è ancora stata creata, viene chiesto conferma per la creazione:
altrimenti, se già è stata creata, si viene portati direttamente alla sua definizione:
questo il codice contenuto nella include:
*&---------------------------------------------------------------------*
*& Include ZXM61U01
*&---------------------------------------------------------------------*
* Autore : Fabio Giacobbe - 18/10/2013
* Descrizione: Exit per elaborazione MRP massiva per:
* GPP : gruppo di pianificazione
* MRP : responsabile MRP
*&---------------------------------------------------------------------*
DATA: ZDISPO LIKE MT61D-DISPO,
ZDISGR LIKE MT61D-DISGR,
UXPAR LIKE USER_PAR.
CLEAR: NO_PLANNING, STOP_PLANNING,
ZDISPO, UXPAR, ZDISGR.
CASE USER_KEY.
*----------------------------------------------------------------------*
* Selezione dei materiali per responsabile MRP (passato come parametro)
*----------------------------------------------------------------------*
WHEN 'MRP'.
UXPAR = USER_PAR.
CONDENSE UXPAR.
WRITE UXPAR+0(3) TO ZDISPO.
IF ZDISPO IS INITIAL.
EXIT.
ENDIF.
IF MT61D-DISPO <> ZDISPO.
NO_PLANNING = 'X'.
ENDIF.
*----------------------------------------------------------------------*
* Selezione dei materiali per Gruppo di Pianificazione
*----------------------------------------------------------------------*
when 'GPP'.
UXPAR = USER_PAR.
CONDENSE UXPAR.
WRITE UXPAR+0(4) TO ZDISGR.
IF ZDISGR IS INITIAL.
EXIT.
ENDIF.
IF MT61D-DISGR <> ZDISGR.
NO_PLANNING = 'X'.
ENDCASE.
La funzione EXIT_SAPLM61C_001 punta invece all'include ZXM61U02, dove io ho inserito nuovamente il richiamo alla include iniziale (ZXM61U01) che contiene il codice vero e proprio.
Note:
Note:
- Si possono trovare degli esempi di codice nel programma LXM61F01.
- I parametri passati per filtrare i codici non vengono, in nessun modo, usati come chiavi di selezione nel database. Questo significa che l'elaborazione si passa comunque tutti i codici materiali della divisione, non pianificando quelli che non soddisfano i criteri inseriti. Non aspettatevi quindi, sebbene magari i codici da elaborare siano pochi, una esecuzione rapidissima; stiamo parlando comunque di qualche minuto su un totale di oltre 100.000 materiali di cui qualche centinaio da pianificare.
Nessun commento:
Posta un commento