Ergänzende Regel innerhalb eines EH&S Expert Regelwerks, welche die Art und den Detaillierungsgrad der tabellarischen Erklärung zu den Ergebnissen des Regelwerklaufes festlegt.
Der EH&S Expert ist um entsprechende Syntaxelemente erweitert, um es dem Regelwerkentwickler zu ermöglichen, Erklärungen zum Regelwerk zu formulieren. Um die Erklärungsregeln von den übrigen Regeln eines Regelwerkes zu trennen, werden sie mit demSchlüsselwort EXPLAIN eingeleitet. Die Erklärungsregeln werden erst am Ende des eigentlichen Regelwerkslaufs ausgeführt, wenn alle übrigen Regeln abgearbeitet sind und sämtliche End- und Zwischenergebnisse vorliegen.
Eine Erklärungsregel bewirkt, dass Regelwerksdaten in Form einer Tabelle ausgegeben werden. Die Datensätze der Tabelle ergeben sich aus den Instanzen der in der Erklärungsregel verwendeten Records und Zusammensetzungen. Daraus können sich auch verschachtelte Untergruppen innerhalb der Tabelle ergeben, wenn mehrere Records und Zusammensetzungen in einer Erklärungsregel ausgegeben werden.
Durch mehrere Erklärungsregeln können mehrere Tabellen zu einer Gesamterklärung zusammengestellt werden. Die Tabellen werden in einer Baumstruktur angezeigt.
Auch Erklärungsregeln haben eine Bedingung, mit der die Auswahl der Daten eingeschränkt werden kann.
Mit den folgenden Befehlen können Sie die Tabellen zur Erklärung gestalten.
Funktion |
Bedeutung |
HEADLINE |
Überschrift für die Tabelle. Die Überschrift liegt bei der Anzeige in der Baumstruktur eine Ebene höher. Dadurch kann die Tabelle auf- und zugeklappt werden. |
HEADER |
Kopfzeile der Tabelle, die am Anfang der Tabelle einmalig ausgegeben wird. |
GROUPHEADER |
Kopfzeile einer Untergruppe (Record innerhalb einer Zusammensetzung, ANY innerhalb eines Records oder einer Zusammensetzung.) |
LINE |
Tabellenzeile |
GROUPFOOTER |
Fußzeile einer Untergruppe |
FOOTER |
Fußzeile, die am Ende der Tabelle einmalig ausgegeben wird. |
INDENT(n) |
Einrückung der Tabelle in einer Baumstruktur |
Beachten Sie hierbei das folgende:
Die Funktionen außer INDENT können eine variable Anzahl von Parametern haben, die die jeweiligen Spalten der Tabelle befüllen. Als Parameter können Textkonstanten, Faktnamen, Ausdrücke inklusive aller Funktionen des EH&S Expert, sowie Sonderfunktionen genutzt werden.
Enthält die Erklärungsregel lediglich Fakten ohne Record- oder Zusammensetzungsbezug, dann besteht die erzeugte Tabelle nur aus einer einzelne Zeile, zuzüglich der optionalen Kopf- und Fußzeile.
Enthält die Erklärungsregel Fakten einer einzelnen Zusammensetzung oder eines einzelnen Records, dann wird pro Instanz eine Datenzeile ausgegeben, sofern nicht über die Bedingung eingeschränkt wird. Das gleiche gilt, wenn die Erklärungsregel die ANY-Funktion auf einen einselnen Fakt anwendet. GROUPHEADER und GROUPFOOTER machen in diesem Fall keinen Sinn.Sie erscheinen ebenso wie HEADER und FOOTER einmalig am Anfang und Ende der Tabelle.
In HEADER und FOOTER sind Fakten mit Bezug auf Zusammensetzungen oder Records nicht erlaubt.
Enthält die Erklärungsregel eines der folgenden Elemente, dann bildet die Tabelle eine zweifach oder dreifach verschachtelte Schleife über die jeweiligen Instanzen ab:
Fakten eines Records innerhalb einer Zusammensetzung oder
Einzelne ANY-Funktion auf einen Fakt mit Bezug auf
einen Record oder
eine Zusammensetzung oder
einen Record innerhalb einer Zusammensetzung
Hier können GROUPHEADER und GROUPFOOTER eingesetzt werden, um die inneren Schleifen jeweils mit einer Kopf- und Fußzeile zu versehen.
Enthält die Erklärungsregel Fakten zweier verschiedenen Zusammensetzungen, Records, ANY-Funktionen oder beliebige Mischungen, dann bildet die Tabelle das Kreuzprodukt der Instanzen ab, das üblicherweise durch eine Bedingung eingeschränkt wird. Hier kommt es darauf an, welche Zusammensetzung, welcher Record oder welche ANY-Funktion in der Erklärungsregel zuerst genannt wird. Das zuerst genannte Element bestimmt die äußere Schleife, usw.. Auch hier können wieder GROUPHEADER und GROUPFOOTER zum Einsatz kommen, die jedoch nicht auf die Elemente der jeweils äußeren Schleife referenzieren dürfen.
Daten, die in aufeinanderfolgenden Datenzeilen identisch sind, werden nicht wiederholt.
Sie können auch mehrere HEADER, FOOTER, GROUPHEADER, GROUPFOOTER und LINE Kommandos hintereinander schreiben, um eine mehrzeilige Ausgabe zu erreichen.
Bei der Anzeige der Erklärung liegen die verschiedenen Elemente der Erklärung auf unterschiedlichen Ebenen einer Baumstruktur:
Funktion |
Ebene |
---|---|
HEADLINE |
1 |
HEADER |
2 mit HEADLINE, 1 ohne HEADLINE |
GROUPHEADER |
2 mit HEADLINE, 1 ohne HEADLINE.(tiefer wenn verschachtelt) |
⇒ |
2 mit HEADLINE, 1 ohne HEADLINE (Ebene GROUPHEADER + 1, wenn in GROUPHEADER verschachtelt) |
GROUPFOOTER |
Ebene GROUPHEADER + 1 |
FOOTER |
2 mit HEADLINE, 1 ohne HEADLINE |
Mit dem Kommando INDENT können Sie alle Elemente der Tabelle um eine oder mehrere Ebenen nach rechts verschieben. Sie können mehrere Tabellen unter einem Hauptknoten gruppieren.
Beispiel: Dichte-Regelwerk (DEMO2)
Im folgenden ist eine Erklärung zu dem mit EH&S Expert ausgelieferten Demo-Regelwerk zur Berechnung der Dichte gezeigt. Die Erklärung erscheint in Form einer einfachen Tabelle ohne Schachtelungen. Die Erweiterungen gegenüber der gegenwärtigen Version ohne Erklärung sind fett dargestellt:
Hinweis
Erklärungen können Sie im Regeleditor des EH&S Expert nur im Multiline-Modus anzeigen und bearbeiten. Wählen Sie hierzu
Edit
das Kennzeichen
Use Multiline Editbox.
FACTS
TmpDensity := 0,
Density(OUT),
COMPOSITION COMP
Percent(IN),
PercentUP(IN),
PercentLOW(IN),
Density(IN),
Ident(IN) // gemappt auf z.B. I:NAM,PROD
END
RULES
RULE SUM_Density
If TRUE()
THEN
TmpDensity := TmpDensity + (comp.percent/100)*comp.density
END
RULE SET_Density
If TmpDensity > 0 THEN
Density := TmpDensity
END
// Berechne prozentualen Anteil aus Ober- und Untergrenze falls
//Durchschnittswert null ist
RULE COMPUTE_PERCENTAGE_AVERAGE If Comp.Percent = 0
THEN
COMP.Percent := ( COMP.Percentlow + COMP.Percentup ) / 2
END
EXPLAIN Density
IF TRUE()
THEN
HEADLINE("Density Calculation")
HEADER("Component" , "Percent" , "Density" , "weighted density"/right)
LINE (Comp.Ident , Comp.Percent, Comp.Density,
(Comp.Percent/100)*Comp.Density)
FOOTER("average density", "" , "" , Density)
END
END
Die auf diese Weise generierte Erklärung sieht dann wie folgt aus:
Density Calculation
Component percent density weighted density
sub1 50 10 5
sub2 20 20 4
sub3 30 30 9
average density 18
Sonderfunktionen
Die untenstehenden Sonderfunktionen stehen Ihnen zur Verfügung. Sie werden im gespeicherten Freitext der Erklärung in einer eigenen Syntax markiert, so dass sie zur Anzeige der Erklärung in der Anmeldesprache aufgelöst werden.
Funktion |
Bedeutung |
---|---|
"[#<Phrasenschlüssel>#]“ |
Die Syntax für interne Phrasenschlüssel dient als Verweis auf eine Phrase im EH&S. Dies kann für Spaltenüberschriften aber auch für Kommentare, wie z.B. Gesetzeshintergründe genutzt werden. Der Wert wird standardmäßig dem Phrasenmapping entnommen. Wird dort kein Eintrag gefunden, dann wird er ohne Warnung direkt als EH&S-Phrasenschlüssel interpretiert. |
DESC( <Faktname>) |
Verweis auf einen Faktnamen, der im Mapping auf ein EH&S-Datenelement abgebildet sein muss. Es wird dann die mehrsprachige Beschreibung des Datenelements aus dem ABAP Dictionary angezeigt. |
PHRCODE( <Faktname>) |
In der Erklärung wird der Phrasencode statt der Phrasentext angezeigt, sofern der Fakt Phrasenschlüssel enthält. |
Die Erklärungsregel für das Beispielregelwerk DEMO1 könnte damit so aussehen:
EXPLAIN
IF TRUE()
THEN
HEADER( DESC( FlashPoint), " ", DESC( RPhrase)),
LINE( FlashPoint, "->", RPhrase)
END
Phrasen
In der Erklärung enthaltene verphraste Werte sind ebenfalls in einer eigenen Syntax markiert, so dass nicht der interne Phrasenschlüssel angezeigt wird, sondern der Phrasencode und der Phrasentext in der Anmeldesprache. Zur Identifizierung von Phrasen gelten folgende Kriterien:
Der entsprechende Fakt unterliegt dem Phrasenmapping
Die interne Phrasen-ID entspricht der Syntax [#...#]
Die externe Phrasen-ID enthält einen Bindestrich als Trenner zwischen Katalog und Schlüssel
Temporärfakten
Im Regelwerk genutzte Temporärfakten, die für die Erklärung notwendige Zwischenergebnisse speichern, sollten vom Regelwerkentwickler zusätzlich ins Mapping aufgenommen werden und auf eine externe ID gemappt werden, um daraus eine korrekte mehrsprachige Bezeichnung ableiten und Phrasen identifizieren zu können.
Identifikation von Komponenten
Oft greifen Regelwerke auf Daten der Komponenten einer Spezifikation zu. Für eine sprechende Erklärung ist es notwendig, die Komponenten sprechend zu identifizieren. Hierzu sollten Sie zusätzliche IN-Fakten ins Regelwerk aufnehmen, die aussagekräftige Identifikatoren für die Komponenten darstellen.
Formatierung
Um Formatierungen für die Spalten oder Zeilen zu ermöglichen, stehen Ihnen die folgenden Optionen zur Verfügung. Sie werden an den jeweiligen Spaltenparameter oder für Zeilenformate an den letzten Spaltenparameter angehängt.
Option |
Bezug |
Bedeutung |
---|---|---|
/RIGHT |
Spalte |
Rechtsbündige Ausgabe des Spaltenwerts |
/LEFT |
Spalte |
Linksbündige Ausgabe des Spaltenwerts (Voreinstellung) |
/MID |
Spalte |
Zentrierte Ausgabe des Spaltenwerts |
/WIDTH=n |
Spalte |
Maximale Spaltenbreite (n = Anzahl Zeichen) |
/NL |
Zeile |
Zusätzliche Leerzeile nach der Zeile |
/NLBEFORE |
Zeile |
Zusätzliche Leerzeile vor der Zeile |
/LINE |
Zeile |
Linie nach der Zeile |
/LINEBEFORE |
Zeile |
Linie vor der Zeile |
Optionen, die sich auf Spalten beziehen, werden vom HEADER und GROUPHEADER an die darunter liegenden Datenzeilen und Fußzeilen weitergegeben.