关于OO ALV控制单元格编辑不可编辑功能

在这里插入图片描述
我们在定义alv样式的是可以让单元格可编辑
DATA: BEGIN OF WA_FY.

  •    INCLUDE STRUCTURE zmmus018.
      INCLUDE STRUCTURE ZMMTUS00730.
    

DATA: FYXZTXT TYPE VAL_TEXT," MARK,DEL,
YZFTXT TYPE VAL_TEXT,
SKDW_T TYPE STRING,
FKDW_T TYPE STRING,
******ADD-20190222-BEGIN
VBUND TYPE LFA1-VBUND, "贸易伙伴
SGTXT TYPE SGTXT,
******ADD-20190222-END
JZBZ_T TYPE VAL_TEXT,
SEL,
CELLSTYLES TYPE LVC_T_STYL,
END OF WA_FY.
定义变量:
DATA: l_flag,
lv_canedit(1).
DATA: ls_layout TYPE lvc_s_layo,
ls_variant TYPE disvariant,"LAYOUT
lt_fcat_fy TYPE lvc_t_fcat,
lt_sort TYPE lvc_t_sort,
ls_sort TYPE lvc_s_sort,
lt_filter TYPE lvc_t_filt,
ls_filter TYPE lvc_s_filt,
ls_celltab TYPE lvc_s_styl,
lt_celltab TYPE lvc_t_styl.
"定义宏,输出grid字段
DEFINE def_grid_fy.
clear g_ls.
g_ls-fieldname = &1.
g_ls-coltext = &2.
g_ls-edit = &3.
if &1 = ‘SEL’.
g_ls-checkbox = ‘X’.
endif.

g_ls-inttype   = &5.
  • ENDIF.
    g_ls-lzero = ‘X’.
    if &1 = ‘SKDW’ or &1 = ‘FKDW’.
    g_ls-convexit = ‘ALPHA’.
    endif.
    g_ls-ref_table = &6.
    g_ls-cfieldname = &7.

    case &1 .
    when ‘BCSQJE’ or ‘UNITPRICE’ or ‘CHGUNIT’
    or ‘WAERS1’ or ‘BWBHL’
    or ‘CWHL’ or ‘ZSHILV’
    or ‘ZSHIE’ or ‘JYPTWXJS’.
    g_ls-ref_table = ‘ZMMTUS00730’.

  •    G_LS-CFIELDNAME = 'WAERS'.
      g_ls-ref_field   = &1.
    

    endcase.

  • IF &5 = ‘P’.

  • G_LS-DO_SUM = ‘X’.

  • ENDIF.
    concatenate &4
    ‘[]’
    into g_table_name. "TABLE BODY
    assign (g_table_name) to <g_table>. "NOT HEADERLINE
    append g_ls to <g_table>.
    END-OF-DEFINITION.
    调用宏
    def_grid_fy ‘CWHL’ text-615 ‘X’ ‘LT_FCAT_FY’ ‘P’ ‘’ ‘’.
    def_grid_fy ‘ZSHILV’ text-162 ‘X’ ‘LT_FCAT_FY’ ‘P’ ‘’ ‘’.
    类似这样的部分单元格控制是否可编辑

ls_layout-cwidth_opt = ‘X’.
ls_layout-zebra = ‘X’.
*样式表指定控制的内表
ls_layout-stylefname = ‘CELLSTYLES’.
cl_gui_alv_grid的2个不同属性实现不同功能
*控制单元格可编辑

  •        ls_celltab-fieldname = 'CWHL'.
    
  •        ls_celltab-style = cl_gui_alv_grid=>mc_style_enabled.
    
  •        INSERT ls_celltab INTO TABLE lt_celltab.
    

*控制单元格不可编辑
ls_celltab-fieldname = ‘CWHL’.
ls_celltab-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_celltab INTO TABLE lt_celltab.
把指定的样式放到显示的内表字段
CLEAR wa_fy-cellstyles[].
wa_fy-cellstyles[] = lt_celltab[].

MODIFY gt_fy FROM wa_fy.

CREATE OBJECT g_cont_fy
EXPORTING
container_name = ‘CONT_FY’.
CREATE OBJECT g_grid_fy
EXPORTING
i_parent = g_cont_fy
i_appl_events = ‘X’.

CALL METHOD g_grid_fy->register_edit_event
EXPORTING
i_event_id = cl_gui_alv_grid=>mc_evt_modified.

DATA l_fy_recevier TYPE REF TO lcl_grid_fy_receiver.
CREATE OBJECT l_fy_recevier .

CALL METHOD g_grid_fy->set_table_for_first_display
EXPORTING
is_layout = ls_layout
i_save = ‘A’
is_variant = ls_variant
CHANGING
it_fieldcatalog = lt_fcat_fy
it_outtab = gt_fy
it_sort = lt_sort
it_filter = lt_filter.

ALV单元格动态可编辑是ABAP技术在ALV报表上的一个重要扩展。ALV(ABAP List Viewer)是SAP系统中常用的报表显示工具,可以方便地展示和处理大量的数据。但是在默认情况下,ALV报表的单元格不可编辑的,用户只能查看报表数据而无法进行修改。 为了满足用户对报表数据进行动态修改的需求,开发人员通过对ALV控件进行扩展,使其支持单元格的动态可编辑功能。这样用户可以直接在报表上进行数据编辑,无需打开数据源进行修改。 实现ALV单元格动态可编辑的扩展需要进行如下步骤: 1. 定义ALV报表的显示结构。 首先,需要定义ALV报表的显示结构,包括字段名、字段类型、长度等信息。 2. 扩展ALV函数模块。 在ALV函数模块中,需要添加相应的功能模块来支持单元格的动态可编辑。通过修改ALV函数模块的代码,实现对报表数据的修改和保存。 3. 增加用户交互接口。 为了方便用户进行数据修改,可以在报表上添加一些用户交互接口,比如勾选框、输入框等。用户可以通过这些接口直接修改报表数据,并进行保存操作。 4. 编写逻辑处理程序。 最后,需要编写逻辑处理程序,处理用户的修改操作。这个程序会根据用户输入的数据,更新相应的报表数据,并将修改后的数据保存回数据库中。 通过以上步骤的扩展,用户可以实现在ALV报表中直接进行数据编辑功能。这样,用户可以更加方便地进行数据修改和保存,提高工作效率。同时,ALV单元格动态可编辑的扩展也为定制化的报表需求提供了更多的灵活性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值