Application Development 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: 

display edit box in ALV

Former Member
0 Kudos

hi friends,

could you please tell me how i can create an editable field in alv display i am using the function module reuse_alv_list_disply. thanks in advance.

cheers

sanath

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi Sanath,

You can set the field editable in the Fieldcatalog.

Check this sample code.

TYPE-POOLS : slis.

data : gs_layout TYPE slis_layout_alv,
      ct_fieldcat TYPE slis_t_fieldcat_alv,
      g_repid LIKE sy-repid,
      temp_cat TYPE slis_fieldcat_alv,
      header_alv TYPE slis_t_listheader,
      header_alv_wa TYPE slis_listheader.

data : BEGIN OF i_data occurs 0,
        vbeln LIKE vbak-vbeln,
        vkorg LIKE vbak-vkorg,
        vtweg LIKE vbak-vtweg,
        spart LIKE vbak-spart,
        posnr LIKE vbap-posnr,
        matnr LIKE vbap-matnr,
        zmeng LIKE vbap-zmeng,
        lfart LIKE likp-lfart,
        lfdat LIKE likp-lfdat,
        lfimg LIKE lips-lfimg,
       END OF  i_data.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN OBLIGATORY MATCHCODE OBJECT VMVA.

initialization.
  g_repid = sy-repid.

start-of-selection.

SELECT vbak~vbeln vbak~vkorg vbak~vtweg vbak~spart vbap~posnr
vbap~matnr vbap~zmeng likp~lfart likp~lfdat lips~lfimg
FROM ( ( ( vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln ) INNER JOIN
lips ON vbak~vbeln = lips~vgbel ) INNER JOIN likp ON likp~vbeln =
lips~vbeln ) INTO TABLE i_data where vbap~posnr = lips~vgpos
AND vbak~vbeln IN s_vbeln.

 CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME               = sy-repid
    I_INTERNAL_TABNAME           = 'I_DATA'
    I_INCLNAME                   = sy-repid
   CHANGING
     CT_FIELDCAT                  = ct_fieldcat
  EXCEPTIONS
    INCONSISTENT_INTERFACE       = 1
    PROGRAM_ERROR                = 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.

loop at ct_fieldcat into temp_cat.
temp_cat-key = 'X'.
  case temp_cat-fieldname.
   when 'VBELN'.
    temp_cat-seltext_m = 'Sales Order'.
    temp_cat-ddictxt = 'M'.
   when 'VKORG'.
    temp_cat-seltext_m = 'Sales Org'.
    temp_cat-ddictxt = 'M'.
   when 'MATNR'.
    temp_cat-seltext_m = 'Mat No'.
    temp_cat-ddictxt = 'M'.
<b>    temp_cat-edit = 'X'.</b>
  when 'ZMENG'.
    temp_cat-seltext_m = 'Quantity'.
    temp_cat-ddictxt = 'M'.
  when others .
    continue.
endcase.
modify ct_fieldcat from temp_cat.
endloop.

gs_layout-zebra = 1.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
  I_CALLBACK_PROGRAM                = sy-repid
   IS_LAYOUT                         = gs_layout
   IT_FIELDCAT                       = ct_fieldcat
    I_SAVE                            = 'A'
  TABLES
     T_OUTTAB                          = I_DATA
 EXCEPTIONS
   PROGRAM_ERROR                     = 1
   OTHERS                            = 2
          .

6 REPLIES 6

Former Member
0 Kudos

Hi Sanath,

You can set the field editable in the Fieldcatalog.

Check this sample code.

TYPE-POOLS : slis.

data : gs_layout TYPE slis_layout_alv,
      ct_fieldcat TYPE slis_t_fieldcat_alv,
      g_repid LIKE sy-repid,
      temp_cat TYPE slis_fieldcat_alv,
      header_alv TYPE slis_t_listheader,
      header_alv_wa TYPE slis_listheader.

data : BEGIN OF i_data occurs 0,
        vbeln LIKE vbak-vbeln,
        vkorg LIKE vbak-vkorg,
        vtweg LIKE vbak-vtweg,
        spart LIKE vbak-spart,
        posnr LIKE vbap-posnr,
        matnr LIKE vbap-matnr,
        zmeng LIKE vbap-zmeng,
        lfart LIKE likp-lfart,
        lfdat LIKE likp-lfdat,
        lfimg LIKE lips-lfimg,
       END OF  i_data.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN OBLIGATORY MATCHCODE OBJECT VMVA.

initialization.
  g_repid = sy-repid.

start-of-selection.

SELECT vbak~vbeln vbak~vkorg vbak~vtweg vbak~spart vbap~posnr
vbap~matnr vbap~zmeng likp~lfart likp~lfdat lips~lfimg
FROM ( ( ( vbak INNER JOIN vbap ON vbak~vbeln = vbap~vbeln ) INNER JOIN
lips ON vbak~vbeln = lips~vgbel ) INNER JOIN likp ON likp~vbeln =
lips~vbeln ) INTO TABLE i_data where vbap~posnr = lips~vgpos
AND vbak~vbeln IN s_vbeln.

 CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME               = sy-repid
    I_INTERNAL_TABNAME           = 'I_DATA'
    I_INCLNAME                   = sy-repid
   CHANGING
     CT_FIELDCAT                  = ct_fieldcat
  EXCEPTIONS
    INCONSISTENT_INTERFACE       = 1
    PROGRAM_ERROR                = 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.

loop at ct_fieldcat into temp_cat.
temp_cat-key = 'X'.
  case temp_cat-fieldname.
   when 'VBELN'.
    temp_cat-seltext_m = 'Sales Order'.
    temp_cat-ddictxt = 'M'.
   when 'VKORG'.
    temp_cat-seltext_m = 'Sales Org'.
    temp_cat-ddictxt = 'M'.
   when 'MATNR'.
    temp_cat-seltext_m = 'Mat No'.
    temp_cat-ddictxt = 'M'.
<b>    temp_cat-edit = 'X'.</b>
  when 'ZMENG'.
    temp_cat-seltext_m = 'Quantity'.
    temp_cat-ddictxt = 'M'.
  when others .
    continue.
endcase.
modify ct_fieldcat from temp_cat.
endloop.

gs_layout-zebra = 1.


CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
  I_CALLBACK_PROGRAM                = sy-repid
   IS_LAYOUT                         = gs_layout
   IT_FIELDCAT                       = ct_fieldcat
    I_SAVE                            = 'A'
  TABLES
     T_OUTTAB                          = I_DATA
 EXCEPTIONS
   PROGRAM_ERROR                     = 1
   OTHERS                            = 2
          .

Former Member
0 Kudos

HI Sanath,'

in Fieldcatalogue..

use..

fieldcat-edit = 'X'.

regards

satesh

Former Member
0 Kudos

Hi sanath,

You can set the edit component of field catalog for making any field editable.

For eg:

data: fcat type slis_t_fieldcat_alv with header line.

fcat-edit = 'X'.

Hope this helps.

Regards,

Sylendra.

Former Member
0 Kudos

Hai Sanath,

Here is the Sample code....

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. "newDATA: 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 declarationsTYPE-POOLS: SLIS. "ALV DeclarationsDATA: 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,

Srikanth.

former_member188685
Active Contributor
0 Kudos

hi,

REPORT  ZTEST_ALV_CHECK                         .


TYPE-POOLS: SLIS.
DATA: X_FIELDCAT TYPE SLIS_FIELDCAT_ALV,
      IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,
      L_LAYOUT type slis_layout_alv.
DATA: BEGIN OF ITAB OCCURS 0,
      VBELN LIKE VBAK-VBELN,
      POSNR LIKE VBAP-POSNR,
      CHK(1),
     END OF ITAB.

SELECT VBELN
       POSNR
       FROM VBAP
       UP TO 20 ROWS
       INTO TABLE ITAB.

X_FIELDCAT-FIELDNAME = 'CHK'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 1.
<b>X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.</b>
X_FIELDCAT-CHECKBOX = 'X'.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'VBELN'.
X_FIELDCAT-SELTEXT_L = 'VBELN'.
<b>X_FIELDCAT-INPUT = 'X'.
X_FIELDCAT-EDIT = 'X'.</b>
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 2.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.

X_FIELDCAT-FIELDNAME = 'POSNR'.
X_FIELDCAT-SELTEXT_L = 'POSNR'.
X_FIELDCAT-TABNAME = 'ITAB'.
X_FIELDCAT-COL_POS = 3.
APPEND X_FIELDCAT TO IT_FIELDCAT.
CLEAR X_FIELDCAT.
L_LAYOUT-window_titlebar = 'Popup window'.
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
  EXPORTING
    I_CALLBACK_PROGRAM       = SY-REPID
    IS_LAYOUT                = L_LAYOUT
    I_CALLBACK_PF_STATUS_SET = 'STATUS'
    I_CALLBACK_USER_COMMAND  = 'USER_COMMAND'
    IT_FIELDCAT              = IT_FIELDCAT
  TABLES
    T_OUTTAB                 = ITAB
  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.

*&---------------------------------------------------------------------*
*&      Form  STATUS
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_EXTAB    text
*----------------------------------------------------------------------*
FORM STATUS USING P_EXTAB TYPE SLIS_T_EXTAB.
*- Pf status
  SET PF-STATUS 'STATUS'.
ENDFORM.                 " STATUS
*&---------------------------------------------------------------------*
*&      Form  USER_COMMAND
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->R_UCOMM      text
*      -->RS_SELFIELD  text
*----------------------------------------------------------------------*
FORM USER_COMMAND USING R_UCOMM     LIKE SY-UCOMM
                               RS_SELFIELD TYPE SLIS_SELFIELD.

ENDFORM.                    "USER_COMMAND

Regards

Vijay

Former Member
0 Kudos

Hi,

While designing/preparing the fieldcatalog make the attribute "EDIT" for the fieldcatalog as 'X' for the desired fieldname, so that the corresponding field in the ALV would be editable.

if ftcat-fieldname EQ 'XXX'.

ftcat-edit = 'X'.

endif.

Regs,

Venkat Ramanan