Thursday, June 29, 2017

Sample code for EDITABLE ALV (Classical Approach)





*&---------------------------------------------------------------------*
*& Report YTEST_ALV_EDITABLE
*&
*&---------------------------------------------------------------------*
*& Developed by DEBESH
*& Aim : Make cell editable whereever pincode is empty
*&---------------------------------------------------------------------*


REPORT ytest_alv_editable.

TYPE-POOLS : slis.

TYPES : BEGIN OF ty_kna1,
kunnr TYPE kunnr,
land1 TYPE land1_gp,
name1 TYPE name1_gp,
name2 TYPE name2_gp,
ort01 TYPE ort01_gp,
pstlz TYPE pstlz,
field_style TYPE lvc_t_styl, " For editing
END OF ty_kna1.

DATA: lt_kna1 TYPE STANDARD TABLE OF ty_kna1,
ls_kna1 TYPE ty_kna1,
lt_fieldcat TYPE lvc_t_fcat,
ls_fieldcat TYPE lvc_s_fcat,
ls_stylerow TYPE lvc_s_styl ,
lt_styletab TYPE lvc_t_styl ,
ls_layout TYPE lvc_s_layo.

** Data extraction
SELECT kunnr land1 name1 name2 ort01 pstlz FROM kna1
INTO CORRESPONDING FIELDS OF TABLE lt_kna1 UP TO 10 ROWS.

** Field catalog for ALV

IF sy-subrc IS INITIAL.

ls_fieldcat-fieldname = 'KUNNR'.
ls_fieldcat-scrtext_m = 'Customer Number'.
ls_fieldcat-col_pos = 0.
ls_fieldcat-outputlen = 10.
ls_fieldcat-emphasize = 'X'.
ls_fieldcat-key = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

ls_fieldcat-fieldname = 'LAND1'.
ls_fieldcat-scrtext_m = 'Location'.
ls_fieldcat-col_pos = 0.
ls_fieldcat-outputlen = 10.
ls_fieldcat-emphasize = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

ls_fieldcat-fieldname = 'NAME1'.
ls_fieldcat-scrtext_m = 'First Name'.
ls_fieldcat-col_pos = 0.
ls_fieldcat-outputlen = 10.
ls_fieldcat-emphasize = 'X'.

APPEND ls_fieldcat TO lt_fieldcat.

ls_fieldcat-fieldname = 'NAME2'.
ls_fieldcat-scrtext_m = 'Last Name'.


ls_fieldcat-col_pos = 0.


ls_fieldcat-outputlen = 10.


ls_fieldcat-emphasize = 'X'.





APPEND ls_fieldcat TO lt_fieldcat.


CLEAR ls_fieldcat-edit.


ls_fieldcat-fieldname = 'ORT01'.


ls_fieldcat-scrtext_m = 'City'.


ls_fieldcat-col_pos = 0.


ls_fieldcat-outputlen = 10.


ls_fieldcat-emphasize = 'X'.


ls_fieldcat-edit = 'X'. " Make coulmn Editable


APPEND ls_fieldcat TO lt_fieldcat.





CLEAR ls_fieldcat-edit.


ls_fieldcat-fieldname = 'PSTLZ'.


ls_fieldcat-scrtext_m = 'Post Code'.


ls_fieldcat-col_pos = 0.


ls_fieldcat-outputlen = 10.


ls_fieldcat-emphasize = 'X'.


APPEND ls_fieldcat TO lt_fieldcat.





IF sy-subrc <> 0.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno


WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.


ENDIF.


** Cell Editable


LOOP AT lt_kna1 INTO ls_kna1.


IF ls_kna1-pstlz <> space. " change condition according to your data


ls_stylerow-fieldname = 'ORT01' .


ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.


APPEND ls_stylerow TO ls_kna1-field_style.


MODIFY lt_kna1 FROM ls_kna1.


** code to update database can be inserted here


ENDIF.


ENDLOOP.


ls_layout-stylefname = 'FIELD_STYLE'.


a

IF sy-subrc <> 0.


MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno


WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.


ENDIF.





ENDIF.












https://4.bp.blogspot.com/-orgmMmUM4hM/WVSiltcBzcI/AAAAAAAAMII/iBw894gvggMOcZw-HY7sn_kOM6An1S6IgCLcBGAs/s400/alvoutput.png