리스트박스에서 값을 변경할때마다
원하는 걸 실행하고싶은데요..
ALV에서 리스트박스를 구현하고는 어떻게 하는지 모르겠네요..
1. 레포트프로그램에서 리스트박스할때는
AT-SELECTION-SCREEN으로 변경되었을때가지고오고..
2. 화면에서 리스트박스 만들때는 F코드에 값넣어서..
USER_COMMAND모듈에서 SY-UCOMM에 맞는값이
들어오면 값이 그에 맞게 반응하면되는건 알겠는데요..
CLASS를 이용한 ALV에서는 어떤식으로하면되는지..
필드카탈로그에서 설정해주면될꺼같기도하고..
우선 리스트박스를 건드리면 반응을해야하는데..그렇지를 않네요..ㅜㅜ
WA_FIELDCAT2-FIELDNAME = '필드이름'.
WA_FIELDCAT2-DRDN_HNDL = '1'.
....
......
FORM CREATE_DROPDOWN .
DATA : LT_DROPDOWN TYPE LVC_T_DROP,
LS_DROPDOWN TYPE LVC_S_DROP.
LS_DROPDOWN-HANDLE = '1'.
LS_DROPDOWN-VALUE = 'SE11'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
LS_DROPDOWN-HANDLE = '1'.
LS_DROPDOWN-VALUE = 'SE38'.
APPEND LS_DROPDOWN TO LT_DROPDOWN.
CALL METHOD GRID_100->SET_DROP_DOWN_TABLE
EXPORTING IT_DROP_DOWN = LT_DROPDOWN.
ENDFORM. " CREATE_DROPDOWN
대충 이런식으로 했습니다
지금 SE11과 SE38로 리스트박스 형식으로 모양은 나오는데요..
반응을 안하네요..반응을 하게 하려면 어떻게 해야하나요...?ㅜㅜ
요약하면..CLASS ALV에서 리스트박스값을 선택하면 PAI타는게....그게 궁금합니다..
F코드를 설정해줄수도 없구..ㅜㅜ
class alv 에서는 "data_changed" method를 이용해서 값이 변했나 안변했나를 체크할 수 있습니다.
그래서 값이 변할때마다 data_changed 메소드가 실행되고 그값이 변하는 필드가 리트스박스의 필드인지를 체크하는로직을 넣으셔서 프로그램 하면 됩니다.
"BCALV_EDIT_03" 프로그램을 참고 하세요.. 셀에 입력된 값을 검증하는 예제입니다.
(se80에서 프로그램에 "BCALV_EDIT_03"로 보면 소스가 보입니다.)
참고로 class에서는 pai를 타는게 아니고 메소드를 실행하게 됩니다..
즐밥하세요..
methods:
handle_data_changed
for event data_changed of cl_gui_alv_grid
importing er_data_changed.