Jam's story
ALV - 칼럼 순서가 설정과 다르게 뜸 , 아이콘 및 아이콘 칼럼이 안뜸 본문
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