hi ,
i did the same ,but once i gave value to particular field and press save entry not getting posted on ztable.
here i will post my code,
*&---------------------------------------------------------------------*
*& Report ZTEST_05
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTEST_05 .
TABLES: ZACINFIT017HFM.
DATA: ok_code LIKE sy-ucomm,
save_ok like sy-ucomm,
g_container TYPE scrfname VALUE 'ZCUST',
grid1 TYPE REF TO cl_gui_alv_grid,
g_custom_container TYPE REF TO cl_gui_custom_container,
gs_layout TYPE lvc_s_layo,
g_max type i value 100.
TYPES: BEGIN OF ty_hfm,
hfm_gl_account TYPE zacinfit017hfm-hfm_gl_account,
hfm_gl_account1 TYPE zacinfit006hfm-hfm_gl_account,
HFM_GL_TRN_11 TYPE zacinfit006hfm-HFM_GL_TRN_11,
HFM_GL_TRN_14 TYPE zacinfit006hfm-HFM_GL_TRN_14,
HFM_GL_TRN_15 TYPE zacinfit006hfm-HFM_GL_TRN_15,
END OF ty_hfm.
TYPES: BEGIN OF TY_HFM15,
bukrs TYPE zacinfit015hfm-bukrs,
gjahr TYPE zacinfit015hfm-gjahr,
monat TYPE zacinfit015hfm-monat,
HFM_GL_AMT_LC TYPE ZACINFIT015HFM-HFM_GL_AMT_LC,
HFM_GL_ACC_TYPE TYPE ZACINFIT015HFM-HFM_GL_ACC_TYPE,
HFM_VALUE_TYPE TYPE ZACINFIT015HFM-HFM_VALUE_TYPE,
HFM_GL_ACCOUNT TYPE ZACINFIT015HFM-HFM_GL_ACCOUNT,
END OF TY_HFM15,
BEGIN OF TY_HFM17,
HFM_VALUE_TYPE TYPE ZACINFIT017HFM-HFM_VALUE_TYPE,
HFM_GL_AMT_LC_10 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_10,
HFM_GL_AMT_LC_11 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_11,
HFM_GL_AMT_LC_25 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_25,
HFM_GL_AMT_LC_99 TYPE ZACINFIT017HFM-HFM_GL_AMT_LC_99,
END OF TY_HFM17.
DATA: GI_TABLE17 TYPE TABLE OF TY_HFM17,
GI_TABLE TYPE TABLE OF TY_HFM15,
GS_TABLE TYPE TY_HFM15,
GS_TABLE17 TYPE TY_HFM17.
DATA: gt_outtab1 TYPE TABLE OF zacinfit017hfm,
gs_outtab1 TYPE zacinfit017hfm.
* DATA: BEGIN OF gi_hfm1 OCCURS 0.
* INCLUDE TYPE ty_hfm.
* DATA: END OF gi_hfm1.
data: gi_hfm TYPE TABLE OF ty_hfm,
gs_hfm TYPE ty_hfm,
gi_hfm1 TYPE TABLE OF ty_hfm,
gs_hfm1 TYPE ty_hfm,
gi_hfm2 TYPE TABLE OF zacinfit017hfm,
gs_hfm2 TYPE zacinfit017hfm.
DATA: BEGIN OF gt_outtab occurs 0. "with header line
include structure zacinfit017hfm.
DATA: celltab type LVC_T_STYL.
DATA: END OF gt_outtab.
DATA: BEGIN OF GT_OUT OCCURS 0.
INCLUDE STRUCTURE ZACINFIT006HFM.
DATA: END OF GT_OUT.
DATA: gs_outtab like LINE OF gt_outtab,
GS_OUT TYPE ZACINFIT006HFM.
START-OF-SELECTION.
SELECT bukrs
gjahr
monat
HFM_GL_AMT_LC
HFM_GL_ACC_TYPE
HFM_VALUE_TYPE
HFM_GL_ACCOUNT
FROM ZACINFIT015HFM
INTO TABLE GI_TABLE
WHERE HFM_GL_ACC_TYPE = 'BS'
AND ( HFM_VALUE_TYPE = 02 OR HFM_VALUE_TYPE = 01 ).
LOOP AT GI_TABLE INTO GS_TABLE.
IF GS_TABLE-HFM_VALUE_TYPE = 02 AND GS_TABLE-HFM_VALUE_TYPE ne 01 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE17-HFM_GL_AMT_LC_10 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE17-HFM_GL_AMT_LC_99.
MOVE-CORRESPONDING GS_TABLE TO gs_outtab1.
ELSEIF GS_TABLE-HFM_VALUE_TYPE = 01 AND GS_TABLE-HFM_VALUE_TYPE ne 02 and GS_TABLE-HFM_GL_ACC_TYPE = 'BS'.
GS_TABLE17-HFM_GL_AMT_LC_99 = 0.
MOVE GS_TABLE-HFM_GL_AMT_LC TO GS_TABLE17-HFM_GL_AMT_LC_10.
MOVE-CORRESPONDING GS_TABLE17 TO gs_outtab1.
ENDIF.
GS_TABLE17-HFM_GL_AMT_LC_25 = ( GS_TABLE17-HFM_GL_AMT_LC_99 - GS_TABLE17-HFM_GL_AMT_LC_10 ).
MOVE-CORRESPONDING GS_TABLE17 TO gs_outtab1.
* ENDIF.
MOVE-CORRESPONDING GS_TABLE TO gs_outtab1.
APPEND gs_outtab1 TO gt_outtab1.
INSERT INTO ZACINFIT017HFM VALUES gs_outtab1.
CLEAR gs_outtab1.
ENDLOOP.
*---------------------------------------------------------------------*
* MAIN *
*---------------------------------------------------------------------*
CALL SCREEN 9005.
*& Module STATUS_9005 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_9005 OUTPUT.
* SET PF-STATUS 'xxxxxxxx'.
* SET TITLEBAR 'xxx'.
SET PF-STATUS 'MAIN100'.
SET TITLEBAR 'MAIN100'.
IF g_custom_container IS INITIAL.
CREATE OBJECT g_custom_container
EXPORTING container_name = g_container.
CREATE OBJECT grid1
EXPORTING i_parent = g_custom_container.
PERFORM select_data_and_init_style.
*§3.Provide the fieldname of the celltab field by using field
* STYLEFNAME of the layout structure.
gs_layout-stylefname = 'CELLTAB'.
CALL METHOD grid1->set_table_for_first_display
EXPORTING i_structure_name = 'ZACINFIT017HFM'
is_layout = gs_layout
CHANGING it_outtab = gt_outtab[].
ENDIF.
ENDMODULE. " STATUS_9005 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9005 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE USER_COMMAND_9005 INPUT.
save_ok = ok_code.
clear ok_code.
CASE save_ok.
WHEN 'EXIT'.
PERFORM exit_program.
WHEN 'SWITCH'.
PERFORM switch_edit_mode.
WHEN 'SAVE'.
PERFORM SAVE_DATA.
WHEN OTHERS.
* do nothing
ENDCASE.
ENDMODULE. " USER_COMMAND_9005 INPUT
*&---------------------------------------------------------------------*
*& Form SELECT_DATA_AND_INIT_STYLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SELECT_DATA_AND_INIT_STYLE .
DATA: lt_HFM17 TYPE TABLE OF ZACINFIT017HFM WITH HEADER LINE,
lt_HFM6 TYPE TABLE OF ZACINFIT006HFM WITH HEADER LINE,
lt_celltab TYPE lvc_t_styl,
ls_celltab TYPE lvc_t_styl,
l_index TYPE i.
SELECT * FROM ZACINFIT017HFM INTO TABLE lt_HFM17 UP TO g_max ROWS.
* move corresponding fields from lt_sflight to gt_outtab
LOOP AT lt_HFM17.
MOVE-CORRESPONDING lt_HFM17 TO gt_outtab.
APPEND gt_outtab.
ENDLOOP.
SELECT * FROM ZACINFIT006HFM INTO TABLE LT_HFM6.
LOOP AT lt_HFM6.
MOVE-CORRESPONDING lt_HFM6 TO gt_out.
APPEND gt_out.
ENDLOOP.
loop at gt_outtab.
l_index = sy-tabix.
refresh lt_celltab.
loop at gt_out.
if gt_outtab-HFM_GL_ACCOUNT EQ Gt_OUT-HFM_GL_ACCOUNT.
* if gi_hfm1-HFM_GL_ACCOUNT EQ Gi_hfm1-HFM_GL_ACCOUNT1.
perform fill_celltab using 'p_mode' 'P_mode1' 'p_mode2' 'p_mode3'
changing lt_celltab.
* else.
* perform fill_celltab using 'p_mode' 'p_mode1' 'p_mode2'
* changing lt_celltab.
* endif.
*§2c.Copy your celltab to the celltab of the current row of gt_outtab.
* CLEAR: gt_outtab-celltab.
INSERT LINES OF lt_celltab INTO TABLE gt_outtab-celltab .
* INSERT gt_outtab FROM TABLE lt_celltab ACCEPTING DUPLICATE KEYS.
MODIFY gt_outtab INDEX l_index.
ENDIF.
ENDLOOP.
ENDLOOP.
* ENDIF.
ENDFORM. " SELECT_DATA_AND_INIT_STYLE
*&---------------------------------------------------------------------*
*& Form EXIT_PROGRAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM EXIT_PROGRAM .
LEAVE PROGRAM.
ENDFORM. " EXIT_PROGRAM
*&---------------------------------------------------------------------*
*& Form SWITCH_EDIT_MODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SWITCH_EDIT_MODE .
IF grid1->is_ready_for_input( ) eq 0.
* set edit enabled cells ready for input
CALL METHOD grid1->set_ready_for_input
EXPORTING i_ready_for_input = 1.
MOVE-CORRESPONDING gs_outtab to gs_outtab1.
APPEND gs_outtab1 to gt_outtab1.
ELSE.
* lock edit enabled cells against input
CALL METHOD grid1->set_ready_for_input
EXPORTING i_ready_for_input = 0.
ENDIF.
ENDFORM. " SWITCH_EDIT_MODE
*&---------------------------------------------------------------------*
*& Form FILL_CELLTAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0184 text
* <--P_LT_CELLTAB text
*----------------------------------------------------------------------*
FORM FILL_CELLTAB USING VALUE(P_MODE)
VALUE(p_mode1)
VALUE(p_mode2)
VALUE(p_mode3)
CHANGING PT_CELLTAB TYPE lvc_t_styl.
DATA: ls_celltab TYPE lvc_s_styl,
l_mode type raw4,
l_mode1 type raw4,
l_mode2 type raw4,
l_mode3 TYPE raw4.
p_mode = gt_out-HFM_GL_TRN_11.
p_mode1 = gt_out-HFM_GL_TRN_14.
p_mode2 = gt_out-HFM_GL_TRN_15.
p_mode3 = gt_out-HFM_GL_TRN_16.
* This forms sets the style of column 'PRICE' editable
* according to 'p_mode' and the rest to read only either way.
IF p_mode EQ 'Y'.
*§2a.Use attribute CL_GUI_ALV_GRID=>MC_STYLE_ENABLED to set a cell
* to status "editable".
l_mode = cl_gui_alv_grid=>mc_style_enabled.
ELSEIF p_mode eq 'N'.
*§2b.Use attribute CL_GUI_ALV_GRID=>MC_STYLE_DISABLED to set a cell
* to status "non-editable".
l_mode = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
if p_mode1 eq 'Y'.
l_mode1 = cl_gui_alv_grid=>mc_style_enabled.
ELSEIF p_mode1 eq 'N'.
l_mode1 = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
if p_mode2 eq 'Y'.
l_mode2 = cl_gui_alv_grid=>mc_style_enabled.
ELSEIF p_mode2 eq 'N'.
l_mode2 = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
if p_mode3 eq 'Y'.
l_mode3 = cl_gui_alv_grid=>mc_style_enabled.
ELSEIF p_mode3 eq 'N'.
l_mode3 = cl_gui_alv_grid=>mc_style_disabled.
ENDIF.
ls_celltab-fieldname = 'BUKRS'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'GJAHR'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'MONAT'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_ACCOUNT'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_VALUE_TYPE'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC_10'.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC_11'.
ls_celltab-style = l_mode.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC_14'.
ls_celltab-style = l_mode1.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC_15'.
ls_celltab-style = l_mode2.
INSERT ls_celltab INTO TABLE pt_celltab.
ls_celltab-fieldname = 'HFM_GL_AMT_LC_16'.
ls_celltab-style = l_mode3.
INSERT ls_celltab INTO TABLE pt_celltab.
ENDFORM. " FILL_CELLTAB
*&---------------------------------------------------------------------*
*& Form SAVE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAVE_DATA .
DATA:l_index TYPE i.
l_index = sy-tabix.
*loop at gt_outtab1 into gs_outtab1.
modify gt_outtab1 FROM gs_outtab1 INDEX l_index.
if sy-subrc eq 0.
APPEND gs_outtab1 to gt_outtab1.
ENDIF.
MODIFY zacinfit017hfm FROM TABLE gt_outtab1.
ENDFORM. " SAVE_DATA