안녕하세요.
2가지 정도의 문제가 있는데 고민해도 잘 풀리지가 않아서요
첫번째는
현재 Online 스크린에 Search help 를 코딩으로 작성하여 넣었는데요.
데이타가 적은건은 코딩으로 작업하여 넣었는데 많은 데이타는 조회를
할수 있는 Search help 를 넣어야 하는데 코딩으로 넣을수 있는 방법을
잘 모르겠습니다.
두번째는
Search help 버튼을 클릭하여 선택된 값이 입력될때
DYNP_VALUES_UPDATE 함수를 사용하여 선택값이 입력되게는 하였는데요.
입력된 값 옆에 입력된 값의 Description 값도 자동으로 보여주게 하고 싶은데
잘 안되네요 enter 이벤트를 먹여야 Description 값이 보이는데 enter 이벤트 없이
바로 보이는 방법이 없을까요?
ABAP 고수분들의 의견 부탁드립니다.
첫번째,
코딩으로 넣으셨다고 하는데, 어차피 코딩으로 만들어내는 도움말인데 데이터가 많고 적음의 차이가 있을까요?
잘 이해가 안가는 부분입니다.
F4IF_INT_TABLE_VALUE_REQUEST 함수를 쓰신것은 맞겠죠?
두번째,
DYNP_VALUES_UPDATE 함수가 바로 PBO 이벤트 없이도 특정 필드의 값을 바꿔주기 위한 함수입니다.
해당 함수를 쓰셨는데, description을 걱정하신다는 건...
그러면 해당 함수를 왜 사용하신 건지... 그곳도 또한 잘 이해가 안되네요..
만약 F4 를 호출한 바로 그 필드 때문에 해당 함수를 사용하신거라면, 그러면 그럴 필요는 없었습니다.
종합하면..
화면에 A, B, C 필드가 있고,
A는 B의 F4 help를 만드는 데 필요한 선행조건 필드,
B는 F4 help가 필요한 필드,
C는 B의 description
이라고 가정하죠.
1. VALUE-REQUEST 등의 이벤트를 통해 F4 help를 호출하는 form이 실행될겁니다.
2. 먼저, B에 대한 F4 도움말을 만들기 위해 A를 이용한 쿼리를 만듭니다.
그런데, A 필드의 값을 수정하고 엔터나 다른 버튼 등을 눌러서 PAI가 타지 않은 상황이라면 현 상태에서 최종 수정된 A의 값은 알 수 없습니다. 그래서 이 때 DYNP_VALUES_READ 함수를 씁니다.
이제 쿼리를 해도 됩니다.
ex) select * from X where Z = A.
3. call function 'F4IF_INT_TABLE_VALUE_REQUEST'
4. 2번에서 만든 itab에 description이 있어서 이것을 화면에(C) 반영하고 싶다면 이 때, DYNP_VALUES_UPDATE를 써서 C를 반영합니다.
이 함수는 PBO를 타기 전에라도 화면 상의 특정 필드의 값을 바꿔줍니다.
정리하면,
1. PAI 전에 특정 필드의 최종 값을 읽을 때, DYNP_VALUES_READ
2. PBO전에 특정 필드의 값을 써 줄때, DYNP_VALUES_UPDATE
이해가 되시죠? 되실겁니다~