函数ALV单元格编辑

 

*&---------------------------------------------------------------------*
*& Report  ZALV_EDIT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zalv_edit.

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.

ls_edit-fieldname = 'VBELN'.
ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.
ls_edit-style2 = space.
ls_edit-style3 = space.
ls_edit-style4 = space.
ls_edit-maxlen = 10.
INSERT ls_edit INTO TABLE lt_edit..

ls_edit-fieldname = 'POSNR'.
ls_edit-style = cl_gui_alv_grid=>mc_style_disabled.
ls_edit-style2 = space.
ls_edit-style3 = space.
ls_edit-style4 = space.
ls_edit-maxlen = 6.
INSERT ls_edit INTO TABLE lt_edit.

LOOP AT it_vbap.
  IF sy-tabix <> 6 .
    APPEND LINES OF lt_edit TO it_vbap-style .
  ENDIF.
  MODIFY it_vbap .
ENDLOOP.

* 字段格式
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.
                                                            "第5步:设置控制字段
* 输出格式
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.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值