SALV

Avantaj: screen ve field catalog yaratmadan bir internal tablonun verilerini basmaya yarar. Hızlı sonuç alınması istendiği durumlarda kullanılır. 2 tane adımdan oluşur.
1. cl_salv_table=>factory
2. go_salv->display( ).
DATA: gt_sbook TYPE TABLE OF sbook,
go_salv TYPE REF TO cl_salv_table. “ cl_salv_table sınıfından obje türetiyoruz
Factory metodu
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_salv “ Basis Class Simple ALV Tables “salv objesi
CHANGING
t_table = gt_sbook “internal table
).
NOT: r_salv_table’a yarattığımız salv objesini veriyoruz.
t_table ise verilerimizi tutan internal tablomuzdur.
SALV’de Display Metodu
go_salv->display( ).
Programın başlığını nasıl değiştirebiliriz?
DATA: lo_display TYPE REF TO cl_salv_display_settings.
lo_display = go_salv->get_display_settings( ).
lo_display->set_list_header( value = ‘SALV PRACTICE’).

Zebra Yapısı
lo_display->set_striped_pattern( value = abap_true ).
Kolon Optimizasyonu:
DATA: lo_cols TYPE REF TO cl_salv_columns. “genel olarak tüm kolonlar için
DATA: lo_col TYPE REF TO cl_salv_column. “spesifik bir kolon için“Kolon genişliğini optimize eder.
lo_cols = go_salv->get_columns( ).
lo_cols->set_optimize(
* value = if_salv_c_bool_sap~true
value = abap_true
).“spesifik bir kolonun metnini değiştirme
TRY.
lo_col = lo_cols->get_column( columnname = ‘INVOICE’ ).
lo_col->set_short_text( value = ‘Yeni Fat’).
lo_col->set_medium_text( ‘Yeni Fature D.’ ).
lo_col->set_long_text( ‘Yeni Fatura Düzenleyici’ ).
CATCH cx_salv_not_found.
MESSAGE ‘Columname could not be found!’ TYPE ‘I’ DISPLAY LIKE ‘E’.
ENDTRY.

“spesifik bir kolonu (mandt) kolonu alv’den kaldırma
TRY.
lo_col = lo_cols->get_column( columnname = ‘MANDT’ ).
lo_col->set_visible( value = abap_false ).
* lo_col->set_visible(
* value = if_salv_c_bool_sap=>true “true
* ).
CATCH cx_salv_not_found.
MESSAGE ‘Columname could not be found!’ TYPE ‘I’ DISPLAY LIKE ‘E’.
ENDTRY.
Toolbar Ekleme:
DATA: lo_func TYPE REF TO cl_salv_functions.
lo_func = go_salv->get_functions( ).
lo_func->set_all( value = if_salv_c_bool_sap=>true ).

Header Ekleme:
DATA: lo_header TYPE REF TO cl_salv_form_layout_grid,
lo_h_label TYPE REF TO cl_salv_form_label,
lo_h_flow TYPE REF TO cl_salv_form_layout_flow.
CREATE OBJECT lo_header.
lo_h_label = lo_header->create_label( row = 1 column = 1 ).
lo_h_label->set_text( value = ‘Başlık ilk satır’ ).
lo_h_flow = lo_header->create_flow( row = 2 column = 1 ).
lo_h_flow->create_text(
EXPORTING
text = ‘Başlık ikinci satır’
).
go_salv->set_top_of_list( value = lo_header ).

Popup SALV
go_salv->set_screen_popup(
EXPORTING
start_column = 30
end_column = 90
start_line = 5
end_line = 25
).

ZDYP15_R_SALV
*& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
*& Report ZDYP15_R_SALV
*& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
*&
*& - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
REPORT zdyp15_r_salv.
INCLUDE zdyp15_r_salv_top.
INCLUDE zdyp15_r_salv_cls.
START-OF-SELECTION.
go_lcl_main = NEW #( ).
go_lcl_main->get_data( ).
go_lcl_main->set_alv( ).
"başlık değiştirme -Title ve ZEBRA
go_lcl_main->set_title( ).
go_lcl_main->set_alv_header( ).
go_lcl_main->arrange_columns( ).
go_lcl_main->set_alv_header( ).
go_lcl_main->add_toolbar( ).
"popup salv
* go_lcl_main->popup_salv( ).
"ekrana basma işlemi
go_lcl_main->display_alv( ).
ZDYP15_R_SALV_TOP
*&---------------------------------------------------------------------*
*& Include ZDYP15_R_SALV_TOP
*&---------------------------------------------------------------------*
CLASS lcl_main DEFINITION DEFERRED.
DATA: go_lcl_main TYPE REF TO lcl_main.
DATA: gt_sbook TYPE TABLE OF sbook,
go_salv TYPE REF TO cl_salv_table.
ZDYP15_R_SALV_CLS
*&---------------------------------------------------------------------*
*& Include ZDYP15_R_SALV_CLS
*&---------------------------------------------------------------------*
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
METHODS: get_data,
set_alv,
set_title,
arrange_columns,
add_toolbar,
set_alv_header,
popup_salv,
display_alv.
ENDCLASS.
CLASS lcl_main IMPLEMENTATION.
METHOD get_data.
SELECT *
FROM sbook
INTO CORRESPONDING FIELDS OF TABLE @gt_sbook
UP TO 20 ROWS.
ENDMETHOD.
METHOD set_alv.
cl_salv_table=>factory(
IMPORTING
r_salv_table = go_salv " Basis Class Simple ALV Tables "salv objesi
CHANGING
t_table = gt_sbook "internal table
).
ENDMETHOD.
METHOD set_title.
DATA: lo_display TYPE REF TO cl_salv_display_settings.
lo_display = go_salv->get_display_settings( ).
lo_display->set_list_header( value = 'SALV PRACTICE').
"ZEBRA
lo_display->set_striped_pattern( value = abap_true ).
ENDMETHOD.
METHOD arrange_columns.
DATA: lo_cols TYPE REF TO cl_salv_columns. "genel olarak tüm kolonlar için
DATA: lo_col TYPE REF TO cl_salv_column. "spesifik bir kolon için
lo_cols = go_salv->get_columns( ).
lo_cols->set_optimize(
* value = if_salv_c_bool_sap~true
value = abap_true
).
TRY.
lo_col = lo_cols->get_column( columnname = 'INVOICE' ).
lo_col->set_short_text( value = 'Yeni Fat').
lo_col->set_medium_text( 'Yeni Fature D.' ).
lo_col->set_long_text( 'Yeni Fatura Düzenleyici' ).
CATCH cx_salv_not_found.
MESSAGE 'Columname could not be found!' TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
"mandt kolonunu kaldırmak istiyorum
TRY.
lo_col = lo_cols->get_column( columnname = 'MANDT' ).
lo_col->set_visible( value = abap_false ).
* lo_col->set_visible(
* value = if_salv_c_bool_sap=>true "true
* ).
CATCH cx_salv_not_found.
MESSAGE 'Columname could not be found!' TYPE 'I' DISPLAY LIKE 'E'.
ENDTRY.
ENDMETHOD.
METHOD add_toolbar.
DATA: lo_func TYPE REF TO cl_salv_functions.
lo_func = go_salv->get_functions( ).
lo_func->set_all( value = if_salv_c_bool_sap=>true ).
ENDMETHOD.
METHOD set_alv_header.
DATA: lo_header TYPE REF TO cl_salv_form_layout_grid,
lo_h_label TYPE REF TO cl_salv_form_label,
lo_h_flow TYPE REF TO cl_salv_form_layout_flow.
CREATE OBJECT lo_header.
lo_h_label = lo_header->create_label( row = 1 column = 1 ).
lo_h_label->set_text( value = 'Başlık ilk satır' ).
lo_h_flow = lo_header->create_flow( row = 2 column = 1 ).
lo_h_flow->create_text(
EXPORTING
text = 'Başlık ikinci satır'
).
go_salv->set_top_of_list( value = lo_header ).
ENDMETHOD.
METHOD popup_salv.
go_salv->set_screen_popup(
EXPORTING
start_column = 30
end_column = 90
start_line = 5
end_line = 25
).
ENDMETHOD.
METHOD display_alv.
go_salv->display( ).
ENDMETHOD.
ENDCLASS.

Görüşmek dileğiyle.