PROCESS ON VALUE-REQUEST.
FIELD ZHR301-SNAME MODULE F4_NAME.
서치헬프화면은 이렇습니다
SNAME PERNR
홍길동 0001
홍길순 0002
김아밥 0003
박샙 0004
여기서 서치헬프를 이용해서 값을 넣으려고 했더니
ZHR301-SNAME 이값만 들어가고 다른 필드들에는 값이 들어가질 않네요
pernr에도 sname에 연계되는 사번이 들어가야 되는데 디버깅해보면 값은 들어가는데
스크린에서 그걸 못받아들이는지 화면에 보이질 않네요
혹시나해서 그 밑에 FIELD ZHR301-PERNR MODULE F4_NAME. 해봤더니 이렇게하면 사번에만 값이 들어가네요
제가 하고 싶은건 이름이든 사번이든 서치헬프를 누르면 위의 화면이 나오고 그걸 클릭하면 두개의 값이 모두 필드에 박혔으면 좋겠는데 어제부터 삽질하고잇네요;;
서치헬프로 한번에 2개 필드의 값을 선택하려는데 어떻게 해야할까요?
소스
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'PERNR'
WINDOW_TITLE = '검색'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = LT_PA0001
RETURN_TAB = IT_RETURN
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
* 선택화면에서 한개를 선택하므로 첫라인을 읽어서 화면에 뿌려준다
READ TABLE IT_RETURN INDEX 1.
IF SY-SUBRC = 0.
READ TABLE LT_PA0001 WITH KEY PERNR = IT_RETURN-FIELDVAL.
IF SY-SUBRC = 0.
ZHR301-SNAME = LT_PA0001-SNAME.
ZHR301-PERNR = LT_PA0001-PERNR.
MODIFY SCREEN.
ENDIF.
ENDIF.
안녕하세요.
소스로 짐작해 보건대 ZHR301-SNAME, ZHR301-PERNR 가 인터널테이블의 필드가 아니라 스크린의 일반필드인가 보죠?
PROCESS ON VALUE-REQUEST.
FIELD ZHR301-SNAME MODULE F4_NAME.
라고 했을 경우 이것은 ZHR301-SNAME 에 대한 POV 이므로 별다른 액션 없이는 다른 필드값이 업데이트 되지 않습니다.
기본적으로, 스크린에 값이 반영되기 위해서는 PBO를 거쳐야 하는데 저 로직을 수행해도 PBO 가 돌지 않기 때문입니다.
뭐 이 경우 여러가지 방법이 있겠지만 DYNP_VALUES_UPDATE 펑션을 사용하시면 이름과 사번을 동시에 스크린에 반영하실 수 있습니다.
MODIFY SCREEN.
이 구문은 불필요하겠네요.