ALV输入数据后点回车自动将焦点置为下一行的该列

输入数据后,点回车,焦点自动换到下一行的该列

b88781f3ad76cc9e4871283b8a97beb4.jpeg

7f0588a1ae3e46c54b3517bf92c45829.jpegcode

*&---------------------------------------------------------------------*
*& Report  ZLM_ALV_015
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT ZLM_ALV_015.

* Data Declration

TYPE-POOLS: SLIS.
*
TYPES: BEGIN OF TY_SFLIGHT.
INCLUDE TYPE SFLIGHT.
TYPES: BOX TYPE CHAR1,
       END  OF TY_SFLIGHT.
*
*
DATA: GT_SFLIGHT TYPE TABLE OF TY_SFLIGHT.
DATA: GS_LAYOUT  TYPE SLIS_LAYOUT_ALV.
DATA: LT_EVTS    TYPE SLIS_T_EVENT,
      LA_EVTS    LIKE LINE OF LT_EVTS.
*
DATA: GS_REPORT TYPE SY-CPROG,
      GS_TITLE  TYPE LVC_TITLE.

*
* Start of Selection
START-OF-SELECTION.
*
* Report
  GS_REPORT = SY-CPROG.
  GS_TITLE  = 'Move Cursor to next row by pressing Enter'.


*
* Selection.
  SELECT * FROM SFLIGHT
         INTO CORRESPONDING FIELDS OF TABLE GT_SFLIGHT UP TO 10 ROWS.

*
* Layout
  GS_LAYOUT-EDIT = 'X'.

*
* Event for Data Changed
  LA_EVTS-NAME = 'DATA_CHANGED'.
  LA_EVTS-FORM = 'GET_DATA_CHANGED'.
  APPEND LA_EVTS TO LT_EVTS.

*
* Call ABAP List Viewer (ALV)
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_GRID_TITLE       = GS_TITLE
      I_CALLBACK_PROGRAM = GS_REPORT
      I_STRUCTURE_NAME   = 'SFLIGHT'
      IS_LAYOUT          = GS_LAYOUT
      IT_EVENTS          = LT_EVTS
    TABLES
      T_OUTTAB           = GT_SFLIGHT.

*
*&---------------------------------------------------------------------*
*&      Form  get_data_changed
*&---------------------------------------------------------------------*
*       Here we will get the current cell and than add 1 to it to move
*         to next row. Than we will call the method to set the new row
*----------------------------------------------------------------------*
FORM GET_DATA_CHANGED USING RR_DATA_CHANGED
        TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
*
  DATA: LO_GRID TYPE REF TO CL_GUI_ALV_GRID.
*
  DATA: LE_ROW     TYPE I,
        LE_VALUE   TYPE C,
        LE_COL     TYPE I,
        LES_ROW_ID TYPE LVC_S_ROW,
        LES_COL_ID TYPE LVC_S_COL,
        LES_ROW_NO TYPE LVC_S_ROID.

*
* Get the ALV Object reference
  CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
    IMPORTING
      E_GRID = LO_GRID.

*
* Get the Current Cell
  CALL METHOD LO_GRID->GET_CURRENT_CELL
    IMPORTING
      E_ROW     = LE_ROW
      E_VALUE   = LE_VALUE
      E_COL     = LE_COL
      ES_ROW_ID = LES_ROW_ID
      ES_COL_ID = LES_COL_ID
      ES_ROW_NO = LES_ROW_NO.

*
* Set to the next cell
  DESCRIBE TABLE  GT_SFLIGHT LINES SY-INDEX.
  LES_ROW_ID-INDEX  = LES_ROW_ID-INDEX    1.
  LES_ROW_NO-ROW_ID = LES_ROW_NO-ROW_ID   1.
  IF LES_ROW_ID-INDEX LE SY-INDEX.
    CALL METHOD LO_GRID->SET_CURRENT_CELL_VIA_ID
      EXPORTING
        IS_ROW_ID    = LES_ROW_ID
        IS_COLUMN_ID = LES_COL_ID
        IS_ROW_NO    = LES_ROW_NO.
  ENDIF.

ENDFORM.                    "get_data_changed

402c09adb30aba07ff2daebebe494b39.jpeg

5d98b30b71c1a60269908ca287be3204.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于SAP ALV报表的一列数据修改,您可以按照以下步骤进行操作: 1. 首先,您需要获取对应的ALV表格对象。可以使用函数`cl_gui_alv_grid=>get_grid`获取ALV表格对象的引用。 2. 使用`get_table`方法获取ALV表格对象中的数据表。 3. 对获取到的数据表进行修改。例如,您可以使用内部表操作语句对数据表中的某一列进行修改。 4. 最后,使用`set_table`方法将修改后的数据表重新设ALV表格对象。 下面是一个示例代码片段,展示了如何在SAP ABAP中修改ALV表格中的一列数据: ```abap DATA: lo_alv_grid TYPE REF TO cl_gui_alv_grid, lt_data TYPE TABLE OF your_data_structure, "您的数据结构类型 ls_data TYPE your_data_structure. "您的数据结构类型 " 获取ALV表格对象 lo_alv_grid = cl_gui_alv_grid=>get_grid( ). " 获取ALV表格中的数据表 lt_data = lo_alv_grid->get_table( ). " 修改数据表中的一列数据 LOOP AT lt_data INTO ls_data. ls_data-column_to_modify = 'your_new_value'. "修改需要修改的列 MODIFY lt_data FROM ls_data. ENDLOOP. " 将修改后的数据表重新设ALV表格对象 lo_alv_grid->set_table( lt_data ). ``` 请注意,上述示例代码中的"your_data_structure"需要替换为您实际使用的数据结构类型,"column_to_modify"需要替换为您要修改的列名,"your_new_value"需要替换为您要更新的新值。 希望对您有所帮助!如有任何疑问,请随时向我提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值