Über ein selbst programmiertes ABAP Programm soll der User in der Lage sein eine Formel selbst zusammen zu bauen.
D.h. er hat ein ALV-Grid um die Felder auszuwählen, und als Operatoren +, -, *, /, sowie Klammern zur Verfügung. Um das ganze etwas zu erschweren, gibt es auch noch die Option die Formel auf Tage, Stunden oder Minuten einzuschränken.
D.h. es könnte wie folgt aussehen:
minutes ( hours ( feld1 - feld2 ) / 2 )
Jetzt stellen sich zwei Fragen..
In welcher Form ist es am besten die Formel abzuspeichern, dazu gibt es zwei Möglichkeiten
die erste ist das Coding so wie es angezeigt wird als String abzuspeichern
die zweite über eine Tabelle die so aufgebaut sein könnte:
Zähler | Operand-1 | Operation | Operand-2 | Genauigkeit (d,h,m)
die zweite Frage ist wie wandelt man die Formel am leichtesten in Coding um?
Als Überlegung gibt es hier bisjetzt das mit Field Symbols zu lösen.
Aber gibt es dafür noch eine andere Möglichkeit?
Wäre super wenn jemand für mich hier eine Idee hat!
Vielen Dank vorab.
schau Dir mal die Anweisungen
"GENERATE SUBROUTINE POOL itab NAME name."
oder
"GENERATE REPORT prog" an.
Damit hab ich etwas sehr ähnliches gelöst. Aus der Formel baue ich Reports zusammen. Bei einer Anwendung geschiet dies zur Laufzeit und ist transient (erste Anweisung), bei einer anderen Anwendung werden die Reports in einer Pflegetranaktion generiert, persistent abgelegt und schließlich mit externem Perform aufgerufen.
Hallo Oliver,
die Generierung des Codings selbst werde ich dann mit "Insert report" machen.
Mein Problem ist jetzt, wie ich am besten die Formel abspeichere und dann in Code umwandle.
Beispiel wenn cih einen String verwende:
result = minutes ( hours ( feld1 - feld2 ) / 2 )
Ignorieren wir jetzt mal das minutes und hours, sondern nehmen nur diese Formel hier:
result = feld1 - feld 2 / 2.
Übergeben in der Formel bekomme ich aber nicht "feld1" sondern den dazugehörenden Wert.
d.h. die Formel müsste in etwa so lauten:
result = a-feld1 - a-feld2 / 2.
(um es in geschicktes Coding umzubauen)
und der Wert von a-feld1 wäre feld1
Meine Frage ist hier jetzt ob das mit Field-Symbols realisier bar ist und wie da die Zuweisung lautet, oder ob es einen besseren Weg geht.
Zudem ist noch die Frage ob man die Formel wirklich in einem String abspeichern sollte oder in Tabellenform (mit OperandA, OperandB, etc.) hinterlegt.