SAP/ABAP 코드

(ABAP 코드) 동적 필드카탈로그 수정 ★★★★★★

haramang 2022. 2. 11. 11:36

FORM set_col_style  USING    VALUE(PS_TAB)
                             VALUE(PT_TAB)
                             VALUE(PS_FCAT)
                             VALUE(PT_FCAT).


  DATALS_STYL TYPE LVC_S_STYL,
        LT_STYL TYPE LVC_T_STYL,
        LS_SCOL TYPE LVC_S_SCOL,
        LT_SCOL TYPE LVC_T_SCOL.

  DATALT_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_FCATTO <FS_S_FCAT>.
  ASSIGN (PT_FCATTO <FS_T_FCAT>.
  ASSIGN (PS_TABTO <FS_S_TAB>.
  ASSIGN (PT_TABTO <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.

      CLEARLS_STYLLS_SCOL.
      CLEARLT_STYL[]LT_SCOL[].

    ENDLOOP.
  ELSE.
    MESSAGE S000 WITH '필드 카탈로그 생성 중 에러가 발생하였습니다.' DISPLAY LIKE 'E'.
    LEAVE TO SCREEN 0.

  ENDIF.

ENDFORM.