CBN: optimisation des performances (V10.10)

Voici comment bénéficier de meilleures performances sur les calculs de besoins (CBN) afin de gagner en productivité.

  • Notamment dans le cas d’utilisation avec l’affaire industrielle et des nouvelles origines de besoins d’affaire

Fonctionnement

Le constat est que :

  • Le CBN peut prendre jusqu'à 12 heures avec un portefeuille important de besoins d’affaire:

Recherche des pistes d’amélioration pour la performances :

  • Génération des propositions OF : en mode processus , on ne peut pas utiliser le dialogue inter-tâche mais il n’y a qu’un appel de tunnel par niveau

  • Limiter le nombre d’articles traités : le filtre actuel semble suffisant
    On garde les articles

    • valide

    • géré en stock

    • Nature fabriqué pour les OF

    • Fiche réappro avec mode réapprovisionnement <> aucun

  • Optimisations Record Sql

  • Définitions nouveaux indexs : finalement la piste la plus efficace qui permet de réduire, dans un cas réel d’exploitation, de 12:00 à moins de 4:00 le temps du CBN

 

Précisions techniques

Désactiver le dialogue inter-tâche si appel par processus via une ouverture dédiée :

Optimiser les clauses WHERE :
Equal_Art_ProdNat1('2') à remplacer par clause 'Article_EstFabrique'

BA_ProdTyp_Sup(1) à remplacer par clause not 'Production_AlaCommande'

 Diff_Art_ProdNat1('2') à remplacer par clause 'Not_Article_EstFabrique'

Optimiser les jointures :

 Ajout ARTIND dans 

SREFREAPPRO

<Join NAME="BACbn" ColumnNames="Ba_SubstCbnMode1" NoActivate NoCheck> ;jointure incomplète (correspond pas à un index) car n'a pas les SREF pour mettre dedans 
    BA as BACbn
    ON BACbn.Dos = SART.Dos and BACbn.Ref = SART.Ref and BACbn.CE2 = '1'    and BACbn.NIVFICT <> 2 And BACbn.BESCOD = 2

 

Optimiser les sous-requêtes :

Ajout ARTIND dans 

SREFREAPPRO et SREFDECOMPO

    ;sous-requête d'existance pour les production induites
    Case BNORI_SubQuery3(int cbnNoCourant, char prodnat1)
        Exists ( SELECT BNORI.BNORI_ID FROM $DAV.BNORI LEFT JOIN $DAV.ART ON ART.DOS=BNORI.DOS AND ART.REF = BNORI.REF WHERE
        Left(ART.ProdNat,1) = prodnat1 and
        BNORI.CBNNO = cbnNoCourant AND BNORI.DOS = SART.DOS AND BNORI.Ref = SART.Ref)

 

Activer les caches Objet métier :

T062, T017,..

Création nouveaux indexs :