SAP ABAP ALV单元格编辑设置DEMO (ALV备忘三)

原来一直没用到这么深,这2天开始关注这块,基本上搞清楚了。

1、使用的ABAP ALV 控件是: REUSE_ALV_GRID_DISPLAY_LVC 。

2、DEMO程序运行后的效果,等于4700000005的PO,PO ITEM列的单元格时可以编辑的:

3、注意内存数据结构,这个清楚了,就很好理解是怎么玩的。在数据表的每一行末,还有一个小表,这个表存放这一行中哪些字段可编辑,哪些不可编辑的信息(所以需要表数据)。程序工作起来,需要控制每一行末的这张EDIT小表,给它相应的数据,才能控制单元格的编辑状态。

4、对于REUSE_ALV_GRID_DISPLAY_LVC函数,我目前只能打开一整列为可编辑状态,然后关闭不编辑的单元格。

全部DEMO的程序,如果你没有PO数据,换一个有数据的client试:

REPORT ZALV2.

TYPES:BEGIN OF GS_TYPE,
        EBELN TYPE EKKO-EBELN,
        VERKF TYPE EKKO-VERKF,
        STYLE TYPE LVC_T_STYL,  "设置编辑状态字段
      END OF GS_TYPE.

DATA:GT_TABLE TYPE STANDARD TABLE OF GS_TYPE,
     GS_TABLE TYPE GS_TYPE.


DATA:GIT_FCAT   TYPE LVC_T_FCAT,
     GWA_FCAT   LIKE LINE OF GIT_FCAT,
     GWA_LAYOUT TYPE LVC_S_LAYO,
     GWA_GLAY   TYPE LVC_S_GLAY.


DATA:GS_EDIT TYPE LVC_S_STYL,
     GT_EDIT TYPE LVC_T_STYL.


START-OF-SELECTION.

  SELECT EBELN
         VERKF
          INTO CORRESPONDING FIELDS OF TABLE GT_TABLE
          FROM EKKO
   UP TO 10 ROWS.



  GS_EDIT-FIELDNAME = 'VERKF'.
  GS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED."设置为不可编辑
  INSERT GS_EDIT INTO TABLE GT_EDIT.



LOOP AT GT_TABLE INTO GS_TABLE.


    IF GS_TABLE-EBELN <> '4700000005'.

      GS_TABLE-STYLE = GT_EDIT.

    ENDIF.

    MODIFY GT_TABLE FROM GS_TABLE TRANSPORTING STYLE.

ENDLOOP.



  PERFORM FRM_SET_CATALOG.

  GWA_LAYOUT-ZEBRA = 'X'.
  GWA_LAYOUT-SEL_MODE = 'A'.
  GWA_LAYOUT-CWIDTH_OPT = 'X'.
  GWA_LAYOUT-EDIT     = ''.       "将整个ALV设置成可编辑
  GWA_LAYOUT-STYLEFNAME = 'STYLE'. "指定保存编辑状态的字段名
  GWA_GLAY-EDT_CLL_CB = 'X'.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      I_CALLBACK_PROGRAM = SY-REPID
      IS_LAYOUT_LVC      = GWA_LAYOUT   "参数
      IT_FIELDCAT_LVC    = GIT_FCAT    "参数表
*      I_GRID_SETTINGS    = GWA_GLAY
    TABLES
      T_OUTTAB           = GT_TABLE[]
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.
  IF SY-SUBRC = 0.

  ENDIF.
*&---------------------------------------------------------------------*
*&      FORM  FRM_SET_CATALOG
*&---------------------------------------------------------------------*
*       TEXT
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*


FORM FRM_SET_CATALOG .

  DATA:L_POS TYPE I VALUE 1.
  CLEAR: L_POS.
  L_POS = L_POS + 1.
  GWA_FCAT-COLTEXT   = 'PO'.
  GWA_FCAT-SCRTEXT_L = 'PO'.
  GWA_FCAT-SCRTEXT_M = 'PO'.
  GWA_FCAT-SCRTEXT_S = 'PO'.
  GWA_FCAT-FIELDNAME = 'EBELN'.
  GWA_FCAT-COL_POS = L_POS.
  GWA_FCAT-OUTPUTLEN = '10'.
  APPEND GWA_FCAT TO GIT_FCAT.


  L_POS = L_POS + 1.
  GWA_FCAT-COLTEXT   = 'PO ITEM'.
  GWA_FCAT-SCRTEXT_L = 'PO ITEM'.
  GWA_FCAT-SCRTEXT_M = 'PO ITEM'.
  GWA_FCAT-SCRTEXT_S = 'PO ITEM'.
  GWA_FCAT-FIELDNAME = 'VERKF'.
  GWA_FCAT-EDIT    = 'X'. "将这列设置为可编辑
  GWA_FCAT-COL_POS = L_POS.
  GWA_FCAT-OUTPUTLEN = '20'.
  APPEND GWA_FCAT TO GIT_FCAT.

ENDFORM.

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

刘欣的博客

你将成为第一个打赏博主的人!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值