안녕하세요, 건양대학교 ASAP팀장 김종오입니다. 학기 중에 바빠서 올리지 못한 Function들을 이번 방학동안 하나씩 올려볼까합니다. 많은 관심 부탁드립니다!
LVC_FIELDCATALOG_MERGE란?
일반적으로 ALV에 모든 필드를 출력하려면 각 필드에 대해 개별적으로 필드 카탈로그를 생성해야 합니다. 그러나 `LVC_FIELDCATALOG_MERGE`를 사용하면 `EXPORTING` 파라미터의 `I_STRUCTURE _NAME`에 원하는 DB table이나 Structure의 이름을 입력하여, 해당 DB table이나 Structure의 필드 정보를 자동으로 불러와 필드 카탈로그를 자동으로 생성할 수 있습니다. 덕분에 개발자가 필드 카탈로그를 하나하나 수동으로 설정할 필요가 없어 더욱 편리합니다. 이 함수는 Dictionary에 있는 Table과 Structure에서만 필드 정보를 가져올 수 있으며, Internal Table에는 적용되지 않습니다. Internal Table의 필드 정보를 사용해야 하는 경우에는 `REUSE_ALV_FIELDCATALOG_MERGE` 함수를 사용해야 합니다. (다음 소개는 해당 Function를 소개하도록하겠습니다)
다음은 Function의 Signature를 보도록하겠습니다.
**I_INTERNAL_TABNAME은 더 이상 사용하지 않습니다.**
클래스 CL_GUI_ALV_GRID의 method인 set_table_for_first_display에서 받는 Field Catalog와 같은 Type입니다.
[실행 결과]
아래는 Dictionary Table이나 Structure이름을 입력하면 Field Catalog 추출되는 Subroutine 코드입니다.
*====================================================================*
"//Dictionary Object에 있는 정보로 Field Catalog table 생성
"Signature
" USING (Fieldcatalog table를 만들 Dictionary Object 이름)
" CHANGING (Fieldcatalog tabla | lvc_t_fcat)
*====================================================================*
FORM merge_fieldcatalog USING VALUE(pv_dictionaryname)
CHANGING pt_fcat TYPE lvc_t_fcat.
"//Dictionary의 Object를 참조하여 Fieldcatalog table를 생성합니다.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = pv_dictionaryname
CHANGING
ct_fieldcat = pt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
ENDFORM.
'SFLIGHT' 테이블에 대한 FieldCatalog를 LVC_T_FCAT type의 Internal Table에 값이 복사된 것을 볼 수 있습니다.
[알아보기]
Field Catalog의 정보가 들어가 있는 LVC_T_FCAT에 대한 내용을 간단하게 설명해보겠습니다.
LVC_T_FCAT는 ALV 화면을 구상할 때 자주 사용되는 필드 카탈로그의 필드 속성 정보를 담고 있는 테이블 타입이며, 각 행은 LVC_S_FCAT 라는 structure로 되어 있습니다. 특히, ALV Grid Control (CL_GUI_ALV_GRID)을 설정하는 데 필요한 필드 카탈로그 정보를 담아서 설정 속성에 따라 ALV을 출력이 됩니다.
LVC_S_FCAT 주요 필드입니다.
- FIELDNAME: 실제 테이블 필드의 이름
- CFIELDNAME & QFIELDNAME : 통화키 및 단위 를 참고하는 필드 이름 (단위 및 통화 키)
- REPTEXT : Data Element 텍스트
- SCRTEXT_L, SCRTEXT_M, SCRTEXT_S: 필드의 긴, 중간, 짧은 텍스트 (각기 다른 화면 크기에 맞춘 필드 텍스트)
- COL_POS: 열의 위치 (ALV에서의 컬럼 순서를 지정)
- OUTPUTLEN: 출력 길이
- NO_OUT: 출력 제외 여부 (출력되지 않도록 설정할 경우 X 값을 가짐)
- KEY: 키 필드 여부 (ALV 내에서 키 필드로 표시될 경우 X 값을 가짐)
- ICON: 필드가 아이콘을 표시할지 여부
이 외에도 많은 Column들이 존재합니다.
[주의 사항]
'ABAP Standard Function' 카테고리의 다른 글
[ABAP] CONVERSION_EXIT_ALPHA_OUTPUT / Leading Zero 제거 (0) | 2024.12.20 |
---|---|
[ABAP] CLOI__PUT_SIGN_IN_FRONT / "-" 앞으로 가져오기 (0) | 2024.12.19 |
[ABAP] GET_DOMAIN_VALUES / Domain 정보 가져오기 (0) | 2024.12.18 |
[ABAP] REUSE_ALV_FIELDCATALOG_MERGE / Internal Table의 Field 정보 가져오기 (0) | 2024.12.17 |
[ABAP] POPUP_TO_SELECT_MONTH / 연도 및 월 선택 팝업 (3) | 2024.09.25 |