SAP ABAP Split Container

Jubami·2023년 3월 6일
0

SAP 

목록 보기
5/13
post-thumbnail

Split container 활용

가로 2개

  1. 변수 선언.

2-1. DOCK Container 생성

CREATE OBJECT go_dock
    EXPORTING
      repid                       = sy-repid
      dynnr                       = sy-dynnr
      side                        = cl_gui_docking_container=>dock_at_top
      extension                   = 1000
  1. Split Container 생성.
CREATE OBJECT go_split
    EXPORTING
      parent            = go_dock
      rows              =  2     " 몇 개의 행으로 나눌 것인지.
      columns           = 1      " 몇 개의 열로 나눌 것인지.
  1. 분할한 컨테이너를 gird를 올릴 컨테이너와 연결
    get_container
*  split container에 container에 올리기.
    CALL METHOD go_split->get_container
*    첫번째 row의 첫번째 열을 go_top과 연결하겠다는 구문
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING
        container = go_top.
    
    CALL METHOD go_split->get_container
*    2번쨰 row의 첫번째 열을 go_top과 연결하겠다는 구문
      EXPORTING
        row       = 2
        column    = 1
      RECEIVING
        container = go_bot.
  1. gird를 올릴 컨테이너 높이(너비) 설정
  • set_row_height
 CALL METHOD go_split->set_row_height
      EXPORTING
        id                = 1
        height            = 50 " %로 옴.
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
*   Implement suitable error handling here
    ENDIF.

해당 컨데이터는 두개의 행과 한개의 열로 분리했기 때문에 SET_ROW_HEIGHT를 사용하여 행의 높이를 설정하는것입니다. (두개의 행으로 나눴으니 순서대로 ID = 1, 2 이다)

  1. ALV GIRD와 연결
CREATE OBJECT go_grid1

      EXPORTING
        i_parent = go_top.

    CREATE OBJECT go_grid2

      EXPORTING
        i_parent = go_bot.

가로 2개 세로 1개

  • Doking container를 2개 선언하고 좌측(go_dock) row를 2개로 나누고, 우측을 나누지 않고 기본 Dock Container로 설정하면 된다.
  1. 변수 선언
DATA: go_dock  TYPE REF TO cl_gui_docking_container,
      go_dock2 TYPE REF TO cl_gui_docking_container,
      go_split TYPE REF TO cl_gui_splitter_container,
      go_top   TYPE REF TO cl_gui_container,
      go_bot   TYPE REF TO cl_gui_container,
      go_right TYPE REF TO cl_gui_container.
  1. ALV 설정.
  • go_dock1을 dock_at_left, go_dock2를 dock_at_right로 설정.
* docking1
    CREATE OBJECT go_dock
      EXPORTING
        repid                       = sy-repid
        dynnr                       = sy-dynnr
        side                        = cl_gui_docking_container=>dock_at_left
        extension                   = 1000
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

*  docking2
    CREATE OBJECT go_dock2
      EXPORTING
        repid                       = sy-repid
        dynnr                       = sy-dynnr
        side                        = cl_gui_docking_container=>dock_at_right
        extension                   = 1000
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        OTHERS                      = 6.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  1. Split
  • dock_at_left로 설정한 docking container를 2개 행으로 나누고, go_top, go_Bot을 각각 row에 설정해줌.
 CREATE OBJECT go_split
      EXPORTING
        parent            = go_dock
        rows              = 2     " 몇 개의 행으로 나눌 것인지.
        columns           = 1      " 몇 개의 열로 나눌 것인지.
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
*   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

*  split container에 container에 올리기.
    CALL METHOD go_split->get_container
*    첫번째 행의 첫번째 열을 go_top과 연결하겠다는 구문
      EXPORTING
        row       = 1
        column    = 1
      RECEIVING
        container = go_top. " go_dock2

    CALL METHOD go_split->get_container
*    2번쨰 row의 첫번째 열을 go_top과 연결하겠다는 구문
      EXPORTING
        row       = 2
        column    = 1
      RECEIVING
        container = go_bot.
  1. 컨테이너 높이 설정
  • 순서대로 생성된 1번 (go_top) 높이를 70%로 맞추면 저절로 아래 2번(go_bot)이 높이 30%로 설정됨.
*   row 높이 설정.
    CALL METHOD go_split->set_row_height
      EXPORTING
        id                = 1
        height            = 70 " %로 옴.
      EXCEPTIONS
        cntl_error        = 1
        cntl_system_error = 2
        OTHERS            = 3.
    IF sy-subrc <> 0.
*   Implement suitable error handling here
    ENDIF.
  1. Grid와 연결
*   ALV GIRD와 연결
    CREATE OBJECT go_grid1
      EXPORTING
        i_parent          = go_top
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.

*    여기서 이제 set_table_for~~

    CREATE OBJECT go_grid2
      EXPORTING
        i_parent          = go_bot
      EXCEPTIONS
        error_cntl_create = 1
        error_cntl_init   = 2
        error_cntl_link   = 3
        error_dp_create   = 4
        OTHERS            = 5.
    IF sy-subrc <> 0.
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
  1. ALV Display
  • 이후 set_table_for_first_display로 각자 grid에 원하는 outtab을 넘겨 생성.

벨로그는 abap syntax를 지원하지 않아서 부득이하게 sql 언어 형식으로 작성된 점 이해해주세여~.

profile
LV.1 아밥퍼

0개의 댓글