03-27-2006 7:15 AM
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
03-27-2006 7:18 AM
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
.
03-27-2006 7:18 AM
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
.
03-27-2006 7:18 AM
HI Sanath,'
in Fieldcatalogue..
use..
fieldcat-edit = 'X'.
regards
satesh
03-27-2006 7:19 AM
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.
03-27-2006 7:25 AM
Hai Sanath,
Here is the Sample code....
REPORT ZTESTDFALV1 .Data Declaration--
** -->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.
03-27-2006 7:56 AM
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
03-27-2006 10:46 AM
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