728x90
# SAP ALV Dropdown List
# 프로그램 개발하면서 [ Drop Down ] 리스트를 뿌려야 할 때가 있다.
# 물론 정적으로 정해지는 값이면 좋겠지만.. 값에 따라서 Dropdown이 동적 바뀌어야 하는 상황이 온다.
# 오늘은 값에 따라서 변경되는 Dropdown( 드롭 다운 )에 대해서 알아보자.
# 우선 다음과 같은 프로그램이 있다 하자. 우리는 여기서 [ 통화 ]에 따라서 달라지는 [ Dropdown ]을 설정할 것이다.
# 다음과 같이 설정해야 하기 때문에 참고하고 넘어가자 #
[ USD ] | 25% |
55% | |
[ EUR ] | 5% |
[ 나머지 ] | 10% |
# 01. TOP 선언 ( Drop down list )
# 00. 기존에 있던 [ Internal Table ]을 변경해야 하기 때문에 다음과 같이 [ Drop down list ]은 두 가지로 설정해서 나누게 할 것이다.
- 하나는 [ 드롭다운 리스트를 설정할 필드 ]
- 하나는 [ 리스트의 값을 넣을 필드 ]
DATA: BEGIN OF GT_LIST OCCURS 0.
INCLUDE STRUCTURE SCARR.
DATA: TAX(10), " 드롭다운 필드 "
DROP_DOWN_HANDLE TYPE CHAR04. " 드롭다운 핸들 추가 "
DATA: END OF GT_LIST.
DATA:
GS_LIST LIKE GT_LIST.
# 02. DropDown 리스트 정의
# 01. 제일 중요한 드롭다운 리스트를 정의하는 부분인데. 자세히 봐야 하는 부분은 [ 핸들( Handle ) ]이다.
# [ 핸들 ]로 드롭다운 리스트를 구분하기 때문이다.
# PBO -> ALV 만드는 과정 속 #
# 02. 위에서 나눴던 [ 통화 ]에 따라서 다음과 같이 나눠보자.
DATA:
LT_DROPDOWN TYPE LVC_T_DROP,
LS_DROPDOWN TYPE LVC_S_DROP.
*--------------------------------------------------------------------*
"핸들 1: USD일 경우 "
LS_DROPDOWN-HANDLE = '1'.
LS_DROPDOWN-VALUE = '25'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
LS_DROPDOWN-HANDLE = '1'.
LS_DROPDOWN-VALUE = '55'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
*--------------------------------------------------------------------*
"핸들 2: EUR일 경우 "
LS_DROPDOWN-HANDLE = '2'.
LS_DROPDOWN-VALUE = '5'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
*--------------------------------------------------------------------*
"핸들 3: 나머지일 경우 "
LS_DROPDOWN-HANDLE = '3'.
LS_DROPDOWN-VALUE = '10'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
# 03. 그다음에 Method을 통해서 [ GRID ]에 넣어보자.
# 03. 필드 카탈로그 설정 -> PBO
# 이제 [ TOP ]에서 선언했던 필드를 [ 필드 카탈로그 ]을 통해 선언을 해주어야 한다.
# 또한, 해당 필드는 [ 편집 ]이 가능하게 설정되어있어야 한다.
LS_FIELDCAT-FIELDNAME = 'TAX'.
LS_FIELDCAT-SELTEXT = '세금'. "
LS_FIELDCAT-SCRTEXT_L = '세금'. "
LS_FIELDCAT-SCRTEXT_M = '세금'. "
LS_FIELDCAT-SCRTEXT_S = '세금'. "
LS_FIELDCAT-DRDN_FIELD = 'DROP_DOWN_HANDLE'.
LS_FIELDCAT-CHECKTABLE = '!'.
LS_FIELDCAT-OUTPUTLEN = 5.
LS_FIELDCAT-COL_POS = 5.
APPEND LS_FIELDCAT TO LT_FIELDCAT.
# 만약 여기서 [ 외래키 체크 ]를 하면 다음 로직을 넣어보자.
LS_FIELDCAT-CHECKTABLE = '!'.
# 04. 인터널 테이블 설정
# 이제 조건에 따라서 인터널 테이블에 데이터를 넣으면 된다!
# 여기서 중요한 것은 [ DROP_DOWN_HANDLE ]에 값을 넣어야 한다.
LOOP AT GT_LIST INTO GS_LIST.
CASE GS_LIST-CURRCODE.
WHEN 'USD'.
GS_LIST-DROP_DOWN_HANDLE = 1.
WHEN 'EUR'.
GS_LIST-DROP_DOWN_HANDLE = 2.
WHEN OTHERS.
GS_LIST-DROP_DOWN_HANDLE = 3.
ENDCASE.
MODIFY GT_LIST FROM GS_LIST TRANSPORTING DROP_DOWN_HANDLE.
ENDLOOP.
# 실행
[ USD ]
[ 나머지 ]
도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!
728x90
'.ABAP > ..ALV' 카테고리의 다른 글
SAP SALV 정리( Layout, Field Catalog, Events ... ) (0) | 2025.06.02 |
---|---|
SAP ALV Split(화면 분할) 동적 정리 (0) | 2025.05.06 |
SAP ALV 화면 작을 때( Size 설정 ) (2) | 2025.03.20 |
SAP ALV Variant 정리 (0) | 2025.02.24 |
SAP 동적 ALV 정리.. (3) | 2025.02.18 |