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

about alv display

Former Member
0 Likes
554

Hi,

I've made a field in my alv display editable. But if I change the value, the value in the internal table used in the ALV is not changed. Any idea how do I change the value in the internal table as well.

Regards,

Vijay

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
525

Hi,

R u using FM or.............

If u r using FM look at my example.....

data: LC_GLAY TYPE LVC_S_GLAY.

LC_GLAY-EDT_CLL_CB = 'X'.<<<<<------

gt_layout-zebra = 'X'.

gt_layout-detail_popup = 'X'.

gt_layout-colwidth_optimize = 'X'.

call function 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = i_repid

i_callback_user_command = 'USER_COMMAND1'

it_fieldcat = header

is_layout = gt_layout

i_callback_top_of_page = 'TOP-OF-PAGE1'

i_grid_title = text-h17

it_sort = gt_sort[]

i_default = 'X'

i_save = 'U'

is_variant = gt_variant

it_events = gt_events

I_GRID_SETTINGS = LC_GLAY<<<<<<------

TABLES

t_outtab = itab.

clear itab.

----


  • Form USER_COMMAND1

----


FORM USER_COMMAND1 USING u_ucomm LIKE sy-ucomm

us_selfield TYPE slis_selfield."#EC CALLED

case u_ucomm.

when '&DATA_SAVE'.<<<<<<<<----


This will come after the data was EDITTED and when SAVE was clicked by user in output scren.

Here now in the final internal table(ITAB) you can find the data changed in EDIT mode.

After this you can do manipulation what ever you want.

Thanks.

If this helps you reward with points.

Hi,

I've made a field in my alv display editable. But if I change the value, the value in the internal table used in the ALV is not changed. Any idea how do I change the value in the internal table as well.

Regards,

Vijay

3 REPLIES 3
Read only

Former Member
0 Likes
526

Hi,

R u using FM or.............

If u r using FM look at my example.....

data: LC_GLAY TYPE LVC_S_GLAY.

LC_GLAY-EDT_CLL_CB = 'X'.<<<<<------

gt_layout-zebra = 'X'.

gt_layout-detail_popup = 'X'.

gt_layout-colwidth_optimize = 'X'.

call function 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

i_callback_program = i_repid

i_callback_user_command = 'USER_COMMAND1'

it_fieldcat = header

is_layout = gt_layout

i_callback_top_of_page = 'TOP-OF-PAGE1'

i_grid_title = text-h17

it_sort = gt_sort[]

i_default = 'X'

i_save = 'U'

is_variant = gt_variant

it_events = gt_events

I_GRID_SETTINGS = LC_GLAY<<<<<<------

TABLES

t_outtab = itab.

clear itab.

----


  • Form USER_COMMAND1

----


FORM USER_COMMAND1 USING u_ucomm LIKE sy-ucomm

us_selfield TYPE slis_selfield."#EC CALLED

case u_ucomm.

when '&DATA_SAVE'.<<<<<<<<----


This will come after the data was EDITTED and when SAVE was clicked by user in output scren.

Here now in the final internal table(ITAB) you can find the data changed in EDIT mode.

After this you can do manipulation what ever you want.

Thanks.

If this helps you reward with points.

Read only

Former Member
0 Likes
525

Hi,

REPORT  ZTESTDFALV1                             .


*Data Declaration
*----------------
DATA: BEGIN OF T_EKKO,
  EBELN TYPE EKPO-EBELN,
  EBELP TYPE EKPO-EBELP,
*  FLAG TYPE C,
*  HANDLE_STYLE TYPE LVC_T_STYL,
 END OF T_EKKO.

  DATA: GD_REPID LIKE SY-REPID, "Exists
  REF_GRID TYPE REF TO CL_GUI_ALV_GRID. "new

DATA: BEGIN OF IT_EKKO OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_EKKO.

DATA: BEGIN OF IT_BACKUP OCCURS 0.
        INCLUDE STRUCTURE T_EKKO.
DATA: END OF IT_BACKUP.
*ALV data declarations
TYPE-POOLS: SLIS.                                 "ALV Declarations
DATA: FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_LAYOUT    TYPE SLIS_LAYOUT_ALV.


************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM DATA_RETRIEVAL.
  PERFORM BUILD_FIELDCATALOG.
  PERFORM BUILD_LAYOUT.
  IT_BACKUP[] = IT_EKKO[].
  PERFORM DISPLAY_ALV_REPORT.


*&--------------------------------------------------------------------*
*&      Form  build_fieldcatalog
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
FORM BUILD_FIELDCATALOG.
  REFRESH FIELDCATALOG.
  CLEAR FIELDCATALOG.
*

  FIELDCATALOG-FIELDNAME   = 'EBELN'.
  FIELDCATALOG-SELTEXT_M   = 'Purchase Order'.
  FIELDCATALOG-INPUT     = 'X'.
  FIELDCATALOG-EDIT     = 'X'.
  FIELDCATALOG-COL_POS     = 2.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

  FIELDCATALOG-FIELDNAME   = 'EBELP'.
  FIELDCATALOG-SELTEXT_M   = 'PO Item'.
  FIELDCATALOG-COL_POS     = 3.
  APPEND FIELDCATALOG.
  CLEAR  FIELDCATALOG.

ENDFORM.                    " BUILD_FIELDCATALOG


*&---------------------------------------------------------------------*
*&      Form  BUILD_LAYOUT
*&---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM BUILD_LAYOUT.
  "Permet d'ajuster les colonnes au text
*  gd_layout-colwidth_optimize = 'X'.
*  GD_LAYOUT-TOTALS_TEXT       = 'Totals'(201).

*  gd_layout-box_fieldname = 'SELECT'.
*  gd_layout-box_tabname   = 'IT_EKKO'.

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'
            I_CALLBACK_PF_STATUS_SET  = 'SET_PF_STATUS'
            I_CALLBACK_USER_COMMAND   = 'USER_COMMAND'
*            i_grid_title             = 'My Title'
            IS_LAYOUT                 = GD_LAYOUT
            IT_FIELDCAT               = FIELDCATALOG[]
       TABLES
            T_OUTTAB                  = IT_EKKO
       EXCEPTIONS
            PROGRAM_ERROR             = 1
            OTHERS                    = 2.

  IF SY-SUBRC <> 0.
    WRITE:/ SY-SUBRC.
  ENDIF.

ENDFORM.                    " DISPLAY_ALV_REPORT


*&---------------------------------------------------------------------*
*&      Form  DATA_RETRIEVAL
*&---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM DATA_RETRIEVAL.
  SELECT EBELN EBELP
   UP TO 10 ROWS
    FROM EKPO
    INTO CORRESPONDING FIELDS OF TABLE  IT_EKKO.
ENDFORM.                    " DATA_RETRIEVAL


*----------------------------------------------------------------------*
*                      FORM SET_PF_STATUS                              *
*----------------------------------------------------------------------*
FORM SET_PF_STATUS USING RT_EXTAB   TYPE  SLIS_T_EXTAB.
  SET PF-STATUS 'STANDARD_FULLSCREEN1' EXCLUDING RT_EXTAB.
ENDFORM.                    "set_pf_status


*&--------------------------------------------------------------------*
*&      Form  user_command
*&--------------------------------------------------------------------*
*       text
*---------------------------------------------------------------------*
*      -->R_UCOMM    text
*      -->RS_SELFIELDtext
*---------------------------------------------------------------------*
FORM USER_COMMAND  USING R_UCOMM LIKE SY-UCOMM
                         RS_SELFIELD TYPE SLIS_SELFIELD.




*then insert the following code in your USER_COMMAND routine...


  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.

*modify

  CASE R_UCOMM.
    WHEN '&IC1'.
      CHECK RS_SELFIELD-TABINDEX > 0.
      IF RS_SELFIELD-VALUE EQ '6000000001'.
        CALL TRANSACTION 'ZDF2'.
      ENDIF.
    WHEN 'REFRESH'.

      READ TABLE IT_EKKO INDEX  RS_SELFIELD-TABINDEX.
      IF SY-SUBRC = 0.
        READ TABLE IT_BACKUP INDEX RS_SELFIELD-TABINDEX.
        IF SY-SUBRC = 0.
          IF IT_EKKO <> IT_BACKUP.
*  then do your check
          ENDIF.
        ENDIF.
      ENDIF.

      PERFORM DATA_RETRIEVAL.
      RS_SELFIELD-REFRESH = 'X'.

  ENDCASE.
ENDFORM.                    "user_command

and also check this thread in which i gave the solution....

Regards

vijay

Read only

hymavathi_oruganti
Active Contributor
0 Likes
525

u need to handle the data_changed event of cl_gui_alv_grid

CLASS LCL_EVENT_RECEIVER DEFINITION.

PUBLIC SECTION.

METHODS HANDLE_DATA_CHANGED

FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID

IMPORTING ER_DATA_CHANGED E_ONF4 E_UCOMM.

ENDCLASS.

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

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.

METHOD HANDLE_DATA_CHANGED.

PERFORM DATA_CHANGED USING ER_DATA_CHANGED.

ENDCLASS.

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

FORM DATA_CHANGED USING P_ER_DTATA_CHANGED TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.

LOOP AT P_ER_DATA_CHANGED->MT_MOD_CELLS INTO LS_MOD_CELL.

CALL METHOD P_ER_DATA_CHANGED->GET_CELL_VALUE

EXPORTING

I_ROW_ID = LS_MOD_CELL-row_id

I_FIELDNAME = LS_MOD_CELL-fieldname

IMPORTING

E_VALUE = L_VALUE.

******CHANGE THE CELL VALUE*********

CALL METHOD P_ER_DATA_CHANGED->MODIFY_CELL

EXPORTING

I_ROW_ID = LS_MOD_CELL-ROW_ID

I_FIELDNAME = LS_MOD_CELL-fieldname

I_VALUE = <LS_VALUE2>.

ENDFORM.