스크린 페인터로 parameter를 생성했습니다.
회사코드 [ ]
사업장 [ ] [ ]
이렇게 되어있는데요, 회사코드는 매개변수 ID를 이용해서 자동으로 f4 help창이 나타나구요//
사업장은 회사코드를 입력하면 그에 해당하는 사업장만 f4 help창에 나타내 주기 위해 아래 처럼 구현했습니다.
PROCESS AFTER INPUT.
MODULE user_command_0100.
PROCESS ON VALUE-REQUEST.
FIELD : r_bupla-low MODULE f4_bupla_low.
이렇게 PROCESS ON VALUE-REQUEST으로 사업장에 f4 help를 나타내 주었습니다.
그런데 회사코드를 입력 후 바로 사업장에서 f4 버튼을 누르면 입력된 회사코드가 인식되지 않더라구요..
엔터를 치게 되면 입력한 회사코드가 인식이 되는데 말이죠...;;
엔터를 입력하지 않고도 입력한 회사코드를 읽을 수 있는 방법이 없을까요?
댓글 4
-
초보아밥퍼
2010.10.16 02:34
DYNP_VALUES_READ 펑션을 이용하세요. -
냥냥
2010.10.16 03:09
그 함수도 써봤는데 안되더라구요..
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynpread .
이렇게 했었거든요..
-
아밥 잭
2010.10.16 03:32
PERFORM read_dynp_value USING 'P_BUKRS'
CHANGING p_bukrs.
FORM read_dynp_value USING field_name
CHANGING p_value. "p_cndcd.
DATA: BEGIN OF dynpfields OCCURS 1.
INCLUDE STRUCTURE dynpread.
DATA: END OF dynpfields.
MOVE field_name TO dynpfields-fieldname.
APPEND dynpfields.
* Feldinhalte vor dem automatischen Feldtransport beim PAI
* explizit auslesen
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
* TRANSLATE_TO_UPPER = ' '
* REQUEST = ' '
perform_input_conversion = 'X'
TABLES
dynpfields = dynpfields
EXCEPTIONS
invalid_abapworkarea = 1
invalid_dynprofield = 2
invalid_dynproname = 3
invalid_dynpronummer = 4
invalid_request = 5
no_fielddescription = 6
invalid_parameter = 7
undefind_error = 8
OTHERS = 9.
READ TABLE dynpfields WITH KEY fieldname = field_name.
p_value = dynpfields-fieldvalue.
ENDFORM. " READ_DYNP_VALUE
이렇게 해보세요.
-
냥냥
2010.10.18 18:50
아.. dynpfields 이 넘기는 테이블에 필드명을 넣어줘야 하는거였군용//
해결했습니다~ 감사합니다^^