ABAP ALV 单元格是否可更改

文章详述了一个在SAP中通过编程实现内表单元格编辑状态管理的示例,包括内表定义、字段控制和ALV网格应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

*&---------------------------------------------------------------------*
*& Report  ZTEST_CESHI
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
REPORT ztest_ceshi.

TYPE-POOLS: slis.

*- Fieldcatalog

DATA: it_fieldcat TYPE lvc_t_fcat.

DATA: x_fieldcat TYPE lvc_s_fcat.

DATA: x_layout TYPE lvc_s_layo.



"第1步:用操作具体单元的是否可编辑的内表和工作区



DATA: ls_edit    TYPE lvc_s_styl,

      lt_edit    TYPE lvc_t_styl,

      gr_alvgrid TYPE REF TO cl_gui_alv_grid.

"第2步:在内表定义添加字段,用于控制具体行的具体单元是否可编辑

DATA: BEGIN OF it_vbap OCCURS 0,

        vbeln LIKE vbap-vbeln,

        posnr LIKE vbap-posnr,

        style TYPE lvc_t_styl, "FOR DISABLE   单元格是否可更改

      END OF it_vbap.

DATA: ls_outtab LIKE LINE OF it_vbap.

SELECT vbeln  posnr

  UP TO 100 ROWS

  INTO CORRESPONDING FIELDS OF TABLE it_vbap

FROM vbap.



DATA:l_pos TYPE i VALUE 1.

CLEAR: l_pos.

l_pos = l_pos + 1.

x_fieldcat-seltext = 'VBELN'.

x_fieldcat-fieldname = 'VBELN'.

x_fieldcat-tabname = 'ITAB'.

x_fieldcat-col_pos = l_pos.

x_fieldcat-edit = 'X'.

x_fieldcat-outputlen = '10'.

x_fieldcat-ref_field = 'VBELN'.

x_fieldcat-ref_table = 'VBAK'.

APPEND x_fieldcat TO it_fieldcat.



CLEAR x_fieldcat.

l_pos = l_pos + 1.

x_fieldcat-seltext = 'POSNR'.

x_fieldcat-fieldname = 'POSNR'.

x_fieldcat-tabname = 'ITAB'.

x_fieldcat-col_pos = l_pos.

x_fieldcat-edit = 'X'.

x_fieldcat-outputlen = '5'.

APPEND x_fieldcat TO it_fieldcat.

CLEAR x_fieldcat.

l_pos = l_pos + 1.

********************************************************
PERFORM set_status_disabled USING 6 'VBELN'.
PERFORM set_status_disabled USING 6 'POSNR'.

INSERT LINES OF lt_edit INTO TABLE ls_outtab-style.

MODIFY it_vbap INDEX 6 FROM ls_outtab TRANSPORTING style .
********************************************************
x_layout-stylefname = 'STYLE'.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
  EXPORTING
    i_callback_program = sy-repid
    is_layout_lvc      = x_layout
    it_fieldcat_lvc    = it_fieldcat
  TABLES
    t_outtab           = it_vbap[]
  EXCEPTIONS
    program_error      = 1
    OTHERS             = 2.

IF sy-subrc NE 0.

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

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

ENDIF.


FORM set_status_disabled USING index TYPE sy-tabix  fieldname TYPE lvc_s_styl-fieldname .

  sy-tabix = index.

  ls_edit-fieldname = fieldname.

  ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.  " 不可更改 mc_style_enabled 可更改

  ls_edit-style2 = space.

  ls_edit-style3 = space.

  ls_edit-style4 = space.

  ls_edit-maxlen = 10.

  INSERT ls_edit INTO TABLE lt_edit.



ENDFORM.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值