Volldynamische If Anweisung

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
4 Beiträge • Seite 1 von 1
4 Beiträge Seite 1 von 1

Volldynamische If Anweisung

Beitrag von TZI (ForumUser / 2 / 1 / 0 ) »
Hallo zusammen, wenn ich hier nicht richtig bin, bitte verschieben-
Folgendes, ich habe eine If abfrage zum bewerten eines Fragebogens.
Die Bewertung kann jedoch über eine Costumizing tabelle geändert werden.

Vorweg:
Counter ist der wert, welcher durch die Fragen erziehlt wurde.
<green> ist der schwellenwert welcher gebraucht wird um die grüne Ampel zu erhalten.
<red> ist der Schwellenwert um die rote Ampel zu erhalten
<op1> und <op2> sind die Operatoren, welche folgende Formen annehmen können: '<' '>' '=<' '=>' '='

Mein erster versuch sah wiefolgt aus:

Code: Alles auswählen.

  IF counter <op1> <green>. 
    lv_image = 'ICON_GREEN_LIGHT'.
  ELSEIF counter <op2> <red>. 
    lv_image = 'ICON_RED_LIGHT'.
  ELSE. 
    lv_image = 'ICON_YELLOW_LIGHT'.
  ENDIF.
-> Fehler: Vergleichsoperatoren werden nicht unterstützt

Der zweite versuch folgendermassen:

Code: Alles auswählen.

concatenate counter <op1> <green> into <if_string_green> SEPARATED BY ' '.
concatenate counter <op2> <red> into <if_string_red> SEPARATED BY ' '.

  IF <if_string_green>. 
    lv_image = 'ICON_GREEN_LIGHT'.
  ELSEIF <if_string_red>
    lv_image = 'ICON_RED_LIGHT'.
  ELSE. 
    lv_image = 'ICON_YELLOW_LIGHT'.
  ENDIF.
-> Fehler: Fehlerhafter Logischer ausdruck

Hat jemand eine Idee wie ich das Problem lösen könnte?

Grusse und Danke im vorraus

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


Re: Volldynamische If Anweisung

Beitrag von ralf.wenzel (Top Expert / 3921 / 200 / 280 ) »
TZI hat geschrieben:Der zweite versuch folgendermassen:

Code: Alles auswählen.

concatenate counter <op1> <green> into <if_string_green> SEPARATED BY ' '.
concatenate counter <op2> <red> into <if_string_red> SEPARATED BY ' '.

  IF <if_string_green>. 
    lv_image = 'ICON_GREEN_LIGHT'.
  ELSEIF <if_string_red>[b][color=#FF0000].[/color][/b]
    lv_image = 'ICON_RED_LIGHT'.
  ELSE. 
    lv_image = 'ICON_YELLOW_LIGHT'.
  ENDIF.
-> Fehler: Fehlerhafter Logischer ausdruck
Weil der (hier rote) Punkt fehlt.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: Volldynamische If Anweisung

Beitrag von ewx (Top Expert / 4844 / 311 / 639 ) »

Code: Alles auswählen.

RANGES green for counter.
ranges red for counter.

green-sign = 'I'.
green-option = 'LT'.
green-low = 100.
append green.

red-sign = 'I'.
red-option = 'GE'.
red-low = 101.
append red.

if counter in green.
lv_image = 'ICON_GREEN_LIGHT'.
elseif counter in red.
lv_image = 'ICON_RED_LIGHT'.
...
endif.
RANGES ist in Klassen nicht erlaubt.
Dafür gibt es dann DATA xyz TYPE RANGE of...

oder einfacher:

Code: Alles auswählen.

data green type i value 10.
data yellow type i value 30.

if counter < green.
lv_image = 'GREEN'.
elseif counter < yellow.
lv_image = 'YELLOW'.
else.
lv_image = 'RED'.
endif.

Folgende Benutzer bedankten sich beim Autor ewx für den Beitrag:
TZI


Re: Volldynamische If Anweisung

Beitrag von TZI (ForumUser / 2 / 1 / 0 ) »
@Ralf, leider fliegt der compiler schon beim ersten <if_string_green> ;)

@ewx
Danke für den Input mit den Ranges.
Ich habe es nun wie folgt lösen können:

Code: Alles auswählen.


 DATA: BEGIN OF ls_green,
          sign(1) TYPE c,
          option(2) TYPE c,
          low TYPE zportfostatxt-gruen,
          high TYPE zportfostatxt-gruen,
        END OF ls_green.

  DATA: lt_green LIKE STANDARD TABLE OF ls_green.

  DATA: BEGIN OF ls_red,
          sign(1) TYPE c,
          option(2) TYPE c,
          low TYPE zportfostatxt-rot,
          high TYPE zportfostatxt-rot,
        END OF ls_red.

  DATA: lt_red LIKE STANDARD TABLE OF ls_red.

  ls_green-sign = 'I'.
  ls_green-option = <op1>.
  ls_green-low = <green>.
  ls_green-high = <green>.

  CALL METHOD -> zum austauschen der Operatoren (<= -> LE)

  APPEND ls_green TO lt_green.

  ls_red-sign = 'I'.
  ls_red-option = <op2>.
  ls_red-low = <red>.
  ls_red-high = <red>.

CALL METHOD -> zum austauschen der Operatoren (<= -> LE)

  APPEND ls_red TO lt_red.

  IF counter IN lt_green.
    lv_image = 'ICON_GREEN_LIGHT'.
  ELSEIF counter IN lt_red.
    lv_image = 'ICON_RED_LIGHT'.
  ELSE.
    lv_image = 'ICON_YELLOW_LIGHT'.
  ENDIF.
Grusse

Seite 1 von 1

Vergleichbare Themen

9
Antw.
3502
Views
IF Anweisung
von Mathan » 06.09.2006 13:07 • Verfasst in ABAP® Core
3
Antw.
1722
Views
Select-Anweisung
von phil1982 » 02.08.2007 08:30 • Verfasst in ABAP® für Anfänger
9
Antw.
6117
Views
Select-Anweisung
von ??? » 23.05.2005 10:22 • Verfasst in ABAP® für Anfänger
11
Antw.
6107
Views
JOIN-Anweisung
von honeyjam » 04.01.2011 16:41 • Verfasst in ABAP® für Anfänger
2
Antw.
4823
Views
Tables-Anweisung
von Grado » 06.05.2005 13:40 • Verfasst in Basis

Ü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

Daten an Tabelle binden
vor 7 Stunden von Bright4.5 1 / 146
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 1789
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8391