ABAP ALV GRID 컨트롤 생성❓
ALV GRID 생성 방법 (1)
위 링크에서 스크린에 컨테이너를 생성하여 ALV GRID 컨트롤을 추가하는 것을 해보았는데 이제 ALV를 생성하여 화면에 데이터가 보이게 할 것이다.
먼저 첫 번째 링크와 같이 스크린 100번을 생성하고 스크린 페인터를 이용해 Custom Control을 추가한다.
그 후 ALV GRID 컨트롤을 참고하는 객체 변수를 선언하고 동시에 화면에 보여줄 인터널 테이블도 생성한다.
" ALV GRID 컨트롤을 참고하는 객체 변수 선언
DATA: ccon_ref TYPE REF TO cl_gui_custom_container.
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
" 화면에 보여줄 인터널 테이블 선언
DATA: gt_sflight TYPE TABLE OF sflight.
스크린 100번에 Custom Control (이름 : CCON) 생성한다.
스크린 생성 후 사진 속 위 버튼 Layout을 누르고
Custom Control 생성 (이름 : CCON)
생성 후 PBO 모듈 init_con에 SAP 컨테이너를 생성한다.
CREATE OBJECT 구문은 cl_gui_custom_container 클래스의 생성자를 호출하게 되며, SAP 컨테이너 인스턴스가 생성된다. 이때 파라미터를 스크린에 생성한 Custom Control을 지정하면 된다.
MODULE init_con OUTPUT.
IF con_ref IS INITIAL.
CREATE OBJECT con_ref
EXPORTING
container_name = 'CCON'.
파라미터 i_parent는 ALV가 화면에 조회되도록 스크린과 연결고리 역할을 하는 SAP 컨테이너를 지정한다.
CREATE OBJECT g_grid
EXPORTING
i_parent = con_ref.
ENDIF.
ENDMODULE.
메인 프로그램에서 프로그램의 실행 이벤트인 START-OF-SELECTION을 추가하여, 데이터를 SELECT 한다.
그리고 스크린 100번을 호출한다.
SELECT * FROM sflight
INTO TABLE gt_sflight
CALL SCREEN 0100.
ALV를 조회하는 g_grid의 method를 호출하면 ALV 작업이 끝난다.
MODULE init_con 마지막 라인에 다음 코드를 추가한다.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
CHANGING
it_outtab = gt_sflight.
프로그램을 실행(F8)하면 아래 사진과 같은 결과를 볼 수 있다.