mercoledì 3 aprile 2019

Dump "SINGLE_EXIT_MULTIPLY_ACTIVE".

Dopo l'aggiornamento del sistema a EHP8 diverse transazioni standard della contabilità fornitori (MIRO, FB60, F-03), subito all'avvio, terminavano con un Dump indicando l'errore:

Exception condition "SINGLE_EXIT_MULTIPLY_ACTIVE" triggered

Il problema nasce dal fatto che due BADI hanno delle condizione di attivazione sovrapposte, per cui il sistema non sa quale deve lanciare e termina con l'errore indicato.

Di seguito come ho risolto.


Questo il Dump:


Cercando qualche soluzione ho trovato questa

To find the BADI, go to SE18 transaction code go to Utilities -> Adjustment -> Multiple active implementations. You will have  BADIs: look for BADI with red round. You should find your problematic BADI.

Go to SE19 and deactivate it.

I find in a forum that "The reason is that in BADI declaration the flag "Single implementation" is checked. In that case if in run-time the system discovers that there is more than one active BADI implementation it throws the mentioned exception. The same also applies to filtered BADIs with Single implementation flag checked - for any particular filter value there must be only one active implementation corresponding to that filter value".

Dalla SE18:


si riceve l'avviso:


si scorre la lista delle BADI fino a trovare quelle con pallino rosso che indicano le attivazioni multiple:


Si può infatti notare che la prima exit viene attivata con un filtro impostato ad asterisco, quindi valido per tutti i paesi, la seconda, che è una personalizzazione Z, si attiva per i paesi CN e TR: i filtri risultano sovrapposti!

La BADI "/CCEE/VALUE_DOC_DATE" probabilmente è stata introdotta dall'aggiornamento a EHP8.

Ho trovato anche questa nota OSS che parla del problema: 1430192

e indica 2 soluzioni possibili:

Solution 1:
1. Deactivate customer implementation(s)
2. Create a new class ZVALUE_DOC_DATE instead
3. Move the code from customer implementation(s) to newly created ZVALUE_DOC_DATE

Solution 2:
1. Replace generic value * from the filter in /CCEE/VALUE_DOC_DATE with RS country code
2. Customer implementation(s) remain untouched
3. For customer implementation for Serbia different from SAP delivered can be used new class ZVALUE_DOC_DATE

La soluzione 2 mi sembra la più semplice, anche se non è possibile impostare un filtro che lavori per esclusione dei due paesi che attivano la BADI Z.

Ma ho controllato il codice all'interno della /CCEE/VALUE_DOC_DATE (dalla SE19)




* translation date is based on document date
* check RS localization
IF FLT_VAL = 'YU' OR
   FLT_VAL = 'CS' OR
   FLT_VAL = 'RS'.
     e_wwert = i_bldat.
  ENDIF.

In pratica lavora solo per alcuni paesi, tra l'altro il paese YU non esiste più da tempo.

Quindi ho risolto il problema modificando il filtro di attivazione della BADI, sempre dalla SE19 (ha richiesto l'inserimento del codice di sblocco per un oggetto standard), facendo attivare solo per CS e RS:


Adesso i filtri di attivazione non risultano più sovrapposti e i pallini sono diventati tutti verdi.

Nessun commento:

Posta un commento