SAP ABAP 개발 및 설명/ALV GRID

ALV GRID - 기타 파라미터

abapta 2020. 8. 24. 00:07

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.

반응형