Application Development and Automation 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: 
Read only

Make Rows in OO ALV Grid editable and uneditable

munishsb
Participant
0 Likes
5,157

Hi

Currently i am displaying a dynamic ALV OO ALV grid in which some of the columns are Input Enabled,

another requirement is to dependign upon the data the row of the GRID shoudl be editable or un editable.

ANy ways to do this?

Hi

Currently i am displaying a dynamic ALV OO ALV grid in which some of the columns are Input Enabled,

another requirement is to dependign upon the data the row of the GRID shoudl be editable or un editable.

ANy ways to do this?

9 REPLIES 9
Read only

Former Member
0 Likes
1,977

Refer to the thread below:

[]

Note: For making the entire row editable, donot pass the fieldname in the STYLETAB table mentioned in that link.

Regards,

Lakshmi.

Read only

0 Likes
1,977

Can u send me the whoel code?

Read only

0 Likes
1,977

Here is some sample code:

Module Pool - Z42861_OOPS_ALV (Main Program)

*TOP Include

INCLUDE ZTEST_ALV_42861_TOP.

*FORM Include

INCLUDE ZTEST_ALV_42861_FORM.

*PAI Include

INCLUDE ZTEST_ALV_42861_I01.

*PBO Include

INCLUDE ZTEST_ALV_42861_O01.

1. TOP INCLUDE

&----


*& Include ZTEST_ALV_42861_TOP *

&----


  • Declarations for ALV grid.

DATA: tt_gr_alvgrid TYPE REF TO cl_gui_alv_grid,

tt_gr_container TYPE REF TO cl_gui_custom_container,

wa_custom_control_name TYPE scrfname VALUE 'CONTAINER_ALV',

wa_fieldcat TYPE lvc_s_fcat,

it_fieldcat TYPE lvc_t_fcat,

it_exclude TYPE ui_functions.

  • For coloring the cell and disabling input to a cell

DATA: wa_color TYPE lvc_s_scol,

wa_layout TYPE lvc_s_layo,

wa_stylerow TYPE lvc_s_styl.

  • Declaration for data

TYPES: BEGIN OF tt_project,

check TYPE c,

status(132) TYPE c,

it_color TYPE lvc_t_scol,

it_styletab TYPE lvc_t_styl.

INCLUDE STRUCTURE z42861proj.

TYPES: END OF tt_project.

DATA: it_project TYPE STANDARD TABLE OF tt_project,

wa_project TYPE tt_project,

v_okcode TYPE sy-ucomm.

----


  • CLASS gl_event_handler DEFINITION

----


*

----


CLASS gl_event_handler DEFINITION.

PUBLIC SECTION.

METHODS:

handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid

IMPORTING e_row_id e_column_id es_row_no.

ENDCLASS. "gl_event_handler DEFINITION

----


  • CLASS gl_event_handler IMPLEMENTATION

----


*

----


CLASS gl_event_handler IMPLEMENTATION.

METHOD handle_hotspot_click.

PERFORM handle_hotspot_click USING e_row_id e_column_id es_row_no.

ENDMETHOD. "handle_hotspot_click

ENDCLASS. "gl_event_handler IMPLEMENTATION

DATA: gr_event_handler TYPE REF TO gl_event_handler.

2. FORM INCLUDE

&----


*& Include ZTEST_ALV_42861_FORM *

&----


&----


*& Form select_data

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM select_data .

SELECT * FROM z42861proj INTO CORRESPONDING

FIELDS OF TABLE it_project.

LOOP AT it_project INTO wa_project.

  • Closed

IF wa_project-stdat LE sy-datum AND wa_project-enddat LE sy-datum.

CALL FUNCTION 'ICON_CREATE'

EXPORTING

name = 'ICON_GREEN_LIGHT'

text = 'Project closed'

IMPORTING

RESULT = wa_project-status

EXCEPTIONS

icon_not_found = 1

outputfield_too_short = 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.

  • In progress

ELSEIF wa_project-stdat LE sy-datum.

CALL FUNCTION 'ICON_CREATE'

EXPORTING

name = 'ICON_YELLOW_LIGHT'

text = 'Project in progress'

IMPORTING

RESULT = wa_project-status

EXCEPTIONS

icon_not_found = 1

outputfield_too_short = 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.

  • Not started

ELSE.

CALL FUNCTION 'ICON_CREATE'

EXPORTING

name = 'ICON_RED_LIGHT'

text = 'Project not started'

IMPORTING

RESULT = wa_project-status

EXCEPTIONS

icon_not_found = 1

outputfield_too_short = 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.

ENDIF.

MODIFY it_project FROM wa_project TRANSPORTING status.

ENDLOOP.

ENDFORM. " select_data

&----


  • FORM alv_display *

----


  • ........ *

----


FORM alv_display.

  • Perform to fill the fieldcatalog.

PERFORM prepare_fieldcatalog.

PERFORM prepare_layout.

  • Exclude the tool bar functions !

PERFORM exclude_tool_bar_functions.

  • creating the container to palce the ALV.

IF tt_gr_alvgrid IS INITIAL.

CREATE OBJECT tt_gr_container

EXPORTING

container_name = wa_custom_control_name.

IF sy-subrc = 0.

ENDIF.

  • creating the ALVGRID to palce the table.

CREATE OBJECT tt_gr_alvgrid

EXPORTING

i_parent = tt_gr_container.

IF sy-subrc = 0.

ENDIF.

  • Creating instance for event handler

CREATE OBJECT gr_event_handler.

  • Set handler for hotspot event

SET HANDLER gr_event_handler->handle_hotspot_click FOR tt_gr_alvgrid.

  • set the drop down table

PERFORM set_drdn_table.

  • Method to display the table.

CALL METHOD tt_gr_alvgrid->set_table_for_first_display

EXPORTING

  • I_BYPASSING_BUFFER =

  • I_BUFFER_ACTIVE =

  • I_CONSISTENCY_CHECK =

  • I_STRUCTURE_NAME =

  • is_variant =

  • i_save =

    • i_default = 'X'

is_layout = wa_layout

    • IS_PRINT =

    • IT_SPECIAL_GROUPS =

it_toolbar_excluding = it_exclude

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

CHANGING

it_outtab = it_project

it_fieldcatalog = it_fieldcat

  • 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.

ELSE.

CALL METHOD tt_gr_alvgrid->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

finished = 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.

ENDIF.

ENDFORM. " alv_display

&----


*& Form prepare_fieldcatalog

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM prepare_fieldcatalog .

REFRESH : it_fieldcat.

CLEAR : wa_fieldcat.

wa_fieldcat-fieldname = 'CHECK'.

wa_fieldcat-checkbox = 'X'.

wa_fieldcat-edit = 'X'.

wa_fieldcat-hotspot = 'X'.

wa_fieldcat-coltext = 'Delete'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'PROJECT'.

wa_fieldcat-coltext = 'Project'.

wa_fieldcat-outputlen = '10'.

wa_fieldcat-hotspot = 'X'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'STDAT'.

wa_fieldcat-edit = 'X'.

wa_fieldcat-coltext = 'Start date'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'ENDDAT'.

wa_fieldcat-edit = 'X'.

wa_fieldcat-coltext = 'End date'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'STATUS'.

wa_fieldcat-coltext = 'Project Status'.

wa_fieldcat-outputlen = '3'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'CUSTOMER'.

wa_fieldcat-coltext = 'Customer'.

wa_fieldcat-outputlen = '10'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

wa_fieldcat-fieldname = 'LOCATION'.

wa_fieldcat-edit = 'X'.

wa_fieldcat-coltext = 'Location'.

wa_fieldcat-outputlen = '10'.

wa_fieldcat-drdn_hndl = '1'.

APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.

  • ENDDATE non editable when status is completed

LOOP AT it_project INTO wa_project.

REFRESH wa_project-it_styletab.

IF wa_project-enddat < sy-datum.

wa_stylerow-fieldname = 'ENDDAT'.

wa_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.

APPEND wa_stylerow TO wa_project-it_styletab.

CLEAR wa_stylerow.

ENDIF.

MODIFY it_project FROM wa_project

TRANSPORTING it_styletab.

ENDLOOP.

ENDFORM. " prepare_fieldcatalog

&----


*& Form prepare_layout

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM prepare_layout .

wa_layout-no_rowmark = 'X'. "Hide row selection

wa_layout-info_fname = 'ROWCOLOR'.

wa_layout-ctab_fname = 'IT_COLOR'.

wa_layout-stylefname = 'IT_STYLETAB'.

ENDFORM. " prepare_layout

&----


*& Form exclude_tool_bar_functions

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM exclude_tool_bar_functions .

DATA: l_exclude TYPE ui_func.

REFRESH it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_subtot.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_graph.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_info.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_mb_sum.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_mb_paste.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.

APPEND l_exclude TO it_exclude.

l_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.

APPEND l_exclude TO it_exclude.

ENDFORM. " exclude_tool_bar_functions

----


  • FORM set_drdn_table *

----


  • ........ *

----


FORM set_drdn_table.

DATA: lt_dropdown TYPE lvc_t_drop,

ls_dropdown TYPE lvc_s_drop.

  • assign values to drop down table

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Hyderabad'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Chennai'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Trivendram'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Pune'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Mysore'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Mangalore'.

APPEND ls_dropdown TO lt_dropdown.

ls_dropdown-handle = '1'.

ls_dropdown-value = 'Bangalore'.

APPEND ls_dropdown TO lt_dropdown.

  • set the drop down table for the columns

CALL METHOD tt_gr_alvgrid->set_drop_down_table

EXPORTING

it_drop_down = lt_dropdown.

ENDFORM. "set_drdn_table

&----


*& Form handle_hotspot_click

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM handle_hotspot_click USING e_row_id TYPE lvc_s_row

e_column_id TYPE lvc_s_col

es_row_no TYPE lvc_s_roid.

READ TABLE it_project INTO wa_project INDEX es_row_no-row_id.

IF sy-subrc = 0.

IF e_column_id-fieldname = 'PROJECT'.

CALL SCREEN 1001 STARTING AT 10 10 ENDING AT 50 12.

ELSEIF e_column_id-fieldname = 'CHECK'.

  • Add color to the cell

CLEAR wa_project-it_color.

wa_project-check = 'X'.

wa_color-fname = 'PROJECT'.

wa_color-color-col = 6.

APPEND wa_color TO wa_project-it_color.

CLEAR wa_color.

MODIFY it_project FROM wa_project INDEX es_row_no-row_id.

  • Refresh the ALV Grid

CALL METHOD tt_gr_alvgrid->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

finished = 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.

ENDIF.

ENDIF.

ENDFORM. " handle_hotspot_click

&----


*& Form user_command

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM user_command .

  • Refresh the data from the GRID

CALL METHOD tt_gr_alvgrid->check_changed_data.

CASE v_okcode.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'SAVE'.

PERFORM save.

WHEN 'DELETE'.

PERFORM delete.

ENDCASE.

ENDFORM. " user_command

&----


*& Form save

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM save .

DATA: lwa_project TYPE z42861proj.

  • LOOP AT it_project INTO wa_project WHERE check = 'X'.

  • DELETE it_project INDEX sy-tabix.

  • DELETE FROM z42861proj WHERE project = wa_project-project.

  • COMMIT WORK.

  • ENDLOOP.

LOOP AT it_project INTO wa_project.

MOVE-CORRESPONDING wa_project TO lwa_project.

MODIFY z42861proj FROM lwa_project.

ENDLOOP.

CALL METHOD tt_gr_alvgrid->refresh_table_display

  • EXPORTING

  • IS_STABLE =

  • I_SOFT_REFRESH =

EXCEPTIONS

finished = 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.

COMMIT WORK.

ENDFORM. " save

&----


*& Form delete

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM delete .

LOOP AT it_project INTO wa_project WHERE check = 'X'.

DELETE it_project INDEX sy-tabix.

DELETE FROM z42861proj WHERE project = wa_project-project.

COMMIT WORK.

ENDLOOP.

ENDFORM. " delete

3. PAI INCLUDE:

----


***INCLUDE ZTEST_ALV_42861_I01 .

----


&----


*& Module USER_COMMAND_1000 INPUT

&----


  • text

----


MODULE user_command_1000 INPUT.

PERFORM user_command.

ENDMODULE. " USER_COMMAND_1000 INPUT

&----


*& Module USER_COMMAND_1001 INPUT

&----


  • text

----


MODULE user_command_1001 INPUT.

CASE v_okcode.

WHEN 'EXIT'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_1001 INPUT

4. PBO INCLUDE

----


***INCLUDE ZTEST_ALV_42861_O01 .

----


&----


*& Module STATUS_1000 OUTPUT

&----


  • text

----


MODULE status_1000 OUTPUT.

SET PF-STATUS 'STAT_1000'.

SET TITLEBAR 'TIT_1000'.

PERFORM select_data.

PERFORM alv_display.

ENDMODULE. " STATUS_1000 OUTPUT

&----


*& Module STATUS_1001 OUTPUT

&----


  • text

----


MODULE STATUS_1001 output.

SET PF-STATUS 'STAT_1001'.

SET TITLEBAR 'TIT_1001'.

ENDMODULE. " STATUS_1001 OUTPUT

5. SCREEN FLOW LOGIC:

SCREEN 1000:

PROCESS BEFORE OUTPUT.

MODULE STATUS_1000.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_1000.

This code refres to some Ztables.

Regards,

Lakshmi.

Read only

0 Likes
1,977

I am usign Dynamic Internal Table so this wont be any use

Read only

0 Likes
1,977

The same logic can be implemented in dynamic table as well. Paste your code. I'll try if i can help you.

Regards,

Lakshmi.

Read only

0 Likes
1,977

*&----


*

*& Report ZSDWAC0

*&

*&----


*

*&

*&

*&----


*

REPORT ZSDWAC0_T.

TYPE-POOLS: KKBLO.

TABLES: ZSD_WAC0.

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

  • Types

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

TYPES: BEGIN OF TY_ZSD_WAC0.

INCLUDE STRUCTURE ZSD_WAC0.

TYPES: FLAG.

TYPES: END OF TY_ZSD_WAC0.

TYPES: BEGIN OF TY_ZSD_WAC0_INS.

INCLUDE STRUCTURE ZSD_WAC0.

TYPES: END OF TY_ZSD_WAC0_INS.

TYPES: BEGIN OF TY_MATNR,

MATNR TYPE MATNR,

MEINS TYPE MEINS,

END OF TY_MATNR.

TYPES: BEGIN OF TY_PER_CON,

QUOTATION_PER TYPE /BI0/OICALMONTH,

END OF TY_PER_CON.

DATA: LS_FIELDCAT TYPE LVC_S_FCAT.

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

  • Internal tables

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

DATA: IT_ZSD_WAC0 TYPE TABLE OF TY_ZSD_WAC0.

DATA: IT_ZSD_WAC0_INS TYPE TABLE OF TY_ZSD_WAC0_INS WITH HEADER LINE.

DATA: IT_PERCON TYPE TABLE OF TY_PER_CON.

DATA: IT_MATERIAL TYPE TABLE OF TY_MATNR.

DATA: IT_MATERIAL_MEINS TYPE TABLE OF TY_MATNR.

DATA: WA_MATERIAL TYPE TY_MATNR.

DATA: WA_MATERIAL_MEINS TYPE TY_MATNR.

.***********************************************************************

  • Work areas

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

DATA: WA_ZSD_WAC0 TYPE TY_ZSD_WAC0.

DATA: WA_PERCON TYPE TY_PER_CON.

DATA: IT_PERIODS TYPE STANDARD TABLE OF CKMS_PERIODS,

WA_PERIOD TYPE CKMS_PERIODS.

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

  • FIELD-SYMBOLS

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

FIELD-SYMBOLS: TYPE STANDARD TABLE.

.***********************************************************************

  • ALV INTERNAL TABLE DECLARATION

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

DATA : GT_FIELDCAT TYPE LVC_T_FCAT,

VAR_FCAT TYPE KKBLO_T_FIELDCAT,

W_VAR_FCAT TYPE KKBLO_FIELDCAT,

GD_LAYOUT TYPE LVC_S_LAYO,

GDI_FUNCTIONS TYPE UI_FUNCTIONS.

*----


*

*for Modifying the Tool bar

CLASS LCL_EVENT_RECEIVER DEFINITION.

PUBLIC SECTION.

METHODS:

HANDLE_TOOLBAR

FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID

IMPORTING E_OBJECT E_INTERACTIVE.

ENDCLASS. "lcl_event_receiver DEFINITION

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

  • GRID and Container Declaration and

  • Dynamic table declaration

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

DATA: G_CONTAINER TYPE SCRFNAME VALUE 'CONTAINER',

G_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER,

GRID1 TYPE REF TO CL_GUI_ALV_GRID,

EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER,

TOOL TYPE REF TO CL_GUI_ALV_GRID,

G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

GP_TABLE TYPE REF TO DATA.

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

  • Selection Screen Elements

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

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_PLANT LIKE ZSD_WAC0-PLANT OBLIGATORY.

SELECT-OPTIONS : S_MATNR FOR ZSD_WAC0-MATERIAL OBLIGATORY..

SELECT-OPTIONS : S_PER FOR ZSD_WAC0-QUOTATION_PER .

SELECTION-SCREEN END OF BLOCK B1.

START-OF-SELECTION.

PERFORM F_FECTH_DATA.

PERFORM F_GET_PERIOD.

PERFORM F_DISPLAY.

*&----


*

*& Form F_FECTH_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_FECTH_DATA .

SELECT MATNR FROM MARC INTO CORRESPONDING FIELDS OF TABLE IT_MATERIAL

WHERE MATNR IN S_MATNR

AND WERKS = P_PLANT.

IF SY-SUBRC = 0.

SORT IT_MATERIAL BY MATNR.

IF IT_MATERIAL[] IS NOT INITIAL.

SELECT MATNR MEINS FROM MARA

INTO TABLE IT_MATERIAL_MEINS

FOR ALL ENTRIES IN IT_MATERIAL

WHERE MATNR = IT_MATERIAL-MATNR.

ENDIF.

IF SY-SUBRC = 0.

SORT IT_MATERIAL BY MATNR.

ENDIF.

ENDIF.

SELECT * FROM ZSD_WAC0

INTO CORRESPONDING FIELDS OF TABLE IT_ZSD_WAC0

WHERE PLANT = P_PLANT

AND MATERIAL IN S_MATNR

AND QUOTATION_PER IN S_PER.

SORT IT_ZSD_WAC0 BY PLANT MATERIAL.

LOOP AT IT_MATERIAL INTO WA_MATERIAL.

CLEAR: WA_MATERIAL_MEINS.

READ TABLE IT_MATERIAL_MEINS INTO WA_MATERIAL_MEINS WITH KEY MATNR = WA_MATERIAL-MATNR.

IF SY-SUBRC = 0.

WA_MATERIAL-MEINS = WA_MATERIAL_MEINS-MEINS.

CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'

EXPORTING

INPUT = WA_MATERIAL-MEINS

LANGUAGE = SY-LANGU

IMPORTING

OUTPUT = WA_MATERIAL-MEINS

EXCEPTIONS

UNIT_NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC <> 0.

ENDIF.

MODIFY IT_MATERIAL FROM WA_MATERIAL.

ENDIF.

READ TABLE IT_ZSD_WAC0 INTO WA_ZSD_WAC0 WITH KEY MATERIAL = WA_MATERIAL-MATNR.

IF SY-SUBRC = 0.

WA_ZSD_WAC0-UOM = WA_MATERIAL-MEINS.

WA_ZSD_WAC0-FLAG = 'X'.

MODIFY IT_ZSD_WAC0 FROM WA_ZSD_WAC0 INDEX SY-TABIX.

CLEAR: WA_ZSD_WAC0.

ELSE.

WA_ZSD_WAC0-MATERIAL = WA_MATERIAL-MATNR.

WA_ZSD_WAC0-UOM = WA_MATERIAL-MEINS.

APPEND WA_ZSD_WAC0 TO IT_ZSD_WAC0.

CLEAR: WA_ZSD_WAC0.

ENDIF.

CLEAR: WA_MATERIAL.

ENDLOOP.

ENDFORM. " F_FECTH_DATA

*&----


*

*& Form F_GET_PERIOD

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_GET_PERIOD .

DATA: P_FROM TYPE CKMLPP-POPER,

Y_FROM TYPE CKMLPP-BDATJ,

P_TO TYPE CKMLPP-POPER,

Y_TO TYPE CKMLPP-BDATJ.

P_FROM = S_PER-LOW+4(2).

Y_FROM = S_PER-LOW+(4).

IF S_PER-HIGH IS NOT INITIAL.

P_TO = S_PER-HIGH+4(2).

Y_TO = S_PER-HIGH+(4).

ELSE.

P_TO = S_PER-LOW+4(2).

Y_TO = S_PER-LOW+(4).

ENDIF.

CALL FUNCTION 'CKMS_PERIOD_GET_RANGE'

EXPORTING

I_PERIOD_FROM = P_FROM

I_YEAR_FROM = Y_FROM

I_PERIOD_TO = P_TO

I_YEAR_TO = Y_TO

  • I_PREV_PERIOD = ' '

  • I_PREVYEAR_LASTPERIOD = ' '

  • I_BWKEY =

I_PERIV = 'K0'

TABLES

ET_PERIODS = IT_PERIODS

  • EXCEPTIONS

  • PARAM_INVALID = 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.

LOOP AT IT_PERIODS INTO WA_PERIOD.

CONCATENATE WA_PERIOD-BDATJ WA_PERIOD-POPER+1(2) INTO WA_PERCON-QUOTATION_PER.

CONDENSE WA_PERCON-QUOTATION_PER.

APPEND WA_PERCON TO IT_PERCON.

ENDLOOP.

ENDFORM. " F_GET_PERIOD

*&----


*

*& Form F_DISPLAY

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_DISPLAY .

PERFORM F_FIELDCATALOG_BUILD.

*For Creating the Dynamic Internal Table 1

CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE

EXPORTING

IT_FIELDCATALOG = GT_FIELDCAT

IMPORTING

EP_TABLE = GP_TABLE.

ASSIGN GP_TABLE->* TO .

PERFORM F_FILL_DATA.

CALL SCREEN 100.

ENDFORM. " F_DISPLAY

*&----


*

*& Form F_FIELDCATALOG_BUILD

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_FIELDCATALOG_BUILD .

LS_FIELDCAT-FIELDNAME = 'MATERIAL'.

LS_FIELDCAT-INTTYPE = 'C'.

LS_FIELDCAT-COLTEXT = 'MATERIAL'.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

W_VAR_FCAT-FIELDNAME = 'MATERIAL'.

W_VAR_FCAT-INTTYPE = 'C'.

W_VAR_FCAT-REPTEXT = 'MATERIAL'.

APPEND W_VAR_FCAT TO VAR_FCAT ."TO W_VAR_FCAT.

DATA: INC TYPE I,

INC_CHR TYPE STRING,

MONTH TYPE STRING,

FIELDNAME TYPE LVC_FNAME.

LOOP AT IT_PERCON INTO WA_PERCON .

  • DO 5 TIMES.

INC = INC + 1.

INC_CHR = INC.

CONDENSE INC_CHR.

CONCATENATE WA_PERCON-QUOTATION_PER INC_CHR INTO FIELDNAME.

CASE WA_PERCON-QUOTATION_PER+4(2).

WHEN 01.

MONTH = 'JA'.

WHEN 02.

MONTH = 'FE'.

WHEN 03.

MONTH = 'MR'.

WHEN 04.

MONTH = 'AP'.

WHEN 05.

MONTH = 'MA'.

WHEN 06.

MONTH = 'JN'.

WHEN 07.

MONTH = 'JL'.

WHEN 08.

MONTH = 'AG'.

WHEN 09.

MONTH = 'SP'.

WHEN 10.

MONTH = 'OC'.

WHEN 11.

MONTH = 'NO'.

WHEN 12.

MONTH = 'DE'.

ENDCASE.

CONCATENATE LS_FIELDCAT-COLTEXT 'UOM' INTO LS_FIELDCAT-COLTEXT.

CONDENSE LS_FIELDCAT-COLTEXT.

LS_FIELDCAT-FIELDNAME = FIELDNAME.

LS_FIELDCAT-INTTYPE = 'C'.

  • LS_FIELDCAT-COLTEXT = MATERIAL.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

CLEAR: FIELDNAME.

INC = INC + 1.

INC_CHR = INC.

CONDENSE INC_CHR.

CONCATENATE WA_PERCON-QUOTATION_PER INC_CHR INTO FIELDNAME.

  • CONCATENATE 'CONS_QTY' INC_CHR INTO FIELDNAME.

CONCATENATE MONTH WA_PERCON-QUOTATION_PER+2(2) '-' 'Cons' INTO LS_FIELDCAT-COLTEXT.

CONDENSE LS_FIELDCAT-COLTEXT.

LS_FIELDCAT-FIELDNAME = FIELDNAME.

LS_FIELDCAT-EDIT = 'X'.

LS_FIELDCAT-INTTYPE = 'C'.

  • LS_FIELDCAT-COLTEXT = MATERIAL.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

CLEAR: FIELDNAME.

INC = INC + 1.

INC_CHR = INC.

CONDENSE INC_CHR.

CONCATENATE WA_PERCON-QUOTATION_PER INC_CHR INTO FIELDNAME.

  • CONCATENATE 'RECEIPT_QTY' INC_CHR INTO FIELDNAME.

CONCATENATE MONTH WA_PERCON-QUOTATION_PER+2(2) '-' 'Rcpt' INTO LS_FIELDCAT-COLTEXT.

CONDENSE LS_FIELDCAT-COLTEXT.

LS_FIELDCAT-FIELDNAME = FIELDNAME.

LS_FIELDCAT-EDIT = 'X'.

LS_FIELDCAT-INTTYPE = 'C'.

  • LS_FIELDCAT-COLTEXT = MATERIAL.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

CLEAR: FIELDNAME.

INC = INC + 1.

INC_CHR = INC.

CONDENSE INC_CHR.

CONCATENATE WA_PERCON-QUOTATION_PER INC_CHR INTO FIELDNAME.

  • CONCATENATE 'RECEIPT_WAC' INC_CHR INTO FIELDNAME.

CONCATENATE MONTH WA_PERCON-QUOTATION_PER+2(2) '-' 'WAC' INTO LS_FIELDCAT-COLTEXT.

CONDENSE LS_FIELDCAT-COLTEXT.

LS_FIELDCAT-EDIT = 'X'.

LS_FIELDCAT-FIELDNAME = FIELDNAME.

LS_FIELDCAT-INTTYPE = 'C'.

  • LS_FIELDCAT-COLTEXT = MATERIAL.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

CLEAR: FIELDNAME.

INC = INC + 1.

INC_CHR = INC.

CONDENSE INC_CHR.

CONCATENATE WA_PERCON-QUOTATION_PER INC_CHR INTO FIELDNAME.

  • CONCATENATE 'CURRENCY' INC_CHR INTO FIELDNAME.

  • CONCATENATE MONTH ',' WA_PERCON-QUOTATION_PER+2(4) '-' 'Currency' INTO LS_FIELDCAT-COLTEXT.

CONCATENATE LS_FIELDCAT-COLTEXT 'CURR' INTO LS_FIELDCAT-COLTEXT.

CONDENSE LS_FIELDCAT-COLTEXT.

LS_FIELDCAT-FIELDNAME = FIELDNAME.

LS_FIELDCAT-INTTYPE = 'C'.

  • LS_FIELDCAT-COLTEXT = MATERIAL.

LS_FIELDCAT-OUTPUTLEN = 20.

APPEND LS_FIELDCAT TO GT_FIELDCAT.

CLEAR LS_FIELDCAT.

  • ENDDO.

ENDLOOP.

ENDFORM. " F_FIELDCATALOG_BUILD

  • CLASS LCL_EVENT_RECEIVER IMPLEMENTATION

*----


*

*

*----


*

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.

METHOD HANDLE_TOOLBAR.

  • § 2.In event handler method for event TOOLBAR: Append own functions

  • by using event parameter E_OBJECT.

DATA: LS_TOOLBAR TYPE STB_BUTTON.

  • CLEAR: LS_TOOLBAR.

  • MOVE '&OAD' TO LS_TOOLBAR-FUNCTION.

  • MOVE '@2X@' TO LS_TOOLBAR-ICON.

  • MOVE 'Select Layout'

  • TO LS_TOOLBAR-QUICKINFO.

  • MOVE ' ' TO LS_TOOLBAR-DISABLED.

  • MOVE 'Select Layout' TO LS_TOOLBAR-TEXT.

  • APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

  • MOVE 'SAV2' TO LS_TOOLBAR-FUNCTION.

  • MOVE '@2X@' TO LS_TOOLBAR-ICON.

  • MOVE 'Save Layout'

  • TO LS_TOOLBAR-QUICKINFO.

  • MOVE ' ' TO LS_TOOLBAR-DISABLED.

  • MOVE 'Save Layout' TO LS_TOOLBAR-TEXT.

  • APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.

LOOP AT E_OBJECT->MT_TOOLBAR INTO LS_TOOLBAR.

IF ( LS_TOOLBAR-QUICKINFO = 'Print') OR ( LS_TOOLBAR-QUICKINFO = 'Display Graphic')

OR ( LS_TOOLBAR-QUICKINFO = 'Set Filter...') OR ( LS_TOOLBAR-QUICKINFO = 'End User Docu.')

OR ( LS_TOOLBAR-QUICKINFO = 'Cut' ) OR ( LS_TOOLBAR-QUICKINFO = 'Copy Text' )

OR ( LS_TOOLBAR-QUICKINFO = 'Insert with Overwrite' )

OR ( LS_TOOLBAR-QUICKINFO = 'Undo')

OR ( LS_TOOLBAR-QUICKINFO = 'Append Row' )

OR ( LS_TOOLBAR-QUICKINFO = 'Insert Row' )

OR ( LS_TOOLBAR-QUICKINFO = 'Delete Row' )

OR ( LS_TOOLBAR-QUICKINFO = 'Duplicate Row' ) .

LS_TOOLBAR-DISABLED = 'X'.

MODIFY E_OBJECT->MT_TOOLBAR FROM LS_TOOLBAR.

CLEAR LS_TOOLBAR.

ENDIF.

ENDLOOP.

ENDMETHOD. "handle_toolbar

ENDCLASS. "lcl_event_receiver IMPLEMENTATION

*&----


*

*& Module STATUS_0100 OUTPUT

*&----


*

  • text

*----


*

MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'WAC'.

  • SET TITLEBAR 'xxx'.

DATA: OBJ TYPE REF TO LCL_EVENT_RECEIVER.

GD_LAYOUT-GRID_TITLE = SY-TITLE.

GD_LAYOUT-ZEBRA = 'X'.

GD_LAYOUT-SEL_MODE = 'B'.

GD_LAYOUT-CWIDTH_OPT = 'X'.

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.

CALL METHOD GRID1->REGISTER_EDIT_EVENT

EXPORTING

I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER

EXCEPTIONS

ERROR = 1

OTHERS = 2.

CREATE OBJECT OBJ.

SET HANDLER OBJ->HANDLE_TOOLBAR FOR GRID1.

DATA: VARIANT TYPE DISVARIANT.

VARIANT-REPORT = SY-REPID.

VARIANT-USERNAME = SY-UNAME.

CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

IS_LAYOUT = GD_LAYOUT

IS_VARIANT = VARIANT

I_SAVE = 'X'

CHANGING

IT_FIELDCATALOG = GT_FIELDCAT

IT_OUTTAB = .

  • * Register event

*

    • * Set Handler methods

  • CREATE OBJECT G_EVENT_RECEIVER.

  • SET HANDLER G_EVENT_RECEIVER->HANDLE_TOOLBAR FOR GRID1.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

*&----


*

*& Form F_FILL_DATA

*&----


*

  • text

*----


*

  • --> p1 text

  • <-- p2 text

*----


*

FORM F_FILL_DATA .

FIELD-SYMBOLS: , IND.

ENDAT.

ENDLOOP.

ENDFORM. " F_FILL_DATA

*&----


*

*& Module USER_COMMAND_0100 INPUT

*&----


*

  • text

*----


*

MODULE USER_COMMAND_0100 INPUT.

FIELD-SYMBOLS: ..

ENDIF.

IND = IND + 1.

WA_ZSD_WAC0-ZZDATE = SY-DATUM.

WA_ZSD_WAC0-ZZTIME = SY-UZEIT.

WA_ZSD_WAC0-ZZUSER = SY-UNAME.

IF WA_ZSD_WAC0-CONS_QTY IS NOT INITIAL.

APPEND WA_ZSD_WAC0 TO IT_ZSD_WAC0.

ELSEIF WA_ZSD_WAC0-RECEIPT_WAC IS NOT INITIAL.

APPEND WA_ZSD_WAC0 TO IT_ZSD_WAC0.

ELSEIF WA_ZSD_WAC0-RECEIPT_QTY IS NOT INITIAL.

APPEND WA_ZSD_WAC0 TO IT_ZSD_WAC0.

ENDIF.

ENDIF.

ENDIF.

  • ENDIF.

CLEAR: WA_ZSD_WAC0.

ENDLOOP.

ENDIF.

ENDLOOP.

IF IT_ZSD_WAC0[] IS NOT INITIAL.

LOOP AT IT_ZSD_WAC0 INTO WA_ZSD_WAC0.

WA_ZSD_WAC0-PLANT = P_PLANT.

MOVE-CORRESPONDING WA_ZSD_WAC0 to IT_ZSD_WAC0_INS.

append IT_ZSD_WAC0_INS..

MODIFY IT_ZSD_WAC0 FROM WA_ZSD_WAC0.

CLEAR: WA_ZSD_WAC0.

ENDLOOP.

DELETE IT_ZSD_WAC0_INS WHERE QUOTATION_PER = '000000'.

MODIFY ZSD_WAC0 FROM TABLE IT_ZSD_WAC0_INS.

IF SY-SUBRC = 0.

MESSAGE 'Data has been Sucessfully Inserted/Modified into the Database' TYPE 'S'.

ENDIF.

ENDIF.

ENDIF.

ENDMODULE. " USER_COMMAND_0100 INPUT

Read only

0 Likes
1,977

You are correct. In dynamic table i'm not able to add a deep structure for including the styletab.

If any one has idea please get back. We need to create a dynamic internal table. In that we want to add a column of type LVC_T_STYL. So the table becomes a deep structure.

Regards,

Lakshmi.

Read only

0 Likes
1,977

Hi,

Refer the faloowing programs

BCALV_EDIT_01,

BCALV_EDIT_02 to BCALV_EDIT_08.

Best Regards,

Surendar reddy

Read only

Former Member