* 필드카탈로그 생성
PERFORM FIELDCATALOG_MERGE USING 'ZINTERN31' 'GT_FCAT1'.
PERFORM FIELDCATALOG_MERGE USING 'ZINTERN32' 'GT_FCAT2'.
PERFORM FIELDCATALOG_MERGE USING 'ZINTERN33' 'GT_FCAT3'.
FORM fieldcatalog_merge USING PV_TABLE PV_FCAT.
ASSIGN (PV_FCAT) TO <FS_T_FCAT>.
" Field catalog createa from dictionary
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = PV_TABLE
CHANGING
CT_FIELDCAT = <FS_T_FCAT>
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
MESSAGE S000 WITH TEXT-M02 DISPLAY LIKE 'E'. " Field Catalog can not be created
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM.
* 필드카탈로그 필드 설정
PERFORM FIELD_SETTING_CALL USING 'GT_FCAT1'.
PERFORM FIELD_SETTING_CALL USING 'GT_FCAT2'.
PERFORM FIELD_SETTING_CALL USING 'GT_FCAT3'.
FORM field_setting_call USING PV_FCAT.
ASSIGN (PV_FCAT) TO <FS_T_FCAT>.
LOOP AT <FS_T_FCAT> ASSIGNING <FS_S_FCAT>.
<FS_S_FCAT>-COLDDICTXT = 'M'.
CASE PV_FCAT.
WHEN 'GT_FCAT1'.
CASE <FS_S_FCAT>-FIELDNAME.
WHEN 'BUKRS'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'BELNR'.
<FS_S_FCAT>-KEY = 'X'.
<FS_S_FCAT>-HOTSPOT = 'X'.
WHEN 'GJAHR'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'STBLG'.
<FS_S_FCAT>-HOTSPOT = 'X'.
ENDCASE.
WHEN 'GT_FCAT2'.
CASE <FS_S_FCAT>-FIELDNAME.
WHEN 'BUKRS'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'BELNR'.
<FS_S_FCAT>-KEY = 'X'.
<FS_S_FCAT>-HOTSPOT = 'X'.
WHEN 'GJAHR'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'AUGBL'.
<FS_S_FCAT>-HOTSPOT = 'X'.
WHEN 'DMBTR'.
<FS_S_FCAT>-DO_SUM = 'X'.
WHEN 'WRBTR'.
<FS_S_FCAT>-DO_SUM = 'X'.
ENDCASE.
WHEN 'GT_FCAT3'.
CASE <FS_S_FCAT>-FIELDNAME.
WHEN 'BUKRS'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'BELNR'.
<FS_S_FCAT>-KEY = 'X'.
<FS_S_FCAT>-HOTSPOT = 'X'.
WHEN 'GJAHR'.
<FS_S_FCAT>-KEY = 'X'.
WHEN 'AUGBL'.
<FS_S_FCAT>-HOTSPOT = 'X'.
ENDCASE.
ENDCASE.
ENDLOOP.
ENDFORM.
FORM set_styl_col_table .
* 테이블 색, 스타일 세팅
PERFORM SET_COL_STYLE USING 'GS_DISP1'
'GT_DISP1'
'GS_FCAT1'
'GT_FCAT1'.
ENDFORM.
FORM set_col_style USING VALUE(PS_TAB)
VALUE(PT_TAB)
VALUE(PS_FCAT)
VALUE(PT_FCAT).
DATA: LS_STYL TYPE LVC_S_STYL,
LT_STYL TYPE LVC_T_STYL,
LS_SCOL TYPE LVC_S_SCOL,
LT_SCOL TYPE LVC_T_SCOL.
DATA: LT_TAB TYPE REF TO DATA,
LS_TAB TYPE REF TO DATA.
FIELD-SYMBOLS: <FS_T_SCOL> TYPE LVC_T_SCOL,
<FS_T_STYL> TYPE LVC_T_STYL.
ASSIGN (PS_FCAT) TO <FS_S_FCAT>.
ASSIGN (PT_FCAT) TO <FS_T_FCAT>.
ASSIGN (PS_TAB) TO <FS_S_TAB>.
ASSIGN (PT_TAB) TO <FS_T_TAB>.
IF <FS_S_TAB> IS ASSIGNED AND
<FS_T_TAB> IS ASSIGNED AND
<FS_S_FCAT> IS ASSIGNED AND
<FS_T_FCAT> IS ASSIGNED.
LOOP AT <FS_T_TAB> ASSIGNING <FS_S_TAB>.
LOOP AT <FS_T_FCAT> ASSIGNING <FS_S_FCAT>.
CASE <FS_S_FCAT>-FIELDNAME.
WHEN 'BUKRS'.
LS_STYL-FIELDNAME = <FS_S_FCAT>-FIELDNAME.
LS_STYL-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
LS_SCOL-FNAME = <FS_S_FCAT>-FIELDNAME.
LS_SCOL-COLOR-COL = 5.
LS_SCOL-COLOR-INT = 0.
LS_SCOL-COLOR-INV = 0.
WHEN OTHERS.
CONTINUE.
ENDCASE.
INSERT LS_STYL INTO TABLE LT_STYL.
INSERT LS_SCOL INTO TABLE LT_SCOL.
ENDLOOP.
ASSIGN COMPONENT 'CELLSCOL' OF STRUCTURE <FS_S_TAB> TO <FS_T_SCOL>.
ASSIGN COMPONENT 'CELLSTYL' OF STRUCTURE <FS_S_TAB> TO <FS_T_STYL>.
IF <FS_T_SCOL> IS ASSIGNED AND
<FS_T_STYL> IS ASSIGNED.
INSERT LINES OF LT_STYL INTO TABLE <FS_T_STYL>.
INSERT LINES OF LT_SCOL INTO TABLE <FS_T_SCOL>.
UNASSIGN: <FS_T_STYL>, <FS_T_SCOL>.
ENDIF.
CLEAR: LS_STYL, LS_SCOL.
CLEAR: LT_STYL[], LT_SCOL[].
ENDLOOP.
ELSE.
MESSAGE S000 WITH '필드 카탈로그 생성 중 에러가 발생하였습니다.' DISPLAY LIKE 'E'.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM.
'SAP > ABAP 코드' 카테고리의 다른 글
(ABAP 코드) GET_PHYSICAL_STOCK (0) | 2022.09.04 |
---|---|
(ABAP 코드) EWM Document Info Get( Class ) (0) | 2022.09.04 |
(ABAP 코드) ALV 3분할 (0) | 2022.02.11 |
(ABAP 코드) 동적 필드카탈로그 수정 ★★★★★★ (0) | 2022.02.11 |
(ABAP 코드) 첨부파일 업로드&다운로드 (0) | 2022.02.08 |