SAP

원하는 CELL 시작 위치 설정 [ SET_CURRENT_CELL_BASE ]

selectall 2025. 12. 9. 13:05

: 리스트 조회 시 내가 원하는 위치에 커서가 있게 하는 것!

-> 새로운 행 추가 (ADD) 할 때 '사용자'에게 편리함.

-> 첫 행 첫 열을 가리키고 싶을 땐 DEFAULT 이기에 해당 메쏘드 사용 안해도 됌.

1. CLASS 선언

CLASS LCL_ALV_GRID DEFINITION DEFERRED.

*&---------------------------------------------------------------------*
*& Class lcl_alv_grid
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
CLASS LCL_ALV_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID.

  PUBLIC SECTION.
    METHODS: SET_OPTIMIZE_ALL_COLS,
        CALL_SET_CURRENT_CELL_BASE IMPORTING IV_ROW TYPE I
                                             IV_COL TYPE I.
ENDCLASS.

*&---------------------------------------------------------------------*
*& Class (Implementation) lcl_alv_grid
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
CLASS LCL_ALV_GRID IMPLEMENTATION.

  METHOD SET_OPTIMIZE_ALL_COLS.
    CALL METHOD ME->OPTIMIZE_ALL_COLS
      EXPORTING
        INCLUDE_HEADER = 1.
  ENDMETHOD.                    "SET_OPTIMIZE_ALL_COLS

  "Current Cell Control
  METHOD  CALL_SET_CURRENT_CELL_BASE.
    CALL METHOD ME->SET_CURRENT_CELL_BASE
      EXPORTING
        ROW = IV_ROW
        COL = IV_COL.
  ENDMETHOD.                    "CALL_SET_CURRENT_CELL_BASE

ENDCLASS.

→ ALV GRID를 컨트롤 할 수 있는 CLASS 를 선언해주고 METHOD 설정 또한 해준다.

→ 잊지말고 CLASS ~ DEFINITION DEFERRED. 선언하기

→ ‘OPTIMIZE_ALL_COLS’ 도 참 편해. 저렇게 선언 해 놓고 ALV DISPLAY 혹은 REFRESH 할 때 마지막 문장으로 불러주면 ALV 가 딱 글자 수에 맞게 이쁘게 나온다.

→ 'SET_CURRENT_CELL_BASE' 메소드를 한번 살펴보면

ROW와 COL의 TYPE이 I 이기에, 사용 시에는 숫자 혹은 TYPE이 I 인 변수를 써야겠지.

 

 

2. METHOD 부르기

: 사용하고자 하는 ALV 에 METHOD를 부른다.

→ 저는 REFRESH 후에 커서 위치가 리스트에 맨 마지막 행의 첫 행을 가리키도록 했습니다.

FORM ALV_TABLE_REFRESH TABLES PT_LIST
                       USING  PI_GRID TYPE REF TO LCL_ALV_GRID
                              PV_STABLE.

  DATA : LS_STABLE TYPE LVC_S_STBL.

  " Set cursor stable
  IF PV_STABLE EQ 'X'.
    LS_STABLE-ROW  =  'X'.
    LS_STABLE-COL  =  'X'.
  ENDIF.

  " ALV refresh
  CALL METHOD PI_GRID->REFRESH_TABLE_DISPLAY
    EXPORTING
*     i_soft_refresh = 'X'
      IS_STABLE = LS_STABLE.

  CALL METHOD PI_GRID->SET_OPTIMIZE_ALL_COLS.

  DATA(LV_LINE) = LINES( PT_LIST[] ).
  CALL METHOD PI_GRID->CALL_SET_CURRENT_CELL_BASE( IV_ROW = LV_LINE  "가리킬 행
                                                   IV_COL = 1 ).     "가리킬 열

ENDFORM

→ IV_ROW 와 IV_COL 숫자로 원하는 위치 설정 가능

'SAP' 카테고리의 다른 글

사용자 표기법 설정으로 인한 금액 표시 포맷 오류 문제 해결(SU01)  (0) 2025.12.09
ABAP 자동 괄호 사용  (0) 2025.12.09
Field Catalog NO_OUT  (0) 2025.12.08
자주 쓰는 FUNCTION 모음  (0) 2025.12.08
NEW SYNTAX  (0) 2025.12.05