300x250
728x90

# SAP ALV 특정 Cell 설정하는 방법


# 지금 하고있는 로직이 맞는건지, 안 맞는건지 모르겠지만.. 참고용으로 생각하면 됩니다...! 

 

# 예를 들어) 다음과 같이 Cell을 선택 후, 변경을 누르면? 

 

# 다음과 같이 Cell 선택 한, 필드가 Edit 형태로 보이게 하는 방법을 알아보자.

 

# 시작하기 전


# 기본 시작하는 방식에서 좀 다른 방법이기 때문에 참고만 하고 넘어가자. 

2022.04.15 - [.SAP/..ABAP] - SAP ALV cell edit 설정( Enabled, Disabled )

 

SAP ALV cell edit 설정( Enabled, Disabled )

# SAP ALV Cell 관리하는 방법( Display -> Input ) 1. 전체 ALV을 Input으로 변경하는 방법 2. 몇 개 필드는 Enabled , 나머지 필드는 Disabled로 변경하는 방법이 있다. # 참고로 Enabled = Edit 가능 Disabled = Edit 불가

potato98.tistory.com

 

 

시작해보자. 

 

 

# 기본적인 TOP 선언


TYPES: BEGIN OF TY_S_LIST01.

       INCLUDE STRUCTURE SCARR.

TYPES: CELLSTYL TYPE LVC_T_STYL,

       END OF TY_S_LIST01.

 

# 기본적인 Layout 선언


  GS_LAYOUT01-SEL_MODE = 'A'.
  GS_LAYOUT01-STYLEFNAME = 'CELLSTYL'.

 

 

# STATUS 버튼 추가 후, PAI 로직 설정


# 01.간단하게 CASE문을 만들어보자

 

# 02.이제 선택한 CELL에 대한 정보를 가져오기 위해서는 다음 Method을 사용해야한다. 또한 해당 인터널테이블을 바로 가져오기 위해서 READ TABLE을 써보자.

      DATA:
        LT_CELL TYPE LVC_T_CELL,
        LS_CELL TYPE LVC_S_CELL.


      CALL METHOD G_ALV_GRID01->GET_SELECTED_CELLS
        IMPORTING
          ET_CELL = LT_CELL.  

      READ TABLE LT_CELL INTO LS_CELL INDEX 1.

 

# GET_SELECTED_CELLS Method을 통해서 ALV에서 선택한 Cell의 해당 라인 컬럼을 가져올 수 있다. 

 

# 03. 가져온 ROW_ID을 통해서 ALV에서 사용되는 인터널테이블을 읽어보자.

      READ TABLE GT_LIST01 INTO GS_LIST01
        INDEX LS_CELL-ROW_ID.

 

# 04. 해당 CellEdit 모드열려있는지 닫혀있는지 확인을 하는 로직이며, 변경 " CELLSTYL " Modify 해보자.

# 열려있을 때는 닫아주고, 닫혀있을 때는 열어주는 식으로 변경했다 # 

# PERFORM에 대한 것은 밑에 로직에 같이 있으니  참고.

      IF GS_LIST01-CELLSTYL IS INITIAL.
        PERFORM FCAT_CELL1
          USING
            LS_CELL-COL_ID
            CL_GUI_ALV_GRID=>MC_STYLE_ENABLED
          CHANGING
            GS_LIST01.
      ELSE.
        CLEAR
            GS_LIST01-CELLSTYL.
      ENDIF.


      MODIFY GT_LIST01 FROM GS_LIST01
        INDEX LS_CELL-ROW_ID .
        
   
   
   
FORM FCAT_CELL1
  USING
    VALUE(P_FNAME)
    VALUE(P_MC_STYLE)
  CHANGING
    PS_LIST TYPE TY_S_LIST01.

  DATA:
    LV_CELL      TYPE LVC_S_STYL,
    LV_CELL_LIST TYPE LVC_S_STYL.

  CLEAR
    PS_LIST-CELLSTYL.


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



  INSERT LV_CELL INTO TABLE PS_LIST-CELLSTYL.


ENDFORM.                    "FCAT_CELL1

 

# 05. 이제 EDIT모드활성화 하기 위해서 다음과 같은 로직 쓰고, ALV REFRESH를 해보자.

      CALL METHOD G_ALV_GRID01->SET_READY_FOR_INPUT " 조회모드 -> 편집모드 "
        EXPORTING
          I_READY_FOR_INPUT = 1. " Edit 활성화 "

      CALL METHOD G_ALV_GRID01->REFRESH_TABLE_DISPLAY
        EXPORTING
          I_SOFT_REFRESH = 'X'.

 

# 이제 실행을 해보자! 

 

끝!

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

728x90

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

SAP ALV CELL Color 설정  (0) 2024.09.20
SAP ALV Double Click( 더블 클릭 ) 정리  (0) 2024.06.18
SAP ALV Hotspot 정리  (2) 2024.04.02
SAP ALV SubTotal(소계) 정리  (4) 2024.02.21
SAP ALV Blank(공백) 정리  (1) 2024.01.04