Variabler Gruppenwechsel
Dieses Programm demonstriert, wie ein Gruppenwechsel variabel durchgeführt werden kann. Je nach gewünschter Sichtweise werden die Daten in der Tabelle nach unterschiedlichen Feldern gruppiert.
Ausgabe “Marke, Farbe, Motor”
AUDI
BLAU
Diesel
Erdgas
BMW
GRÜN
Diesel
Erdgas
VW
BLAU
Diesel
GRÜN
Benzin
Diesel
ROT
Ausgabe “Motor, Marke, Farbe”
Benzin
VW
GRÜN
Diesel
AUDI
BLAU
BMW
GRÜN
VW
BLAU
GRÜN
ROT
Erdgas
AUDI
BLAU
BMW
GRÜN
Coding
REPORT zz_Autos.
*** Zeilentyp für die Daten tabelle
TYPES:
BEGIN OF ty_autos,
marke(10) TYPE c,
farbe(10) TYPE c,
motor(10) TYPE c,
END OF ty_autos.
*** Zeilentyp für die Verwaltungstabelle
TYPES:
BEGIN OF ty_fields,
feld(30),
position type i,
gemerkt(30),
END OF ty_fields.
*** Variablen
DATA:
*** Daten
lt_autos TYPE STANDARD TABLE OF ty_autos,
ls_auto TYPE ty_autos,
*** Verwaltung Gruppenwechsel
lt_fields TYPE STANDARD TABLE OF ty_fields,
ls_fields TYPE ty_fields.
*** Spaltenwerte
FIELD-SYMBOLS <f> TYPE ANY.
*** Gruppenwechsel
FIELD-SYMBOLS <fields> TYPE ty_fields.
*** Autos
field-symbols <auto> type ty_autos.
PARAMETERS:
*** Spalten
f1(30) TYPE c DEFAULT ‘MARKE’,
f2(30) TYPE c DEFAULT ‘FARBE’,
f3(30) TYPE c DEFAULT ‘MOTOR’.
START-OF-SELECTION.
*** Testdaten erzeugen
PERFORM testdaten.
*** Sortierung nach Spalten
SORT lt_autos BY (f1) (f2) (f3).
IF f1 <> space.
*** Erstes Feld in Verwaltungstabelle aufnehmen
ls_fields-feld = f1.
ls_fields-position = 1.
APPEND ls_fields TO lt_fields.
ENDIF.
IF f2 <> space.
*** zweites Feld in Verwaltungstabelle aufnehmen
ls_fields-feld = f2.
ls_fields-position = 3.
APPEND ls_fields TO lt_fields.
ENDIF.
IF f3 <> space.
*** drittes Feld in Verwaltungstabelle aufnehmen
ls_fields-feld = f3.
ls_fields-position = 6.
APPEND ls_fields TO lt_fields.
ENDIF.
*** Init
CLEAR ls_auto.
*** Daten ausgeben
LOOP AT lt_autos ASSIGNING <auto>.
*** Verwaltung Gruppenwechsel: Felder
LOOP AT lt_fields ASSIGNING <fields>.
*** Spaltenwert dem Feldymbol <F> zuweisen
ASSIGN COMPONENT <fields>-feld OF STRUCTURE <auto> TO <f>.
*** Prüfen, ob sich der Spaltenwert geändert hat
IF <f> <> <fields>-gemerkt.
*** JA: Feldwert merken
<fields>-gemerkt = <f>.
*** …und ausgeben
WRITE: AT /<fields>-position <f>.
ENDIF.
ENDLOOP.
ENDLOOP.
*&———————————————————————*
*& Form testdaten
*&———————————————————————*
FORM testdaten.
CLEAR lt_autos.
ls_auto-marke = ‘VW’.
ls_auto-farbe = ‘GRÜN’.
ls_auto-motor = ‘Diesel’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘VW’.
ls_auto-farbe = ‘ROT’.
ls_auto-motor = ‘Diesel’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘VW’.
ls_auto-farbe = ‘BLAU’.
ls_auto-motor = ‘Diesel’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘VW’.
ls_auto-farbe = ‘GRÜN’.
ls_auto-motor = ‘Benzin’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘BMW’.
ls_auto-farbe = ‘GRÜN’.
ls_auto-motor = ‘Diesel’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘BMW’.
ls_auto-farbe = ‘GRÜN’.
ls_auto-motor = ‘Erdgas’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘AUDI’.
ls_auto-farbe = ‘BLAU’.
ls_auto-motor = ‘Erdgas’.
APPEND ls_auto TO lt_autos.
ls_auto-marke = ‘AUDI’.
ls_auto-farbe = ‘BLAU’.
ls_auto-motor = ‘Diesel’.
APPEND ls_auto TO lt_autos.
ENDFORM. “testdaten
- 7. December: Excel Racing Simulation – Root Vole Race - 7. Dezember 2024
- 5. December: ABAPConf - 5. Dezember 2024
- 4. December: Only a lazy developer is a good developer - 4. Dezember 2024