300x250

ALV Split이란?


ALV( ABAP List View )여러 개 보여주고 싶거나 분할해서 보여주거나 등등...

말 그대로 ALV 화면 분할이라고 생각하면 된다.

 

시작하기 앞서 

우리가 필요로 하는 OBJECTGrid을 생성해 주어야 한다.

ALV Split을 하기위해서 필요한 ContainerGrid이다. 

 

# Docking Container

- Customer Container 대신 Docking Container사용하는 이유 스크린 크기 직접 지정할 수 있기 때문이다. 

 

# Splitter Container

- 몇 개의 행 or 열로 나눌 것인지 정하는 곳.

 

# Container 2개

# Grid 2개 

- 분리하는 만큼의 ContainerGrid 갯수가 달라진다.

 

다음과 같은 ALV을 만들어보자. 

 


# 참고 

Screen 100이 만들어져있어야 하는 상태이다. 

Screen 100에서 PBO를 다루는 내용이다. 


 

TOP


1. 다음과 같이 선언해 보자. 

DATA:
  GO_DOCK_CONT01 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
  GO_SPLIT       TYPE REF TO CL_GUI_SPLITTER_CONTAINER.

DATA:
  GO_CONT01  TYPE REF TO CL_GUI_CONTAINER,
  GO_CONT02 TYPE REF TO CL_GUI_CONTAINER.

DATA:
  GO_GRID01     TYPE REF TO CL_GUI_ALV_GRID,
  GO_GRID02     TYPE REF TO CL_GUI_ALV_GRID.

 

PBO ( Screen 100 )


 

# Process Before Output

# MODULE ALV_CL_PROCESS_0100.

여기에서 로직을 짰다는 것을 참고바란다.

 

1. Create Object을 통해서 Docking Container을 지정해 주자.

  CREATE OBJECT GO_DOCK_CONT01
    EXPORTING
        repid                       = sy-repid        " 프로그램 명 "
        dynnr                       = sy-dynnr        " 스크린 넘버 "
        side                        = cl_gui_docking_container=>DOCK_AT_LEFT " Left, Top, Bottom, Right "
        extension                   = 1500.              " 크기 "

 

2. 위에서 설정한 Docking ContainerSplit(분할)을 해줘야 한다. 우리는 세로 분할 해야 하기 때문에 다음과 같이 설정해 보자.

# 여기서 Rows, Columns설정한 숫자들을 잘 기억하고 있어야한다.

  CREATE OBJECT GO_SPLIT
    EXPORTING
      PARENT = GO_DOCK_CONT01
      ROWS = 1                 " 몇 개의 가로(행) 분할 할 것인지 "
      COLUMNS = 2.             " 몇 개의 세로(열) 분할 할 것인지 "

 

# 이대로 실행을 해보면 다음과 같이 분할된 것을 볼 수 있다.

 

# 만약에 가로로 나누고싶으면 반대로 설정하면 되는 것이다. 

 

3. 이제 ContainerGrid을 지정해 주자.

"GET_CONTAINER"을 통해서 Split Contaniner을 각자 해당하는 Container에 Row, Column을 지정해 주고 지정한 ContaninerGrid와 연결해 주자.

# 여기서 Ref 변수 이름들은 자기가 이해하기 쉽게 지정을 하면 된다., 

  CALL METHOD GO_SPLIT->GET_CONTAINER
    EXPORTING
      ROW       = 1
      COLUMN    = 1
    RECEIVING
      CONTAINER = GO_CONT01.

  CALL METHOD GO_SPLIT->GET_CONTAINER
    EXPORTING
      ROW       = 1
      COLUMN    = 2
    RECEIVING
      CONTAINER = GO_CONT02.


  CREATE OBJECT GO_GRID01
    EXPORTING
      I_PARENT = GO_CONT01.

  CREATE OBJECT GO_GRID02
    EXPORTING
      I_PARENT = GO_CONT02.

 

# 그럼 다음과 같은 화면이 나오게 되는 걸 볼 수 있다. 

 

4. 마지막으로 " SET_TABLE_FOR_FIRST_DISPLAY "을 통해서 화면에 데이터를 보여주면 된다.

# 간단하게 SFLGITH Table과 SCARR Table을 보여주겠다. 

 

왼쪽에는 SFLIGHT Table을 보여줘야 하기 때문에 왼쪽 GO_GRID01

오른쪽에는 SCARR Table을 보여줘야 하기 때문에 오른쪽 GO_GRID02

 

# 다음과 같은 화면이 나오게 된다. 

 

 

 

# Split Continer 너비(Width) 설정 

( SET_COLUMN_WIDTH ) 


 

- ID는 위에서 GET_CONTANINER을 통해서 설정한 Column을 통해서 변경하고 싶은 Container을 지정해 보자. 

- WIDTH는 변경하고 싶은 너비만큼 변경해 주면 된다. ( 1~100 )

 

# 다음과 같이 너비가 변경된 것을 볼 수 있다. 

 

# Split Continer 높이(Height) 설정 

( SET_ROW_HEIGHT )


 

1. 다음과 같이 설정이 되어있다고 해보자.

 

2. 위에서 설명한 거랑 똑같이 변경하고 싶은 Row을 선택한 후?  HEIGHT 설정해 주면 끝이다. 

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

 

 

끝! 

DATA:
  GO_DOCK_CONT01 TYPE REF TO CL_GUI_DOCKING_CONTAINER,
  GO_SPLIT       TYPE REF TO CL_GUI_SPLITTER_CONTAINER.

DATA:
  GO_CONT01 TYPE REF TO CL_GUI_CONTAINER,
  GO_CONT02 TYPE REF TO CL_GUI_CONTAINER.

DATA:
  GO_GRID01 TYPE REF TO CL_GUI_ALV_GRID,
  GO_GRID02 TYPE REF TO CL_GUI_ALV_GRID.
  
  

  CREATE OBJECT GO_DOCK_CONT01
    EXPORTING
      REPID     = SY-REPID        " 프로그램 명 "
      DYNNR     = SY-DYNNR        " 스크린 넘버 "
      SIDE      = CL_GUI_DOCKING_CONTAINER=>DOCK_AT_LEFT " Left, Top, Bottom, Right "
      EXTENSION = 1500.              " 크기 "


  CREATE OBJECT GO_SPLIT
    EXPORTING
      PARENT  = GO_DOCK_CONT01
      ROWS    = 2                 " 몇 개의 가로(행) 분할 할 것인지 "
      COLUMNS = 1.             " 몇 개의 세로(열) 분할 할 것인지 "


  CALL METHOD GO_SPLIT->GET_CONTAINER
    EXPORTING
      ROW       = 1
      COLUMN    = 1
    RECEIVING
      CONTAINER = GO_CONT01.

  CALL METHOD GO_SPLIT->GET_CONTAINER
    EXPORTING
      ROW       = 2
      COLUMN    = 1
    RECEIVING
      CONTAINER = GO_CONT02.



* CALL METHOD GO_SPLIT->SET_ROW_HEIGHT
*   EXPORTING
*     ID                = 1                 " Row ID "
*     HEIGHT            = 75.                " Height "



* CALL METHOD GO_SPLIT->SET_COLUMN_WIDTH
*   EXPORTING
*     ID                = 1                 " Column ID "
*     WIDTH             = 65.                 " NPlWidth " 




    CREATE OBJECT GO_GRID01
      EXPORTING
        I_PARENT = GO_CONT01.

    CREATE OBJECT GO_GRID02
      EXPORTING
        I_PARENT = GO_CONT02.






CALL METHOD GO_GRID01->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_BUFFER_ACTIVE      = 'X'
      I_BYPASSING_BUFFER   = 'X'
     I_STRUCTURE_NAME     = 'SFLIGHT'
      I_SAVE               = 'A'
    CHANGING
      IT_OUTTAB            = GT_LIST01[].



CALL METHOD GO_GRID02->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_BUFFER_ACTIVE      = 'X'
      I_BYPASSING_BUFFER   = 'X'
     I_STRUCTURE_NAME     = 'SCARR'
      I_SAVE               = 'A'
    CHANGING
      IT_OUTTAB            = GT_LIST02[].

 

TOP-OF-PAGE에 대한 정보를 얻고싶으면 밑에 링크를 클릭

2023.08.13 - [.SAP/..ABAP] - SAP TOP OF PAGE( ALV ) 정리

 

SAP TOP OF PAGE( ALV ) 정리

TOP OF PAGE를 알기 전 # ALV Split을 알아야 만들기 쉽고 이해하기 쉽다. 만약 ALV Split에 대해서 알고 싶으면 클릭해 보자. 2023.08.12 - [.SAP/..ABAP] - SAP ALV Split(화면 분할) 정리 SAP ALV Split(화면 분할) 정리 A

potato98.tistory.com

 

 

728x90