SALV COLORING (RENKLENDİRME)

Bir kolonu renklendirme

Belirli bir koşula bağlı olarak renklendirme

Örnek bir program üzerinden açıklamak gerekirse:

sflight tablosundan bir type yaratıyoruz. Bu type’ın içinde lvc_t_scol tipinde color değişkeninin yaratıyoruz. Bunu renklendirme işlemi için kullanacağız.
Bu yarattığımız ty_sflight type’ından lt_sflight internal tablosunu oluşturduk ve içini doldurmak için yukarıdaki gibi basit bir select attık.

cl_salv_table sınıfından referans alarak go_salv objesini oluşturduk. Salv’yi basmak için factory metodunu çağırıyoruz. Try-catch blokları ile run-time’da karşılaşılabilecek hataları engelledik.
Asıl konumuz olan renklendirme işlemine geldik.

Get_columns() : genel olarak tüm kolonlar ile ilgili işlemleri kapsar.
Set_color_column( value = ‘COLOR’ ): renk tablosunu parametre olarak alır
65.satırda hangi kolonu boyamak istediğimizi belirtiyoruz. Görüldüğü üzere price isimli alan seçilmiştir.
go_col->set_color( VALUE #( col = 3 int = 1 inv = 0 ) ) : renk tablosunun tipi lvc_t_scol ‘dur. Bu tablonun line type’ı lvc_s_scol.
go_salv->display( ) : salv’yi kullanıcıya gösterir.



Lvc_s_scol’un color komponentine çift tıklayınca
· COL : Renk kodu
· INT: Renk yoğunluğu (Intensity). 1:Koyu 0:Açık
· INV: Terslik (Inverse). 1:Ters çalışır. Yazıyı renkelendirir. 0: Terslik abap_false. Yani arka planı boyar.


Price kolonu sarıya boyandı. Price >= 1000 olan satırlarda yazı rengi kırmızıya boyandı.
KODLAR
*&---------------------------------------------------------------------*
*& Report ZDYP15_R_SALV_COLORING
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zdyp15_r_salv_coloring.
TABLES: sflight.
TYPES: BEGIN OF ty_sflight.
INCLUDE STRUCTURE sflight.
TYPES: color TYPE lvc_t_scol,
END OF ty_sflight.
DATA: lt_sflight TYPE TABLE OF ty_sflight.
SELECT *
FROM sflight
INTO CORRESPONDING FIELDS OF TABLE @lt_sflight.
DATA: go_salv TYPE REF TO cl_salv_table.
TRY.
cl_salv_table=>factory(
* EXPORTING
* list_display = if_salv_c_bool_sap=>false " ALV Displayed in List Mode
* r_container = " Abstract Container for GUI Controls
* container_name =
IMPORTING
r_salv_table = go_salv " Basis Class Simple ALV Tables
CHANGING
t_table = lt_sflight
).
CATCH cx_salv_msg. " ALV: General Error Class with Message
MESSAGE 'Error creating SALV' TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
go_salv->get_functions( )->set_all( value = if_salv_c_bool_sap=>true ). "toolbar
go_salv->get_columns( )->set_optimize( abap_true ). "colon width optimization
go_salv->get_display_settings( )->set_list_header( value = 'SALV COLORING PROGRAM' ). "header
go_salv->get_display_settings( )->set_striped_pattern( abap_true ). "zebra
*go_salv->get_selections( )->set_selection_mode( value = if_salv_c_selection_mode=>row_column ). "selection
*go_salv->get_selections( )->set_selection_mode( value = if_salv_c_selection_mode=>cell ).
*go_salv->get_selections( )->set_selection_mode( value = if_salv_c_selection_mode=>multiple ).
*go_salv->get_selections( )->set_selection_mode( value = if_salv_c_selection_mode=>single ).
go_salv->get_selections( )->set_selection_mode( value = if_salv_c_selection_mode=>none ).
"belirli bir koşula göre renklendirme
LOOP AT lt_sflight ASSIGNING FIELD-SYMBOL(<f>).
IF <f>-price GT 1000.
<f>-color = VALUE #( ( color-col = 6
color-int = 0
color-inv = 1 ) ).
ENDIF.
ENDLOOP.
go_salv->get_columns( )->set_color_column( value = 'COLOR' ). "renk tablosunun ismini verdik
"bir kolonu renklendirme
DATA(go_col) = CAST cl_salv_column_table( go_salv->get_columns( )->get_column( columnname = 'PRICE' ) ).
go_col->set_color( VALUE #( col = 3 int = 1 inv = 0 ) ).
go_salv->display( ).
Bir sonraki konuda görüşmek dileğiyle.