domenica 29 marzo 2020

SAP EHP8: Velocizzare lettura movimenti magazzino per materiale-data.

Le informazioni relative ai movimenti di magazzino sono contenute in 2 tabelle principali:

MKPF Testata doc. materiale
MSEG Segmento doc. materiale

Prima dell'ultimo aggiornamento a EHP8 c'era questo problema:

La data di registrazione del movimento era contenuta nella tabella di testata, il codice materiale e tutti i dettagli nella tabella "segmento".

Molto spesso però si devono lanciare report o query che interrogano il DB per materiale-data.


Qui le strade erano due:

  1. si scorre la tabella MSEG per materiale, leggendo TUTTI i record, poi per ogni record si va in testata e si controlla con il range di date filtro altrimenti si scarta.
  2. si scorre la tabella MKPF per data di registrazione, leggendo TUTTI i record di tutti i movimenti, poi per ogni record si controlla nella tabella MSEG se il documento contiene anche il materiale di filtro, altrimenti si scarta.

oppure, terza possibilità, era fare una Join MKPF-MSEG lasciando la scelta al DB che però opera in modo statistico e il tempo impiegato era talvolta imprevedibile (utenti lamentavano che, da un giorno all'altro, la stessa query a volte impiegava pochi secondi, altre volte qualche minuto!).

Con l'aggiornamento a EHP8 SAP ha deciso di duplicare le informazioni relative alla data di registrazione anche nella tabella MSEG con le posizioni del documento:


costruendo anche degli indici appositi:


Ero convinto che la procedura di aggiornamento di release attivasse i nuovi campi ed in effetti è così poichè, se vado a verificare gli ultimi movimenti di magazzino, trovo la data di registrazione anche nella tabella MSEG.

Ma controllando i record vecchi vedo che le date sono popolate solo per i documenti registrati dopo l'upgrade di release.


Infatti siamo passati alla EHP8 ad inizio maggio 2019.

Ho cercato spiegazione in OSS e nella nota: 1598760 - FAQ: MSEG extension & redesign of MB51/MB5B 

trovo la risposta:

The changes for tables and sources codes alone are insufficient for using the redesign of the selection strategy. You must still execute the complete MSEG conversion with the report ZMST_FILL_MSEG_FROM_MKPF. After you complete the conversion successfully, you must also set the status to "complete" and regenerate transaction MB51 (as described in the attachment). Furthermore, you must adjust and activate the Customizing changes and the DB indexes on MSEG. The DB indexes are not actively delivered via Support Package because this may affect performance when you upgrade.

Cioè:

  • si deve eseguire il report ZMST_FILL_MSEG_FROM_MKPF per popolare i campi con la data di registrazione in MSEG per i record precedenti l'upgrade.
  • si deve impostare lo stato "complete".
  • poi rigenerare la MB51.
  • infine attivare gli indici.

il report lo trovo allegato alla nota: 1516684 - Enhancing MSEG with MKPF fields - performance optimization

Ho lanciato anno per anno, mettendo dei valori piuttosto grandi per block size, ci impiega qualche minuto per ogni anno


al termine restituisce il numero di record convertiti:


Generare gli indici:

doppio click sull'indice


aggiorno in lingua originale


entrare in modifica


scegliere il tipo di indice





salvare e inserire in una CR


attivare


ci impiega qualche decina di secondi.


eseguire gli ultimi step del report:



Rigenerare MB51.

Adesso la soluzione per velocizzare l'accesso a MSEG è completa.



Nessun commento:

Posta un commento