2008 Jun 20 8:00 AM
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?
2008 Jun 20 8:03 AM
2008 Jun 20 8:17 AM
2008 Jun 20 8:27 AM
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.
2008 Jun 20 9:15 AM
2008 Jun 20 9:36 AM
The same logic can be implemented in dynamic table as well. Paste your code. I'll try if i can help you.
Regards,
Lakshmi.
2008 Jun 20 9:38 AM
*&----
*
*& 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
2008 Jun 20 10:28 AM
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.
2008 Jun 21 9:02 AM
Hi,
Refer the faloowing programs
BCALV_EDIT_01,
BCALV_EDIT_02 to BCALV_EDIT_08.
Best Regards,
Surendar reddy
2008 Jun 21 10:25 AM