*&---------------------------------------------------------------------*
*& Include ZINCLUDE_MM079
*&---------------------------------------------------------------------*
FORM GET_CELL USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol
FP_ROWID FP_FNAME FP_VALUE.
CALL METHOD er_data_changed->get_cell_value
EXPORTING
i_row_id = FP_ROWID
i_fieldname = FP_FNAME
IMPORTING
e_value = FP_VALUE.
ENDFORM.
FORM MODIFY_CELL USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol
FP_ROWID FP_FNAME FP_VALUE.
CALL METHOD er_data_changed->modify_cell
EXPORTING
i_row_id = FP_ROWID
i_fieldname = FP_FNAME
i_value = FP_VALUE.
ENDFORM.
FORM handle_data_changed USING er_data_changed TYPE REF TO cl_alv_changed_data_protocol.
data: wa_mod_data TYPE lvc_s_modi.
data: L_NETWR LIKE VBAP-NETWR,
L_NETPR LIKE VBAP-NETPR,
L_KWMENG LIKE VBAP-KWMENG.
CLEAR: L_NETWR.
if er_data_changed is not initial. "數據有變化
...
endif.
SORT er_data_changed->mt_mod_cells by row_id.
loop at er_data_changed->mt_mod_cells into wa_mod_data.
* if wa_mod_data-fieldname = 'KWMENG'.
* PERFORM GET_CELL USING er_data_changed wa_mod_data-row_id 'NETPR' L_NETPR.
* L_NETWR = L_NETPR * wa_mod_data-value.
* PERFORM MODIFY_CELL USING er_data_changed wa_mod_data-row_id 'NETWR' L_NETWR.
* endif.
endloop.
ENDFORM.
CLASS lcl_alv_receiver100 DEFINITION .
PUBLIC SECTION.
DATA: L_INDEX LIKE SY-TABIX.
METHODS: handle_data_changed FOR EVENT data_changed OF cl_gui_alv_grid
IMPORTING er_data_changed e_onf4 e_onf4_before e_onf4_after e_ucomm.
METHODS handle_f4 FOR EVENT onf4 OF cl_gui_alv_grid
IMPORTING e_fieldname es_row_no er_event_data et_bad_cells.
METHODS handle_button_click FOR EVENT button_click OF cl_gui_alv_grid
IMPORTING ES_COL_ID ES_ROW_NO. "Column ID / Numeric Row ID
" METHODS handle_user_command FOR EVENT user_command OF cl_gui_alv_grid
IMPORTING e_ucomm.
" METHODS handle_toolbar FOR EVENT toolbar OF cl_gui_alv_grid
IMPORTING
e_object e_interactive.
ENDCLASS. "lcl_event_receiver DEFINITION
CLASS lcl_alv_receiver100 IMPLEMENTATION.
METHOD handle_data_changed.
PERFORM handle_data_changed USING er_data_changed.
ENDMETHOD. "handle_data_changed
METHOD handle_f4.
"PERFORM handle_f4_sel USING e_fieldname es_row_no er_event_data et_bad_cells.
ENDMETHOD.
METHOD handle_button_click.
L_INDEX = ES_ROW_NO-ROW_ID.
READ TABLE IT_RESULT INTO IT_RESULT INDEX L_INDEX.
CASE 'X'.
WHEN P_RAD1. CALL SCREEN 0200 STARTING AT 5 2 ENDING AT 89 17.
WHEN P_RAD2. CALL SCREEN 0201 STARTING AT 5 2 ENDING AT 89 17.
WHEN OTHERS.
G_SAVE = 'N'. "為了不執行修改,刷新
ENDCASE.
IF G_SAVE = 'Y'.
MODIFY IT_RESULT FROM IT_RESULT INDEX L_INDEX.
PERFORM ALV_REFRESH.
PERFORM CHECK_SELECT USING L_INDEX.
ENDIF.
ENDMETHOD.
METHOD handle_toolbar.
* Event handler method for event toolbar.
CONSTANTS:
* Constants for button type
c_button_normal TYPE i VALUE 0,
c_menu_and_default_button TYPE i VALUE 1,
c_menu TYPE i VALUE 2,
c_separator TYPE i VALUE 3,
c_radio_button TYPE i VALUE 4,
c_checkbox TYPE i VALUE 5,
c_menu_entry TYPE i VALUE 6.
ENDCLASS. "lcl_ALV_event_receiver
DATA: CC0100 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
DATA: CCALV100 TYPE REF TO cl_gui_alv_grid.
DATA: g_alv_application100 TYPE REF TO lcl_alv_receiver100.
DATA: LT_EXCLUDE100 TYPE UI_FUNCTIONS.
DATA: L_VAR100 TYPE DISVARIANT.
DATA: L_LAY100 TYPE LVC_S_LAYO.
DATA: IT_FIELDCAT TYPE LVC_T_FCAT,
TY_FIELDCAT TYPE LVC_S_FCAT.
CONTROLS: TRIP TYPE TABSTRIP.
DATA: L_SM_NAME TYPE TDSFNAME.
FORM ADD_FIELD_DES USING L_EDIT_MASK TYPE C
L_EDIT TYPE C
L_FIELDNAME TYPE C
L_TABNAME TYPE C
L_KEY TYPE C
L_CHECKBOX TYPE C
L_F4 TYPE C
L_REF_FLD TYPE C
L_REF_TAB TYPE C
L_SELTEX_L TYPE C
L_OUTPUTLEN TYPE I.
CLEAR TY_FIELDCAT.
TY_FIELDCAT-EDIT_MASK = L_EDIT_MASK.
TY_FIELDCAT-EDIT = L_EDIT.
TY_FIELDCAT-FIELDNAME = L_FIELDNAME."must upper case
TY_FIELDCAT-TABNAME = L_TABNAME. "internal table name
TY_FIELDCAT-KEY = L_KEY. "column with key-color AND frozen
TY_FIELDCAT-CHECKBOX = L_CHECKBOX. "the column is checkbox
TY_FIELDCAT-F4AVAILABL = L_F4.
TY_FIELDCAT-REF_FIELD = L_REF_FLD.
TY_FIELDCAT-REF_TABLE = L_REF_TAB.
TY_FIELDCAT-COLTEXT = L_SELTEX_L.
TY_FIELDCAT-SELTEXT = L_SELTEX_L.
TY_FIELDCAT-OUTPUTLEN = L_OUTPUTLEN.
CASE L_FIELDNAME.
WHEN 'TEXT1'. TY_FIELDCAT-DRDN_HNDL = '1'.
WHEN 'PAYWY'. TY_FIELDCAT-DRDN_HNDL =