본문 바로가기

Study

Study-8

오늘 퀴즈를 풀면서 ALV 공부를 대충했다는 걸 깨달았습니다. 원래 퀴즈 리뷰하면서 몰랐던 부분만 적으려고 했는데.....

만들었던 110번 스크린이 동작을 안합니다.... 이런 젠장......

그래서 그냥 알아야 될 거 같은 자잘한 구문 및 키워드만 작성하겠습니다. 씁쓸한 날입니다......ㅠㅠ


* ALV 그리드에서 ROW를 디자인하기 위해 선언하는 변수

DATA: LT_ROWS TYPE LVC_T_ROID, " 인터널 테이블 타입
           LS_ROW TYPE LVC_S_ROID. " 스트럭처 타입

 

* ALV 그리드에서 버튼을 디자인하기 위해 선언하는 변수

DATALS_BUTTON TYPE STB_BUTTON.

 

* ALV 그리드에서 CELL을 디자인하기 위해 선언하는 변수

DATALS_CELL TYPE LVC_S_SCOL.

 

* Amount 관련 필드 이름

- Cfieldname: 화폐단위를 가지고 있는 필드 이름
- Currency: 특정 화폐단위
- Qfieldname: 유닛을 가지고 있는 필드 이름
- Quantity: 특정 유닛

 

* Output Properties에 관련된 필드

- Checkbox: 체크 박스

- COL_POS: 컬럼 포지션 지정

- DO_SUM: 합계를 구하여 표시할 지 여부

- HOTSPOT: 컬럼의 데이터에 밑줄 표시

- NO_SUM: 합계 여부

- EMPHASIZE: 컬럼의 색깔 표시 (색깔, 밝기, 컬럼-글자 색 반전)

- KEY: 컬럼 키 필드 결정 여부

- LOWERCASE: 데이터 대소문자 구분

- NO_OUT: 컬럼 숨김 처리 (숨김 처리이후 다시 컬럼을 볼 수 있다.)

- OUTPUTLEN: 컬럼의 폭

- TECH: 컬럼 숨김 처리 (숨김 처리이후 다시 컬럼을 볼 수 없다.)

 

* 컬럼 컨텐츠 관련 프로퍼티 포맷

- DECIMALS_O: 소수점 자리 표시

- DECMLFIELD: 소수점 값을 갖고 있는 필드

- EDIT_MASK: 특정 템플릿을 정의하고 템플릿에 맞게 끔 데이터 표시(비밀번호 ‘*’ 처리)

- ICON : 아이콘 표시

- SYMBOL : 심볼 표시

- LZERO : 숫자 앞에 0 표시

- JUST : 데이터 정렬 (왼쪽, 오른쪽, 가운데)

- NO_SIGN: +, - 기호 표시

- NO_ZERO: 0 표시

- ROUND: 반올림

- ROUNDFIELD: 반올림 처리 위한 필드 이름

 

이벤트 핸들러 메소드 정의

 

메소드는 스태틱과 인스턴스로 나뉩니다.
스태틱 메소드로 정의 시 class-methods를 사용합니다.
인스턴스 메소드로 정의 시 methods를 사용합니다.

CLASS LCL_EVENT_HANDLER DEFINITION. " 로컬 클래스 사용
  PUBLIC SECTION.
*   Static Method 정의.
      CLASS-METHODS:
        ON_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
          IMPORTING ES_ROW_NO E_COLUMN,

        ON_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
          IMPORTING ES_ROW_NO E_COLUMN_ID,

        ON_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
        IMPORTING E_OBJECT,

        ON_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
        IMPORTING E_UCOMM.
ENDCLASS.
CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
  METHOD ON_DOUBLE_CLICK.
    MESSAGE I016(BC405_408)
      WITH ES_ROW_NO-ROW_ID E_COLUMN-FIELDNAME.
    ENDMETHOD.

    METHOD ON_HOTSPOT_CLICK.
*      MESSAGE I016(BC405_408)
*        WITH ES_ROW_NO-ROW_ID E_COLUMN_ID-FIELDNAME.
      IF SY-SUBRC = 0.
        READ TABLE GT_DATA INTO GS_DATA INDEX ES_ROW_NO-ROW_ID.

      ENDIF.

      CALL SCREEN 110
        STARTING AT 5 5.
    ENDMETHOD.
ENDCLASS.

이벤트 핸들러 등록
스태틱 메소드일 경우

set handler <이벤트 핸들러 이름>=><메소드 이름> for <클래스>
*-------------------------------------------------------------
set handler lcl_event_handler=>on_double_click for go_alv_grid.


인스턴스 메소드일 경우 

set handler <참조변수 이름>-><메소드 이름> for sender.
*----------------------------------------------------------
set handler go_handler->on_double_click for go_alv_grid.

* 메소드
- get_current_cell: 특정 셀을 선택했을 때 선택되어 진 셀과 로우의 위치 반환
- get_selected_cells: 여러 개의 셀을 선택했을 때 값 반환
- get_selected_columns: 선택되어진 컬럼 반환
- get_selected_rows: 선택되어진 로우의 로우 넘버 반환
- get_subtotals: 서브토탈 값 반환
- set_user_command: 유저 커멘드 반환

 

* 컨텍스트 메뉴 생성 규칙
- 메뉴의 하이라키 구조는 LV.2까지 (하이라키 구조는 LV.1~3까지 존재)
- 컨텍스트 메뉴의 메뉴 엔트리는 10개까지
- 메뉴와 메뉴 구분을 가로 라인선으로 구분
- 중요한 메뉴는 제일 상단에 위치

 

context_menu_request 이벤트에 대한 이벤트 핸들러 메소드 구문

CLASS-METHODS:
        ON_CONTEXT_MENU_REQUEST FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
          IMPORTING E_OBJECT.

* 컨텍스트 메뉴를 로드하기 위해 cl_ctmenu 클래스를 사용하고 load_gui_status 메소드를 사용합니다.

 

* cl_ctmenu 클래스의 메소드 종류
- ADD_FUNCTION: 펑션 추가

- ADD_SEPARATOR: 구분선 추가

- HIDE_FUNCTIONS: 펑션 숨김 처리

- SHOW_FUNCTIONS: 숨김 처리한 펑션 보여주기

- DISABLE_FUNCTIONS: 펑션 비활성화

- ENABLE_FUNCTIONS: 펑션 활성화

'Study' 카테고리의 다른 글

Study 10  (1) 2024.02.05
Study-9  (0) 2024.02.03
Study-7  (0) 2024.01.31
Study-6  (0) 2024.01.31
쉼표  (1) 2024.01.29