ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ABAP] #26 ALV Container
    SAP/ABAP 2026. 1. 10. 22:48

     

     

     

     

     

     

     

    Container ALV

    ALV를 화면 전체(Full Screen)가 아닌 특정 영역에 배치해서 출력하기 위해 사용하는 컨테이너 객체들이다.

    주로 다음과 같은 화면에서 사용된다.

    • Module Pool (Dialog Program)
    • Report + Screen
    • Subscreen
    • Tabstrip
    • Split 화면 구성

    ※ Full Screen ALV(REUSE_ALV_GRID_DISPLAY)와 달리

    CL_GUI_ALV_GRID + Container 조합은 화면 레이아웃을 자유롭게 구성할 수 있다.


    1. Custom Container

    • CL_GUI_CUSTOM_CONTAINER

    개념

    • Screen Painter에서 생성한 Custom Control 영역을 부모로 사용하는 컨테이너
    • ALV를 정해진 좌표·크기 안에 정확히 배치할 수 있음
    • 화면 설계 중심의 ALV 출력 방식

    특징

    • Screen Painter 필수
    • 위치 / 크기를 화면에서 직접 설계
    • 가장 많이 사용되는 컨테이너
    • 아래 화면 요소들과 자연스럽게 결합됨
      • Subscreen
      • Tabstrip
      • Input Field + ALV 혼합 화면
    • 화면 리사이즈 시 자동 조정 가능 (Resizing 옵션)

     

    2. Docking Container

    • CL_GUI_DOCKING_CONTAINER

    개념

    • Screen 전체 기준으로 상 / 하 / 좌 / 우 중 한 방향에 도킹
    • Custom Control 없이 코드만으로 영역 생성
    • 메인 화면 + 보조 화면 구조에 적합

    특징

    • Screen Painter 불필요 ❌
    • 위치를 SIDE 옵션으로 지정
    • 크기를 코드로 제어 (EXTENSION 또는 RATIO)
    • 화면 크기 변경 시 자동 조정
    • 리포트 프로그램에서도 많이 사용됨

    DATA: go_docking  TYPE REF TO cl_gui_docking_container,
          go_alv      TYPE REF TO cl_gui_alv_grid.
    
    " Docking Container 생성 "
    CREATE OBJECT go_docking
      EXPORTING
        side      = cl_gui_docking_container=>dock_at_bottom
        extension = 300
        repid     = sy-repid
        dynnr     = sy-dynnr.
        
    " Docking Container에 ALV 생성 "
    CREATE OBJECT go_alv
      EXPORTING
        i_parent = go_docking.
        
    "Data display "
        CALL METHOD go_alv->set_table_for_first_display
          ...
          CHANGING
            it_outtab                     = gt_data .

     

    cl_gui_docking_container의 출력 위치 속성

    cl_gui_docking_container=>dock_at_top    " 화면 상단에 위치 "
    cl_gui_docking_container=>dock_at_bottom " 화면 하단에 위치 "
    cl_gui_docking_container=>dock_at_left   " 화면 왼쪽에 위치 "
    cl_gui_docking_container=>dock_at_right  " 화면 오른쪽에 위치 "

     

     

    3. Splitter Container

    • CL_GUI_SPLITTER_CONTAINER

    개념

    • 하나의 컨테이너 영역을 행(Row) / 열(Column) 단위로 분할
    • 분할된 각 영역에 서로 다른 컨테이너 또는 ALV 배치
    • 단독 사용 X → 반드시 부모 컨테이너 필요 (Custom Container, Docking Container 둘 다 가능)

    특징

    • 다중 ALV 화면 구성 가능
    • 사용자가 마우스로 영역 크기 조절 가능
    • 각 Cell은 CL_GUI_CONTAINER처럼 사용
    • 복잡한 화면 구성에 필수적인 컨테이너

    DATA: go_docking  TYPE REF TO cl_gui_docking_container,
          " 기존에 도킹컨테이너 영역을 나눌 splitter 생성 "
          go_splitter TYPE REF TO cl_gui_splitter_container,
          go_cont_l   TYPE REF TO cl_gui_container,
          go_cont_r   TYPE REF TO cl_gui_container,
          go_alv_l    TYPE REF TO cl_gui_alv_grid,
          go_alv_r    TYPE REF TO cl_gui_alv_grid.
    
    " Container 영역 분할 (1행 2열로) "
    CREATE OBJECT go_splitter
      EXPORTING
        parent  = go_cont
        rows    = 1
        columns = 2.
    
    " 분할된 영역의 Container를 각각 가져오기 "
    CALL METHOD go_splitter->get_container
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING 
        container = go_cont_l.
    
    CALL METHOD go_splitter->get_container
      EXPORTING
        row       = 1
        column    = 2
      RECEIVING
        container = go_cont_r.
    
    " 각 영역에 ALV 배치 "
    CREATE OBJECT go_alv_l
      EXPORTING
        i_parent = go_cont_l.
    
    CREATE OBJECT go_alv_r
      EXPORTING
        i_parent = go_cont_r.

    구조 계층

    Screen
     └─ Parent Container (Custom / Docking)
          └─ Splitter Container
               ├─ Cell Container 1 → ALV
               └─ Cell Container 2 → ALV

     

    즉, Splitter는 레이아웃 분할 담당

    실제 화면 기준점은 Custom / Docking Container 이다.

     

     

     

     

     

     

     

    'SAP > ABAP' 카테고리의 다른 글

    [ABAP] #28 BDC & Background Job  (0) 2026.01.11
    [ABAP] #27 프로그램 호출과 데이터 전달  (0) 2026.01.10
    [ABAP] #25 ALV의 Event Class  (0) 2026.01.10
    [ABAP] #24 Report Program - ALV (3)  (0) 2026.01.10
    [ABAP] #23 Report Program - ALV (2)  (1) 2026.01.05
Designed by Tistory.