Object Oriented ALV

OO ALV için

BC (CL_GUI_ALV_GRID) veya SALV (CL_SALV_TABLE) sınıfları kullanılmaktadır.

SE24 işlem kodu ile sınıfları incelenebilir.

BC ALV

Klasik ABAP listesi veya ızgara içerisinde çıktıyı gösterebilir. Liste görünümünde tüm ekranı kaplar ve sadece bir tablo gösterilebilir.

Izgara görünümünde tam ekran veya container nesnesi aracılığıyla bir ekranda birden fazla tablo gösterilebilir. Tam ekran görünümünde tüm ekranı kaplar ve sadece bir tablo gösterilebilir. Container’ lar aracılığıyla ekranda birden fazla tablo gösterilebilir.

Örnek: Programınızda bir ekran oluşturun.

Ekranı SE51 işlem kodundan veya ABAP düzenleyici içerisindeki nesne listesi görüntüleyicisini kullanarak oluşturabilirsiniz.

ABAP Düzenleyiciden Nesne listesi görüntüsü ( ) butonunu tıklayın. Programa ait nesneler listelenecektir. Nesne listesi üzerine sağ tıklayarak açılan menüden Create->Screen seçeneğini seçerek ekran oluşturabilirsiniz.

Ekran numarasını olarak “100” girin.

Yeni ekranda Short Description alanına ekranla ilgili kısa tanım girin.

Element list sekmesinde OK elementine değişken ismi olarak “OK_CODE” girin.

Flow logic sekmesine geçin MODULE ile başlayan satırların başından yıldız işaretlerini kaldırın ve kaydedin.

Ekrana ait olayları kontrol etmek için programa bir GUI status nesnesi eklemek gerekir. GUI status nesnesini SE41 işlem kodundan veya ABAP düzenleyiciden nesne listesini kullanarak oluşturabilirsiniz.

GUI status tanımları ekranı açılacaktır. Status alanına “100” girin, Short Text alanına kısa tanım bilgisi girin.

İşlev tuşları sekmesini açın. Resimde gösterilen şekilde 3 buton için fonksiyon kodunu doldurun.

GUI status nesnesini aktif edin.

Dilerseniz nesne görüntüleyiciyi kullanarak ekran için Title bar nesnesi ekleyebilirsiniz.

Programa aşağıdaki kod bloğunu ekleyin.

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_grid_100 IS INITIAL.
CREATE OBJECT g_grid_100
EXPORTING
i_parent = cl_gui_container=>screen0.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

ABAP kodunu ve ekran nesnesini aktif edin.

Programı çalıştırdığınızda SPFLI tablosu içeriğini görebilirsiniz.

Örnek 2: docking container kullanarak ekrana yerleştirilen custom control nesnesi üzerinde ALV’ yi gösteren örnek.

Nesne görüntüleyici içerisinden ekran nesnesine çift tıklayın. Araç çubuğundaki Layout butonuna tıklayarak. Screen painter’ ı açın. Sol taraftaki menüden Custom Control butonuna tıklayarak ekran üzerine yeni bir custom Control ekleyin.

Custom Control’ un ismini “CONT100” yapın ve ekranı aktif edin.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_custom_container_100 TYPE REF TO cl_gui_custom_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container_100 IS INITIAL.
CREATE OBJECT g_custom_container_100
EXPORTING container_name = ‘CONT100’.
CREATE OBJECT g_grid_100
EXPORTING i_parent = g_custom_container_100.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

Programı çalıştırdığınızda Custom Container içerisinde görüntülenen ALV’ yi görebilirsiniz.

Örnek 3: Ekrana Custom Container yerleştirmeden gösterilen ALV.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: ok_code LIKE sy-ucomm,
g_grid_100    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_docking_container_100 TYPE REF TO cl_gui_docking_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_docking_container_100 IS INITIAL.
CREATE OBJECT g_docking_container_100
EXPORTING
side       = g_docking_container_100->dock_at_top
extension  = 2000.
CREATE OBJECT g_grid_100
EXPORTING i_parent = g_docking_container_100.
gs_variant-report = sy-repid.
CALL METHOD g_grid_100->set_table_for_first_display
EXPORTING i_structure_name = ‘SFLIGHT’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

SALV ÖRNEKLERİ

Örnek:

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: g_salv_table TYPE REF TO cl_salv_table.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
TRY.
cl_salv_table=>factory(
EXPORTING
list_display = ‘X’
IMPORTING
r_salv_table = g_salv_table
CHANGING
t_table = gt_spfli ).
CATCH cx_salv_msg.
ENDTRY.
g_salv_table->display( ).

Örnek: Aşağıdaki kod SALV ile oluşturulan ALV yi konteyner içerisinde gösterir.

TABLES spfli.
DATA gt_spfli TYPE STANDARD TABLE OF spfli.
DATA: g_salv_table TYPE REF TO cl_salv_table,
g_custom_container_100 TYPE REF TO cl_gui_custom_container,
ok_code LIKE sy-ucomm,
g_functions type ref to cl_salv_functions_list,
gc_true  type sap_bool value ‘X’.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container_100 IS INITIAL.
CREATE OBJECT g_custom_container_100
EXPORTING container_name = ‘CONT100’.
TRY.
cl_salv_table=>factory(
EXPORTING
r_container    = g_custom_container_100
IMPORTING
r_salv_table = g_salv_table
CHANGING
t_table = gt_spfli ).
CATCH cx_salv_msg.
ENDTRY.
g_functions = g_salv_table->get_functions( ).
g_functions->set_all( gc_true ).
g_salv_table->display( ).
ENDIF.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 <I>” USER_COMMAND_0100  INPUT</I>

Örnek: SAPLKKBL programından Copy status butonunu kullanarak kendi programınıza GUI status kopyalayabilirsiniz.

Nesne listesinde görebilirsiniz.

Aktif edin.

TYPE-POOLS: slis.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv,
gs_layout    TYPE slis_layout_alv.
TYPES: BEGIN OF gy_sbook,
box       TYPE c LENGTH 1,
checkbox  TYPE c LENGTH 1,
carrid    TYPE sbook-carrid,
connid    TYPE sbook-connid,
fldate    TYPE sbook-fldate,
metin     TYPE c LENGTH 20,
END OF gy_sbook.
DATA: gt_sbook TYPE STANDARD TABLE OF gy_sbook,
gv_repid TYPE sy-repid.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CLEAR gs_fieldcat.
gs_fieldcat-tabname    = ‘GT_SBOOK’.
gs_fieldcat-fieldname  = ‘CHECKBOX’.
gs_fieldcat-seltext_m  = ‘CHECKBOX’.
gs_fieldcat-outputlen  = 3.
gs_fieldcat-checkbox   = ‘X’.
gs_fieldcat-edit       = ‘X’.
gs_fieldcat-input      = ‘X’.
*gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘METIN’.
gs_fieldcat-seltext_m  = ‘Açıklama’.
gs_fieldcat-outputlen  = 20.
gs_fieldcat-edit       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
gs_layout-box_fieldname     = ‘BOX’.
gs_layout-no_input          = ‘X’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program        = gv_repid
it_fieldcat               = gt_fieldcat
i_save                    = ‘A’
i_callback_pf_status_set  = ‘F_GUI_STATUS’
i_callback_user_command   = ‘F_USER_COMMAND’
is_layout                 = gs_layout
TABLES
t_outtab                  = gt_sbook
EXCEPTIONS
program_error             = 1
OTHERS                    = 2.
FORM f_gui_status USING p_extab TYPE slis_t_extab.
SET PF-STATUS ‘STANDARD_FULLSCREEN’.
ENDFORM.
FORM f_user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA ref_grid TYPE REF TO cl_gui_alv_grid.
DATA: ls_sbook TYPE gy_sbook,
lv_tabix TYPE c LENGTH 4,
lv_mesaj TYPE c LENGTH 50.
IF ref_grid IS INITIAL.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data .
ENDIF.
CASE r_ucomm.
WHEN ‘&DATA_SAVE’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE checkbox = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen checkbox:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE box = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen kutular:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE metin IS NOT INITIAL.
MESSAGE ls_sbook-metin TYPE ‘I’.
ENDLOOP.
ENDCASE.
rs_selfield-refresh = ‘X’.
ENDFORM.

Örnek: Bu sefer GUI status 100.

DATA: gt_fieldcat  TYPE lvc_t_fcat,
gs_fieldcat  TYPE lvc_s_fcat.
TYPES: BEGIN OF gy_sbook,
box       TYPE c LENGTH 1,
checkbox  TYPE c LENGTH 1,
carrid    TYPE sbook-carrid,
connid    TYPE sbook-connid,
fldate    TYPE sbook-fldate,
metin     TYPE c LENGTH 20,
END OF gy_sbook.
DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
g_valid TYPE c,
gt_sbook TYPE STANDARD TABLE OF gy_sbook,
ls_sbook TYPE gy_sbook,
lv_tabix TYPE c LENGTH 4,
lv_mesaj TYPE c LENGTH 50,
is_layout   TYPE lvc_s_layo.
DATA: et_index_rows TYPE lvc_t_row ,
et_row_no     TYPE lvc_t_roid ,
wa_row_no     LIKE LINE OF et_row_no.
DATA gv_stbl TYPE lvc_s_stbl.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS:
handle_data_changed
FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed ,
data_changed_finished
FOR EVENT data_changed_finished OF cl_gui_alv_grid
IMPORTING e_modified
et_good_cells .
PRIVATE SECTION.
DATA: error_in_data TYPE c.
ENDCLASS.                    “lcl_event_receiver DEFINITION
DATA: main_event_receiver TYPE REF TO lcl_event_receiver.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD  handle_data_changed.
DATA ls_deleted_rows TYPE lvc_s_moce.
ENDMETHOD.                    <I>”HANDLE_DATA_CHANGED</I>
METHOD data_changed_finished.
DATA : lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
ENDMETHOD.                    “DATA_CHANGED_FINISHED
ENDCLASS.                    “LCL_EVENT_RECEIVER IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
PERFORM create_gui_objects_0100.
ENDMODULE.                ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CLEAR g_valid.
CALL METHOD g_alv_grid->check_changed_data
IMPORTING e_valid = g_valid.
CASE ok_code.
WHEN ‘&DATA_SAVE’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE checkbox = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen checkbox:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CALL METHOD g_alv_grid->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no     = et_row_no.
LOOP AT et_row_no INTO wa_row_no  .
ls_sbook-box = ‘X’ .
MODIFY gt_sbook INDEX wa_row_no-row_id FROM ls_sbook TRANSPORTING box  .
ENDLOOP.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE box = ‘X’.
WRITE sy-tabix TO lv_tabix.
CONCATENATE lv_mesaj lv_tabix ‘,’ INTO lv_mesaj.
ENDLOOP.
CONCATENATE ‘Seçilen kutular:’ lv_mesaj INTO lv_mesaj SEPARATED BY space.
MESSAGE lv_mesaj TYPE ‘I’.
CLEAR lv_mesaj.
LOOP AT gt_sbook INTO ls_sbook WHERE metin IS NOT INITIAL.
MESSAGE ls_sbook-metin TYPE ‘I’.
ENDLOOP.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.                 ” EXIT  INPUT
FORM create_gui_objects_0100 .
DATA: lt_fieldcat TYPE lvc_t_fcat,
is_variant  TYPE disvariant,
is_layout   TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions.
DATA : lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
IF g_docking_container IS INITIAL.
CALL METHOD cl_gui_cfw=>dispatch.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
APPEND g_alv_grid->mc_fc_graph              TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_info               TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_append_row TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_copy           TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_copy_row       TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_cut            TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_delete_row TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_insert_row     TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_move_row       TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_paste          TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_paste_new_row  TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_loc_undo           TO lt_toolbar_excluding.
APPEND g_alv_grid->mc_fc_check              TO lt_toolbar_excluding.
CLEAR gs_fieldcat.
gs_fieldcat-tabname    = ‘GT_SBOOK’.
gs_fieldcat-fieldname  = ‘CHECKBOX’.
gs_fieldcat-seltext    = ‘CHECKBOX’.
gs_fieldcat-outputlen  = 3.
gs_fieldcat-checkbox   = ‘X’.
gs_fieldcat-edit       = ‘X’.
*    gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext    = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext    = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext    = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘METIN’.
gs_fieldcat-seltext    = ‘Açıklama’.
gs_fieldcat-outputlen  = 20.
gs_fieldcat-edit       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
is_layout-box_fname    = ‘BOX’.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = is_variant
is_layout                     = is_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_sbook
it_fieldcatalog               = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT main_event_receiver.
SET HANDLER main_event_receiver->handle_data_changed FOR g_alv_grid.
SET HANDLER main_event_receiver->data_changed_finished FOR g_alv_grid.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_alv_grid.
CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.
CALL METHOD g_alv_grid->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_enter.
CLEAR: lt_cells[], ls_cells.
ls_cells-row_id-index = 1.
CALL METHOD g_alv_grid->set_selected_cells
EXPORTING
it_cells = lt_cells.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM.                    ” CREATE_GUI_OBJECTS_0100

Alan kataloğları kontrol edilecek.

Örnek: İki ALV gösteren örnek.

TABLES spfli.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gt_sbook type standard table of sbook.
DATA: ok_code LIKE sy-ucomm,
g_grid1 TYPE REF TO cl_gui_alv_grid,
g_grid2 TYPE REF TO cl_gui_alv_grid,
gs_variant LIKE disvariant,
g_docking_container1 TYPE REF TO cl_gui_docking_container,
g_docking_container2 TYPE REF TO cl_gui_docking_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
SELECT * FROM sbook
INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_docking_container1 IS INITIAL.
CREATE OBJECT g_docking_container1
EXPORTING
side       = g_docking_container1->dock_at_top
ratio      = 50.
CREATE OBJECT g_grid1
EXPORTING i_parent = g_docking_container1.
gs_variant-report = sy-repid.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = ‘SPFLI’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
IF g_docking_container2 IS INITIAL.
CREATE OBJECT g_docking_container2
EXPORTING
side       = g_docking_container2->dock_at_bottom
ratio      = 50.
CREATE OBJECT g_grid2
EXPORTING i_parent = g_docking_container2.
gs_variant-report = sy-repid.
CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = ‘SBOOK’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_sbook.
ENDIF.
ENDMODULE.                 ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT

Örnek: İki Custom konteyner kullanarak iki farklı alv gösteren örnek.

TABLES spfli.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gt_sbook type standard table of sbook.
DATA: ok_code LIKE sy-ucomm,
g_grid1    TYPE REF TO cl_gui_alv_grid,
g_grid2    TYPE REF TO cl_gui_alv_grid,
gs_variant    LIKE disvariant,
g_custom_container1 TYPE REF TO cl_gui_custom_container,
g_custom_container2 TYPE REF TO cl_gui_custom_container.
START-OF-SELECTION.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
SELECT * FROM sbook
INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
SET TITLEBAR ‘100’.
IF g_custom_container1 IS INITIAL.
CREATE OBJECT g_custom_container1
EXPORTING container_name = ‘CONT1’.
CREATE OBJECT g_grid1
EXPORTING i_parent = g_custom_container1.
gs_variant-report = sy-repid.
CALL METHOD g_grid1->set_table_for_first_display
EXPORTING i_structure_name = ‘SPFLI’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_spfli.
ENDIF.
IF g_custom_container2 IS INITIAL.
CREATE OBJECT g_custom_container2
EXPORTING container_name = ‘CONT2’.
CREATE OBJECT g_grid2
EXPORTING i_parent = g_custom_container2.
gs_variant-report = sy-repid.
CALL METHOD g_grid2->set_table_for_first_display
EXPORTING i_structure_name = ‘SBOOK’
i_save           = ‘A’
is_variant       = gs_variant
CHANGING  it_outtab        = gt_sbook.
ENDIF.
ENDMODULE.                 <I>” STATUS_0100  OUTPUT</I>
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT

Örnek:

DATA: gt_fieldcat  TYPE lvc_t_fcat,
gs_fieldcat  TYPE lvc_s_fcat.
DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
gt_mara TYPE STANDARD TABLE OF mara,
gs_mara TYPE mara,
gs_layout   TYPE lvc_s_layo.
CLASS lcl_event_receiver DEFINITION.
PUBLIC SECTION.
METHODS : handle_hotspot_click FOR EVENT hotspot_click OF
cl_gui_alv_grid
IMPORTING
e_row_id e_column_id es_row_no.
ENDCLASS.                    “lcl_event_receiver DEFINITION
DATA: main_event_receiver TYPE REF TO lcl_event_receiver.
CLASS lcl_event_receiver IMPLEMENTATION.
METHOD handle_hotspot_click.
CASE e_column_id.
WHEN ‘MATNR’.
CLEAR gs_mara.
READ TABLE gt_mara INTO gs_mara INDEX e_row_id-index.
IF sy-subrc EQ 0.
SET PARAMETER ID ‘MAT’ FIELD gs_mara-matnr.
CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.                    “LCL_EVENT_RECEIVER IMPLEMENTATION
START-OF-SELECTION.
SELECT * FROM mara UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_mara.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
PERFORM create_gui_objects_0100.
ENDMODULE.                 ” STATUS_0100  OUTPUT
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.                 ” USER_COMMAND_0100  INPUT
MODULE exit INPUT.
LEAVE TO SCREEN 0.
ENDMODULE.                 ” EXIT  INPUT
FORM create_gui_objects_0100 .
DATA: lt_fieldcat TYPE lvc_t_fcat,
gs_variant  TYPE disvariant,
gs_layout   TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions.
IF g_docking_container IS INITIAL.
CALL METHOD cl_gui_cfw=>dispatch.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘MARA’
CHANGING
ct_fieldcat                  = gt_fieldcat
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
gs_fieldcat-hotspot = ‘X’.
MODIFY gt_fieldcat FROM gs_fieldcat
TRANSPORTING hotspot
WHERE fieldname = ‘MATNR’.
gs_variant-report = sy-repid.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = gs_variant
is_layout                     = gs_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_mara
it_fieldcatalog               = gt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CREATE OBJECT main_event_receiver.
SET HANDLER main_event_receiver->handle_hotspot_click FOR g_alv_grid.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDFORM.                    ” CREATE_GUI_OBJECTS_0100

Örnek: Veritabanı erişim işlemlerini gösteren örnek.

DATA : g_docking_container TYPE REF TO cl_gui_docking_container,
g_alv_grid          TYPE REF TO cl_gui_alv_grid,
ok_code LIKE sy-ucomm,
gt_sflight TYPE STANDARD TABLE OF sflight,
gs_sflight TYPE sflight.
CLASS lcl_alv DEFINITION.
PUBLIC SECTION.
METHODS:
alv_olustur,
handle_toolbar
FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING e_object
e_interactive
sender,
handle_user_command
FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm sender.
ENDCLASS.
DATA g_alv TYPE REF TO lcl_alv.
CLASS lcl_alv IMPLEMENTATION.
METHOD alv_olustur.
DATA: lt_fieldcat   TYPE lvc_t_fcat,
ls_fieldcat   TYPE lvc_s_fcat,
ls_variant    TYPE disvariant,
ls_layout     TYPE lvc_s_layo,
lt_toolbar_excluding TYPE ui_functions,
lv_repid      TYPE sy-repid.
DATA: lt_cells TYPE lvc_t_cell,
ls_cells TYPE lvc_s_cell.
IF g_docking_container IS INITIAL.
CREATE OBJECT g_docking_container
EXPORTING
side       = g_docking_container->dock_at_top
extension  = 2000.
CREATE OBJECT g_alv_grid
EXPORTING
i_parent          = g_docking_container
EXCEPTIONS
error_cntl_create = 1
error_cntl_init   = 2
error_cntl_link   = 3
error_dp_create   = 4
OTHERS            = 5.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name        = ‘ZSFLIGHT’
CHANGING
ct_fieldcat             = lt_fieldcat
EXCEPTIONS
inconsistent_interface  = 1
program_error           = 2
OTHERS                  = 3.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ls_fieldcat-edit = ‘X’.
MODIFY lt_fieldcat FROM ls_fieldcat
TRANSPORTING edit
WHERE fieldname = ‘PRICE’.
ls_layout-box_fname    = ‘BOX’.
lv_repid = sy-repid.
ls_variant-report      = lv_repid.
CALL METHOD g_alv_grid->set_table_for_first_display
EXPORTING
i_save                        = ‘A’
is_variant                    = ls_variant
is_layout                     = ls_layout
it_toolbar_excluding          = lt_toolbar_excluding
CHANGING
it_outtab                     = gt_sflight
it_fieldcatalog               = lt_fieldcat
EXCEPTIONS
invalid_parameter_combination = 1
program_error                 = 2
too_many_lines                = 3
OTHERS                        = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
SET HANDLER me->handle_toolbar FOR g_alv_grid.
SET HANDLER me->handle_user_command FOR g_alv_grid.
CALL METHOD cl_gui_control=>set_focus
EXPORTING
control = g_alv_grid.
CALL METHOD g_alv_grid->set_ready_for_input
EXPORTING
i_ready_for_input = 1.
ELSE.
CALL METHOD g_alv_grid->refresh_table_display.
CALL METHOD cl_gui_cfw=>flush.
ENDIF.
ENDMETHOD.
METHOD handle_toolbar.
DATA ls_toolbar TYPE stb_button.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘DOLDUR’           TO ls_toolbar-function.
MOVE icon_activity      TO ls_toolbar-icon.
MOVE ‘Tabloyu doldur’   TO ls_toolbar-text.
MOVE ‘select ve insert’ TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘TUMUNUSIL’        TO ls_toolbar-function.
MOVE icon_delete        TO ls_toolbar-icon.
MOVE ‘Tümünü sil’       TO ls_toolbar-text.
MOVE ‘delete’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘SATIRSIL’         TO ls_toolbar-function.
MOVE icon_delete_row    TO ls_toolbar-icon.
MOVE ‘Seçileni sil’     TO ls_toolbar-text.
MOVE ‘delete’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar. MOVE 3 TO ls_toolbar-butn_type.
APPEND ls_toolbar TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘GUNCELLEM’        TO ls_toolbar-function.
MOVE ‘Güncelle(modify)’ TO ls_toolbar-text.
MOVE ‘modify’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
CLEAR ls_toolbar.
MOVE ‘GUNCELLEU’        TO ls_toolbar-function.
MOVE ‘Güncelle(update)’ TO ls_toolbar-text.
MOVE ‘update’           TO ls_toolbar-quickinfo.
APPEND ls_toolbar       TO e_object->mt_toolbar.
ENDMETHOD.
METHOD handle_user_command.
DATA: et_index_rows TYPE lvc_t_row,
et_row_no     TYPE lvc_t_roid,
wa_row_no     LIKE LINE OF et_row_no.
CASE e_ucomm.
WHEN ‘DOLDUR’.
REFRESH gt_sflight.
SELECT * FROM sflight UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
INSERT zsflight FROM TABLE gt_sflight.
CALL METHOD sender->refresh_table_display.
WHEN ‘TUMUNUSIL’.
DELETE FROM zsflight.
COMMIT WORK AND WAIT.
REFRESH gt_sflight.
CALL METHOD sender->refresh_table_display.
WHEN ‘SATIRSIL’.
CALL METHOD g_alv_grid->get_selected_rows
IMPORTING
et_index_rows = et_index_rows
et_row_no     = et_row_no.
LOOP AT et_row_no INTO wa_row_no.
READ TABLE gt_sflight INTO gs_sflight INDEX wa_row_no-row_id.
DELETE FROM zsflight WHERE carrid = gs_sflight-carrid AND
connid = gs_sflight-connid AND
fldate = gs_sflight-fldate.
COMMIT WORK AND WAIT.
DELETE gt_sflight WHERE carrid = gs_sflight-carrid AND
connid = gs_sflight-connid AND
fldate = gs_sflight-fldate.
CALL METHOD sender->refresh_table_display.
ENDLOOP.
WHEN ‘GUNCELLEM’.
MODIFY zsflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WHEN ‘GUNCELLEU’.
UPDATE zsflight FROM TABLE gt_sflight.
COMMIT WORK AND WAIT.
WHEN OTHERS.
ENDCASE.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
SELECT * FROM zsflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
CREATE OBJECT g_alv.
CALL SCREEN 0100.
MODULE status_0100 OUTPUT.
SET PF-STATUS ‘100’.
CALL METHOD g_alv->alv_olustur.
ENDMODULE.
MODULE user_command_0100 INPUT.
CASE ok_code.
WHEN ‘GERI’ OR ‘CIKIS’ OR ‘IPTAL’.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

ALV (ABAP LIST VIEWER)

ALV (ABAP LIST VIEWER)

SAP’ nin standart liste görüntüleyicisidir (ABAP List Viewer). İnternal tablodaki bilgileri standart liste formatında görüntüler. Standart bir liste formatı ve kullanıcı arayüzü sağlar. Hazır fonksiyonları sayesinde geliştirme zamanını önemli derecede azaltır.

Liste çıktısını oluşturmak için iki temel parametreye ihtiyaç vardır.

1. Veri tablosu: ALV’ de gösterilmek istenen internal tablodur

2. Sütun bilgileri: Sütun başlığı, genişliği gibi bilgilerdir.

ALV birçok hazır fonksiyona sahiptir. Bazı hazır fonksiyonlar,

  • Sıralama
  • Filtreleme
  • Alt toplam ve tra toplam alma
  • Raporu çeşitli formatlarda bilgisayara kaydetme
  • Sütunların sırasını değiştirme, istenmeyen sütunları gizleme ve variant olarak sütun sırasının kaydedilmesi

ALV fonksiyonlarının olduğu araç çubuğu.

ALV çıktısı klasik veya nesne tabanlı (OO) alv foksiyonlar kullanılabilir.

Klasik ALV raporlarında kullanılacak bazı fonksiyonlar aşağıdaki tablodadır.

Fonksiyon Modül Tanım
REUSE_ALV_GRID_DISPLAY Veriyi ızgara (grid) içerisinde gösteren fonksiyon
REUSE_ALV_LIST_DISPLAY Veriyi standart liste çıktısı olarak gösteren fonksiyon
REUSE_ALV_HIERSEQ_LIST_DISPLAY Veriyi hiyerarşik sıralı liste içerisinde gösteren fonksiyon
REUSE_ALV_POPUP_TO_SELECT Popup pencerede bir listeden seçim yapılmasını sağlayan fonksiyon
REUSE_ALV_COMMENTARY_WRITE ALV’ ye başlık alanı ekler
REUSE_ALV_VARIANT_F4 Seçim ekranında variant seçimi yapılmasını sağlar
REUSE_ALV_VARIANT_DEFAULT_GET Varsayılan görüntü varyantını getirir
REUSE_ALV_VARIANT_EXISTENCE Bir variant’ ın üst birimde bulunup bulunmadığını kontrol eder
REUSE_ALV_FIELDCATALOG_MERGE Abap dictionary’ deki nesnelerden veya internal tablodan alan kataloğu oluşturmak için kullanılır
REUSE_ALV_EVENTS_GET ALV için kullanılabilecek olayların (events) listesini verir

REUSE_ALV_GRID_DISLAY

Parametre olarak verilerin internal tabloyu hücresel formatta görüntüler.

Sütun bilgilerini aktarmak için “I_STRUCTURE_NAME” parametresi veya “IT_FIELDCAT” parametresi kullanılır.

I_STRUCTURE_NAME: Abap dictionary’ deki tanımlı bir yapıdır. Structure, tablo, tablo tipi gibi. Bu parametre kullanıldığında yapıdaki tüm sütunlar ALV’ de gösterilmeye çalışılır.

IT_FIELDCAT: Sütun bilgilerini içeren internal tabloyu (field catalog) parametre olarak alır.

Alan kataloğu internal tablosu üç yönetim ile hazırlanabilir.

1. Alan kataloğu internal tablosunu el ile oluşturarak

2. Alan kataloğu internal tablosunu fonksiyon ile Abap Dictionary’ daki structure, tablo veya tablo tiplerinden oluşturarak

3. Önce Abap dictionary’ deki nesnelerden oluşturulur, daha sonra istenilen şekilde düzeltilerek

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_INTERFACE_CHECK SPACE X Arayüz tutarlılık denetimi. Liste görünümünde &SOS komutu ile de çalışır.
I_BYPASSING_BUFFER TYPE CHAR01 SPACE X X Bufferları (tampon) göz ardı et
I_BUFFER_ACTIVE SPACE X X Buffer (tamponlama) aktif
I_CALLBACK_PROGRAM LIKE SY-REPID SPACE X Fonksiyonu çağıran program ismi
I_CALLBACK_PF_STATUS_SET TYPE SLIS_FORMNAME SPACE X GUI status alt yordam ismi
I_CALLBACK_USER_COMMAND TYPE SLIS_FORMNAME SPACE X Kullanıcı komutu yakalamak için alt yordam ismi
I_CALLBACK_TOP_OF_PAGE TYPE SLIS_FORMNAME SPACE X TOP-OF-PAGE için alt yordam ismi
I_CALLBACK_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME SPACE X HTML TOP-OF-PAGE için alt yordam ismi
I_CALLBACK_HTML_END_OF_LIST TYPE SLIS_FORMNAME SPACE X HTML END-OF-LIST için alt yordam ismi
I_STRUCTURE_NAME LIKE DD02L-TABNAME X Abap dictionary içerisindeki structure
I_BACKGROUND_ID TYPE SDYDO_KEY SPACE X Top-of-Page alanındaki çıktı için arkaplan parametresi
I_GRID_TITLE TYPE LVC_TITLE X ALV’nin başlık metni
I_GRID_SETTINGS TYPE LVC_S_GLAY X Top-of-Page ve End-of-List görünümleri için görünüm ayarları
IS_LAYOUT TYPE SLIS_LAYOUT_ALV X Listenin görünüm düzeni
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV X Sütun bilgilerini içeren alan kataloğu (field catalog) internal tablosu
IT_EXCLUDING TYPE SLIS_T_EXTAB X Görünmemesi istenen ALV fonksiyonlarını aktarmak için kullanılan internal tablo
IT_SPECIAL_GROUPS TYPE SLIS_T_SP_GROUP_ALV X Sütun seçimi için alanların gruplama bilgisi
IT_SORT TYPE SLIS_T_SORTINFO_ALV X Çıktı için sıralama bilgisi
IT_FILTER TYPE SLIS_T_FILTER_ALV X Çıktı için filtreleme bilgisi
IS_SEL_HIDE TYPE SLIS_SEL_HIDE_ALV X Artık desteklenmiyor
I_DEFAULT ‘X’ X Başlangıç variant seçimini aktif veya pasif yapar
I_SAVE SPACE X Aldığı parametrelere göre variant’ ın saklanmasına izin verir.
IS_VARIANT LIKE DISVARIANT Variant saklanacak ise kullanılır. Variant bilgilesi aktarılır
IT_EVENTS TYPE SLIS_T_EVENT X Kullanılacak olayların listes
IT_EVENT_EXIT TYPE SLIS_T_EVENT_EXIT X Standart ALV fonksiyonları internal tablosu. Burada belirtilen fonksiyonlar USER_COMMAND fonksiyonuna düşmesi
IS_PRINT TYPE SLIS_PRINT_ALV X Çıktı bilgisi
IS_REPREP_ID TYPE SLIS_REPREP_ID X Arayüz başlangıç anahtarı
I_SCREEN_START_COLUMN 0 X Listenin sütun başlangıç pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_START_LINE 0 X Listenin satır başlangıç pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_END_COLUMN 0 X Listenin sütun bitiş pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_SCREEN_END_LINE 0 X Listenin satır bitiş pozisyonu. Sadece dialog liste’ te görünecek ise kullanılır
I_HTML_HEIGHT_TOP TYPE I 0 X HTML_TOP_OF_PAGE yüksekliği
I_HTML_HEIGHT_END TYPE I 0 X HTML_END_OF_PAGE yüksekliği
IT_ALV_GRAPHICS TYPE DTC_T_TC X ALV grafiği için parametre
IT_HYPERLINK TYPE LVC_T_HYPE X Hiperlink
IT_ADD_FIELDCAT TYPE SLIS_T_ADD_FIELDCAT X Ek alan kataloğu bilgileri
IT_EXCEPT_QINFO TYPE SLIS_T_QINFO_ALV X
IR_SALV_FULLSCREEN_ADAPTER TYPE REF TO CL_SALV_FULLSCREEN_ADAPTER X Kullanılamaz
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
E_EXIT_CAUSED_BY_CALLER CALLBACK_USER_COMMAND çıkış parametresi
ES_EXIT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER Kullanıcının ALV’ den çıkarken hangi butonu kullandığı bilgisi
TABLES
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
T_OUTTAB ALV’ de gösterilecek veri
EXCEPTIONS
Exception Tanım
PROGRAM_ERROR Program hatası

Örnek 1: “I_STRUCTURE_NAME” parametresi kullanılan örnek. Abap dictionary’ deki yapı ALV’ nin sütunlarını oluşturmak için kullanılır.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF  TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.


Örnek 2: “IT_FIELDCAT” parametresi kullanılan örnek. Sütun bilgileri, satır satır internal tabloya ekleniyor ve fonksiyona veriliyor.

TYPE-POOLS: slis.

DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
Veri tablosu tipi tanımlanıyor
DATA  gt_sbook TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
Alan kataloğu dolduruluyor
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘ID’.
gs_fieldcat-outputlen  = 7.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘No’.
gs_fieldcat-outputlen  = 8.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Uçuş tarihi’.
gs_fieldcat-outputlen  = 9.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Açıklama: Structure’ a atanan aşağıdaki değerler “slis_t_fieldcat_alv” tablo tipindeki internal tabloya eklenir. İnternal tabloya eklenen her bir satır ALV’ de bir sütuna karşılık gelir.

  • (fieldname): Veri tablosunda gösterilecek alan
  • (seltext_m): Alanın sütun başlığı
  • (outputlen) :Alanın sütun genişliği

Örnek 3: Abap dictionary’ deki bir yapıdaki alan bilgilerinden sütun bilgileri oluşturuluyor. Sütun başlığı, genişliği gibi bilgiler yapıdaki alanların özelliklerinden (data element ve domain) oluşturulur.

TYPE-POOLS: slis.
DATA : gt_sbook TYPE STANDARD TABLE OF sbook,
gv_repid TYPE sy-repid.
DATA  gt_fieldcat  TYPE slis_t_fieldcat_alv.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘SBOOK’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek 4: “REUSE_ALV_FIELDCATALOG_MERGE” fonksiyonu kullanılarak sütun bilgilerini Abap dictionary’ deki bir yapıdan alan ve daha sonra sütun bilgilerinde değişiklik yapan örnek.

TYPE-POOLS: slis.
* Alan kataloğu tanımlanıyor
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
* Veri tablosu tipi tanımlanıyor
DATA  gt_sbook     TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
* Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
* Alan kataloğu internal tablodan oluşturuluyor
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘SBOOK’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
* Otomatik oluşturulan alan kataloğunu üzerinde değişiklik
LOOP AT gt_fieldcat INTO gs_fieldcat WHERE fieldname = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Yeni ID’.
gs_fieldcat-outputlen  = 12.
MODIFY gt_fieldcat FROM gs_fieldcat.
ENDLOOP.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

REUSE_ALV_LIST_DISPLAY

Parametre olarak verilerin internal tabloyu liste formatında görüntüler. Kullanım olarak “REUSE_ALV_GRID_DISPLAY” fonksiyonuna çok benzer, aldığı parametre sayısı daha azdır.

Sütun bilgilerini aktarmak için “I_STRUCTURE_NAME” parametresi veya “IT_FIELDCAT” parametresi kullanılır.

I_STRUCTURE_NAME: Abap dictionary’ deki tanımlı bir yapıdır. Structure, tablo, tablo tipi gibi. Bu parametre kullanıldığında yapıdaki tüm sütunlar ALV’ de gösterilmeye çalışılır.

IT_FIELDCAT: Sütun bilgilerini içeren internal tabloyu (field catalog) parametre olarak alır.

Alan kataloğu internal tablosu üç yönetim ile hazırlanabilir.

1. Alan kataloğu internal tablosunu el ile oluşturarak

2. Alan kataloğu internal tablosunu fonksiyon ile Abap Dictionary’ daki structure, tablo veya tablo tiplerinden oluşturarak

3. Önce Abap dictionary’ deki nesnelerden oluşturulur, daha sonra istenilen şekilde düzeltilerek

Örnek 1: “I_STRUCTURE_NAME” parametresi kullanılan örnek. Abap dictionary’ deki yapı ALV’ nin sütunlarını oluşturmak için kullanılır.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.

Örnek 2: “IT_FIELDCAT” parametresi kullanılan örnek. Sütun bilgileri, satır satır internal tabloya ekleniyor ve fonksiyona veriliyor.

TYPE-POOLS: slis.
* Alan kataloğu tanımlanıyor
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
* Veri tablosu tip tanımlanıyor
DATA: gt_sbook     TYPE STANDARD TABLE OF sbook.
DATA gv_repid TYPE sy-repid.
* Veri tablosu dolduruluyor
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
* Alan kataloğu dolduruluyor
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Tarih’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘BOOKID’.
gs_fieldcat-seltext_m  = ‘Rezervasyon ID’.
APPEND gs_fieldcat TO gt_fieldcat.
gs_fieldcat-fieldname  = ‘PASSNAME’.
gs_fieldcat-seltext_m  = ‘Yolcu İsmi’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek 3: “I_INTERFACE_CHECK” parametresi kullanılarak çalıştırılan ALV örneği. Bu parametre geliştirme ve test amaçlı kullanım için uygundur.

DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
i_interface_check   = ‘X’
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
TABLES
t_outtab            = gt_spfli.

Program çalıştığında Alan kataloğu ile ilgili bilgieri görüntüler. Araç çubuğundan istenilen internal tablo görüntülenebilir.

Liste çıktısını görebilmek için geriye gitmek veya araç çubuğundan “Çıktı tablosu” butonuna tıklamak gerekir.

REUSE_ALV_HIERSEQ_LIST_DISPLAY

Hiyerarşik sıralı çıktı çıktı oluşturur. İki tane internal tabloyu formatlı ve sıralı biçimde görüntüler. Aldığı parametrelerin çoğu “REUSE_ALV_GRID_DISPLAY” ve “REUSE_ALV_LIST_DISPLAY” fonksiyonu ile aynıdır. Ek olarak detay olarak gösterilecek internal tablo bilgileri ve iki tablo arasındaki anahtar alanlar parametre olarak gönderilir.

Parametre Açıklama Fonksiyon
I_TABNAME_HEADER Başlık olarak gösterilecek internal tablo ismi IMPORT
I_TABNAME_ITEM Detay olarak gösterilecek internal tablo ismi IMPORT
IS_KEYINFO İki tablo arasındaki anahtar alan bağlantısı IMPORT
T_OUTTAB_HEADER Başlık olarak gösterilecek internal tablo TABLES
T_OUTTAB_ITEM Detay olarak gösterilecek internal tablo TABLES

Örnek: SFLIGHT tablosunu başlık SPFLI tablosunun detay olarak gösterildiği hiyerarşik ALV örneği.

TYPE-POOLS: slis.
DATA: gt_fieldcat_spfli   TYPE slis_t_fieldcat_alv,
gt_fieldcat_sflight TYPE slis_t_fieldcat_alv.
TYPES: BEGIN OF gy_sflight,
carrid TYPE sflight-carrid,
connid TYPE sflight-connid,
fldate TYPE sflight-fldate,
expand(1) TYPE c,
END OF gy_sflight.
DATA: gt_sflight TYPE STANDARD TABLE OF gy_sflight,
gt_spfli TYPE STANDARD TABLE OF spfli.
START-OF-SELECTION.
PERFORM tablolari_doldur.
PERFORM alankatalogu_olustur.
PERFORM tablolari_goster.
FORM tablolari_doldur .
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
SELECT * FROM spfli
INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
ENDFORM.              ” TABLOLARI_DOLDUR
FORM alankatalogu_olustur .
DATA : gs_fieldcat  TYPE slis_fieldcat_alv.
gs_fieldcat-col_pos    = 1.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-col_pos    = 2.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-col_pos    = 3.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-tabname    = ‘GT_SFLIGHT’.
gs_fieldcat-seltext_m  = ‘Uçuş Tarihi.’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘COUNTRYFR’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Ülke’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘CITYFROM’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Şehir’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
gs_fieldcat-fieldname  = ‘AIRPFROM’.
gs_fieldcat-tabname    = ‘GT_SPFLI’.
gs_fieldcat-seltext_m  = ‘Havaalanı’.
APPEND gs_fieldcat TO gt_fieldcat_sflight.
ENDFORM.                    ” ALANKATALOGU_OLUSTUR
FORM tablolari_goster .
DATA: lv_tabname_header  TYPE slis_tabname,
lv_tabname_item    TYPE slis_tabname,
lv_keyinfo         TYPE slis_keyinfo_alv,
lv_repid           TYPE sy-repid,
ls_layout          TYPE slis_layout_alv.
lv_repid = sy-repid.
ls_layout-expand_fieldname  = ‘EXPAND’.
ls_layout-window_titlebar   = ‘Hiyerarşik ALV Örneği’.
ls_layout-colwidth_optimize = ‘X’.
lv_tabname_header    = ‘GT_SFLIGHT’.
lv_tabname_item      = ‘GT_SPFLI’.
lv_keyinfo-header01  = ‘CARRID’.
lv_keyinfo-item01    = ‘CARRID’.
lv_keyinfo-header02  = ‘CONNID’.
lv_keyinfo-item02    = ‘CONNID’.
CALL FUNCTION ‘REUSE_ALV_HIERSEQ_LIST_DISPLAY’
EXPORTING
i_callback_program      = lv_repid
is_layout               = ls_layout
it_fieldcat             = gt_fieldcat_sflight
i_save                  = ‘A’
i_tabname_header        = lv_tabname_header
i_tabname_item          = lv_tabname_item
is_keyinfo              = lv_keyinfo
TABLES
t_outtab_header         = gt_sflight
t_outtab_item           = gt_spfli.
ENDFORM.                    <I>” TABLOLARI_GOSTER</I>

REUSE_ALV_BLOCK_LIST_APPEND

Birden fazla Listeyi ard arda görüntüler. Veri tablosu ve alan kataloğu oluşturulan listeler sırasıyla eklenir. Daha sonra “REUSE_ALV_BLOCK_LIST_DISPLAY” fonksiyonu ile eklenen listeler görüntülenir.

Aşağıdaki parametreler zorunludur.

· IS_LAYOUT

· IT_FIELDCAT

· I_TABNAME

· IT_EVENTS

Örnek: Ard arda iki tane ayrı listenin eklendiği örnek.

TYPE-POOLS: slis.
DATA: gt_fieldcat_sflight TYPE slis_t_fieldcat_alv,
gt_fieldcat_spfli TYPE slis_t_fieldcat_alv.
DATA: gt_sflight TYPE STANDARD TABLE OF sflight,
gt_spfli TYPE STANDARD TABLE OF spfli.
START-OF-SELECTION.
PERFORM tablolari_doldur.
PERFORM alankatalogu_olustur.
PERFORM tablolari_goster.
FORM tablolari_doldur .
SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE gt_sflight.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
ENDFORM.                    <I>” TABLOLARI_DOLDUR</I>
FORM alankatalogu_olustur .
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘SFLIGHT’
CHANGING
ct_fieldcat                 = gt_fieldcat_sflight
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name             = ‘SPFLI’
CHANGING
ct_fieldcat                 = gt_fieldcat_spfli
EXCEPTIONS
inconsistent_interface       = 1
program_error                = 2
OTHERS                       = 3.
ENDFORM.                    ” ALANKATALOGU_OLUSTUR
FORM tablolari_goster .
DATA : lv_repid TYPE sy-repid,
ls_layout TYPE slis_layout_alv,
lt_events TYPE slis_t_event.
lv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_INIT’
EXPORTING
i_callback_program          = lv_repid.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’
EXPORTING
is_layout                   = ls_layout
it_fieldcat                 = gt_fieldcat_sflight
i_tabname                   = ‘GT_SFLIGHT’
it_events                   = lt_events
TABLES
t_outtab                   = gt_sflight
EXCEPTIONS
program_error               = 1
maximum_of_appends_reached  = 2
OTHERS                        = 3.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_APPEND’
EXPORTING
is_layout                   = ls_layout
it_fieldcat                 = gt_fieldcat_spfli
i_tabname                   = ‘GT_SPFLI’
it_events                   = lt_events
TABLES
t_outtab                   = gt_spfli
EXCEPTIONS
program_error               = 1
maximum_of_appends_reached  = 2
OTHERS                      = 3.
CALL FUNCTION ‘REUSE_ALV_BLOCK_LIST_DISPLAY’
EXCEPTIONS
program_error                 = 1
OTHERS                        = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.                    ” TABLOLARI_GOSTER

REUSE_ALV_FIELDCATALOG_MERGE

Alan kataloğu (ALV’ deki sütun bilgileri) internal tablosunu otomatik olarak oluşturur. Fonksiyona gönderilen “I_INTERNAL_TABNAME” veya “I_STRUCTURE_NAME” parametresine göre alan kataloğu internal tablosunu doldurur.

“I_INTERNAL_TABNAME”: Program içerisinden aktarılan internal tabloya göre alan kataloğu tablosu doldurulur.

“I_STRUCTURE_NAME”: Abap dictionary içerisinde tanımlı, structure, tablo veya view kullanarak tabloyu doldurur.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_PROGRAM_NAME LIKE SY-REPID X X Fonksiyonu çağıran program
I_INTERNAL_TABNAME TYPE SLIS_TABNAME X X Alan kataloğu oluşturulacak internal tablo
I_STRUCTURE_NAME LIKE DD02L-TABNAME X X Alan kataloğu oluşturulacak Abap dictionary nenesi
I_CLIENT_NEVER_DISPLAY TYPE SLIS_CHAR_1 X X X Üst birim alanlarını gizle
I_INCLNAME LIKE TRDIR-NAME X X Include ismie
I_BYPASSING_BUFFER TYPE CHAR01 X X Tampon belleği kullanma
I_BUFFER_ACTIVE TYPE CHAR01 X X Özel tamponu aktif et
CHANGING
Parametre Tanım tipi İlişkili tip Ops. Dğr atn. Parametre açıklaması
CT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV X Alan kataloğu tablosu
EXCEPTIONS
Exception Tanım
INCONSISTENT_INTERFACE Çalıştırma parametreleri hatası
PROGRAM_ERROR Program hatası

“I_STRUCTURE_NAME” ile ilgili örnekler için “REUSE_ALV_GRID_DISPLAY” fonksiyonunun anlatıldığı 2. Ve 3. Örnekleri inceleyebilirsiniz.

REUSE_ALV_COMMENTARY_WRITE

ALV’ ye açıklama bilgisi ekler. Raporla ilgili bilgileri başlıkta açıklama alanında göstermek için kullanılır. Eklenmek istenen bilgiler satır satır internal tabloya eklenir ve fonksiyona parametre olarak gönderilir. “REUSE_ALV_GRID_DISPLAY” fonksiyonundan “I_CALLBACK_TOP_OF_PAGE” parametresine başlık fonksiyonun kullanıldığı alt yordam ismi yazılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
IT_LIST_COMMENTARY TYPE SLIS_T_LISTHEADER X Açıklama bilgisinin olduğu internal tablo
I_LOGO X Eklenecek logo ismi
I_END_OF_LIST_GRID X
I_ALV_FORM TYPE SAP_BOOL X

Örnek: Açıklama alanına rapor ismi, tarih, kayıt sayısı ve logo ekleyen örnek.

TYPE-POOLS: slis.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid LIKE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
* Program ismi gv_repid değikenine atanıyor
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = gv_repid
i_structure_name        = ‘SPFLI’
i_callback_top_of_page  = ‘TOP_OF_PAGE’
i_save                  = ‘A’
TABLES
t_outtab                = gt_spfli.
FORM top_of_page.
DATA: lt_header    TYPE slis_t_listheader,
ls_header    TYPE slis_listheader,
lv_lines     TYPE i,
lv_linesc(4) TYPE c.
* Başlık alanına rapor ismi yazılıyor
ls_header-typ  = ‘H’.
ls_header-key  = ”.
ls_header-info = gv_repid.
APPEND ls_header TO lt_header.
* Günün tarihi ekleniyor
CLEAR ls_header.
ls_header-typ = ‘S’.
ls_header-key = ‘Tarih: ‘.
WRITE sy-datum TO ls_header-info.
APPEND ls_header TO lt_header.
CLEAR: ls_header.
* İnternal tablodaki kayıt sayısı ekleniyor
CLEAR ls_header.
* İnternal tablodaki kayıt sayısı lv_lines değişkenine atanıyor
DESCRIBE TABLE gt_spfli LINES lv_lines.
lv_linesc = lv_lines.
CONCATENATE ‘Toplam kayıt sayısı: ‘ lv_linesc INTO ls_header-info SEPARATED BY space.
ls_header-typ  = ‘A’.
APPEND ls_header TO lt_header.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary   = lt_header
i_logo               = ‘ENJOYSAP_LOGO’.
ENDFORM.

REUSE_ALV_VARIANT_F4

ALV variantının seçilmesini seçilmesini sağlayan bir pencere (dialog) açar. Variant listesinin hali hazırda kaydedilmiş variant/variantların olması gerekir. Çalıştırılmadan önce “IS_VARIANT” import paremetresindeki “REPORT” değişkenine raporun ismi atanmalıdır. Pencereden seçim yapıldıktan sonra ALV fonksiyonuna seçilen ALV bilgileri yine “IS_VARIANT” parametresi ile aktarılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
IS_VARIANT LIKE DISVARIANT X Variant bilgileri
I_TABNAME_HEADER TYPE SLIS_TABNAME X X Tablo ismi balığı
I_TABNAME_ITEM TYPE SLIS_TABNAME X X Tablo ismi kalemi
IT_DEFAULT_FIELDCAT TYPE X X Alan kataloğu internal tablosu
I_SAVE SLIS_T_FIELDCAT_ALV SPACE X X Variant saklama seçeneği
I_DISPLAY_VIA_GRID TYPE CHAR01 SPACE X X Izgara biçiminde göster
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
E_EXIT X İptal seçildi
ES_VARIANT LIKE DISVARIANT X Variant bilgisi
EXCEPTIONS
Exception Tanım
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek 1: Seçim ekranında variant seçim parametresi olan ve bu parametreden seçilen varainta göre ALV’ nin düzeninin değiştiği örnek. Variant listesini seçim ekranında görmek için önce ALV listesinde variant kaydedilmesi gerekir. Kaydedilen variant daha sonra rapor her çalıştığında seçim ekranında seçilebilir.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM alv_goster.
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.

P_VARIA parametresi üzerinde F4 yardımı kullanıldığında, kaydedilmiş olan varaint listesi görünür. Bu listeden seçim yapılarak rapor çalıştığında düzen seçilen varaint’ a göre gelir.

REUSE_ALV_VARIANT_DEFAULT_GET

ALV raporuna ait varsayılan varaint’ ı elde etmek için kullanılır.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_SAVE SPACE X X Varaint saklama seçeneği
EXPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
CS_VARIANT LIKE DISVARIANT X Variant bilgileri
EXCEPTIONS
Exception Tanım
WRONG_INPUT Yanlış giriş paremetresi
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek: ALV’ ye ait varsayılan variant varsa bunu seçim ekranındaki variant parametresine taşıyan örnek.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
INITIALIZATION.
PERFORM varsayilan_varainti_bul.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM alv_goster.

FORM varsayilan_varainti_bul .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_DEFAULT_GET’
EXPORTING
i_save      = lv_save
CHANGING
cs_variant  = ls_variant
EXCEPTIONS
wrong_input         = 1
not_found           = 2
program_error       = 3
OTHERS              = 4.
IF sy-subrc = 0.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.

Bu ALV’ ye ait varsayılan varaint “INITIALIZATION” sürecinde bulunarak ekrandaki “P_VARIA” parametresine taşınır.

REUSE_ALV_VARIANT_EXISTENCE

Bir varaint’ ın mevcut olup olmadığı kontrolünü yapar.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_SAVE SPACE X X Varaint saklama seçeneği
CHANGING
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
CS_VARIANT LIKE DISVARIANT X Variant bilgileri
EXCEPTIONS
Exception Tanım
WRONG_INPUT Yanlış giriş paremetresi
NOT_FOUND Variant bulunamadı
PROGRAM_ERROR Program hatası

Örnek: Seçilen variant’ ın sistemde bulunup, bulunmadığını kontrol eden örnek.

DATA gt_spfli TYPE STANDARD TABLE OF spfli.
PARAMETER : p_varia TYPE disvariant-variant.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_varia.
PERFORM f4_variant.
START-OF-SELECTION.
PERFORM variant_kontrolu.
PERFORM alv_goster.
FORM f4_variant .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’,
lv_exit(1) TYPE c.
CLEAR ls_variant.
ls_variant-report = sy-repid.
CALL FUNCTION ‘REUSE_ALV_VARIANT_F4’
EXPORTING
is_variant    = ls_variant
i_save        = lv_save
IMPORTING
e_exit        = lv_exit
es_variant    = ls_variant
EXCEPTIONS
not_found     = 1
program_error = 2
OTHERS        = 3.
IF sy-subrc = 0 AND lv_exit = space.
p_varia = ls_variant-variant.
ENDIF.
ENDFORM.
FORM variant_kontrolu .
DATA: ls_variant TYPE disvariant,
lv_save(1) TYPE c VALUE ‘A’.
IF p_varia IS NOT INITIAL.
ls_variant-report   = sy-repid.
ls_variant-variant  = p_varia.
CALL FUNCTION ‘REUSE_ALV_VARIANT_EXISTENCE’
EXPORTING
i_save              = lv_save
CHANGING
cs_variant         = ls_variant
EXCEPTIONS
wrong_input         = 1
not_found           = 2
program_error       = 3
OTHERS              = 4.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDFORM.                    ” VARIANT_KONTROLU
FORM alv_goster .
DATA : ls_variant TYPE disvariant,
lv_repid   TYPE sy-repid.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
lv_repid           = sy-repid.
ls_variant-report  = lv_repid.
ls_variant-variant = p_varia.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program = lv_repid
i_structure_name   = ‘SPFLI’
i_save             = ‘A’
is_variant         = ls_variant
TABLES
t_outtab           = gt_spfli.
ENDFORM.

Seçim ekranında “P_VARIA” parametresine yazılan varaint sistemde bulunuyor ise ALV bulunan variant düzeninde gösterilir. Bulunamaz ise hata mesajı verilir.

REUSE_ALV_EVENTS_GET

Lliste tipine göre ALV fonksiyonunun alabileceği bütün (CALLBACK) olayların listesini döner. Bu listedeki olaylara atanan alt yordam isimleri ALV fonksiyonuna verilerek alt yordamlar atınmış olur.

IMPORT
Parametre Tanım tipi İlişkili tip Başlanıç d. Ops. Dğr atn. Parametre açıklaması
I_LIST_TYPE TYPE SLIS_LIST_TYPE 0 X X 1-4 arası liste tipi
EXPORT
Parametre Tanım tipi İlişkili tip Dğr atn. Parametre açıklaması
ET_EVENTS TYPE SLIS_T_EVENT X Liste tipine göre olayların listesi
EXCEPTIONS
Exception Tanım
LIST_TYPE_WRONG Liste tipi mevcut değil

I_LIST_TYPE parametresinin alabileceği değerler ve açıklamaları aşağıdaki tablodadır.

Parametre Değeri ALV Liste Tipi ALV Fonksiyonu
0 Basit liste REUSE_ALV_LIST_DISPLAY
1 Hiyerarşik sıralı liste REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 Basit blok liste REUSE_ALV_BLOCK_LIST_APPEND
3 Hiyerarşik sıralı blok liste REUSE_ALV_BLOCK_LIST_HS_APPEND
4 Tam ekran REUSE_ALV_GRID_DISPLAY

Örnek: Aşağıdaki örnekte hücresel ALV gösterimi için ALV fonksiyonunda “I_CALLBACK_TOP_OF_PAGE” parametresi kullanılmadı. Bunun yerine “REUSE_ALV_EVENTS_GET” fonksiyonu kullanılarak “IT_EVENTS” tablosu alınır. Bu tabloda olaya alt yordam ismi atanır, ALV fonksiyonuna bu tablo parametre olarak verilir.

TYPE-POOLS: slis.
DATA: gt_spfli TYPE STANDARD TABLE OF spfli,
gv_repid LIKE sy-repid,
gt_events TYPE slis_t_event.
START-OF-SELECTION.
PERFORM alv_callback_olaylari_bul.
PERFORM alv_goster.
FORM alv_callback_olaylari_bul .
DATA ls_events TYPE slis_alv_event.
CALL FUNCTION ‘REUSE_ALV_EVENTS_GET’
EXPORTING
i_list_type           = 4
IMPORTING
et_events             = gt_events
EXCEPTIONS
list_type_wrong       = 1
OTHERS                = 2.

IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
READ TABLE gt_events INTO ls_events
WITH KEY name = slis_ev_top_of_page.
IF sy-subrc = 0.
ls_events-form = ‘TOP_OF_PAGE’.
MODIFY gt_events FROM ls_events INDEX sy-tabix.
ENDIF.
ENDFORM.
FORM alv_goster .
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE gt_spfli.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
i_structure_name    = ‘SPFLI’
i_save              = ‘A’
it_events           = gt_events
TABLES
t_outtab            = gt_spfli.
ENDFORM.
FORM top_of_page.
DATA: lt_header    TYPE slis_t_listheader,
ls_header    TYPE slis_listheader.
ls_header-typ  = ‘H’.
ls_header-key  = ”.
ls_header-info = ‘REUSE_ALV_EVENTS_GET Örneği’.
APPEND ls_header TO lt_header.
CALL FUNCTION ‘REUSE_ALV_COMMENTARY_WRITE’
EXPORTING
it_list_commentary  = lt_header
i_logo              = ‘ENJOYSAP_LOGO’.
ENDFORM.

Sütun Görüntüsü Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütuna bağlı alanların görüntüsü değiştirilebilir.

Alan Anlamı Veri Tipi Değer Aralığı
HOTSPOT Alan üzerinde geldiğinde imlecin el şeklini (link) almasını sağlar CHAR(1) SPACE, ‘X’
CHECKBOX Alanın checkbox olarak görünmesini sağlar CHAR(1) SPACE, ‘X’
DO_SUM ALV’ de belirtilen alanın alt toplamı alınarak görüntülenir CHAR(1) SPACE, ‘X’
COL_POS Alanın sütun pozisyonu ayarlamak için kullanılır INT4(10) Tamsayı
EMPHASIZE Sütun rengini değiştirmek için kullanılır‘X’ kullanılır ise ön tanımlı tipler kullanılır. Eğer karakter ‘C’(renk kodu) ile başlarsa, alabileceği üç rakamın anlamı şöyledir.1. x: renk kodu2. y: yoğunluk görünüm3. z: ters çevrilmiş renk görünümü CHAR(4) SPACE, ‘X’ or ‘Cxyz’ (x:’1′-‘9’; y,z: ‘0’=off ‘1’=on)
NO_OUT Alan gizlenir. Alan alan listesinde kalmaya devam eder. ALV görüntüledikten sonra düzen içerisinden listeye dâhil edilebilir CHAR(1) SPACE, ‘X’
OUTPUTLEN Alanın görüntülenen sütun genişliğini ayarlamak için kullanılır. ABAP Dictionary’ de tanımlı bir alan ise doldurmaya gerek yoktur. Alan uzunluğu Domain üzerinden devralınır. NUMC(6) Tamsayı

Sütun İçeriğini Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütuna bağlı alanların içerikleri biçimlendirilebilir.

Alan Anlamı Veri Tipi Değer Aralığı
EDIT_MASK Geçerli alan çıktısı için çeviri yordamı atanmış ise kullanılmasını sağlar. CHAR(60) SPACE, çeviri yordamı
ICON Sütun içeriği ikon olarak görüntülenir. Sütun içeriği geçerli ikon karakter dizesi içermelidir. CHAR(1) SPACE, ‘X’
JUST Hizalama için kullanılır. CHAR ve NUMC veri tipine sahip alanlara uygulanabilir.· ‘R’: Sağa dayalı· ‘L’: Sola dayalı· ‘R’: Ortalanmış CHAR(1) SPACE, ‘R’, ‘L’,’C’
LZERO NUMC veri tipi için kullanılabilir. Alanın sıfırdan büyük rakamının solunda sıfır var ise görüntülenir. CHAR(1) SPACE, ‘X’
NO_SIGN Alan değeri işaretsiz olarak görüntülenir. CHAR(1) SPACE, ‘X’
NO_ZERO Sıfır alanlar boş olarak görüntülenir. CHAR(1) SPACE, ‘X’
SYMBOL Sütun içeriği sembol olarak görüntülenir. Alan içeriği geçerli sembol işaretini içermelidir. CHAR(1) SPACE, ‘X’

Sütun Metin Özelliklerini Biçimlendirme

Alan katalogu özellikleri değiştirilerek sütun başlığı, ipucu yardımı, sütun seçim metinlerinin bakımı yapılabilir.

LVC_S_FCAT için metin biçimlendirme özellikleri

Alan Anlamı Veri Tipi Değer Aralığı
TOOLTIP Sütuna bağlı ipucu yardımı metni CHAR(40) Herhangi bir metin
TIPDDICTXT ABAP Data Dictionary’ e referans gösterilen alanlar için metin seçimi. CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’
SELTEXT Sütun seçiminde kullanılacak metin CHAR(40) Herhangi bir metin
SELDDICTXT ABAP Dictionary’ e referans gösterilen alanlar için sütun seçiminde kullanılacak metin CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’
SCRTEXT_S ABAP Dictionary’ de tanımlı alanlar için tanımlı kısa metin bu alana kopyalanır. CHAR(10) ABAP Dictionary’ den kopyalanan metin
SCRTEXT_M ABAP Dictionary’ de tanımlı alanlar için tanımlı orta uzunluktaki metin bu alana kopyalanır. CHAR(20) ABAP Dictionary’ den kopyalanan metin
SCRTEXT_L ABAP Dictionary’ de tanımlı alanlar için tanımlı uzun metin bu alana kopyalanır. CHAR(40) ABAP Dictionary’ den kopyalanan metin
REPTEXT ABAP Dictionary’ de tanımlı alanlar için uygun data element’ alan etiketi bu alana kopyalanır. CHAR(55) ABAP Dictionary’ den kopyalanan metin
COLTEXT ABAP Dictionary’ e referans gösterilmeyen alan için sütun başlığı belirler. CHAR(40) Herhangi bir metin
COLDDICTXT ABAP Dictionary’ e referans gösterilen alanlar için sütun başlığı seçiminde kullanılacak metin. CHAR(1) SPACE, ‘L’, ‘M’, ‘S’ ve ‘R’

SLIS_FIELDCAT_ALV için metin biçimlendirme özellikleri

Alan Anlamı Veri Tipi Değer Aralığı
SELTEXT_S ABAP Dictionary’ de tanımlı alanlar için tanımlı kısa metin bu alana kopyalanır. CHAR(10) ABAP Dictionary’ den kopyalanan metin
SELTEXT_M ABAP Dictionary’ de tanımlı alanlar için tanımlı orta uzunluktaki metin bu alana kopyalanır. CHAR(20) ABAP Dictionary’ den kopyalanan metin
SELTEXT_L ABAP Dictionary’ de tanımlı alanlar için tanımlı uzun metin bu alana kopyalanır. CHAR(40) ABAP Dictionary’ den kopyalanan metin
REPTEXT ABAP Dictionary’ de tanımlı alanlar için uygun data element’ alan etiketi bu alana kopyalanır. CHAR(55) ABAP Dictionary’ den kopyalanan metin

Örnek: Sütun biçimlendirme uygulanan örnek.

TYPE-POOLS: slis.
DATA: gt_fieldcat  TYPE slis_t_fieldcat_alv,
gs_fieldcat  TYPE slis_fieldcat_alv.
TYPES: BEGIN OF gy_sbook,
carrid TYPE sbook-carrid,
connid TYPE sbook-connid,
fldate TYPE sbook-fldate,
bookid TYPE sbook-bookid,
passname TYPE sbook-passname,
icon   TYPE c LENGTH 4,
END OF gy_sbook.
DATA: gt_sbook TYPE STANDARD TABLE OF gy_sbook,
gs_sbook TYPE gy_sbook.
DATA gv_repid TYPE sy-repid.
SELECT * FROM sbook INTO CORRESPONDING FIELDS OF TABLE gt_sbook.
LOOP AT gt_sbook INTO gs_sbook.
gs_sbook-icon = ‘@CQ@’.
MODIFY gt_sbook FROM gs_sbook.
ENDLOOP.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CARRID’.
gs_fieldcat-seltext_m  = ‘Hava Alanı’.
gs_fieldcat-hotspot    = ‘X’.
gs_fieldcat-just       = ‘R’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘CONNID’.
gs_fieldcat-seltext_m  = ‘Bağlantı No.’.
gs_fieldcat-emphasize  = ‘C601’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘FLDATE’.
gs_fieldcat-seltext_m  = ‘Tarih’.
gs_fieldcat-emphasize  = ‘X’.
gs_fieldcat-COL_POS    = 5.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘BOOKID’.
gs_fieldcat-seltext_m  = ‘Rezervasyon ID’.
gs_fieldcat-outputlen  = 15.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘PASSNAME’.
gs_fieldcat-seltext_m  = ‘Yolcu İsmi’.
gs_fieldcat-no_out     = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
CLEAR gs_fieldcat.
gs_fieldcat-fieldname  = ‘ICON’.
gs_fieldcat-seltext_m  = ‘Icon’.
gs_fieldcat-icon       = ‘X’.
APPEND gs_fieldcat TO gt_fieldcat.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program  = gv_repid
it_fieldcat         = gt_fieldcat
i_save              = ‘A’
TABLES
t_outtab            = gt_sbook
EXCEPTIONS
program_error       = 1
OTHERS              = 2.

Örnek: Hotspot

TYPE-POOLS: slis.
DATA : gt_mara TYPE STANDARD TABLE OF mara,
gs_mara TYPE mara,
gv_repid TYPE sy-repid.
DATA : gt_fieldcat TYPE slis_t_fieldcat_alv,
gs_fieldcat TYPE slis_fieldcat_alv.
SELECT * FROM mara UP TO 10 ROWS
INTO CORRESPONDING FIELDS OF TABLE gt_mara.
gv_repid = sy-repid.
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_program_name           = gv_repid
i_structure_name         = ‘MARA’
CHANGING
ct_fieldcat             = gt_fieldcat
EXCEPTIONS
inconsistent_interface   = 1
program_error            = 2
OTHERS                   = 3.
gs_fieldcat-hotspot = ‘X’.
MODIFY gt_fieldcat FROM gs_fieldcat
TRANSPORTING hotspot
WHERE fieldname = ‘MATNR’.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_callback_program      = gv_repid
it_fieldcat             = gt_fieldcat
i_save                  = ‘A’
i_callback_user_command = ‘USER_COMMAND’
TABLES
t_outtab                = gt_mara
EXCEPTIONS
program_error           = 1
OTHERS                  = 2.
FORM user_command  USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN ‘&IC1’.
READ TABLE gt_mara INTO gs_mara INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
SET PARAMETER ID ‘MAT’ FIELD gs_mara-matnr.
CALL TRANSACTION ‘MM03’ AND SKIP FIRST SCREEN.
ENDIF.
ENDCASE.
ENDFORM.                    ” USER_COMMAND

Örnek:

Copy… (Ctrl+F5)

Package ve request işlemleri yapılır.