Klassenbasierter Ersatz für Funktion EVAL_FORMULA?

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
2 Beiträge • Seite 1 von 1
2 Beiträge Seite 1 von 1

Klassenbasierter Ersatz für Funktion EVAL_FORMULA?

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Der Funktionsbaustein EVAL_FORMULA scheint eine Lehrbuchimplementierung eines LR-Parsers zu sein. Weiß jemand, ob es eine klassenbasierte Version gibt, die insbesondere keine Callback-Forms benötigt?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Klassenbasierter Ersatz für Funktion EVAL_FORMULA?

Beitrag von m.andreschak (ForumUser / 22 / 2 / 3 ) »
Hi,
es gibt die CL_FOBU_* und CL_FOEV_*-Klassen. Mittels FOBU erstellst Du eine Formel und mittels FOEV kannst Du sie dann auswerten. Das ganze ist extrem mächtig, bietet grafische Formeleditor, die Möglichkeit für Callbacks, String- und Math- Funktionen von Haus aus etc. etc.,

ein sehr simples Beispiel - wie gewollt ohne Callbacks - wäre dieses hier. Das heißt aber, dass die Formel nur sehr einfach werden kann (Zugriff auf SYST-Felder, etc.). Für komplexere Formeln kannst du dann in einer Callback-Klasse die Interfaces IF_FOBU_CONNECTOR und IF_FOEV_CONNECTOR implementieren um z.B. im Formeleditor neue Felder oder Funktionen anzubieten (IF_FOBU...), oder um einzelne "Token" in der Formel (z.B. Feldnamen) "aufzulösen" (IF_FOEV...). (Und noch sooo vieles mehr.). Deine Klasse, die diese Interfaces implementiert, wird dann beim erstellen der CL_FOBU.. und CL_FOEV..-Instanzen als "environment" mitgegeben.

/Edit:
PS: Sorry für das Wiederbeleben, hab den Thread über die Suche gefunden und fand wollte es nicht unbeantwortet lassen.

Code: Alles auswählen.

CLASS lcl_application DEFINITION.
  PUBLIC SECTION.
    CLASS-METHODS:
      start_of_selection.
ENDCLASS.                    "lcl_application DEFINITION


CLASS lcl_application IMPLEMENTATION.
  METHOD start_of_selection.
    DATA lo_fobu_formula       TYPE REF TO cl_fobu_formula.
    DATA lo_foev_formula       TYPE REF TO cl_foev_formula.
    DATA lr_result             TYPE REF TO data.
    FIELD-SYMBOLS <l_result>   TYPE        data.

    TRY.
        cl_fobu_formula=>create( IMPORTING ex_formula = lo_fobu_formula ).
        lo_fobu_formula->parse( 'SYST-DATUM >= ''20190101'' AND SYST-DATUM <= ''20191231''' ).

        lo_foev_formula = cl_foev_formula=>load_from_fobu( lo_fobu_formula ).
        lr_result = lo_foev_formula->evaluate( ).

        IF lr_result IS BOUND.
          ASSIGN lr_result->* TO <l_result>.
        ENDIF.

        IF  <l_result> IS ASSIGNED
        AND <l_result> EQ abap_true.

          WRITE / 'Back to the future!'.

        ELSEIF <l_result> IS ASSIGNED
        AND    <l_result> EQ abap_false .

          WRITE / 'Wir sollten im Hier und Jetzt leben.'.

        ENDIF.
      CATCH cx_foev_formula_invalid
            cx_fobu_formula_empty
            cx_fobu_formula_invalid
            cx_fobu_formula_not_found.

            WRITE / 'Ärgerlich.'.
    ENDTRY.
  ENDMETHOD.                    "start_of_selection
ENDCLASS.                    "lcl_application IMPLEMENTATION

START-OF-SELECTION.
  lcl_application=>start_of_selection( ).

Folgende Benutzer bedankten sich beim Autor m.andreschak für den Beitrag:
Jan


Seite 1 von 1

Vergleichbare Themen

0
Antw.
1675
Views
Frage: Formula FOX
von 1nfo5mat1ke5 » 19.06.2009 20:16 • Verfasst in SAP - Allgemeines
2
Antw.
8591
Views
Material auf Auslauf mit Ersatz
von fnmuli » 13.02.2014 11:00 • Verfasst in Material Management & Produktionsplanung
1
Antw.
1283
Views
Suche FuBa OP Belege ausgleichen - Ersatz zu BI mit F-44 ?
von crush23 » 04.12.2006 15:32 • Verfasst in ABAP® Core
1
Antw.
6997
Views
SV-Meldung bei Renteneintritt - Ersatz für Formular R250
von HLRT67 » 04.04.2008 09:53 • Verfasst in Human Resources
2
Antw.
2365
Views
Top-Of-Page-Ersatz beim ALV Grid-Control
von LB_FAN86 » 19.09.2007 15:33 • Verfasst in ABAP Objects®

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Tagen von Lucyalison 1 / 71
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 111
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 141