Hotspot, Edit, Save İçeren ALV Örneği
Ana Program
& Report ZMK_ALV_FILMLER
*&---------------------------------------------------------------------
&
*&---------------------------------------------------------------------
REPORT ZMK_ALV_FILMLER.
INCLUDE ZMK_ALV_FILMLER_TOP.
INCLUDE ZMK_ALV_FILMLER_f01.
START-OF-SELECTION.
PERFORM select_data.
PERFORM create_fieldcat USING 'ZMK_T_OYUNCULAR' CHANGING p_fieldcat_1.
PERFORM display_alv TABLES p_alv CHANGING p_fieldcat_1.
TOP Kod Bloğu
& Include ZMK_ALV_FILMLER_TOP
*&---------------------------------------------------------------------
TABLES: ZMK_T_OYUNCULAR,
ZMK_T_FILMLER,
ZMK_T_TURLER.
TYPE-POOLS: slis.
data: p_alv type TABLE OF zmk_t_oyuncular WITH HEADER LINE,
p_alv_2 TYPE TABLE OF zmk_t_filmler WITH HEADER LINE,
p_alv_3 TYPE TABLE OF zmk_t_turler WITH HEADER LINE.
data: p_fieldcat_1 type slis_t_fieldcat_alv,
p_fieldcat_2 type slis_t_fieldcat_alv,
p_fieldcat_3 type slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv.
F01 Kod Bloğu
&---------------------------------------------------------------------
& Include ZMK_ALV_FILMLER_F01
*&---------------------------------------------------------------------
FORM select_data.
SELECT * FROM zmk_t_oyuncular INTO CORRESPONDING FIELDS OF TABLE p_alv.
ENDFORM.
FORM create_fieldcat USING p_structure CHANGING p_fieldcat_1 TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_structure_name = p_structure
CHANGING
ct_fieldcat = p_fieldcat_1
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
LOOP AT p_fieldcat_1 INTO wa_fieldcat.
CASE wa_fieldcat-fieldname.
WHEN 'FILM_ID'.
wa_fieldcat-hotspot = 'X'.
WHEN 'TUR_ID'.
wa_fieldcat-hotspot = 'X'.
WHEN 'OYUNCU_AD'.
wa_fieldcat-edit = 'X'.
WHEN 'IMDB_PUAN'.
wa_fieldcat-edit = 'X'.
WHEN 'TUR_AD'.
wa_fieldcat-edit = 'X'.
WHEN OTHERS.
ENDCASE.
MODIFY p_fieldcat_1 FROM wa_fieldcat.
ENDLOOP.
ENDFORM.
FORM display_alv TABLES p_alv CHANGING p_fieldcat_1 TYPE slis_t_fieldcat_alv.
gs_layout-colwidth_optimize = 'X'.
gs_layout-zebra = 'X'.
* gs_layout-edit = 'X'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_callback_pf_status_set = 'PF_STATUS_SET'
i_callback_user_command = 'F_USER_COMMAND '
is_layout = gs_layout
it_fieldcat = p_fieldcat_1
i_save = 'A'
TABLES
t_outtab = p_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM.
FORM f_user_command USING r_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield.
DATA: lv_filmid TYPE zmk_de_film_id,
lv_turid TYPE zmk_de_tur_id.
data: ok_code TYPE sy-ucomm.
ok_Code = sy-ucomm.
case ok_code.
WHEN 'BACK'.
LEAVE PROGRAM.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN OTHERS.
ENDCASE.
- DATA: F_SUBRC LIKE SY-SUBRC,
- s_alv like p_alv.
*
*READ TABLE p_alv INDEX is_selfield-tabindex INTO s_alv.
data: lr_ref1 type ref to cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = lr_ref1.
call METHOD lr_ref1->check_changed_data( ).
CASE r_ucomm.
WHEN '&IC1'.
CASE is_selfield-fieldname.
WHEN 'FILM_ID'.
SELECT * FROM zmk_t_filmler WHERE film_id EQ @is_selfield-value INTO CORRESPONDING FIELDS of TABLE @p_alv_2.
PERFORM create_fieldcat USING 'ZMK_T_FILMLER' CHANGING p_fieldcat_2.
PERFORM display_alv TABLES p_alv_2 CHANGING p_fieldcat_2.
WHEN 'TUR_ID'.
SELECT * FROM zmk_t_turler WHERE tur_id EQ @is_selfield-value INTO CORRESPONDING FIELDS OF TABLE @p_alv_3.
PERFORM create_fieldcat USING 'ZMK_T_TURLER' CHANGING p_fieldcat_3.
PERFORM display_alv TABLES p_alv_3 CHANGING p_fieldcat_3.
WHEN OTHERS.
ENDCASE.
WHEN 'KAYDET'.
MODIFY zmk_t_oyuncular FROM TABLE p_alv .
MODIFY zmk_t_filmler FROM TABLE p_alv_2.
MODIFY zmk_t_turler FROM TABLE p_alv_3.
WHEN OTHERS.
ENDCASE.
ENDFORM.
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STATUS_KAYDET'.
ENDFORM.