SAP - GRID ALV

신지수·2022년 3월 18일
2

SAP

목록 보기
6/10
post-thumbnail

1. ALV란?

  • ABAP List Viewer의 약자
  • 리스트 화면에 데이터를 조회하고나, 조회된 데이터를 수정/변경
  • 데이터 구조와 인터널 테이블만 활용하여 단시간 내에 리스트 프로그램 개발 가능

2. GRID ALV

  • ALV를 이용하여 데이터를 화면에 뿌려주기 위해서는?
    1. 인터널 테이블 선언
      • 아웃풋 테이블: ALV에서 데이터 정보를 저장하는 인터널 테이블 영역
    2. 데이터의 구조(필드 카탈로그)
      • ALV GRID 컨트롤이 스크린에 조회되는 구조를 정의
      • ABAP Dictionary의 테이블 또는 구조체를 이용하거나, 인터널 테이블의 구조를 그대로 사용

1. SAP 컨테이너 컨트롤

  • ALV인스턴스를 물리적으로 화면에 보이게 하기위한 스크린과 ALV GRID 컨트롤의 연결고리 역할

2. ALV 생성

1. screen 만들기


  CALL SCREEN 100.

2. container 만들기

  • 이벤트 필요 시 이벤트 만들어서 grid에 올림

  " CONTAINER 생성
  CREATE OBJECT P_GV_CON1
    EXPORTING
      REPID     = SY-REPID
      DYNNR     = SY-DYNNR
      EXTENSION = 2000.

3. grid 만들기


  " ALV GRID 설정
  CREATE OBJECT P_GV_GRID1
    EXPORTING
      I_PARENT = P_GV_CON1.

4. grid에 보여 줄 아웃풋 테이블 구성


  CALL METHOD P_GV_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_DEFAULT            = 'X'
      I_SAVE               = 'A'
      IT_TOOLBAR_EXCLUDING = GT_EXCLUDE
      IS_LAYOUT            = GS_LAYOUT
    CHANGING
      IT_FIELDCATALOG      = GT_FCAT[]
      IT_OUTTAB            = P_GT_DATA.

5. REFRSH_TABLE_DISPLAY

  • 이미 화면에 조회된 ALV의 아웃풋 테이블을 다시 조회할 때 사용하는 메서드.

FORM ALV_REFRESH_TABLE  USING  P_GV_GRID1 TYPE REF TO CL_GUI_ALV_GRID.

  CHECK P_GV_GRID1 IS NOT INITIAL.

  DATA: LS_SCROLL TYPE LVC_S_STBL.
  LS_SCROLL-ROW = 'X'.
  LS_SCROLL-COL = 'X'.

  CALL METHOD P_GV_GRID1->REFRESH_TABLE_DISPLAY
    EXPORTING
      IS_STABLE = LS_SCROLL         " With Stable Rows/Columns
    EXCEPTIONS
      FINISHED  = 1                 " Display was Ended (by Export)
      OTHERS    = 2.
ENDFORM.                    " ALV_REFRESH_TABLE


3. ALV 메서드

1. 이벤트 선언

2. 이벤트 핸들러 메서드 정의

  • 프로그램 내 이벤트 발생에 반응하기 위해 클래스를 정의하고 이벤트 핸들러 메서드를 선언함

"더블 클릭 이벤트 핸들러 메서드 정의
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
	METHODS:
    HANDLE_DOUBLE_CLICK
    OF CL_GUI_ALV_GRID
    	IMPORTING E_ROW E_COLUMN.
ENDCLASS.

3. 이벤트 핸들러 메서드 등록

  • 이벤트를 실행하기 위해 ALV GRID에 이벤트 메서드를 등록

DATA: EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.

CREATE OBJECT EVENT_RECEIVER.

SET HANDLER EVENT_RECEIVER -> HANDLE_DOUBLE_CLICK FOR G_GRID.

4. 이벤트 호출

5. 이벤트 핸들러 메서드 실행


4. ALV 이벤트 종류

0. 순서

  1. 정의
  2. 구현
  3. 이벤트 핸들러
  4. 필드 카탈로그 선언

1. DOUBLE_CLICK

  • 셀을 더블클릭할 때 실행되는 이벤트
  • 필드 카탈로그 선언이 필요없음.

2. HOTSPOT_CLICK

  • Hotspot으로 선언된 컬럼을 마우스로 클릭할 때 반응하는 이벤트

  GS_FIELDCAT-HOTSPOT = 'X'.

3. Toolbar + User_command

  • Toolbar에서 아이콘을 생성하고 User_command에서 아이콘에 기능을 추가

4. Color

  • 특정 컬럼에 색상을 주고싶 을 때 사용하는 이벤트

GS_FCAT-EMPHASIZE = 'C310'.


3. Field Catalog

  • ALV에서 조회되는 칼럼들의 필드 정보를 포함하는 LVC_T_FCAT 타입의 테이블 구조

1. ALV 필드 카탈로그 생성

1-1. ABAP Dictionary를 이용하는 방법

1-2. 필드 카탈로그를 수동으로 구성하는 방법

1-3. 구조체와 필드 카탈로그를 동시에 사용

2. Field Catalog 예시


* 필드 카탈로그 구현을 위한 구조체와 테이블 선언
DATA: GS_FCAT     TYPE LVC_S_FCAT,
      GT_FCAT     TYPE LVC_T_FCAT.

  CLEAR GS_FCAT.
  GS_FCAT-FIELDNAME = 'AMT'. 			* 뿌려줄 Field Name
  GS_FCAT-DO_SUM     = 'X'.				* 합계 구현
  GS_FCAT-CFIELDNAME = 'CURR'.          * Currency 단위를 참고하는 필드 이름
  GS_FCAT-REPTEXT   = 'ZSTTAMT'.        * Data Element 텍스트
  GS_FCAT-SCRTEXT_L = '송금액'.		    * 긴 필드 라벨(40byte)
  GS_FCAT-SCRTEXT_M = '송금액'.	        * 중간 필드 라벨(20byte)
  GS_FCAT-SCRTEXT_S = '송금액'.		    * 긴 필드 라벨(40byte)
  GS_FCAT-KEY       = 'X'.              * Key 필드(화면에 고정)
  APPEND GS_FCAT TO GT_FCAT.


4. Search Help

Search Help?
: 사용자가 하면 필드에 값을 입력하고자 할 때 입력 가능한 값의 List를 보여주는 기능

1. Search Help 활용

  • 화면 필드에 Search Help 추가하는 법(3가지 중 1택)
    1. Data Element에 Search Help 추가
    2. Table Field에 Search Help 추가
    3. Screen Field에 Search Help 추가
      • MATCHCODE OBJECT


        		SELECT-OPTIONS : PERSNO  FOR ZTSTT1-PERSNO MATCHCODE OBJECT ZOJT01_SH02. 

   


                      
profile
병아리 개발자🐥

0개의 댓글