300x250
728x90

# SAP ALV Cell 관리하는 방법( Display -> Input )


1. 전체 ALV을 Input으로 변경하는 방법

 

2. 몇 개 필드는 Enabled , 나머지 필드는 Disabled로 변경하는 방법이 있다.

# 참고로

   Enabled = Edit 가능

   Disabled = Edit 불가능

 

3. 등등... 

 

 

# 여기서 알아야 할 것은 프로그램을 만들 때 "버튼"을 통해서 조회/변경을 할 것이다. 

# 버튼 중점으로 가기 때문에 참고 바란다.

 

 

0. 공통적인 부분( PROCESS AFTER INPUT )


화면

# ALV 구현하는데 사람마다 다르지만 전체적인 흐름을 똑같다고 생각하고 쓰겠다.

 

우선 처음 해야 할 것은 TOP와 PAI에서 설정해야 하는 것들이다.

 

버튼을 눌렀을 때 

메서드를 통해서 EDIT 모드를 활성화 or 비활성화 제어 할 것이다. 

 

 

# TOP 선언

# 이 타입선언은 당연히 있을거라고 생각한다.

 

# USER_COMMAND_0100 

메서드를 통해서 Edit 활성화/비활성화설정할 수 있는 것이다.

공통부분(PAI)

더보기
  DATA LV_CHECK TYPE I.

  LV_CHECK = G_ALV_GRID01->IS_READY_FOR_INPUT( ).

  CASE LV_CHECK.
    WHEN 0.  " 조회모드일때 "
      CALL METHOD G_ALV_GRID01->SET_READY_FOR_INPUT " 조회모드 -> 편집모드 "
        EXPORTING
          I_READY_FOR_INPUT = 1. " Edit 활성화 "

    WHEN 1.  " 편집모드일때 "
      CALL METHOD G_ALV_GRID01->SET_READY_FOR_INPUT " 편집모드 -> 조회모드 "
        EXPORTING
          I_READY_FOR_INPUT = 0. " Edit 비활성화 "
  ENDCASE.

 

 

공통적으로 TOPPAI 설정완료되었다면 이제 

이제 Edit을 설정해 보자.

 

 

# 1. 전체 ALV Input으로 변경하는 방법


# 전체 필드를 INPUT으로 만들기 위해서는 하나만 선언해 주면 된다.

# ALV에서 사용하는 Layout을 통해서 변경할 수 있다.

 

TOP 선언

 

PROCESS BEFORE OUTPUT

 

GS_LAYOUT-EDIT에만 설정하면 전체 리스트INPUT으로 변경 가능하다.

 

실행해 보자.

 

실행화면

 

 

# 2. SAP ALV개별 Cell Edit 설정하는 방법


# 혹여나 전체 ALV Input에서 ( GS_LAYOUT-EDIT = 'X' ) 설정하였다면 주석 처리를 해줘야 한다!

# 또한 PAI상단에 설정했던 로직과 똑같기 때문에 위에서 만들었던 로직을 만들고 시작하자.

 

 

# 우선 개별 Cell Edit을 해야 하기 때문에 LOOP문을 돌려야 한다.

또한 

# LVC_S_STYL( Structure )을 통해서 설정해야 한다.

 

TOP 선언

변경을 하거나 생성을 해주면 된다. 

 

 

여기서 중요한 것TOP에서 선언한

 

CELLSTYL TYPE LVC_T_STYL

 

이다.

 

 

PROCESS BEFORE OUTPUT

 

# LAYOUT에서 선언을 해주어야 활성화가 되는 것이다. 

# LAYOUT설정을 까먹고 못 하는 경우도 있을 수 있다. 확인을 해줘야 한다.

 

PROCESS BEFORE OUTPUT

크게 보자면

GT_LIST을 통해서 LOOP문을 돌아 변경하고자 하는 필드를 선택해서 설정 값을 넣어주는 로직이다.

여기서는 CURRCODE 필드를 활성화시킨 것이다. 

 

 

PERFORM FCAT_CELL1

# P_FNAME은 변경하고 싶은 필드

# P_MC_STYLEEdit 활성화/비활성화 

 

 

# 참고

cl_gui_alv_grid=>mc_style_disabled.  * edit를 막을 경우

cl_gui_alv_grid=>mc_style_enabled.   * edit를 허용할 경우 

 

 

설정이 완료가 되었다면 실행해 보자.

 

실행화면

 

로직

2번째 방법

더보기
  LOOP AT GT_LIST01 INTO DATA(LV_LIST).

    PERFORM FCAT_CELL1
      USING
        'CURRCODE'
        CL_GUI_ALV_GRID=>MC_STYLE_ENABLED
      CHANGING
        lv_List.

    MODIFY GT_LIST01 FROM LV_LIST
      TRANSPORTING
        CELLSTYL.

    CLEAR:
      LV_LIST-CELLSTYL,
      LV_LIST-CELLSCOL.
  ENDLOOP.
  
  
  
FORM FCAT_CELL1
  USING
    VALUE(P_FNAME)
    VALUE(P_MC_STYLE)
  CHANGING
    PS_LIST TYPE TY_S_LIST01.
    
  CLEAR:
    PS_LIST-CELLSTYL.

  DATA:
    LV_CELL TYPE LVC_S_STYL.

  LV_CELL-FIELDNAME = P_FNAME.
  LV_CELL-STYLE = P_MC_STYLE.

  INSERT LV_CELL INTO TABLE PS_LIST-CELLSTYL.

ENDFORM.

 

 

끝..

 

 

이런 식으로 사용을 하면 Cell 단위 설정이 가능하다. 

728x90
LIST

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

SAP TRY 구문  (2) 2022.05.03
SAP Tabstrip 정리( Screen )  (5) 2022.04.15
SAP SELECT(SQL) 동적 Where 정리  (0) 2022.03.27
SAP Query [2] 정리  (0) 2022.03.26
SAP Query [1] 정리  (0) 2022.03.20