Notice
Recent Posts
Recent Comments
Link
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Abapteur Note

필드 카탈로그 자동 생성(REUSE_ALV_FIELDCATALOG_MERGE) 본문

SAP/ABAP

필드 카탈로그 자동 생성(REUSE_ALV_FIELDCATALOG_MERGE)

아밥추어 2024. 6. 23. 16:56

ALV를 띄우다 보면 어마어마한 개수의 필드를 가진 인터널 테이블을 마주하곤 한다.

이럴 때 사용하면 유용한 함수이다.

 

하지만 이 함수의 문제는 새로운 필드가 추가되거나 삭제되었을 때 이를 반영하려면 SE80을 한번 나갔다 와야한다.

버퍼 문제라고 하는데 자세한 건 모르겠다.


DATA: BEGIN OF GT_SPFLI OCCURS 0,
      CARRID LIKE SPFLI-CARRID,
      CONNID LIKE SPFLI-CONNID,
      CITYFROM LIKE SPFLI-CITYFROM,
      CARRNAME LIKE SCARR-CARRNAME,
        END OF GT_SPFLI.

DATA GS_SPFLI LIKE LINE OF GT_SPFLI.
DATA LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME         = SY-REPID                 " Internal table declaration program
    I_INTERNAL_TABNAME     = 'GT_SPFLI'
    I_BYPASSING_BUFFER     = 'X'
    I_BUFFER_ACTIVE        = 'X'
    I_INCLNAME             = SY-REPID                 " Data declaration include name
  CHANGING
    CT_FIELDCAT            = LT_FIELDCAT[]                 " Field catalog with field descriptions
.

CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
  EXPORTING
    IT_FIELDCAT_ALV = LT_FIELDCAT                 " Field Catalog
  IMPORTING
    ET_FIELDCAT_LVC = GT_FIELDCAT                 " Field Catalog
  TABLES
    IT_DATA         = GT_SPFLI                 " Data Table
.

 

 

여기서 중요한 것은 꼭 인터널테이블은 OCCUR 즉 헤더라인이 존재하는 인터널테이블로 생성해야 한다.

또한, 필드 내용들은 모두 LIKE로 선언되어야 인식이 가능하다. (INCLUDE, TYPE 모두 안 먹히는 것 같다.)

 

REUSE_ALV_FIELDCATALOG_MERGE로 필드 카탈로그를 생성하고, LVC_TRANSFER_FROM_SLIS를 통해 Class ALV에 맞도록 변환한다.

 

보통 내가 ALV를 만드는 방법은 CLASS ALV이니 꼭 변환 과정이 필요하다.

 


 

(2024.10.24 update)

DATA LT_FCAT TYPE KKBLO_T_FIELDCAT.

REFRESH LT_FCAT.

CALL FUNCTION 'K_KKB_FIELDCAT_MERGE'
  EXPORTING
    I_CALLBACK_PROGRAM     = SY-CPROG                 " Internal table declaration program
    I_TABNAME              = 'GS_SCARR'                 " Name of table to be displayed
    I_INCLNAME             = SY-REPID
  CHANGING
    CT_FIELDCAT            = LT_FCAT                 " Field Catalog with Field Descriptions
  EXCEPTIONS
    INCONSISTENT_INTERFACE = 1
    OTHERS                 = 2
  .
IF SY-SUBRC <> 0.
  MESSAGE '필드 카탈로그 조회 실패' TYPE 'W'.
ELSE.
  CALL FUNCTION 'LVC_TRANSFER_FROM_KKBLO'
    EXPORTING
      IT_FIELDCAT_KKBLO         = LT_FCAT
    IMPORTING
      ET_FIELDCAT_LVC           = GT_FCAT.
ENDIF.

 

위 방법이 더 간편함.

특이한 점은 I_TABNAME에 테이블이 아니라 스트럭쳐를 넣어야 한다.

'SAP > ABAP' 카테고리의 다른 글

TOP OF PAGE  (0) 2024.10.23
DATA_CHANGED METHOD  (1) 2024.10.15
문자열 다루기(SHIFT)  (0) 2024.06.18
리스트 박스  (0) 2024.06.07
셀렉트 스크린 제어(SCREEN)  (0) 2024.06.07