SAP/ABAP

ABAP 텍스트 박스 ( Input Box ) Dropdown List 만들기

그녀는애교쟁이 2015. 1. 20. 16:59
반응형

ABAP 개발을 핟 보면 사용자들이 데이터 입력하는 텍스트 박스를 많이 만들게 된다. 그러한 데이터를 입력하는 박스 중에서 사용자가 임의로 넣는 것이 아닌 정해진 값만 넣게 해야 하는 방법중 하나가 Dropdown List 를 만드는 것이다. 다른 말로 Combo box 라고도 하는데 사용자가 넣어야 하는 것을 선택할 수 있게 하는 것이다.


이렇게 되면 사용자의 입력 오류를 예방 할 수 있고 또 개발자가 오류 값들에 대한 예외처리 하는 로직도 줄일 수 있어서 효과적이다. ABAP에서는 이러한 Dropdown List 를 만드는 방법을 2가지 소개 하고자 한다. 



1. Element -> Domain 에 정의를 해서 리스트를 출력한다.


이것은 텍스트 필드에 사용하는 element 의 domain에 정의를 하는 것이다. 이 방법은 고정적인 값(절대 변하지 않는..) 을 넣어주면 간단하게 Dropdown List 를 구성할 수 있다. 그러나 뭔가 다른게 추가 해야 한다면 CTS를 반영하여 넘겨야하는 단점이 있다. ( 꼭! 절대 변할일 없다고 해 놓고 변한다..)




위에 예제 사진은 입력된 값이 없지만 Element -> Domain 을 통해서 등록 할 수 있다.




2. VRM_SET_VALUES' function 을 사용하여 Dropdown list 를 구성한다.


사용자가 임의로 (또는 동적으로) Dropdown list 를 구성할 수 있다. 필요에 따라 사용자 따라 변경이 가능하니 이 방법을 사용하면 다양항 상황에 대응을 할 수 있다. 아래 코드를 보면 쉽게 이해 할 수 있다. ltab 이라는 Internal table 은 key 와 text로 구성되어 있는데 이 테이블에 key, text 를 한쌍으로 append 시킨 이후에 VRM_SET_VALUES function 을 사용하여 추가해 주면 된다.



  DATA ltab TYPE vrm_values WITH HEADER LINE. " SHIFT TYPE TEXT

  CLEAR: ltab, ltab[].

  ltab-key = 'D'.
  ltab-text = 'DAY'.
  APPEND ltab.

  ltab-key = 'N'.
  ltab-text = 'NIGHT'.
  APPEND ltab.

  CALL FUNCTION 'VRM_SET_VALUES'
    EXPORTING
      id     = 'TXT_DAY_TYPE'
      values = ltab[].


코드를 추가한 이후에는 Screen Painter 에서 Dropdown list 옵션을 활성화 시켜주면 된다.