Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Regarding editable alv

Former Member
0 Kudos

Hi experts!

i am using 'reuse_alv_grid_display' and populating field catalog like

fieldcat-input = 'X'.

and fieldcat-edit = 'X.

so when customer try to input data in the alv field and he press SAVE button then the data goes correctly into the internal table.

but when i try to do it by pressinv OK button data is not available in internal table.

can you guys plz help me out with that.

and second question.

can anyone tell me how to get the fuction code for 'ENTER' is been pressed from keyboard on any field in alv.

thanks in advance.

1 ACCEPTED SOLUTION

Former Member
0 Kudos

&----


*& Report ZKB_EDIT_ALV

&----


REPORT zkb_edit_alv.

DATA: i_zkb_test TYPE TABLE OF zkb_test,

w_zkb_test TYPE zkb_test.

DATA: o_grid TYPE REF TO cl_gui_alv_grid,

o_container TYPE REF TO cl_gui_custom_container.

DATA: lt_fcat TYPE lvc_t_fcat,

ls_layo TYPE lvc_s_layo,

ls_sort TYPE lvc_s_sort,

lt_sort TYPE lvc_t_sort,

ls_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

START-OF-SELECTION.

CALL SCREEN 9000.

&----


*& Module STATUS_9000 OUTPUT

&----


  • text

----


MODULE status_9000 OUTPUT.

SET PF-STATUS '9000'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_9000 OUTPUT

&----


*& Module display_alv_9000 OUTPUT

&----


  • text

----


MODULE display_alv_9000 OUTPUT.

IF o_container IS INITIAL.

SELECT * FROM zkb_test INTO TABLE i_zkb_test.

IF cl_gui_alv_grid=>offline( ) IS INITIAL.

  • Create a custom container control for ALV Control

CREATE OBJECT o_container

EXPORTING

container_name = 'CONTAINER'.

  • Create a ALV Control

CREATE OBJECT o_grid

EXPORTING i_parent = o_container.

PERFORM build_field_catalgue.

CALL METHOD o_grid->set_table_for_first_display

EXPORTING

i_save = 'A'

i_default = 'X'

is_layout = ls_layo

CHANGING

it_outtab = i_zkb_test

it_fieldcatalog = lt_fcat

it_sort = lt_sort[].

ENDIF.

ENDIF.

ENDMODULE. " display_alv_9000 OUTPUT

&----


*& Module user_command_9000 INPUT

&----


  • text

----


MODULE user_command_9000 INPUT.

CASE sy-ucomm .

WHEN 'BACK' OR 'EXIT'.

SET SCREEN 0.

LEAVE SCREEN.

WHEN 'UPDATE'.

CALL METHOD o_grid->check_changed_data.

MODIFY zkb_test FROM TABLE i_zkb_test.

IF sy-subrc EQ 0.

COMMIT WORK AND WAIT.

MESSAGE 'Data updated' TYPE 'I'.

ENDIF.

  • Refresh the same in ALV

CALL METHOD o_grid->refresh_table_display.

ENDCASE.

ENDMODULE. " user_command_9000 INPUT

&----


*& Form build_field_catalgue

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_field_catalgue .

DATA: ls_fcat TYPE lvc_s_fcat.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-cprog

i_internal_tabname = 'I_ZKB_TEST'

i_structure_name = 'ZKB_TEST'

i_client_never_display = 'X'

CHANGING

ct_fieldcat = ls_fieldcat[]

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE 'FCAT Error' TYPE 'I'.

EXIT.

ENDIF.

LOOP AT ls_fieldcat.

CLEAR ls_fcat.

ls_fcat-fieldname = ls_fieldcat-fieldname. "Fieldname

ls_fcat-ref_table = ls_fieldcat-tabname. "DDIC ref struct

ls_fcat-inttype = ls_fieldcat-inttype. "Data type

ls_fcat-outputlen = ls_fieldcat-outputlen. "Column width

ls_fcat-coltext = ls_fieldcat-seltext_m. "Column Header

ls_fcat-seltext = ls_fieldcat-seltext_m. "Column Desc

ls_fcat-ref_field = ls_fieldcat-ref_fieldname. "Reference field

ls_fcat-ref_table = ls_fieldcat-ref_tabname. "Reference table

CASE ls_fieldcat-fieldname.

WHEN 'MANDT' OR 'SNO'.

ls_fcat-edit = ' '.

WHEN OTHERS.

ls_fcat-edit = 'X'.

ENDCASE.

APPEND ls_fcat TO lt_fcat.

ENDLOOP.

ENDFORM. " build_field_catalgue

6 REPLIES 6

Former Member
0 Kudos

&----


*& Report ZKB_EDIT_ALV

&----


REPORT zkb_edit_alv.

DATA: i_zkb_test TYPE TABLE OF zkb_test,

w_zkb_test TYPE zkb_test.

DATA: o_grid TYPE REF TO cl_gui_alv_grid,

o_container TYPE REF TO cl_gui_custom_container.

DATA: lt_fcat TYPE lvc_t_fcat,

ls_layo TYPE lvc_s_layo,

ls_sort TYPE lvc_s_sort,

lt_sort TYPE lvc_t_sort,

ls_fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.

START-OF-SELECTION.

CALL SCREEN 9000.

&----


*& Module STATUS_9000 OUTPUT

&----


  • text

----


MODULE status_9000 OUTPUT.

SET PF-STATUS '9000'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_9000 OUTPUT

&----


*& Module display_alv_9000 OUTPUT

&----


  • text

----


MODULE display_alv_9000 OUTPUT.

IF o_container IS INITIAL.

SELECT * FROM zkb_test INTO TABLE i_zkb_test.

IF cl_gui_alv_grid=>offline( ) IS INITIAL.

  • Create a custom container control for ALV Control

CREATE OBJECT o_container

EXPORTING

container_name = 'CONTAINER'.

  • Create a ALV Control

CREATE OBJECT o_grid

EXPORTING i_parent = o_container.

PERFORM build_field_catalgue.

CALL METHOD o_grid->set_table_for_first_display

EXPORTING

i_save = 'A'

i_default = 'X'

is_layout = ls_layo

CHANGING

it_outtab = i_zkb_test

it_fieldcatalog = lt_fcat

it_sort = lt_sort[].

ENDIF.

ENDIF.

ENDMODULE. " display_alv_9000 OUTPUT

&----


*& Module user_command_9000 INPUT

&----


  • text

----


MODULE user_command_9000 INPUT.

CASE sy-ucomm .

WHEN 'BACK' OR 'EXIT'.

SET SCREEN 0.

LEAVE SCREEN.

WHEN 'UPDATE'.

CALL METHOD o_grid->check_changed_data.

MODIFY zkb_test FROM TABLE i_zkb_test.

IF sy-subrc EQ 0.

COMMIT WORK AND WAIT.

MESSAGE 'Data updated' TYPE 'I'.

ENDIF.

  • Refresh the same in ALV

CALL METHOD o_grid->refresh_table_display.

ENDCASE.

ENDMODULE. " user_command_9000 INPUT

&----


*& Form build_field_catalgue

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM build_field_catalgue .

DATA: ls_fcat TYPE lvc_s_fcat.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'

EXPORTING

i_program_name = sy-cprog

i_internal_tabname = 'I_ZKB_TEST'

i_structure_name = 'ZKB_TEST'

i_client_never_display = 'X'

CHANGING

ct_fieldcat = ls_fieldcat[]

EXCEPTIONS

inconsistent_interface = 1

program_error = 2

OTHERS = 3.

IF sy-subrc <> 0.

MESSAGE 'FCAT Error' TYPE 'I'.

EXIT.

ENDIF.

LOOP AT ls_fieldcat.

CLEAR ls_fcat.

ls_fcat-fieldname = ls_fieldcat-fieldname. "Fieldname

ls_fcat-ref_table = ls_fieldcat-tabname. "DDIC ref struct

ls_fcat-inttype = ls_fieldcat-inttype. "Data type

ls_fcat-outputlen = ls_fieldcat-outputlen. "Column width

ls_fcat-coltext = ls_fieldcat-seltext_m. "Column Header

ls_fcat-seltext = ls_fieldcat-seltext_m. "Column Desc

ls_fcat-ref_field = ls_fieldcat-ref_fieldname. "Reference field

ls_fcat-ref_table = ls_fieldcat-ref_tabname. "Reference table

CASE ls_fieldcat-fieldname.

WHEN 'MANDT' OR 'SNO'.

ls_fcat-edit = ' '.

WHEN OTHERS.

ls_fcat-edit = 'X'.

ENDCASE.

APPEND ls_fcat TO lt_fcat.

ENDLOOP.

ENDFORM. " build_field_catalgue

0 Kudos

Hi Minal

Thanks for your reply. i am using your program everything is working fine.

but alv is not getting displayed. i am using my own table zpidlog instead of yours and i have created a screen with pbo and pai.

can you help me with that.

p291102
Active Contributor
0 Kudos

Hi,

Following this program is edit block alv report.

REPORT YMS_EDITBLOCKALV.

TABLES : rmmg1,MCHB, mkpf.

DATA: BEGIN OF t_mseg OCCURS 0,

zeile LIKE mseg-zeile,

menge LIKE mseg-menge,

meins LIKE mseg-meins,

matnr LIKE mseg-matnr,

werks LIKE mseg-werks,

charg LIKE mseg-charg,

bwart LIKE mseg-bwart,

END OF t_mseg.

DATA:BEGIN OF t_mchb OCCURS 0.

INCLUDE STRUCTURE mchb.

data flag type c.

  • matnr LIKE mchb-matnr,

  • charg LIKE mchb-charg,

  • werks LIKE mchb-werks,

  • clabs LIKE mchb-clabs,

DATA END OF t_mchb.

TYPE-POOLS slis.

data: progname like sy-repid,

fieldcattab TYPE slis_t_fieldcat_alv WITH HEADER LINE.

data tabindex type i.

data wa_matnr LIKE mchb-matnr.

progname = sy-repid.

SELECTION-SCREEN BEGIN OF BLOCK b_b1 WITH FRAME TITLE text-001.

SELECT-OPTIONS s_docno FOR mkpf-mblnr. " OBLIGATORY.

PARAMETERS p_docyr LIKE mkpf-mjahr. " OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b_b1.

START-OF-SELECTION.

SELECT zeile

menge

meins

matnr

werks

charg

bwart

FROM mseg

INTO TABLE t_mseg

WHERE mblnr IN s_docno AND mjahr = p_docyr.

CLEAR fieldcattab.

fieldcattab-col_pos = 1.

fieldcattab-fieldname = 'ZEILE'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-fix_column = 'X'.

fieldcattab-seltext_l = 'Item'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 2.

fieldcattab-fieldname = 'MENGE'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Quantity'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 3.

fieldcattab-fieldname = 'MEINS'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Unit'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 4.

fieldcattab-fieldname = 'MATNR'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Material'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 5.

fieldcattab-fieldname = 'WERKS'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Plant'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 6.

fieldcattab-fieldname = 'CHARG'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Batch No'.

APPEND fieldcattab.

CLEAR fieldcattab.

fieldcattab-col_pos = 7.

fieldcattab-fieldname = 'BWART'.

fieldcattab-tabname = 'T_MSEG'.

fieldcattab-seltext_l = 'Inventory'.

fieldcattab-hotspot = 'X'.

APPEND fieldcattab.

end-of-selection.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = PROGNAME

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USERCOMMAND1'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = fieldcattab[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT = fieldcattab

  • IT_HYPERLINK =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = t_mseg

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

FORM usercommand1 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE

slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

tabindex = rs_selfield-tabindex.

read table t_mseg INDEX tabindex.

select * from mchb into table t_mchb where matnr = t_mseg-matnr.

clear fieldcattab.

CLEAR fieldcattab[].

fieldcattab-col_pos = 1.

fieldcattab-fieldname = 'FLAG'.

fieldcattab-tabname = 'T_MCHB'.

fieldcattab-fix_column = 'X'.

fieldcattab-seltext_l = 'Check Box'.

fieldcattab-input = 'X'.

fieldcattab-edit = 'X'.

fieldcattab-checkbox = 'X'.

APPEND fieldcattab.

clear fieldcattab.

fieldcattab-col_pos = 2.

fieldcattab-fieldname = 'MATNR'.

fieldcattab-tabname = 'T_MCHB'.

fieldcattab-fix_column = 'X'.

fieldcattab-seltext_l = 'Material'.

fieldcattab-emphasize = 'C1'.

fieldcattab-input = 'X'.

fieldcattab-edit = 'X'.

  • fieldcattab-checkbox = 'X'.

APPEND fieldcattab.

clear fieldcattab.

fieldcattab-col_pos = 3.

fieldcattab-fieldname = 'CHARG'.

fieldcattab-tabname = 'T_MCHB'.

fieldcattab-seltext_l = 'Batch No'.

fieldcattab-emphasize = 'C2'.

fieldcattab-input = 'X'.

fieldcattab-edit = 'X'.

APPEND fieldcattab.

clear fieldcattab.

fieldcattab-col_pos = 4.

fieldcattab-fieldname = 'WERKS'.

fieldcattab-tabname = 'T_MCHB'.

fieldcattab-seltext_l = 'Plant'.

fieldcattab-emphasize = 'C30'.

fieldcattab-input = 'X'.

fieldcattab-edit = 'X'.

APPEND fieldcattab.

clear fieldcattab.

fieldcattab-col_pos = 5.

fieldcattab-fieldname = 'CLABS'.

fieldcattab-tabname = 'T_MCHB'.

fieldcattab-seltext_l = 'Stock'.

fieldcattab-emphasize = 'C601'.

fieldcattab-input = 'X'.

fieldcattab-edit = 'X'.

APPEND fieldcattab.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = PROGNAME

  • I_CALLBACK_PF_STATUS_SET = ' '

I_CALLBACK_USER_COMMAND = 'USERCOMMAND2'

  • I_CALLBACK_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

  • IS_LAYOUT =

IT_FIELDCAT = FIELDCATTAB[]

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

  • IT_SORT =

  • IT_FILTER =

  • IS_SEL_HIDE =

  • I_DEFAULT = 'X'

  • I_SAVE = ' '

  • IS_VARIANT =

  • IT_EVENTS =

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • IT_ALV_GRAPHICS =

  • IT_ADD_FIELDCAT =

  • IT_HYPERLINK =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

t_outtab = t_mchb

  • EXCEPTIONS

  • PROGRAM_ERROR = 1

  • OTHERS = 2

.

IF sy-subrc <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

endcase.

endform.

FORM usercommand2 USING r_ucomm LIKE sy-ucomm rs_selfield TYPE

slis_selfield.

CASE r_ucomm.

WHEN '&IC1'.

IF rs_selfield-sel_tab_field = 'T_MCHB-MATNR'.

  • CALL FUNCTION 'ZALV2'

  • EXPORTING

    • CTU = 'X'

  • MODE = 'E'

  • UPDATE = 'A'

    • GROUP =

    • USER =

    • KEEP =

    • HOLDDATE =

    • NODATA = '/'

  • MATNR_001 = '200-200'

    • KZSEL_01_002 = 'X'

    • IMPORTING

    • SUBRC =

    • TABLES

    • MESSTAB =

  • .

**

SET PARAMETER ID 'RID' FIELD RMMG1-MATNR.

CALL TRANSACTION 'MM03' and skip first screen.

    • ENDIF.

    • ENDCASE.

*

  • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

  • EXPORTING

  • i_callback_program = progname

  • i_callback_user_command = 'USERCOMMAND3'

  • it_fieldcat = fieldcattab[]

  • TABLES

  • t_outtab = t_mchb

  • EXCEPTIONS

  • program_error = 1

  • OTHERS = 2.

*

  • IF sy-subrc <> 0.

  • MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

  • WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

ENDIF.

endcase.

ENDFORM.

Thanks,

Sankar M

Former Member
0 Kudos

hi

good

please check this in your alv report

if you want to edit one field in the output then , when your declaring that fieldcatalog do like this

filedcatalog-edit = 'x'.

that field will be editable in the output list

thanks

mrutyun^

Former Member
0 Kudos

pf status. disable the enter botton.

delete the enter code funcion 'ok'.

save it.now chk.

Former Member
0 Kudos

thanks to you all