ALV und Styles

Mithilfe von “Styles” können einzelne Zellen eines Grids beeinflusst und formatiert werden. An diesem kleinen Beispielprogramm zeigen wir Ihnen, wie einzelne Linien in einem ALV Grid verschwinden.

Coding

REPORT zz_texte_im_alv_grid.
*________________________________________________________________*
*                                                                *
*                 https://tricktresor.com                      *
*________________________________________________________________*
*
* Demoprogramm: Anzeige eines Textes in einem ALV-Grid.
* Dabei wird die jeweils erste Zeile eines Absatzes farblich
* hervorgehoben.
* Die Rahmenlinien innerhalb dieses Absatzes werden ausgeblendet
*________________________________________________________________*
*
* Anmerkungen:
* 1. Bitte den Status "TEST" anlegen mit Funktion "BACK" auf
*    Funktionstaste F12 (Abbrechen)
* 2. Auf dem Dynpro 100 einen Custom Container mit Namen CC_TEXT
*    anlegen
* 3. Auf dem Dynpro 100 dem Element "OK_CODE" das Feld SY-UCOMM
*    zuordnen
* 4. Ablauflogik für Dynpro:
*    PROCESS BEFORE OUTPUT.
*      MODULE STATUS_0100.
*
*    PROCESS AFTER INPUT.
*      MODULE USER_COMMAND_0100.
*________________________________________________________________*
*

*** Textanzeige
INCLUDE <cl_alv_control>.

*** Typ Texttabelle mit Style-Tabelle je Zeile
TYPES BEGIN OF ty_text_style.
INCLUDE STRUCTURE tline.
TYPES   style TYPE lvc_t_styl.
TYPES END OF ty_text_style.

*** Variablen
*::: Tabelle mit einem "Absatz"
DATA gt_text           TYPE STANDARD TABLE OF tline.
*::: Tabelle zu der Texttabelle, aber mit "Style"
DATA gt_texte          TYPE STANDARD TABLE OF ty_text_style.
*::: Style-Tabelle
DATA gt_style          TYPE lvc_t_styl.
DATA gs_style          TYPE lvc_s_styl.

*::: ALV-Grid und Container
DATA gref_grid         TYPE REF TO cl_gui_alv_grid.
DATA gref_container    TYPE REF TO cl_gui_custom_container.

*::: ALV-Layout
DATA gs_layout         TYPE lvc_s_layo.
*::: ALV-Feldkatalog
DATA gt_fcat           TYPE lvc_t_fcat.

*** Field-Symbols
*::: Feldkatalog
FIELD-SYMBOLS <fcat>   TYPE lvc_s_fcat.
*::: Feldsymbol für Tabelle mit Style-Tabelle
FIELD-SYMBOLS <texts>  TYPE ty_text_style.
*::: Feldsymbol für normale Texttabelle
FIELD-SYMBOLS <textl>  TYPE tline.

START-OF-SELECTION.

*** Testdaten erzeugen
PERFORM testdaten.

*** Aufruf des Popups mit ALV-Grid
CALL SCREEN 100 STARTING AT 2 2 ENDING AT 50 20.

*&---------------------------------------------------------------------*
*&      Form  testdaten
*&---------------------------------------------------------------------*
FORM testdaten.

*** Testdaten: "Infos zum Tricktresor"
CLEAR gt_text.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdformat = '*'.
<textl>-tdline   = 'www.Tricktresor.de'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'Im Tricktresor finden Sie eine Menge Tipps und Hinweise'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'zur Programmierung mit ABAP. Viele Beispielprogramme'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'zeigen, wie ein Trick funktioniert und wozu er verwendet'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   = 'werden kann.'.
PERFORM append_text.

*** Testdaten: "Infos zu Orange Five GmbH"
CLEAR gt_text.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdformat = '*'.
<textl>-tdline   = 'www.Orangefive.de'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'Orange Five GmbH ist eine kleine aber schlagkräftige'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'Truppe von Beratern im SAP Umfeld. Wenn Sie Wert auf'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'hochwertige und kreative Dienstleistungen legen, dann setzen'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline  = 'Sie mit Orange Five auf die richtige Zahl.'.
PERFORM append_text.

*** Testdaten: "Infos zu Loremo"
CLEAR gt_text.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdformat = '*'.
<textl>-tdline   = 'www.Loremo.com'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   = 'Das Auto der Zukunft ist revolutionär durch ein'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'auffälliges aber angenehmes Design, ein geringes Gewicht,'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   =
'einem sensationell niedrigem Benzinverbrauch von 1,5 l'.
APPEND INITIAL LINE TO gt_text ASSIGNING <textl>.
<textl>-tdline   = 'und die Konzentration auf das Wesentliche.'.
PERFORM append_text.

ENDFORM.                    "testdaten

*&---------------------------------------------------------------------*
*&      Form  append_text
*&---------------------------------------------------------------------*
FORM append_text.

*** Text in Tabelle mit allen Texten übernehmen
LOOP AT gt_text ASSIGNING <textl>.

*** neue Zeile für "Gesamttexte"
APPEND INITIAL LINE TO gt_texte ASSIGNING <texts>.

*** Text übernehmen
<texts>-tdformat = <textl>-tdformat.
<texts>-tdline   = <textl>-tdline.
IF <textl>-tdformat = '*'.
*** Spezielle Style-Aufbereitung für erste Zeile eines Textes
CLEAR gs_style.
*** Farbe und Schriftstil für "TDLINE"
gs_style-fieldname = 'TDLINE'.
gs_style-style     = alv_style_font_bold
+ alv_style_color_negative.
*** Rahmen: Unten keine Linie
gs_style-style2    = alv_style2_no_border_bottom.
APPEND gs_style TO <texts>-style.
ELSE.
*** Spezielle Style-Aufbereitung für folgende Textzeilen.
CLEAR gs_style.
gs_style-fieldname = 'TDLINE'.
IF LINES( gt_text ) = sy-tabix.
*** Spezielle Style-Aufbereitung für letzte Textzeile.
gs_style-style2    = alv_style2_no_border_top.
ELSE.
*** Spezielle Style-Aufbereitung für Textzeilen "Dazwischen":
*** Keine Linien oben und unten
gs_style-style2    = alv_style2_no_border_top
+ alv_style2_no_border_bottom.
ENDIF.
*** Style-Tabelle anhängen
APPEND gs_style TO <texts>-style.
ENDIF.
ENDLOOP.

ENDFORM.                    "append_text

*&---------------------------------------------------------------------*
*&      Form  init_alv
*&---------------------------------------------------------------------*
FORM init_alv.

  IF gref_container IS INITIAL.
*** Custom Container erzeugen
CREATE OBJECT gref_container
EXPORTING
container_name = 'CC_TEXT'
EXCEPTIONS
OTHERS = 5.

*** ALV-Grid erzeugen
CREATE OBJECT gref_grid
EXPORTING
i_parent = gref_container.

*** Layout
CLEAR gs_layout.
gs_layout-no_toolbar = 'X'.
gs_layout-smalltitle = 'X'.
gs_layout-cwidth_opt = 'X'.
gs_layout-stylefname = 'STYLE'.

*** Feldkatalog erzeugen
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = 'TLINE'
CHANGING
ct_fieldcat      = gt_fcat
EXCEPTIONS
OTHERS           = 3.
IF sy-subrc = 0.
*** Feldkatalog ändern
LOOP AT gt_fcat ASSIGNING <fcat>.
CASE <fcat>-fieldname.
WHEN 'TDFORMAT'.
***--> Formatspalte ausblenden
<fcat>-tech = 'X'.
WHEN 'TDLINE'.
***--> Überschrift setzen für Textzeile
<fcat>-scrtext_l = 'Info'.
ENDCASE.
ENDLOOP.

*** Texttabelle im Grid anzeigen
CALL METHOD gref_grid->set_table_for_first_display
EXPORTING
is_layout       = gs_layout
CHANGING
it_fieldcatalog = gt_fcat
it_outtab       = gt_texte.
ENDIF.
ELSE.
*** Refresh, falls Text geändert wurde
CALL METHOD gref_grid->refresh_table_display.
ENDIF.

ENDFORM.                    "init_alv

*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0100 OUTPUT.

  SET PF-STATUS 'TEST'.
PERFORM init_alv.

ENDMODULE.                 " STATUS_0100  OUTPUT

*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
MODULE user_command_0100 INPUT.

  IF sy-ucomm = 'BACK'. SET SCREEN 0. LEAVE SCREEN. ENDIF.

ENDMODULE.                 " USER_COMMAND_0100  INPUT

 

Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)

Leave a Comment