‎2009 Apr 17 6:14 AM
Hi Friends,
I am Displaying the Data in Grid Using SET_TABLE_FOR_FIRST_DISPLAY .
In my reqirement i need to edit one field and need to click on calculate button.then the claculated value should be displayed in other field .
so i have used CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'.
and captured the values in final output table with calculated value but while displaying the calculated valus is not displaying in Grid Once i click on Refresh then only it's coming into Grid.
How to Solve my problem ?
Thanks,
Laxmi.
‎2009 Apr 17 6:23 AM
‎2009 Apr 17 6:24 AM
Hello Laxmi,
What I have understood from your query is; you got to display the calculated value dynamically in another box on a grid.
Here's a similar kind of requirement, please follow it, you'll get to solve your problem.
In this program the field Price of sflight is editable and when you edit the price this price is modified with modifying the value in the cost column also that has been added in the field sting of the table. When you press enter the values are changed. This example will help u to trance the changed value and then modify other values according to it.
(Laxmi, there's pretty problem in displaying the code as Code, please overlook formatting, copy and try out the code given below)
[Get Changed Value in ALV Grid Dynamically.|https://wiki.sdn.sap.com/wiki/x/tgCrBQ ]
Hope that helps resolve your problem.
Regards,
Zahack
Edited by: Zahack on Apr 17, 2009 7:36 AM
‎2009 Apr 17 6:28 AM
Hi Laxmi,
Once you are done with the calculation and captured the value in the internal table...just call the method 'REFRESH_TABLE_DISPLAY'.
Hope this resolves your query.
Regards,
Nikhil
‎2009 Apr 17 10:49 AM
Hi ,
It's very Simple.... use CHECK_CHANGED_DATA..
classs name
DATA : REF1 TYPE REF TO CL_GUI_ALV_GRID.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
E_GRID = REF1.
*check change data
CALL METHOD REF1->CHECK_CHANGED_DATA.
Salil
‎2009 Apr 17 10:53 AM
Hi,
If using OO ALV, then use this code when you click SAVE button:-
CASE sy-ucomm.
WHEN 'SAVE'.
* to reflect the data changed into internal table
DATA : ref_grid TYPE REF TO cl_gui_alv_grid. "new
IF ref_grid IS INITIAL.
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = ref_grid.
ENDIF.
IF NOT ref_grid IS INITIAL.
CALL METHOD ref_grid->check_changed_data.
ENDIF.
" and then use refresh_table_display
CALL METHOD ref_grid->refresh_table_display.
" to refresh the data from internal table back to alv output.
ENDCASE.
Hope this helps you.
Regards,
Tarun
‎2009 Apr 17 11:11 AM
Hi Friends,
Thank you for your replies...
whenever i have used check_changed_data it's going to dump.What might be the problem?
Thanks ,
Laxmi.
‎2009 Apr 17 11:15 AM
Hi,
If you are following the code in my previous reply, then there seems no reason that it should give a dump.
Check it once again.
Regards,
Tarun
‎2009 Apr 17 11:40 AM
Hi Tarun,
Thank you for reply . I have copied the same as you said Now am getting dump at this method..
CALL METHOD grid1->refresh_table_display. wat might be the reason?
Thank,
laxmi
‎2009 Apr 17 12:23 PM
Hi,
>
> Hi Tarun,
>
> Thank you for reply . I have copied the same as you said Now am getting dump at this method..
> CALL METHOD grid1->refresh_table_display. wat might be the reason?
>
>
> Thank,
> laxmi
Refer:-
"ALV GRID CONTAINER
DATA : z_grid TYPE REF TO cl_gui_alv_grid.
CALL METHOD z_grid->refresh_table_display
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.
The same code works absolutely fine in my alv report.
So, I cant really find any reason.
Regards,
Tarun
‎2009 Apr 17 12:49 PM
Hi Tarun ,
Can You give the Small Ref Program For me .
Thanks,
Laxmi
‎2009 Apr 17 1:17 PM
‎2009 Apr 17 1:28 PM
Hi,
>
> Hi Tarun ,
>
> Can You give the Small Ref Program For me .
>
> Thanks,
> Laxmi
Refer:-
*&---------------------------------------------------------------------*
* PARAMETERS DECLARATION
*&---------------------------------------------------------------------*
PARAMETERS : z_ebeln TYPE ekpo-ebeln.
*&---------------------------------------------------------------------*
* TYPE DECLARATION
*&---------------------------------------------------------------------*
TYPES : BEGIN OF t_ekpo,
ebeln TYPE ekpo-ebeln,
ebelp TYPE ekpo-ebelp,
matnr TYPE ekpo-matnr,
werks TYPE ekpo-werks,
menge TYPE ekpo-menge,
END OF t_ekpo.
*&---------------------------------------------------------------------*
* DATA DECLARATION
*&---------------------------------------------------------------------*
DATA : rep_name TYPE sy-repid,
check(1),
rep(25),
ok_code TYPE sy-ucomm.
*INTERNAL TABLE
DATA : it_ekpo TYPE STANDARD TABLE OF t_ekpo.
*NAME OF CUSTOM CONTAINER ADDED ON SCREEN
DATA : z_container TYPE scrfname VALUE 'PO_CONTAINER'.
DATA : z_custom_container TYPE REF TO cl_gui_custom_container.
*ALV GRID CONTAINER
DATA : z_grid TYPE REF TO cl_gui_alv_grid.
*FIELD CATALOG
DATA : it_fieldcat TYPE lvc_t_fcat,
wa_fieldcat TYPE lvc_s_fcat.
*LAYOUT
DATA : wa_layout TYPE lvc_s_layo.
*&---------------------------------------------------------------------*
* INITIALIZATION
*&---------------------------------------------------------------------*
INITIALIZATION.
rep_name = sy-repid.
check = 'X'.
CONCATENATE text-001 rep_name INTO rep SEPARATED BY space.
*----------------------------------------------------------------------*
* CLASS lcl_oo_alv DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_oo_alv DEFINITION.
PUBLIC SECTION.
METHODS populate_itab IMPORTING ebeln TYPE zekpo-ebeln.
METHODS create_field_catalog.
METHODS create_layout.
METHODS display_alv.
METHODS refresh_alv.
PRIVATE SECTION.
DATA : po TYPE zekpo-ebeln.
ENDCLASS. "lcl_oo_alv DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_oo_alv IMPLEMENTATION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_oo_alv IMPLEMENTATION.
METHOD populate_itab.
me->po = ebeln.
SELECT ebeln
ebelp
matnr
werks
menge
FROM ekpo
INTO TABLE it_ekpo
WHERE ebeln EQ po.
ENDMETHOD. "populate_itab
METHOD create_field_catalog.
wa_fieldcat-fieldname = 'EBELN'.
wa_fieldcat-coltext = 'PO #'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'EBELP'.
wa_fieldcat-coltext = 'Item'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MATNR'.
wa_fieldcat-coltext = 'Material'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'WERKS'.
wa_fieldcat-coltext = 'Plant'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-fieldname = 'MENGE'.
wa_fieldcat-coltext = 'Qty.'.
APPEND wa_fieldcat TO it_fieldcat.
CLEAR wa_fieldcat.
ENDMETHOD. "create_field_catalog
METHOD create_layout.
wa_layout-grid_title = rep.
wa_layout-zebra = check.
ENDMETHOD. "create_layout
METHOD display_alv.
CALL METHOD z_grid->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 = wa_layout
* is_print =
* it_special_groups =
* it_toolbar_excluding =
* it_hyperlink =
* it_alv_graphics =
* it_except_qinfo =
* ir_salv_adapter =
CHANGING
it_outtab = it_ekpo
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.
ENDMETHOD. "display_alv
METHOD refresh_alv.
REFRESH it_ekpo.
SELECT ebeln
ebelp
matnr
werks
menge
FROM zekpo
INTO TABLE it_ekpo.
CALL METHOD z_grid->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.
ENDMETHOD. "refresh_alv
ENDCLASS. "lcl_oo_alv IMPLEMENTATION
*&---------------------------------------------------------------------*
* CLASS INSTANCE VARIABLE
*&---------------------------------------------------------------------*
DATA : obj1 TYPE REF TO lcl_oo_alv.
*&---------------------------------------------------------------------*
* START OF SELECTION
*&---------------------------------------------------------------------*
START-OF-SELECTION.
*CREATE OBJECT
CREATE OBJECT : obj1.
CALL METHOD obj1->populate_itab
EXPORTING
ebeln = z_ebeln.
*&---------------------------------------------------------------------*
* CALL SCREEN
*&---------------------------------------------------------------------*
CALL SCREEN 1011.
*&---------------------------------------------------------------------*
*& Module STATUS_1010 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_1011 OUTPUT.
SET PF-STATUS '1011'.
* SET TITLEBAR 'xxx'.
*CUSTOM CONTAINER INSTANCE
CREATE OBJECT z_custom_container
EXPORTING
* parent =
container_name = z_container
* 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.
*ALV GRID INSTANCE
CREATE OBJECT z_grid
EXPORTING
* i_shellstyle = 0
* i_lifetime =
i_parent = z_custom_container
* i_appl_events = space
* i_parentdbg =
* i_applogparent =
* i_graphicsparent =
* i_name =
* i_fcat_complete = space
* 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 obj1->create_field_catalog.
CALL METHOD obj1->create_layout.
CALL METHOD obj1->display_alv.
ENDMODULE. " STATUS_1010 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_1010 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_1011 INPUT.
ok_code = sy-ucomm.
CASE ok_code.
WHEN 'REFRESH'.
CALL METHOD obj1->refresh_alv.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " USER_COMMAND_1010 INPUT
Hope this helps you.
Regards,
Tarun