Sie sind auf Seite 1von 7

*&---------------------------------------------------------------------*

*& Report ZALV_EDITCELL_OOPS


*
*&
*
*&---------------------------------------------------------------------*
*&
*
*&
*
*&---------------------------------------------------------------------*
REPORT zalv_editcell_oops

TYPES : BEGIN OF ty.


INCLUDE STRUCTURE mara.
TYPES : cellstyles TYPE lvc_t_styl,
cellcolor TYPE lvc_t_scol,
END OF ty.
DATA : itab TYPE STANDARD TABLE OF ty,
wa TYPE ty,
i_field TYPE lvc_t_fcat,
wa_field TYPE lvc_s_fcat,
w_variant TYPE disvariant,
w_layout TYPE lvc_s_layo,
w_cellcolor TYPE lvc_s_scol,
i_style TYPE lvc_t_styl,
w_style TYPE lvc_s_styl,
o_docking TYPE REF TO cl_gui_docking_container,
o_grid TYPE REF TO cl_gui_alv_grid.
FIELD-SYMBOLS : <fs> TYPE lvc_s_fcat.
SELECT * FROM mara INTO CORRESPONDING FIELDS OF TABLE itab UP TO 10 ROWS.
CALL SCREEN 9000.
*&---------------------------------------------------------------------*
*&
Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.
IF o_docking IS INITIAL.
SET PF-STATUS 'ZSTATUS'.
SET TITLEBAR 'ZTITLE'.
*CREATIONG DOCKING CONTAINER AND GRID
PERFORM create_object.
*FILLING THE FIELDCATALOG TABLE
PERFORM create_fieldcat.
*SETTING LAYOUT.
PERFORM set_layout.

*COLORING A CELL
PERFORM color_cell.
*DISPLAYING CELL AS PUSHBUTTON.
PERFORM cell_button.
*MAKING A CELL EDITABLE
PERFORM cell_edit.
*DISPLAYING THE OUTPUT.
PERFORM display.
ENDIF.

ENDMODULE.
" STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.
DATA : lv_ucomm TYPE sy-ucomm.
lv_ucomm = sy-ucomm.
CASE lv_ucomm.
WHEN 'CANCEL' .
PERFORM free_object.
LEAVE PROGRAM.
WHEN 'BACK'.
PERFORM free_objects.
SET SCREEN '0'.
LEAVE SCREEN.
ENDCASE.
ENDMODULE.

" USER_COMMAND_9000 INPUT

*&---------------------------------------------------------------------*
*&
Form CREATE_OBJECT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_object .
CREATE OBJECT o_docking
EXPORTING
*
PARENT
=
*
REPID
=
*
DYNNR
=
*
SIDE
= DOCK_AT_LEFT
*
EXTENSION
= 50

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

STYLE
=
LIFETIME
= lifetime_default
CAPTION
=
METRIC
= 0
ratio
= '95'
NO_AUTODEF_PROGID_DYNNR
=
NAME
=
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR
= 2
CREATE_ERROR
= 3
LIFETIME_ERROR
= 4
LIFETIME_DYNPRO_DYNPRO_LINK = 5
others
= 6
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

*
*
*
*
*
*
*
*
*
*
*
*
*
*
*

CREATE OBJECT o_grid


EXPORTING
I_SHELLSTYLE
= 0
I_LIFETIME
=
i_parent
= o_docking
I_APPL_EVENTS
= space
I_PARENTDBG
=
I_APPLOGPARENT
=
I_GRAPHICSPARENT =
I_NAME
=
EXCEPTIONS
ERROR_CNTL_CREATE = 1
ERROR_CNTL_INIT = 2
ERROR_CNTL_LINK = 3
ERROR_DP_CREATE = 4
others
= 5
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
" CREATE_OBJECT
*&---------------------------------------------------------------------*
*&
Form CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM create_fieldcat .
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'

*
*
*
*

*
*

EXPORTING
I_BUFFER_ACTIVE
=
i_structure_name
= 'MARA'
I_CLIENT_NEVER_DISPLAY
= 'X'
I_BYPASSING_BUFFER
=
I_INTERNAL_TABNAME
=
CHANGING
ct_fieldcat
= i_field
EXCEPTIONS
inconsistent_interface
= 1
program_error
= 2
OTHERS
= 3
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
" CREATE_FIELDCAT
*&---------------------------------------------------------------------*
*&
Form SET_LAYOUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM set_layout .
w_variant-report = sy-cprog.
w_layout-stylefname = 'CELLSTYLES'.
**W_LAYOUT-EDI = 'X'.
w_layout-ctab_fname = 'CELLCOLOR'.
ENDFORM.
" SET_LAYOUT
*&---------------------------------------------------------------------*
*&
Form COLOR_CELL
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM color_cell .
CLEAR w_cellcolor.
w_cellcolor-fname = 'ERSDA'.
w_cellcolor-color-col = '5'.
w_cellcolor-color-int = '1'.
w_cellcolor-color-inv = '1'.
APPEND w_cellcolor TO wa-cellcolor.
MODIFY itab FROM wa INDEX 7 TRANSPORTING cellcolor.
ENDFORM.
" COLOR_CELL
*&---------------------------------------------------------------------*
*&
Form CELL_BUTTON
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text

*----------------------------------------------------------------------*
FORM cell_button .
CLEAR w_style.
w_style-fieldname = 'ERNAM'.
w_style-style = cl_gui_alv_grid=>mc_style_button.
APPEND w_style TO wa-cellstyles.
MODIFY itab FROM wa INDEX 1 TRANSPORTING cellstyles.
ENDFORM.
" CELL_BUTTON
*&---------------------------------------------------------------------*
*&
Form CELL_EDIT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM cell_edit .
DATA : lv_index TYPE sy-tabix VALUE 1.
************************************************************************
LOOP AT i_field ASSIGNING <fs>." INTO WA_FIELD.
CASE <fs>-fieldname.
WHEN 'ERNAM'.
<fs>-edit = 'X'.
ENDCASE.
ENDLOOP.
LOOP AT itab INTO wa.
IF lv_index = 4.
w_style-fieldname = 'ERNAM'.
w_style-style = cl_gui_alv_grid=>mc_style_enabled.
REFRESH wa-cellstyles.
APPEND w_style TO wa-cellstyles.
MODIFY itab FROM wa INDEX LV_INDEX TRANSPORTING cellstyles.
ELSE.
w_style-fieldname = 'ERNAM'.
w_style-style = cl_gui_alv_grid=>mc_style_disabled.
REFRESH wa-cellstyles.
APPEND w_style TO wa-cellstyles.
MODIFY itab FROM wa INDEX LV_INDEX TRANSPORTING cellstyles.
ENDIF.
lv_index = lv_index + 1.
ENDLOOP.
ENDFORM.
" CELL_EDIT
*&---------------------------------------------------------------------*
*&
Form DISPLAY
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM display .
CALL METHOD o_grid->set_table_for_first_display
EXPORTING
*
I_BUFFER_ACTIVE
=

*
*
*
*
*
*
*
*
*
*

*
*

*
*

I_BYPASSING_BUFFER
=
I_CONSISTENCY_CHECK
=
I_STRUCTURE_NAME
=
is_variant
= w_variant
i_save
= 'A'
I_DEFAULT
= 'X'
is_layout
= w_layout
IS_PRINT
=
IT_SPECIAL_GROUPS
=
IT_TOOLBAR_EXCLUDING
=
IT_HYPERLINK
=
IT_ALV_GRAPHICS
=
IT_EXCEPT_QINFO
=
CHANGING
it_outtab
= itab
it_fieldcatalog
= i_field
IT_SORT
=
IT_FILTER
=
EXCEPTIONS
invalid_parameter_combination = 1
program_error
= 2
too_many_lines
= 3
OTHERS
= 4
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

ENDFORM.
" DISPLAY
*&---------------------------------------------------------------------*
*&
Form FREE_OBJECT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM free_object .
CALL METHOD o_grid->free
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR = 2
others
= 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDFORM.

" FREE_OBJECT

*&---------------------------------------------------------------------*
*&
Form FREE_OBJECTS
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*

FORM free_objects .
CALL METHOD o_grid->free
EXCEPTIONS
CNTL_ERROR
= 1
CNTL_SYSTEM_ERROR = 2
others
= 3
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.

Das könnte Ihnen auch gefallen