728x90

# SAP ALV Dropdown List


# 프로그램 개발하면서 [ Drop Down ] 리스트를 뿌려야 할 때가 있다. 

# 물론 정적으로 정해지는 값이면 좋겠지만.. 값에 따라서 Dropdown동적 바뀌어야 하는 상황이 온다. 

 

# 오늘은 따라서 변경되는 Dropdown( 드롭 다운 )에 대해서 알아보자. 

 

 

# 우선 다음과 같은 프로그램이 있다 하자. 우리는 여기서 [ 통화 ]에 따라서 달라지는 [ Dropdown ]을 설정할 것이다. 

SCARR

 

# 다음과 같이 설정해야 하기 때문에 참고하고 넘어가자 # 

[ USD ] 25%
55%
[ EUR ]  5%
[ 나머지 ] 10%

 

 

# 01. TOP 선언 ( Drop down list ) 


# 00. 기존에 있던 [ Internal Table ]을 변경해야 하기 때문에 다음과 같이 [ Drop down list ]은 두 가지설정해서 나누게 할 것이다. 

 

- 하나는 [ 드롭다운 리스트를 설정할 필드

- 하나는 [ 리스트의 값을 넣을 필드 ]

 

TOP

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 만드는 과정 속 # 

PBO

 

# 02. 위에서 나눴던 [ 통화 ]에 따라서 다음과 같이 나눠보자. 

PBO

  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 ]에 넣어보자.

PBO

 

 

# 03. 필드 카탈로그 설정 -> PBO


# 이제 [ TOP ]에서 선언했던 필드를 [ 필드 카탈로그 ]을 통해 선언을 해주어야 한다. 

# 또한, 해당 필드는 [ 편집 ]이 가능하게 설정되어있어야 한다. 

PBO

    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 ]에 값을 넣어야 한다. 

PBO

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 ] 

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