안녕하세요.
A라는 Select-options 필드와
B라는 Parameters Listbox 필드가 있습니다.
A에서 Search-Help로 값을 받아오면
B의 리스트박스에 들어갈 항목과 키값들을 gt_vrm 이라는 인터널 테이블에 가져와서
자동으로 리스트 박스의 항목을 업데이트 하고 싶은데
엔터나 필드를 더블클릭해야만 업데이트 되더라구요.
엔터 없이 Search-Help로 받아왔을때 리스트 박스의 항목을 업데이트 하는 방법좀 알려주세요.
TABLES : mara, marc, mard.
TYPE-POOLS : slis, vrm.
DATA : BEGIN OF gt_list OCCURS 0,
werks TYPE marc-werks,
END OF gt_list.
DATA : gt_vrm TYPE vrm_values WITH HEADER LINE.
SELECT-OPTIONS : so_matnr FOR mara-matnr NO INTERVALS NO-EXTENSION.
PARAMETERS : pa_werks TYPE mard-werks AS LISTBOX VISIBLE LENGTH 15.
AT SELECTION-SCREEN OUTPUT.
PERFORM update_list.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_matnr-low.
CALL FUNCTION 'HELP_VALUES_GET_WITH_MATCHCODE'
EXPORTING
matchcode_object = 'S_MAT1'
IMPORTING
select_value = so_matnr-low
EXCEPTIONS
invalid_dictionary_field = 1
invalid_matchdcode_object = 2
no_selection = 3
OTHERS = 4.
PERFORM update_list.
FORM update_list .
IF so_matnr-low = ''.
CLEAR gt_vrm[].
SELECT DISTINCT werks
FROM mard
INTO CORRESPONDING FIELDS OF TABLE gt_list.
ELSE.
CLEAR gt_vrm[].
SELECT DISTINCT matnr werks
FROM mard
INTO CORRESPONDING FIELDS OF TABLE gt_list
WHERE matnr EQ so_matnr-low.
ENDIF.
SORT gt_list BY werks.
LOOP AT gt_list.
gt_vrm-text = gt_list-werks.
gt_vrm-key = gt_list-werks.
APPEND gt_vrm.
ENDLOOP.
CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'PA_WERKS'
values = gt_vrm[].
ENDFORM. " UPDATE_LIST
다른 관계없는 소스들은 포함하지 않았습니다.
댓글 6
-
양키
2011.02.10 00:16
-
공백
2011.02.10 00:49
읔,,, 그럼 해결 불가능한걸까요...
-
Abap
2011.02.10 01:38
예전에 프로젝트 할 때 저도 저런고민 해본적이 있었는데 결론은 스크린 1000 상에서 아무런 유저이벤트 없이 리스트박스가
갱신될 수는 없다. 가 결론이었습니다.
궁금해서 특급 개발자님께 물어본 경험이 있네요.
그분께서 하고자 하면 가능은 한데 다른 위험요소가 있다고 하셔서 포기했던 기억이...^^;
-
Abap
2011.02.10 01:42
아.. 저도 저걸 하려 했던 이유가 마치 웹처럼 유저가 회사명을 홍길동컴퍼니라고 입력하고 텝키로 이동하면
자동으로 그에 따른 사업자번호라던지 이런게 따라오고
금액을 10000원만 입력하면 제가 구현했던 가격계산방법에 따라서 자동으로 120원이 나와주게 요청을 하더군요.
(아무런 입력없이요. 그냥 10000원만 입력하면 120이 뜨도록 만들어 달라..)
그래서 고민했었는데.. ^^; 제가 모르는걸 수도 있고. 저에게 안가르쳐줬을 수도 있는..^^ 그때 생각나서 댓글 답니다 ㅎㅎ
-
동감~
2011.02.10 01:55
AT SELECTION-SCREEN ON VALUE-REQUEST FOR so_matnr-low. 구문아래에서
PERFORM update_list. 를 지우시고 그자리에
CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
EXPORTING
FUNCTIONCODE = '='
EXCEPTIONS
FUNCTION_NOT_SUPPORTED = 1
OTHERS = 2.
를 한번 넣어보시죠..
-
공백
2011.02.10 02:04
동감님 한번에 해결됐습니다 감사합니다^-^....
답변주신 다른분들도 감사합니다. 많은 공부가 되었네요..
SDN사이트 찾아보니 "VRM_SET_VALUES" Function은 F4 Serach help를 사용할수없다고 나오네요.