ABAP Standard Function

[ABAP] LVC_FIELDCATALOG_MERGE / Dictionary table의 field정보 가져오기

ASAP ABAP 2024. 12. 12. 14:31
반응형

안녕하세요, 건양대학교 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를 보도록하겠습니다.

Importing Parameter

**I_INTERNAL_TABNAME은 더 이상 사용하지 않습니다.**

Tables Parameter

클래스 CL_GUI_ALV_GRID의 method인 set_table_for_first_display에서 받는 Field Catalog와 같은 Type입니다.

Exception Parameter


[실행 결과]

아래는 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들이 존재합니다.

 


[주의 사항]

Exporting Parameter에서 i_structure_nameDictionary에서 Active 상태인 Dictionary Object들만 Field Catalog를 가져올 수 있습니다.

 

반응형