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.

Merve Polat

https://medium.com/@pmervepolat977

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir