Willkommen Gast! Um alle Funktionen zu aktivieren müssen Sie sich Anmelden oder Registrieren.

Mitteilung

Icon
Error

Optionen
Gehe zum aktuellsten Beitrag Gehe zum letzten Ungelesenen
Offline gulange  
#1 Geschrieben : Mittwoch, 19. September 2018 13:58:06(UTC)
gulange

Beiträge: 15
Hallöchen!

mein ALV ist eingabebereit und hat seine Custom-Buttons.
Einer ist CHECK, einer COPY.

COPY ist zum Start deaktiviert und erst nach erfolgtem CHECK wird check aktiv.

Was ich noch gerne hätte, wäre dass bei einem CHECK die Felder rot werden, die den Check nicht bestanden haben.

Ich befinde mich hier:

METHOD handle_user_command.

CASE e_ucomm.

WHEN 'CPY'.
PERFORM save.

WHEN 'CHK'.
PERFORM check TABLES <itab2>.
CALL METHOD grid2->set_toolbar_interactive.
ENDCASE.

ENDMETHOD. "handle_user_command

Wie könnte man das hinbekommen?


Schöne Wochenhalbzeit!

Bearbeitet vom Benutzer Mittwoch, 19. September 2018 14:02:17(UTC)  | Grund: Nicht angegeben

Nehmen Sie an dieser Diskussion teil! SAP FORUM - SAP Community LoginHier registrieren.

Offline Felix L.  
#2 Geschrieben : Donnerstag, 20. September 2018 09:31:43(UTC)
Felix L.

Beiträge: 1
Germany
Wohnort: Leipzig
Hallo gulange,

ich habe kein fertig getesteten Code für dich, aber zumindest das generelle Vorgehen.

Es funktioniert mit der cl_salv_table Klasse im Grunde so, dass du eine weitere Spalte hast, die die Farbinformationen als Tabelle enthält enthält. Pro Zelle kann diese Farbtabelle einen Eintrag enthalten.

Die Struktur der Ausgabetabelle (hier zB für Tabelle vbak) sollte also so etwas sein wie:

Code:
TYPES: BEGIN OF s_ausgabe.
       INCLUDE TYPE vbak. " Beispiel-Sturktur von Tabelle VBAK
TYPES: t_color   TYPE lvc_t_scol,
       END OF s_ausgabe.
DATA: wa_ausgabe TYPE s_ausgabe,
      lt_ausgabe TYPE STANDARD TABLE OF s_ausgabe,
      lo_cols_tab TYPE REF TO cl_salv_columns_table.
lo_cols_tab = co_alv->get_columns( ). " co_alv sollte dein ALV-Objekt sein.


Die Struktur lvc_t_scol enhält dann einmal das Feld "fname", was der Spaltenname ist, der die eingefärbte Zelle enthält. Weiterhin hat die Struktur ein Feld "color", was wiederum eine Struktur vom Type "LVC_S_COLO" ist. Hier kann die eigentliche Farbe festgelegt werden.

Wenn du also die das Erstellungsdatum in der 4. Zeile einfärben willst, musst du vor dem Anzeigen in etwa so etwas machen:

Code:

DATA: lv_cnt TYPE i,
      lt_color TYPE lvc_t_scol, " Farbtabelle für Zeile
      wa_color TYPE lvc_s_scol. " Farbeintrag für Zelle
LOOP AT lt_ausgabe INTO wa_ausgabe.
  lv_cnt = lv_cnt + 1.
  CASE lv_cnt.
    WHEN 4. " Zeilennummer
      wa_color-fname = 'ERDAT'. " Spaltenname (falls INITIAL, dann die ganze Zeile)
      wa_color-color-col = '6'. " 6 sollte Rot sein
      wa_color-color-int = 0. " Intensified = 0
      wa_color-color-inv = 0. " Inverse = 0
      APPEND wa_color TO lt_color.
      CLEAR wa_color.
  ENDCASE.
  wa_ausgabe-t_color = lt_color.
  MODIFY lt_ausgabe FROM wa_ausgabe.
  CLEAR lt_color.
ENDLOOP.


Am Ende muss man den ALV-Spalten noch sagen, welche Spalte als Farbtabelle verwendet werden soll (also nicht "ausgegeben" werden soll).

Code:

lo_cols_tab->set_color_column( 'T_COLOR' ).


Wie gesagt, der Code ist nicht getestet, sollte aber eine Idee geben, wie es gehen könnte.

Wenn du deinen ChECK laufen lässt, dann LOOPst du bestimmt sowieso über die Datentabelle. Dabei könnte man die Einfärbung (LOOP-Schleife im obigen Coding) elegant mit einbauen.

LG
Felix
Offline gulange  
#3 Geschrieben : Freitag, 21. September 2018 06:59:13(UTC)
gulange

Beiträge: 15
Danke für die Antwort.

Werder es bei Gelegenheit erst ausprobieren können, da ich leider cl_gui_alv_grid und nicht cl_salv_table verwende.

Gruß
Guido
Benutzer, die gerade dieses Thema lesen
Das Forum wechseln  
Du kannst keine neue Themen in diesem Forum eröffnen.
Du kannst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge nicht löschen.
Du darfst deine Beiträge nicht editieren.
Du kannst keine Umfragen in diesem Forum erstellen.
Du kannst nicht an Umfragen teilnehmen.

- Impressum / Datenschutz -