Konflikte und
Konfliktschalter
Konflikte treten auf, wenn zwei oder mehr
Schalter eine Implementierung für denselben Erweiterungsabschnitt oder
dasselbe nicht mehrfach verwendbare BAdI einschalten. Zur Zeit kann ein
Konflikt beim Einschalten von Erweiterungen auftreten, wenn es für eine
Erweiterungsoption,
die nur eine Implementierung zulässt, mehrere Implementierungen gibt, die
gleichzeitig eingeschaltet werden. Dies kann bei den Anweisungen
ENHANCEMENT-SECTION und
GET
BADI (nur bei nicht mehrfach verwendbaren BAdIs)
auftreten. Konflikte werden mit Hilfe von Konfliktschaltern gelöst.

Die Schalter dürfen keiner Business Function zugeordnet sein.
Einem Konfliktschalter können mehrere normale Schalter zugeordnet sein. Der Zustand eines Konfliktschalters hängt vom Zustand der ihm zugeordneten Schalter ab. Ein Konfliktschalter ist:
● eingeschaltet (EIN), wenn alle zugeordneten Schalter eingeschaltet sind
● ausgeschaltet (AUS), wenn mindestens einer der zugeordneten Schalter ausgeschaltet ist
Konflikte werden durch das Erweiterungsimplementierungselement der konfliktauflösenden Erweiterungsimplementierung aufgelöst, die Vorrang gegenüber allen eingeschalteten Erweiterungsimplementierungen hat.
Eine konfliktauflösende Erweiterungsimplementierung ist eine Erweiterungsimplementierung, der kein normaler Schalter, sondern ein Konfliktschalter zugeordnet ist. Die konfliktauflösende Erweiterungsimplementierung muss die gemeinsame Semantik aller normalen Erweiterungsimplementierungen wiedergeben, die potenziell gleichzeitig eingeschaltet sein können und dann in einem Konflikt zueinander stehen. Eine Erweiterungsimplementierung wird konfliktauflösend in Abhängigkeit von den Schaltern, die dem Konfliktschalter zugeordnet sind.
In einer Konfliktsituation hat eine konfliktauflösende Erweiterungsimplementierung Vorrang gegenüber normalen Erweiterungen. Bei mehreren konfliktauflösenden Erweiterungsimplementierungen hat diejenige Vorrang, die die meisten Konflikte auflöst.

Konfliktauflösung durch konfliktauflösende Implementierung

Sie müssen einen Konfliktschalter und eine konfliktauflösende Erweiterungsimplementierung für jede mögliche Kombination von normalen Erweiterungsimplementierungen haben, die bei gleichzeitigem Einschalten in Konflikt miteinander stehen können.
Siehe auch: