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.
공통적으로 TOP와 PAI 설정이 완료되었다면 이제
이제 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_STYLE은 Edit 활성화/비활성화
# 참고
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
'.ABAP > ..ALV' 카테고리의 다른 글
SAP ALV Blank(공백) 정리 (1) | 2024.01.04 |
---|---|
SAP ALV LIST Button(버튼) 추가 (4) | 2023.10.17 |
SAP TOP OF PAGE( ALV ) 정리 (0) | 2023.08.13 |
SAP ALV Split(화면 분할) 정리 (6) | 2023.08.12 |
SAP ALV Buffer 초기화 (2) | 2022.09.16 |