ALV报表——AVL可编辑

整个ALV可编辑

将Layout的Edit设置值为X

效果:所有栏位可以编辑

代码:

TYPES: BEGIN OF ty_data,
         matnr TYPE matnr,
         maktx TYPE maktx,
       END OF ty_data.

DATA: gt_data TYPE TABLE OF ty_data.

DATA: gs_layout   TYPE lvc_s_layo, "布局
      gt_fieldcat TYPE lvc_t_fcat. "字段

"内表数据
gt_data = VALUE #(
  ( matnr = '物料A' maktx = '物料A的描述' )
  ( matnr = '物料B' maktx = '物料B的描述' )
).

"栏位最适宽度
gs_layout-cwidth_opt = 'X'.

"ALV条纹
gs_layout-zebra = 'X'.

"ALV可编辑
gs_layout-edit = 'X'.

"ALV栏位
gt_fieldcat = VALUE #(
  ( fieldname = 'MATNR' ref_field = 'MATNR' ref_table = 'MARA' )
  ( fieldname = 'MAKTX' ref_field = 'MAKTX' ref_table = 'MAKT' )
).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program = sy-repid       "当前程序名
    is_layout_lvc      = gs_layout      "Layout
    it_fieldcat_lvc    = gt_fieldcat    "Fieldcat
    i_save             = 'A'
  TABLES
    t_outtab           = gt_data
  EXCEPTIONS
    program_error      = 1
    OTHERS             = 2.

 

列可编辑

将Fieldcat的指定字段的Edit设置值为X

效果:物料栏位可编辑,物料描述不可编辑

代码:

TYPES: BEGIN OF ty_data,
         matnr TYPE matnr,
         maktx TYPE maktx,
       END OF ty_data.

DATA: gt_data TYPE TABLE OF ty_data.

DATA: gs_layout   TYPE lvc_s_layo, "布局
      gt_fieldcat TYPE lvc_t_fcat. "字段

"内表数据
gt_data = VALUE #(
  ( matnr = '物料A' maktx = '物料A的描述' )
  ( matnr = '物料B' maktx = '物料B的描述' )
).

"栏位最适宽度
gs_layout-cwidth_opt = 'X'.

"ALV条纹
gs_layout-zebra = 'X'.

"ALV栏位
gt_fieldcat = VALUE #(
  ( fieldname = 'MATNR' ref_field = 'MATNR' ref_table = 'MARA' edit = 'X' )
  ( fieldname = 'MAKTX' ref_field = 'MAKTX' ref_table = 'MAKT' )
).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program = sy-repid       "当前程序名
    is_layout_lvc      = gs_layout      "Layout
    it_fieldcat_lvc    = gt_fieldcat    "Fieldcat
    i_save             = 'A'
  TABLES
    t_outtab           = gt_data
  EXCEPTIONS
    program_error      = 1
    OTHERS             = 2.

 

单元格可编辑

1、AVL增加Style栏位(相当于表中表)

2、在Style里设置哪些字段可编辑哪些字段不可编辑

3、Layout指定样式栏位为ALV增加的Style栏位名

4、Layout的Edit设置值为X

效果:第1行的物料可编辑,物料A的描述不可编辑;第2行的物料不可编辑,物料B的描述可编辑

代码:

TYPES: BEGIN OF ty_data,
         matnr TYPE matnr,
         maktx TYPE maktx,
         style TYPE lvc_t_styl,
       END OF ty_data.

DATA: gt_data TYPE TABLE OF ty_data.

DATA: gs_layout   TYPE lvc_s_layo, "布局
      gt_fieldcat TYPE lvc_t_fcat. "字段

DATA: gt_style1 TYPE lvc_t_styl,
      gt_style2 TYPE lvc_t_styl.

"物料可编辑,描述不可编辑
gt_style1 = VALUE #(
  ( fieldname = 'MATNR' style = cl_gui_alv_grid=>mc_style_enabled )
  ( fieldname = 'MAKTX' style = cl_gui_alv_grid=>mc_style_disabled )
).

"物料不可编辑,描述可编辑
gt_style2 = VALUE #(
  ( fieldname = 'MATNR' style = cl_gui_alv_grid=>mc_style_disabled )
  ( fieldname = 'MAKTX' style = cl_gui_alv_grid=>mc_style_enabled )
).

"内表数据
gt_data = VALUE #(
  ( matnr = '物料A' maktx = '物料A的描述' style = gt_style1 )
  ( matnr = '物料B' maktx = '物料B的描述' style = gt_style2 )
).

"栏位最适宽度
gs_layout-cwidth_opt = 'X'.

"ALV条纹
"gs_layout-zebra = 'X'.

"ALV可编辑
gs_layout-edit = 'X'.

"ALV的样式栏位
gs_layout-stylefname = 'STYLE'.

"ALV栏位
gt_fieldcat = VALUE #(
  ( fieldname = 'MATNR' ref_field = 'MATNR' ref_table = 'MARA' )
  ( fieldname = 'MAKTX' ref_field = 'MAKTX' ref_table = 'MAKT' )
).

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program = sy-repid       "当前程序名
    is_layout_lvc      = gs_layout      "Layout
    it_fieldcat_lvc    = gt_fieldcat    "Fieldcat
    i_save             = 'A'
  TABLES
    t_outtab           = gt_data
  EXCEPTIONS
    program_error      = 1
    OTHERS             = 2.

 

posted @ 2020-04-02 14:04  鲸与海  阅读(1890)  评论(0)    收藏  举报