▪set_table_for_first_display 메서드에 사용되는 기타 파라미터의 의미와 속성에 대해서 알아보자.
IS_VARIANT
▪IS_VARIANT 파라미터를 통해서는 ALV 리스트 변형(Variant)을 설정할 수 있다.
▪리스트 변형은 조회된 화면에서 필드의 순서를 변경하고, 정렬하는 것과 같은 일련의 작업을 하나의 변형으로 저장하여 다음 조회시에도 같은 포맷으로 조회될 수 있도록 기능을 제공해준다.
이를 위해서는 앞에서 필드 카탈로그와 레이아웃과 마찬가지로 TOP과 프로그램에 관련 변수를 선언해 주어야 한다.
이전에 했던 프로그램에 다음과 같은 선언을 해주도록 하자.
DATA : con1_ref TYPE REF TO cl_gui_custom_container.
DATA : g_grid TYPE REF TO cl_gui_alv_grid.
DATA : gs_variant TYPE disvariant. //disvariant를 참고하는 gs_variant 추가
DATA : gt_sflight TYPE TABLE OF sflight.
START-OF-SELECTION.
SELECT * FROM sflight
INTO TABLE GT_SflIght UP TO 25 ROWS.
gs_variant-report = sy-repid. // 현재 프로그램 이름
gs_variant-username = sy-uname. //현재 사용자 이름
CALL SCREEN 100.
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
IS_VARIANT = gs_variant
I_SAVE = 'A'
CHANGING
IT_OUTTAB = gt_sflight.
▪결과에서 ALV 레이아웃 속성을 지정하게 되면 아이콘이 결과와 같이 이전 결과와는 다르게 변경되며 레이아웃을 변경하고 저장할 수 있도록 변경된다.
▪ALV 레이아웃 기능은 프로그램을 실행하여 필드 순서 변경, 소트, 필터링 등을 수행하여 레이아웃을 저장해보면 쉽게 이해할 수 있다.
1)레이아웃 저장
→ 아래 결과에서 [SAVE LAYOUT] 메뉴를 클릭하자.
2. SAVE layout
→ I_SAVE = ‘A’ 옵션을 준 것은 ALV 레이아웃을 변경하여 사용자별로 사용하게 할 것인지, 프로그램 기본 세팅으로 저장 할 것인지를 선택할 수 있게 한다.
→ I_SAVE = ‘U’ 옵션을 줄 경우 본인 ID의 변형설정만 가능하며, Default setting을 선택하더라도 본인의 레이아웃 기본 세팅으로 설정된다.
→I_SAVE = ‘ ’로 설정된 경우 레이아웃을 변경할 수는 있지만 저장할 수는 없다.
I_SAVE
set_table_for_first_display 함수의 I_SAVE 파라미터는 이미 앞에 VARIANT 파라미터에서 예시와 함께 설명했지만 간단히 기능에 대해 정리하자.
값 | 기능 |
X | Global 레이아웃 세팅만 가능함 |
U | 특정 사용자에 한해서 레이아웃 세팅만 가능함 |
A | X와 U 둘 다 가능함 |
SPACE('') | 레이아웃 저장을 하지 않음. |
I_DAFUALT 파라미터
▪사용자가 Default 변형을 저장할 수 있는지를 결정하게 한다. 아래 표와 예제를 통해 I_DAFAULT 파라미터 설정이 레이아웃 설정에 어떠한 영향을 미치는지 살펴볼 수 있다.
값 | 기능(I_DEFAULT 파라미터 옵션) |
X | DEFAULT 변형을 저장할 수 있다. |
SPACE | DEFAULT 변형을 저장할 수 없다. |
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
I_STRUCTURE_NAME = 'SFLIGHT'
IS_VARIANT = gs_variant
I_SAVE = ’A’
I_default = ‘ ‘ //이 부분 만 수정
CHANGING
IT_OUTTAB = gt_sflight.
▪DEFAULT 칸이 없어지는 것을 확인할 수 있다.
IT_TOOLBAR_EXCLUDING 파라미터
▪ALV GRID 컨트롤에서 숨기고 싶은 버튼이 있는 경우 사용.
▪예를 들어 회사의 특정 사원에게는 레이아웃을 저장할 수 있는 버튼을 숨겨야 할 필요성이 발생할 수 있음. 이럴 경우에는 레이아웃 버튼을 사용자에 따라 보이게 하거나 숨기게 할 수 있다.
▪ui_functions 타입의 인터널 테이블을 선언하여 이 테이블에 Function 코드를 삽입하면 해당 코드는 삭제된다.
▪gt_toolbar라는 데이터를 선언해주고 SETTING ALV에서 SETTING_TOOLBAR라는 서브루틴문에서 TOOLBAR에 대해 보이길 원하지 않는설정을 정해준다.
DATA : con1_ref TYPE REF TO cl_gui_custom_container.
DATA : g_grid TYPE REF TO cl_gui_alv_grid.
DATA : gt_sflight TYPE TABLE OF sflight.
DATA : gs_variant TYPE disvariant.
DATA : gs_layout TYPE lvc_s_layo.
DATA : gt_toolbar TYPE ui_functions.
------------------------------------------------------------------------
FORM setting_toolbar .
DATA: l_exclude TYPE ui_func.
l_exclude = cl_gui_alv_grid=>mc_fc_save_variant.
APPEND l_exclude TO gt_toolbar.
l_exclude = cl_gui_alv_grid=>mc_fc_maintain_variant.
APPEND l_exclude TO gt_toolbar.
--------------------------------------------------------------------------
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_variant = gs_variant
i_save = 'A'
i_default = ''
is_layout = gs_layout
it_toolbar_excluding = gt_toolbar
CHANGING
it_outtab = gt_sflight.
→ [Save Layout], [Manage Layouts] 메뉴 2개가 사라진 것 확인 가능.
▪툴바 제거 기능에 대한 소스는 최대한 간단하고 쉽게 셜명하려는 것이므로 다른 툴바들을 하나씩 직접 없애보는 연습을 통해 적응해보도록 하자.
예제에서 사용된 툴바 아이콘은 Cl_GUI_ALV_GRID 의 속성 탭에 정의되어 있다.
T-CODE : SE24에서 조회 가능.
Associated Type 정의 부분에서 UI_FUNC로 정의된 속성들이 툴바에 관련된 속성이므로 필요 없는 툴바는 소스를 추가해주면 된다.
IT_SORT 파라미터
▪ALV 실행 시 데이터가 정렬이 된 상태로 조회되도록 설정한다.
▪LVC_T_SORT 타입으로 선언된 인터널 테이블을 선언하여 이 테이블을 정렬하고자 하는 필드를 추가하면 된다.
▪LVC_T_SORT에서 ‘T’는 테이블을 의미하며 LVC_S_SORT에서 ‘S’는 Structure를 의미한다.
(SORT 테이블의 옵션 중 Subtot은 정렬 필드 기준으로 합계 금액과 전체 합계 금액을 보여주는 것을 세팅한다.)
아래 표는 IT_SORT 파라미터에 사용되는 주요 속성들을 설명한다.
속성 | 값 | 설명 |
SPOS | 숫자 | 정렬 숫자를 지정한다. |
FIELDNAME | 필드명 | 정렬이 필요한 필드명을 지정한다. |
UP | '', 'X' | 오름차순 정렬를 설정한다. |
DOWN | '', 'X' | 내림차순 정렬을 설정한다. |
DATA : con1_ref TYPE REF TO cl_gui_custom_container.
DATA : g_grid TYPE REF TO cl_gui_alv_grid.
DATA : gt_sflight TYPE TABLE OF sflight.
DATA : gs_variant TYPE disvariant.
DATA : gs_layout TYPE lvc_s_layo.
DATA : gt_toolbar TYPE ui_functions.
DATA : gt_sort TYPE lvc_t_sort. //SORT를 위해 LVC_T_SORT를 참조하는 데이터 선언
--------------------------------------------------------------------------------
FORM SETTING_SORT .
DATA : ls_sort TYPE lvc_s_sort.
ls_sort-spos = '1'.
ls_sort-FIELDNAME = 'CARRID'.
ls_sort-up = 'X'.
ls_sort-subtot = 'X'.
APPEND ls_sort TO gt_sort.
ENDFORM.
--------------------------------------------------------------------------------
CALL METHOD g_grid->set_table_for_first_display
EXPORTING
i_structure_name = 'SFLIGHT'
is_variant = gs_variant
i_save = 'A'
i_default = ''
is_layout = gs_layout
CHANGING
it_outtab = gt_sflight.
'SAP ABAP 개발 및 설명 > ALV GRID' 카테고리의 다른 글
ALV GRID 이벤트 (1) | 2020.08.26 |
---|---|
CL_GUI_ALV_GRID 기타 메소드 (0) | 2020.08.24 |
ALV GRID 레이아웃 (0) | 2020.08.23 |
ALV GRID 필드 카탈로그 (0) | 2020.08.23 |
필드 카탈로그 - lvc_s_fcat 역할정리 (0) | 2020.08.22 |