(ABAP 코드) DATA_CHANGED
FORM data_changed USING pr_data_changed
TYPE REF TO cl_alv_changed_data_protocol
pe_onf4 TYPE char01
pe_onf4_before TYPE char01
pe_onf4_after TYPE char01
pe_ucomm TYPE sy-ucomm.
DATA: ls_mod_cells TYPE lvc_s_modi.
DATA: ls_styl TYPE lvc_s_styl,
lt_styl TYPE lvc_t_styl.
DATA: lv_styl TYPE lvc_style.
DATA: lv_err_chk TYPE c,
lv_err_msg TYPE c LENGTH 100.
FIELD-SYMBOLS: <fs_val> TYPE any.
CLEAR: gs_flight_tmp, lv_err_chk.
LOOP AT pr_data_changed->mt_mod_cells INTO ls_mod_cells.
READ TABLE gt_flight_tmp INTO gs_flight_tmp INDEX ls_mod_cells-row_id.
IF ls_mod_cells-error EQ 'X'.
lv_err_chk = 'X'.
gs_flight_tmp-id = icon_red_light.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
'ID'
icon_red_light
lv_err_chk.
MODIFY gt_flight_tmp FROM gs_flight_tmp INDEX ls_mod_cells-row_id.
MESSAGE s000 WITH '잘못된 입력값입니다.' DISPLAY LIKE 'E'.
PERFORM refresh_grid USING go_grid.
CONTINUE.
ENDIF.
CLEAR gs_flight_tmp-saved.
CASE ls_mod_cells-fieldname.
WHEN 'BNAME'.
TRANSLATE Ls_mod_cells-value TO UPPER CASE.
PERFORM check_bname USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM check_key USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'FLDATE'.
REPLACE ALL OCCURRENCES OF '.' IN Ls_mod_cells-value WITH ''.
CALL FUNCTION 'CONVERT_DATE_TO_INTERNAL'
EXPORTING
date_external = ls_mod_cells-value
IMPORTING
date_internal = ls_mod_cells-value.
PERFORM check_fldate USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM check_key USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'CITYFROM'.
TRANSLATE Ls_mod_cells-value TO UPPER CASE.
PERFORM check_city USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'CITYTO'.
TRANSLATE Ls_mod_cells-value TO UPPER CASE.
PERFORM check_city USING ls_mod_cells
CHANGING lv_err_chk.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'CARRID'.
DATA: ls_carrinfo LIKE gs_scarr.
TRANSLATE ls_mod_cells-value TO UPPER CASE.
PERFORM check_carrid USING ls_mod_cells
CHANGING lv_err_chk
ls_carrinfo.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
'CARRNAME'
ls_carrinfo-carrname
lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'PRICE'.
REPLACE ALL OCCURRENCES OF ',' IN ls_mod_cells-value WITH ''.
GS_FLIGHT_TMP-PRICE = LS_MOD_CELLS-VALUE.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
CHANGING lv_err_chk.
PERFORM input_all_chk USING lv_err_chk
CHANGING gs_flight_tmp-id.
WHEN 'CONF'.
IF ls_mod_cells-value EQ 'X'.
IF gs_flight_tmp-id EQ icon_yellow_light.
gs_flight_tmp-id = icon_green_light.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
ls_mod_cells-value
lv_err_chk.
ELSEIF gs_flight_tmp-id EQ icon_red_light.
lv_err_chk = 'X'.
MESSAGE s000 WITH '활성화할 수 없습니다.' DISPLAY LIKE 'E'.
PERFORM modify_cell USING pr_data_changed
ls_mod_cells-row_id
ls_mod_cells-fieldname
' '
lv_err_chk.
ENDIF.
ELSE.
IF gs_flight_tmp-id EQ icon_green_light.
gs_flight_tmp-id = icon_yellow_light.
ENDIF.
ENDIF.
ENDCASE.
MODIFY gt_flight_tmp FROM gs_flight_tmp INDEX ls_mod_cells-row_id.
CLEAR: gs_flight_tmp, ls_mod_cells.
ENDLOOP.
ENDFORM.