SAP ABAP SPLIT로 화면 분할해서 ALV 두개 띄우기

SAP ABAP ALV 두개로 분할해서 띄우기





상단의 사진처럼 필요에 따라 화면을 두개로 분할하여 사용할 수 있다.


DATA :
       GR_DOCKING1 TYPE REF TO CL_GUI_DOCKING_CONTAINER" docking container 생성
       GR_SPLIT1   TYPE REF TO CL_GUI_SPLITTER_CONTAINER,   "스플릿 컨테이너 생성
       GR_TOP      TYPE REF TO CL_GUI_CONTAINER,    " 두개로 분할한 도킹 스플릿트에 연결할 컨테이너
       GR_BOTTOM   TYPE REF TO CL_GUI_CONTAINER,
       GR_GRID1    TYPE REF TO CL_GUI_ALV_GRID,
       GR_GRID2    TYPE REF TO CL_GUI_ALV_GRID.


화면을 분할하고 ALV를 띄우기 위해 선언해야할 부분이다.



  IF gr_grid1 is not BOUND.

    PERFORM create_container" 컨테이너 연결하기
    PERFORM create_grid1.
    PERFORM set_fieldcatalog.
    PERFORM set_layout.
    PERFORM display_grid1.
    PERFORM display_grid2.

  ENDIF.
PBO부분에 ALV를 생성하기 위한 로직을 적어준다.
기준이 될 ALV를 1번 그리드로 잡고 1번 그리드에 ALV가 뿌려져 있지 않을때만 로직이 실행되도록 한다.
gr_grid1 IS NOT BOUUND 나 IS INITIAL로 조건을 걸어놓으면
로직이 수정되고 이벤트 실행되어 GRID를 리프레시 해줄때 다시 PBO를 타게 되어 변경된 화면이 조회되도록해준다. 



 CREATE OBJECT GR_DOCKING1  "docking object 생성, 연결해주기.
    EXPORTING
      REPID                       =    sy-REPID 
      EXTENSION                   3000.    " 크기 : 최대 3000


  CREATE OBJECT GR_SPLIT1  
    EXPORTING
      PARENT                  GR_DOCKING1    " Parent Container  
      ROWS                    =    2  " 2개로 분할
      COLUMNS                 =    
    .

" -> 2개로 분할한 split에 2개의 컨테이너를 각각 연결,  컨테이너에 grid 두개를 각각 연결해 주기

   call METHOD GR_SPLIT1->GET_CONTAINER
     EXPORTING
       ROW       =   1  " Row  상단 alv
       COLUMN    =   1  " Column
     RECEIVING
       CONTAINER =   GR_TOP  " Container
     .

      call METHOD GR_SPLIT1->GET_CONTAINER
     EXPORTING
       ROW       =   " Row  하단 alv
       COLUMN    =   1  " Column
     RECEIVING
       CONTAINER =   GR_BOTTOM  " Container .





CREATE OBJECT GR_SPLIT1 에서 ROWS에 2를 넣으면 상단, 하단으로 두개로 분할 한다는 뜻이고
COLUMNS에 2를 넣으면 좌우로 두개를 분할 한다는 뜻이다.

그리고 CALL METHOD를 통해 SPLIT로 나눠놓은 공간에 각각의 컨테이너를 할당해준다.





  create OBJECT GR_GRID1
   EXPORTING
     i_parent GR_TOP

  create OBJECT GR_GRID2
      EXPORTING
     i_parent GR_BOTTOM.



상단에는 기준이 될 GRID1을 생성해주고 하단에는 GRID2를 생성해준다.





  call METHOD gr_grid1->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME              'GS_DATA1'     " Internal Output Table Structure Name

    CHANGING
      IT_OUTTAB                     =   GT_DATA1  " Output Table
      IT_FIELDCATALOG               =   GT_FCAT1   " Field Catalog
.



  call METHOD gr_grid2->SET_TABLE_FOR_FIRST_DISPLAY
    EXPORTING
      I_STRUCTURE_NAME              'GS_DATA2'     " Internal Output Table Structure Name

    CHANGING
      IT_OUTTAB                     =   GT_DATA2  " Output Table
      IT_FIELDCATALOG               =   GT_FCAT2   " Field Catalog
.

각각에 DISPLAY해줄 인터널테이블을 연결한다.

여기서 주의해야할 점은 각각 보여줄 필드카타로그를 설정해야 제대로 조회가 된다는 점이다.






다음 이전