Jam's story

ALV - 칼럼 순서가 설정과 다르게 뜸 , 아이콘 및 아이콘 칼럼이 안뜸 본문

SAP trial and error

ALV - 칼럼 순서가 설정과 다르게 뜸 , 아이콘 및 아이콘 칼럼이 안뜸

애플쩀 2025. 8. 18. 15:23

 

ALV - 칼럼 순서가 설정과 다르게 뜸 

 

 

ALV TYPE 순서 구조대로 뜨지 않음 

TYPES: BEGIN OF TY_DATA,
        STATUS TYPE ICON_D,       "아이콘
        PSTTR TYPE PSTTR,       "생산시작일
        MATNR TYPE MATNR,       "자재번호
        MAKTX TYPE MAKTX,       "자재내역
        AUFNR TYPE AUFNR,       "생산오더
        CHARG TYPE CHARG_D,     "배치번호
        ERDAT TYPE ERDAT,       "전송일자
        ERZET TYPE ERZET,       "전송시간
        MSG   TYPE ZPPT3130-MSG,"처리시 에러메세지
        WERKS TYPE WERKS_D,     "플랜트
      END OF TY_DATA.

 

COL_POS를 순차적으로 맞추니, COL_POS 순서대로 떴음 

*&===================================
*& GRID FIELD CATALOG.
*&===================================
  DATA(LO_TABLE) = CAST CL_ABAP_TABLEDESCR( CL_ABAP_TYPEDESCR=>DESCRIBE_BY_DATA( PT_DATA ) ).
  DATA(LO_STRUC) = CAST CL_ABAP_STRUCTDESCR( LO_TABLE->GET_TABLE_LINE_TYPE( ) ).
  DATA(LT_DFIES) = CL_SALV_DATA_DESCR=>READ_STRUCTDESCR( LO_STRUC ).

  PT_FCAT = CORRESPONDING #( LT_DFIES MAPPING REF_TABLE = REFTABLE
                                              REF_FIELD = REFFIELD ).

  PERFORM FIELD_SETTING_CALL CHANGING PT_FCAT.

ENDFORM.
*&---------------------------------------------------------------------*
*& FORM FIELD_SETTING_CALL
*&---------------------------------------------------------------------*
FORM FIELD_SETTING_CALL CHANGING PT_FCAT TYPE LVC_T_FCAT.

*&===================================
*& SET FIELD CATALOG DETAIL.
*&===================================
  LOOP AT PT_FCAT INTO DATA(LS_FCAT).

    CLEAR LS_FCAT-KEY.

    LS_FCAT-COLDDICTXT = 'L'.         " HEADER의 레벨 설정
    LS_FCAT-REF_TABLE  = 'ZPPT3130'.

    CASE LS_FCAT-FIELDNAME.

      WHEN 'STATUS'.
        LS_FCAT-COL_POS     = 10.
        LS_FCAT-COLTEXT     = TEXT-H01. " 상태
        LS_FCAT-JUST        = 'C'.
*        LS_FCAT-ICON        = 'X'.
        LS_FCAT-EMPHASIZE   = 'C110'.
        LS_FCAT-FIX_COLUMN  = ABAP_TRUE.

      WHEN 'PSTTR'.
        LS_FCAT-COL_POS     = 20.
        LS_FCAT-COLTEXT     = TEXT-H02. " 생산시작일

      WHEN 'MATNR'.
        LS_FCAT-COL_POS     = 30.
        LS_FCAT-KEY         = 'X'.
        LS_FCAT-COLTEXT     = TEXT-H03. "자재번호
        LS_FCAT-EMPHASIZE   = 'C110'.
        LS_FCAT-FIX_COLUMN  = ABAP_TRUE.

      WHEN 'MAKTX'.
        LS_FCAT-COL_POS     = 40.
        LS_FCAT-COLTEXT     = TEXT-H04. " 자재명
        LS_FCAT-EMPHASIZE   = 'C110'.
        LS_FCAT-FIX_COLUMN  = ABAP_TRUE.

      WHEN 'AUFNR'.
        LS_FCAT-COL_POS     = 50.
        LS_FCAT-COLTEXT     = TEXT-H05. " 오더번호
        LS_FCAT-KEY         = 'X'.
        LS_FCAT-EMPHASIZE   = 'C110'.
        LS_FCAT-FIX_COLUMN  = ABAP_TRUE.

      WHEN 'CHARG'.
        LS_FCAT-COL_POS     = 60.
        LS_FCAT-COLTEXT     = TEXT-H06. " 배치번호
        LS_FCAT-EMPHASIZE   = 'C300'.

      WHEN 'ERDAT'.
        LS_FCAT-COL_POS     = 70.
        LS_FCAT-COLTEXT     = TEXT-H07. " 전송일
        LS_FCAT-EMPHASIZE   = 'C300'.

      WHEN 'ERZET'.
        LS_FCAT-COL_POS     = 80.
        LS_FCAT-COLTEXT     = TEXT-H08. " 전송시간
        LS_FCAT-EMPHASIZE   = 'C300'.

      WHEN 'MSG'.
        LS_FCAT-COL_POS     = 90.
        LS_FCAT-COLTEXT     = TEXT-H09. " 전송MSG

      WHEN OTHERS.
        LS_FCAT-TECH    = ABAP_TRUE.
        LS_FCAT-COL_POS = LS_FCAT-COL_POS + 900.

    ENDCASE.

    LS_FCAT-SCRTEXT_L = LS_FCAT-SCRTEXT_M = LS_FCAT-SCRTEXT_S = LS_FCAT-COLTEXT.

    MODIFY PT_FCAT FROM LS_FCAT.
    CLEAR LS_FCAT.

  ENDLOOP.


ENDFORM.

 

그리드에서 아이콘과 아이콘 칼럼이 뜨지 않음

 

디버깅하니까 자꾸 LS_FCAT-FIELDNAME가 STATUS-NAME , STATUS-ID 이런식으로 뜨는 것이었다. 

TOP에서 ALV 구조중 ICON TYPE을 변경하니 , 정상적 작동함

 

[수정전]

STATUS TYPE ICON,

 

[수정후]

STATUS TYPE ICON_D,

 

Comments