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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值