ALV Class 를 이용해서 화면을 구성하면서
필드 1곳을 Dropdown List 로 구현했습니다.
DATA: lt_dropdown TYPE lvc_t_dral,
ls_dropdown TYPE lvc_s_dral.
ls_dropdown-handle = '1'.
ls_dropdown-int_value = '01'.
ls_dropdown-value = '01 : 버스'.
APPEND ls_dropdown TO lt_dropdown.
ls_dropdown-handle = '1'.
ls_dropdown-int_value = '02'.
ls_dropdown-value = '02 : 지하철'.
APPEND ls_dropdown TO lt_dropdown.
위와같이 dropdown 에 필요한 값을 세팅하고 초기에 입력하는 화면에서는 해당컬럼에
값을 선택하면 value 에 설정한 "01 : 버스" 와 같은 값이 화면에 보여 집니다.
해당 데이터를 Table에 저장한 후 값을 다시 읽어 오면 해당필드에는 int_value에 설정한
"01" 이라는 값만 보여져서 명칭이 무엇인지 알 수 없는데
조회 화면에서도 입력할때와 마찬가지로 "01 : 버스" 값이 보여주도록 할 수 있는
방법은 없나요?
댓글 4
-
남군
2010.12.02 21:13
-
밥~~
2010.12.02 21:33
ALV에서 드롭다운은 일일이 다 코딩을 해 주셔야 합니다..
테이블 직접조회시는 DD07T 를 조회하시면 됩니다..
-
코러스
2010.12.03 00:51
위 소스코드로 볼 때, 관련된 테이블의 해당 필드 속성이 CHAR02 또는 NUMC02 일 것 같군요.
화면에 보여줄 Data의 길이는 CHAR 12 이상이어야 하고요.
이런 경우, 하나의 필드를 사용해서 "값"을 입력 받아서 (조정 로직없이) 테이블에 저장하고, 또 조회시에 "값+텍스트"를 동일한 필드에 보여주도록 구현하는 것은 안됩니다.
ALV 컬럼에만 사용할 <텍스트 필드>를 정의하한 후 Dropdown을 연결해 주시고,
테이블에 저장할 때는 "값+텍스트"에서 "값"만 분리해 저장하고, 조회시에는 "값+텍스트"로 합친 후 <텍스트 필드>를 통해 출력해야 할 것 같습니다. (값에 대한 텍스트 값은 위 두 분이 말씀하신대로 도메인에 저장해 두고 사용하시는게 좋겠죠.)
위 "밥~~"님의 말씀처럼 귀찮더라도 일일이 코딩을 해줘야 합니다.
-
맑은하늘
2010.12.04 00:10
코러스님 한표.. ^^
저두 보통 필드 2개를 만들어서 사용합니다.
실제 코드필드는 내부용으로 사용하고 DrDn 필드를 외부에 보이도록 설정하여 사용합니다.
두 필드간 conversion 로직만 잘 설계되어 있으면 별다른 문제는 없을거예요.
드롭다운을 적용하는 필드의 도메인에 위의 값을 저장해 놓으면 될 것 같네요~
읽을때는 GET_DOMAIN_VALUES 펑션으로 읽으면 되구요~