2007 Jul 26 10:38 AM
Hi ,
I am giving alv grid output to the user from my interanl table
and two fields were in edit mode user can enter the requried data and press a button for processing
the how do i need to updated my internal table by the user entered data.
dynamically in the alv grid output.....
Points will be rewarded
Thanks in advance...
2007 Jul 26 10:43 AM
TABLES : vbak,vbap.
***structure declaration
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
audat TYPE vbak-audat,
auart TYPE vbak-auart,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
lfrel TYPE vbap-lfrel,
END OF ty_vbap.
DATA : it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
wa_vbap TYPE ty_vbap.
***REFERENCE VARIABLE
DATA: v_cus1 TYPE REF TO cl_gui_custom_container,
v_grid1 TYPE REF TO cl_gui_alv_grid,
v_cus2 TYPE REF TO cl_gui_custom_container,
v_grid2 TYPE REF TO cl_gui_alv_grid.
***field catalog declaration
DATA : it_fcat_vbak TYPE lvc_t_fcat,
wa_fcat_vbak TYPE lvc_s_fcat,
it_fcat_vbap TYPE lvc_t_fcat,
wa_fcat_vbap TYPE lvc_s_fcat,
is_layout TYPE lvc_s_layo.
is_layout-zebra = 'X'.
***select option
SELECT-OPTIONS : so_vbeln FOR vbak-vbeln.
***validating the select option
SELECT SINGLE vbeln
FROM vbak
INTO vbak-vbeln
WHERE vbeln IN so_vbeln.
***field catalog for vbak
wa_fcat_vbak-col_pos = '1'.
wa_fcat_vbak-fieldname = 'VBELN'.
wa_fcat_vbak-scrtext_m = 'SALES DOC'.
wa_fcat_vbak-emphasize = 'X'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '2'.
wa_fcat_vbak-fieldname = 'ERDAT'.
wa_fcat_vbak-scrtext_m = 'CREATED DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '3'.
wa_fcat_vbak-fieldname = 'ERNAM'.
wa_fcat_vbak-scrtext_m = 'PERSON NAME'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '4'.
wa_fcat_vbak-fieldname = 'AUDAT'.
wa_fcat_vbak-scrtext_m = 'DOCUMENT DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '5'.
wa_fcat_vbak-fieldname = 'AUART'.
wa_fcat_vbak-scrtext_m = 'SALES DOC TYPE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
***field catalog for vbak
wa_fcat_vbap-col_pos = '1'.
wa_fcat_vbap-fieldname = 'VBELN'.
wa_fcat_vbap-scrtext_m = 'SALES DOC '.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '2'.
wa_fcat_vbap-fieldname = 'POSNR'.
wa_fcat_vbap-scrtext_m = 'SALES ITEM'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '3'.
wa_fcat_vbap-fieldname = 'MATNR'.
wa_fcat_vbap-scrtext_m = 'MATERIAL NO.'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
***start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
----
CLASS cl_envent DEFINITION
----
*
----
CLASS cl_event DEFINITION.
PUBLIC SECTION.
METHODS click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column.
ENDCLASS. "cl_envent DEFINITION
----
CLASS cl_event IMPLEMENTATION
----
*
----
CLASS cl_event IMPLEMENTATION.
METHOD click.
READ TABLE it_vbak INDEX e_row-index INTO wa_vbak.
PERFORM select_data_vbap USING wa_vbak
CHANGING it_vbap.
CALL SCREEN '0200'.
ENDMETHOD. "click
ENDCLASS. "cl_event IMPLEMENTATION
**start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CALL SCREEN '0100'.
***declaring reference variable
DATA obj_cl_event TYPE REF TO cl_event.
***creating object for class cl_event
CREATE OBJECT obj_cl_event.
*
SET HANDLER obj_cl_event->click FOR v_grid1.
&----
*& Form select_data_vbap
&----
text
----
-->P_WA_VBAK text
-->P_IT_VBAK text
----
FORM select_data_vbap USING p_wa_vbak LIKE LINE OF it_vbak
CHANGING p_it_vbak LIKE it_vbap[].
SELECT vbeln posnr matnr matkl lfrel
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = p_wa_vbak-vbeln.
ENDFORM. "select_data_vbap
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'INT0100'.
SET TITLEBAR 'xxx'.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CREATE OBJECT v_cus1
EXPORTING
PARENT =
container_name = 'CUSTOM1'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 v_grid1
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus1
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.
CALL METHOD v_grid1->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = is_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_vbak[]
it_fieldcatalog = it_fcat_vbak
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.
CREATE OBJECT obj_cl_event.
SET HANDLER obj_cl_event->click FOR v_grid1.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE status_0200 OUTPUT.
SET PF-STATUS 'INT0200'.
SET TITLEBAR 'xxx'.
CREATE OBJECT v_cus2
EXPORTING
PARENT =
container_name = 'CUSTOM2'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 v_grid2
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus2
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.
CALL METHOD v_grid2->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = is_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_vbap
it_fieldcatalog = it_fcat_vbap
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.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
when 'BACK'.
leave to screen 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE user_command_0200 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'PREV'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
Hi ,
I am giving alv grid output to the user from my interanl table
and two fields were in edit mode user can enter the requried data and press a button for processing
the how do i need to updated my internal table by the user entered data.
dynamically in the alv grid output.....
Points will be rewarded
Thanks in advance...
2007 Jul 26 10:40 AM
you can modify the internal table in your user_comman subroutine
Function module to display the ALV report
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = W_REPID
I_CALLBACK_PF_STATUS_SET = 'PF_STATUS'
I_CALLBACK_USER_COMMAND = <b>'USER_COMMAND'</b>
FORM <b>USER_COMMAND</b> USING P_UCOMM TYPE SY-UCOMM
P_SELFLD TYPE SLIS_SELFIELD.
DATA : L_REP_MODE. "report mode
CASE P_UCOMM.
Data ref1 type ref to cl_gui_alv_grid.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = ref1.
call method ref1->check_changed_data
WHEN 'SAVE'.
loop at itab .
MODIFY ITAB INDEX SY-TABIX.
endloop.
ENDCASE.
ENDFORM.
2007 Jul 26 10:43 AM
TABLES : vbak,vbap.
***structure declaration
TYPES : BEGIN OF ty_vbak,
vbeln TYPE vbak-vbeln,
erdat TYPE vbak-erdat,
ernam TYPE vbak-ernam,
audat TYPE vbak-audat,
auart TYPE vbak-auart,
END OF ty_vbak,
BEGIN OF ty_vbap,
vbeln TYPE vbap-vbeln,
posnr TYPE vbap-posnr,
matnr TYPE vbap-matnr,
matkl TYPE vbap-matkl,
lfrel TYPE vbap-lfrel,
END OF ty_vbap.
DATA : it_vbak TYPE TABLE OF ty_vbak,
wa_vbak TYPE ty_vbak,
it_vbap TYPE TABLE OF ty_vbap,
wa_vbap TYPE ty_vbap.
***REFERENCE VARIABLE
DATA: v_cus1 TYPE REF TO cl_gui_custom_container,
v_grid1 TYPE REF TO cl_gui_alv_grid,
v_cus2 TYPE REF TO cl_gui_custom_container,
v_grid2 TYPE REF TO cl_gui_alv_grid.
***field catalog declaration
DATA : it_fcat_vbak TYPE lvc_t_fcat,
wa_fcat_vbak TYPE lvc_s_fcat,
it_fcat_vbap TYPE lvc_t_fcat,
wa_fcat_vbap TYPE lvc_s_fcat,
is_layout TYPE lvc_s_layo.
is_layout-zebra = 'X'.
***select option
SELECT-OPTIONS : so_vbeln FOR vbak-vbeln.
***validating the select option
SELECT SINGLE vbeln
FROM vbak
INTO vbak-vbeln
WHERE vbeln IN so_vbeln.
***field catalog for vbak
wa_fcat_vbak-col_pos = '1'.
wa_fcat_vbak-fieldname = 'VBELN'.
wa_fcat_vbak-scrtext_m = 'SALES DOC'.
wa_fcat_vbak-emphasize = 'X'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '2'.
wa_fcat_vbak-fieldname = 'ERDAT'.
wa_fcat_vbak-scrtext_m = 'CREATED DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '3'.
wa_fcat_vbak-fieldname = 'ERNAM'.
wa_fcat_vbak-scrtext_m = 'PERSON NAME'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '4'.
wa_fcat_vbak-fieldname = 'AUDAT'.
wa_fcat_vbak-scrtext_m = 'DOCUMENT DATE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
wa_fcat_vbak-col_pos = '5'.
wa_fcat_vbak-fieldname = 'AUART'.
wa_fcat_vbak-scrtext_m = 'SALES DOC TYPE'.
APPEND wa_fcat_vbak TO it_fcat_vbak.
CLEAR wa_fcat_vbak.
***field catalog for vbak
wa_fcat_vbap-col_pos = '1'.
wa_fcat_vbap-fieldname = 'VBELN'.
wa_fcat_vbap-scrtext_m = 'SALES DOC '.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '2'.
wa_fcat_vbap-fieldname = 'POSNR'.
wa_fcat_vbap-scrtext_m = 'SALES ITEM'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
wa_fcat_vbap-col_pos = '3'.
wa_fcat_vbap-fieldname = 'MATNR'.
wa_fcat_vbap-scrtext_m = 'MATERIAL NO.'.
APPEND wa_fcat_vbap TO it_fcat_vbap.
CLEAR wa_fcat_vbap.
***start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
----
CLASS cl_envent DEFINITION
----
*
----
CLASS cl_event DEFINITION.
PUBLIC SECTION.
METHODS click FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row
e_column.
ENDCLASS. "cl_envent DEFINITION
----
CLASS cl_event IMPLEMENTATION
----
*
----
CLASS cl_event IMPLEMENTATION.
METHOD click.
READ TABLE it_vbak INDEX e_row-index INTO wa_vbak.
PERFORM select_data_vbap USING wa_vbak
CHANGING it_vbap.
CALL SCREEN '0200'.
ENDMETHOD. "click
ENDCLASS. "cl_event IMPLEMENTATION
**start of selection
START-OF-SELECTION.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CALL SCREEN '0100'.
***declaring reference variable
DATA obj_cl_event TYPE REF TO cl_event.
***creating object for class cl_event
CREATE OBJECT obj_cl_event.
*
SET HANDLER obj_cl_event->click FOR v_grid1.
&----
*& Form select_data_vbap
&----
text
----
-->P_WA_VBAK text
-->P_IT_VBAK text
----
FORM select_data_vbap USING p_wa_vbak LIKE LINE OF it_vbak
CHANGING p_it_vbak LIKE it_vbap[].
SELECT vbeln posnr matnr matkl lfrel
FROM vbap
INTO TABLE it_vbap
WHERE vbeln = p_wa_vbak-vbeln.
ENDFORM. "select_data_vbap
&----
*& Module STATUS_0100 OUTPUT
&----
text
----
MODULE status_0100 OUTPUT.
SET PF-STATUS 'INT0100'.
SET TITLEBAR 'xxx'.
SELECT vbeln erdat ernam audat auart
FROM vbak
INTO TABLE it_vbak
WHERE vbeln IN so_vbeln.
CREATE OBJECT v_cus1
EXPORTING
PARENT =
container_name = 'CUSTOM1'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 v_grid1
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus1
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.
CALL METHOD v_grid1->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = is_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_vbak[]
it_fieldcatalog = it_fcat_vbak
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.
CREATE OBJECT obj_cl_event.
SET HANDLER obj_cl_event->click FOR v_grid1.
ENDMODULE. " STATUS_0100 OUTPUT
&----
*& Module STATUS_0200 OUTPUT
&----
text
----
MODULE status_0200 OUTPUT.
SET PF-STATUS 'INT0200'.
SET TITLEBAR 'xxx'.
CREATE OBJECT v_cus2
EXPORTING
PARENT =
container_name = 'CUSTOM2'
STYLE =
LIFETIME = lifetime_default
REPID =
DYNNR =
NO_AUTODEF_PROGID_DYNNR =
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 v_grid2
EXPORTING
I_SHELLSTYLE = 0
I_LIFETIME =
i_parent = v_cus2
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.
CALL METHOD v_grid2->set_table_for_first_display
EXPORTING
I_BUFFER_ACTIVE =
I_BYPASSING_BUFFER =
I_CONSISTENCY_CHECK =
I_STRUCTURE_NAME =
IS_VARIANT =
I_SAVE =
I_DEFAULT = 'X'
is_layout = is_layout
IS_PRINT =
IT_SPECIAL_GROUPS =
IT_TOOLBAR_EXCLUDING =
IT_HYPERLINK =
IT_ALV_GRAPHICS =
IT_EXCEPT_QINFO =
CHANGING
it_outtab = it_vbap
it_fieldcatalog = it_fcat_vbap
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.
ENDMODULE. " STATUS_0200 OUTPUT
&----
*& Module USER_COMMAND_0100 INPUT
&----
text
----
MODULE user_command_0100 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
when 'BACK'.
leave to screen 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
&----
*& Module USER_COMMAND_0200 INPUT
&----
text
----
MODULE user_command_0200 INPUT.
CASE sy-ucomm.
WHEN 'EXIT'.
LEAVE PROGRAM.
WHEN 'PREV'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0200 INPUT
2007 Jul 26 11:06 AM
here is the program for selecting the cloumn and edit change the data and save .
REPORT zdemo_alvgrid_sel_editrow .
TABLES: ekko.
type-pools: slis. "ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_ekko,
SEl, "stores which row user has selected
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
statu TYPE ekpo-statu,
aedat TYPE ekpo-aedat,
matnr TYPE ekpo-matnr,
menge TYPE ekpo-menge,
meins TYPE ekpo-meins,
netpr TYPE ekpo-netpr,
peinh TYPE ekpo-peinh,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF T_ekko INITIAL SIZE 0,
wa_ekko TYPE T_ekko.
*ALV data declarations
data: fieldcatalog type slis_t_fieldcat_alv with header line,
gd_tab_group type slis_t_sp_group_alv,
gd_layout type slis_layout_alv,
gd_repid like sy-repid.
************************************************************************
*Start-of-selection.
START-OF-SELECTION.
perform data_retrieval.
perform build_fieldcatalog.
perform build_layout.
perform display_alv_report.
*&---------------------------------------------------------------------*
*& Form BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
* Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
form build_fieldcatalog.
* There are a number of ways to create a fieldcat.
* For the purpose of this example i will build the fieldcatalog manualy
* by populating the internal table fields individually and then
* appending the rows. This method can be the most time consuming but can
* also allow you more control of the final product.
* Beware though, you need to ensure that all fields required are
* populated. When using some of functionality available via ALV, such as
* total. You may need to provide more information than if you were
* simply displaying the result
* I.e. Field type may be required in-order for
* the 'TOTAL' function to work.
fieldcatalog-fieldname = 'EBELN'.
fieldcatalog-seltext_m = 'Purchase Order'.
fieldcatalog-col_pos = 0.
fieldcatalog-outputlen = 10.
fieldcatalog-emphasize = 'X'.
fieldcatalog-key = 'X'.
* fieldcatalog-do_sum = 'X'.
* fieldcatalog-no_zero = 'X'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'EBELP'.
fieldcatalog-seltext_m = 'PO Item'.
fieldcatalog-col_pos = 1.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'STATU'.
fieldcatalog-seltext_m = 'Status'.
fieldcatalog-col_pos = 2.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'AEDAT'.
* fieldcatalog-edit = 'X'.
fieldcatalog-seltext_m = 'Item change date'.
fieldcatalog-col_pos = 3.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MATNR'.
fieldcatalog-seltext_m = 'Material Number'.
fieldcatalog-col_pos = 4.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MENGE'.
fieldcatalog-seltext_m = 'PO quantity'.
fieldcatalog-col_pos = 5.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'MEINS'.
fieldcatalog-seltext_m = 'Order Unit'.
fieldcatalog-col_pos = 6.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'NETPR'.
fieldcatalog-seltext_m = 'Net Price'.
fieldcatalog-col_pos = 7.
fieldcatalog-outputlen = 15.
fieldcatalog-do_sum = 'X'. "Display column total
fieldcatalog-datatype = 'CURR'.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
fieldcatalog-fieldname = 'PEINH'.
fieldcatalog-seltext_m = 'Price Unit'.
fieldcatalog-col_pos = 8.
append fieldcatalog to fieldcatalog.
clear fieldcatalog.
endform. " BUILD_FIELDCATALOG
*&---------------------------------------------------------------------*
*& Form BUILD_LAYOUT
*&---------------------------------------------------------------------*
* Build layout for ALV grid report
*----------------------------------------------------------------------*
form build_layout.
gd_layout-box_fieldname = 'SEL'.
"set field name to store row selection
gd_layout-edit = 'X'. "makes whole ALV table editable
gd_layout-zebra = 'X'.
endform. " BUILD_LAYOUT
*&---------------------------------------------------------------------*
*& Form DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
* Display report using ALV grid
*----------------------------------------------------------------------*
form display_alv_report.
gd_repid = sy-repid.
call function 'REUSE_ALV_GRID_DISPLAY'
exporting
i_callback_program = gd_repid
* i_callback_top_of_page = 'TOP-OF-PAGE' "see FORM
i_callback_user_command = 'USER_COMMAND'
* i_grid_title = outtext
is_layout = gd_layout
it_fieldcat = fieldcatalog[]
* it_special_groups = gd_tabgroup
* IT_EVENTS = GT_XEVENTS
i_save = 'X'
* is_variant = z_template
tables
t_outtab = it_ekko
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.
endform. " DISPLAY_ALV_REPORT
*&---------------------------------------------------------------------*
*& Form DATA_RETRIEVAL
*&---------------------------------------------------------------------*
* Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
form data_retrieval.
select ebeln ebelp statu aedat matnr menge meins netpr peinh
up to 10 rows
from ekpo
into corresponding fields of table it_ekko.
endform. " DATA_RETRIEVAL
*------------------------------------------------------------------*
* FORM USER_COMMAND *
*------------------------------------------------------------------*
* --> R_UCOMM *
* --> RS_SELFIELD *
*------------------------------------------------------------------*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
* Check function code
CASE r_ucomm.
WHEN '&IC1'.
* Check field clicked on within ALVgrid report
IF rs_selfield-fieldname = 'EBELN'.
* Read data table, using index of row user clicked on
READ TABLE it_ekko INTO wa_ekko INDEX rs_selfield-tabindex.
* Set parameter ID for transaction screen field
SET PARAMETER ID 'BES' FIELD wa_ekko-ebeln.
* Sxecute transaction ME23N, and skip initial data entry screen
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
WHEN '&DATA_SAVE'. "user presses SAVE
loop at it_ekko into wa_ekko.
if wa_ekko-sel EQ 'X'.
" * Process records that have been selected
endif.
endloop.
ENDCASE.
ENDFORM.reward points if it is usefull
Girish
2007 Jul 26 11:08 AM
please
check check_changed_data of cl_gui_alv_grid
i think u can capture the data chaged in grid
reward if helpful