본문 바로가기

ABAP

[ABAP] 간단하게 ALV SPLIT 생성하기

DATA : BEGIN OF GS_DATA,
        VKGRP LIKE TVBVK-VKGRP,
        VKBUR LIKE TVBVK-VKBUR,
       END OF GS_DATA.

DATA : GT_HEAD   LIKE TABLE OF GS_DATA,
       GT_ITEM1  LIKE TABLE OF GS_DATA,
       GT_ITEM2  LIKE TABLE OF GS_DATA.

DATA : GI_DOCKING TYPE REF TO CL_GUI_DOCKING_CONTAINER,
       GI_SPLT_TB TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
       GI_SPLT_LR TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
       GI_TOP     TYPE REF TO CL_GUI_CONTAINER,
       GI_BOT     TYPE REF TO CL_GUI_CONTAINER,
       GI_BOT_L   TYPE REF TO CL_GUI_CONTAINER,
       GI_BOT_R   TYPE REF TO CL_GUI_CONTAINER.

DATA : GI_NORM   TYPE REF TO CL_GUI_ALV_GRID,
       GI_GRID1  TYPE REF TO CL_GUI_ALV_GRID,
       GI_GRID2  TYPE REF TO CL_GUI_ALV_GRID.



GI_DOCKING = NEW #( EXTENSION = CL_GUI_DOCKING_CONTAINER=>WS_MAXIMIZEBOX ).

GI_SPLT_TB = NEW #( PARENT    =  GI_DOCKING
                    ROWS      =  2
                    COLUMNS   =  1 ).


GI_SPLT_TB->SET_ROW_HEIGHT( EXPORTING ID   = 1
                            HEIGHT         = 30 ).

GI_TOP = GI_SPLT_TB->GET_CONTAINER( EXPORTING ROW  = 1
                                    COLUMN         = 1 ).

GI_BOT = GI_SPLT_TB->GET_CONTAINER( EXPORTING ROW  = 2
                                    COLUMN         = 1 ).

GI_SPLT_LR = NEW #( PARENT  = GI_BOT
                    ROWS    = 1
                    COLUMNS = 2 ).


GI_BOT_L = GI_SPLT_LR->GET_CONTAINER( EXPORTING ROW  = 1
                                      COLUMN         = 1 ).

GI_BOT_R = GI_SPLT_LR->GET_CONTAINER( EXPORTING ROW  = 1
                                      COLUMN         = 2 ).

GI_NORM = NEW #( I_PARENT = GI_TOP ).

GI_GRID1 = NEW #( I_PARENT = GI_BOT_L ).

GI_GRID2 = NEW #( I_PARENT = GI_BOT_R ).



DATA(LS_LAYO) = VALUE LVC_S_LAYO( ZEBRA      = ABAP_ON
                                  CWIDTH_OPT = ABAP_ON ).

DATA(LO_STR) = CAST CL_ABAP_STRUCTDESCR( CL_ABAP_TYPEDESCR->DESCRIBE_BY_NAME( 'TVBVK' ) ).

DATA(LT_DDIC) = LO_STR->GET_DDIC_FIELD_LIST( ).

DATA(LT_FCAT) = CORRESPONDING LVC_T_FCAT( LT_DDIC ).



LOOP AT LT_FCAT ASSIGNING FIELD-SYMBOL(<LS_FCAT>).

     CASE <LS_FCAT>-FIELDNAME.
         WHEN 'VKGRP'.
              <LS_FCAT>-COL_POS   = 1.
              <LS_FCAT>-OUTPUTLEN = 8.

         WHEN 'VKBUR'.
              <LS_FCAT>-COL_POS   = 2.
              <LS_FCAT>-OUTPUTLEN = 8.

         WHEN OTHERS.
              DELETE LT_FCAT INDEX SY-TABIX.
     ENDCASE.

ENDLOOP.



GI_NORM->SET_TABLE_FOR_FIRST_DISPLAY(
     EXPORTING
          IS_LAYOUT       = LS_LAYO
     CHANGING
          IT_OUTTAB       = GT_HEAD
          IT_FIELDCATALOG = LT_FCAT ).



GI_GRID1->SET_TABLE_FOR_FIRST_DISPLAY(
     EXPORTING
          IS_LAYOUT       = LS_LAYO
     CHANGING
          IT_OUTTAB       = GT_ITEM1
          IT_FIELDCATALOG = LT_FCAT ).



GI_GRID2->SET_TABLE_FOR_FIRST_DISPLAY(
     EXPORTING
          IS_LAYOUT       = LS_LAYO
     CHANGING
          IT_OUTTAB       = GT_ITEM2
          IT_FIELDCATALOG = LT_FCAT ).

 

반응형

'ABAP' 카테고리의 다른 글

[ABAP] Field-Symbol을 사용해 동적으로 구성하기  (0) 2023.04.06
[ABAP] GET TIME STAMP  (0) 2023.03.30
[ABAP] 클래스로 간단하게 ALV 생성하기  (0) 2023.03.29
[ABAP] Excel Download 예제  (0) 2023.03.27
[ABAP] Top-of-Page 예제  (0) 2023.03.24