Refresh Edit Save İçeren Alv Örneği

Ana Program

& Report ZKM_MUSTERI
*&———————————————————————

&
*&———————————————————————

REPORT ZKM_MUSTERI.

INCLUDE ZKM_MUSTERI_TOP.
INCLUDE ZKM_MUSTERI_F01.

START-OF-SELECTION.

PERFORM select_data.

PERFORM create_fieldcat USING ‘ZKM_T_MUSTERI’ CHANGING p_fieldcat_1.

PERFORM display_alv TABLES gt_alv CHANGING p_fieldcat_1.

Top Kod Bloğu
&———————————————————————
& Include ZKM_MUSTERI_TOP
*&———————————————————————

TABLES: zkm_t_musteri,
zkm_t_fatura.

TYPE-POOLS: slis.

DATA: gt_alv TYPE TABLE OF zkm_t_musteri WITH HEADER LINE,
gt_alv2 TYPE TABLE OF zkm_t_fatura WITH HEADER LINE.

DATA: gt_events_tab TYPE slis_t_event,
gs_events_tab TYPE slis_alv_event,
g_grid_settings TYPE lvc_s_glay.

*PARAMETERS: KDV_0 RADIOBUTTON GROUP rd1,
* KDV_8 RADIOBUTTON GROUP rd1,
* KDV_18 RADIOBUTTON GROUP rd1 DEFAULT ‘X’.

DATA: ok_code TYPE sy-ucomm.
ok_code = sy-ucomm.

DATA: lr_ref1 TYPE REF TO cl_gui_alv_grid,
is_stable TYPE LVC_S_STBL.

DATA: p_fieldcat_1 TYPE slis_t_fieldcat_alv,
p_fieldcat_2 TYPE slis_t_fieldcat_alv,
wa_fieldcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv.

F01 Kod Bloğu
&———————————————————————
& Include ZKM_MUSTERI_F01
*&———————————————————————

FORM select_data.

SELECT * FROM zkm_t_musteri INTO CORRESPONDING FIELDS OF TABLE gt_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 ‘MUSTERI_ID’.
wa_fieldcat-hotspot = ‘X’.
*
WHEN ‘KDV_ORANI’.
wa_fieldcat-edit = ‘X’.

  WHEN OTHERS.

ENDCASE.


MODIFY p_fieldcat_1 FROM wa_fieldcat.

ENDLOOP.

ENDFORM.

FORM display_alv TABLES gt_alv CHANGING p_fieldcat_1 TYPE slis_t_fieldcat_alv.

gs_layout-colwidth_optimize = ‘X’.
gs_layout-zebra = ‘X’.
* gs_layout-edit = ‘X’.

g_grid_settings-edt_cll_cb = ‘X’.

*So the code would be

CLEAR gs_events_tab.

gs_events_tab-name = slis_ev_data_changed.

gs_events_tab-form = ‘DATA_CHANGED’.

APPEND gs_events_tab TO gt_events_tab.

*gt_layout-lights_fieldname = ‘LIGHTS’.

*gt_layout-box_fieldname = ‘CBOX’.
*
g_grid_settings-edt_cll_cb = ‘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’
it_events = gt_events_tab[]
i_grid_settings = g_grid_settings
TABLES
t_outtab = gt_alv
EXCEPTIONS
program_error = 1
OTHERS = 2.

ENDFORM.

FORM f_user_command USING r_ucomm LIKE sy-ucomm
is_selfield TYPE slis_selfield.

is_selfield-refresh = ‘X’.

CASE ok_code.
WHEN ‘BACK’.
LEAVE PROGRAM.
WHEN ‘CANCEL’.
LEAVE PROGRAM.
WHEN ‘EXIT’.
LEAVE PROGRAM.

WHEN OTHERS.

ENDCASE.

is_stable = ‘XX’.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_ref1.

CALL METHOD lr_ref1->refresh_table_display( is_stable = is_stable ).

CASE r_ucomm.

WHEN '&IC1'.

  CASE is_selfield-fieldname.
    WHEN 'MUSTERI_ID'.

      SELECT * FROM zkm_t_fatura WHERE musteri_id EQ @is_selfield-value INTO CORRESPONDING FIELDS OF TABLE @gt_alv2.



      PERFORM create_fieldcat USING 'ZKM_T_FATURA' CHANGING p_fieldcat_2.
      PERFORM display_alv TABLES gt_alv2 CHANGING p_fieldcat_2.


  ENDCASE.

WHEN 'KAYDET'.


  MODIFY zkm_t_fatura FROM TABLE gt_alv2 .

WHEN OTHERS.

ENDCASE.

ENDFORM.

FORM pf_status_set USING rt_extab TYPE slis_t_extab.

SET PF-STATUS ‘STATUS_KAYDET’.

ENDFORM.

FORM data_changed USING rr_data_changed

TYPE REF TO cl_alv_changed_data_protocol.

DATA: ls_good TYPE lvc_s_modi.

LOOP AT rr_data_changed->mt_good_cells INTO ls_good.

READ TABLE gt_alv2 INTO DATA(ls_alv) INDEX ls_good-row_id.

IF ls_good-value EQ 0 OR ls_good-value EQ 8 OR ls_good-value EQ 18 .

ls_alv-kdvsiz_tutar = ls_alv-fatura_tutari - ( ls_alv-fatura_tutari * ls_good-value / 100 ).


ELSEIF ls_good-value NE 0 OR ls_good-value NE 8 OR ls_good-value NE 18 .

       MESSAGE 'KDV Kodu olarak 0, 8, 18 girilebilir.'(001) TYPE 'I'.

ENDIF.


MODIFY gt_alv2 FROM ls_alv INDEX ls_good-row_id.

ENDLOOP.

is_stable = ‘XX’.
CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = lr_ref1.

CALL METHOD lr_ref1->refresh_table_display( is_stable = is_stable ).

ENDFORM.

Mehdi Kapsal

Bilgisayar Mühendisi

Sence de böyle mi?

%d blogcu bunu beğendi: