SELECT 해서 얻은 INTERNAL 테이블에 값을
통체로 F4 HELP &POSSIBLE ENTRY 으로 올리는 방법은 없을까요?
관련 FUNCTION을 많이 뒤져 보고 구현도 해봤지만
인터널 TABLE을 통체로 F4 HELP &POSSIBLE ENTRY 로 사용하는 방법은 ㅜㅜ
힌트 부탁 드림니다. 선배님들.
댓글 8
-
e-abap
2008.02.29 07:35
-
크리스~
2008.02.29 17:27
4.0에서는 F4IF_INT_TABLE_VALUE_REQUEST 구현이 힘들어서.. (function이 아예없음)
여러 군데 돌아 다니다가 아래와 같은 소스를 얻었습니다.
테이블명은 제가 필요한 것으로 수정해서 구현된 것이구요.
*&---------------------------------------------------------------------*
*& Report Z4_TEST_0017 *
*& *
*&---------------------------------------------------------------------*
REPORT z4_test_0017 MESSAGE-ID zss.
TABLES : tfav, tfavt, zwt_label_master.
DATA : select_value LIKE help_info-fldvalue.
DATA : ilabel LIKE zwt_label_master OCCURS 0 WITH HEADER LINE.
PARAMETER: p_hkont LIKE zwt_label_master-label_form.
PERFORM data_select.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_hkont.
PERFORM value_create.
p_hkont = select_value.
*&---------------------------------------------------------------------*
*& Form VALUE_CREATE
*&---------------------------------------------------------------------*
FORM value_create.
DATA : selectfield LIKE help_info-fieldname.
DATA : ld_tabix LIKE sy-tabix.
DATA : it_fields LIKE help_value OCCURS 0 WITH HEADER LINE.
CLEAR: selectfield, it_fields, select_value, ld_tabix.
REFRESH: it_fields.
* F4를 눌렀을 때 보여지는 필드 선언.
DATA : BEGIN OF it_value OCCURS 0,
ident LIKE zwt_label_master-label_form,
ltext LIKE zwt_label_master-label_no,
END OF it_value.
** Help List를 테이블에서 가져온다.
CLEAR : it_value. CLEAR it_value.
SELECT * FROM zwt_label_master WHERE label_type EQ 'SMALL'.
MOVE: zwt_label_master-label_form TO it_value-ident,
zwt_label_master-label_no TO it_value-ltext.
COLLECT it_value. CLEAR it_value.
ENDSELECT.
IF sy-dbcnt EQ 0.
MESSAGE i001 WITH '데이터가 없습니다.'.
EXIT.
ENDIF.
* 아래 부분이 F4를 눌렀을 때, Hit List를 보여준다.
CLEAR it_fields.
it_fields-tabname = 'ZWT_LABEL_MASTER'.
it_fields-fieldname = 'LABEL_FORM'.
it_fields-selectflag = 'X'.
APPEND it_fields.
CLEAR it_fields.
it_fields-tabname = 'ZWT_LABEL_MASTER'.
it_fields-fieldname = 'LABEL_NO'.
it_fields-selectflag = ''.
APPEND it_fields.
CALL FUNCTION 'HELP_VALUES_GET_NO_DD_NAME'
EXPORTING
selectfield = selectfield
IMPORTING
ind = ld_tabix
select_value = select_value
TABLES
fields = it_fields
full_table = it_value
EXCEPTIONS
full_table_empty = 1
no_tablestructure_given = 2
no_tablefields_in_dictionary = 3
more_then_one_selectfield = 4
no_selectfield = 5
OTHERS = 6.
CHECK NOT ld_tabix IS INITIAL.
READ TABLE it_value INDEX ld_tabix.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form DATA_SELECT
*&---------------------------------------------------------------------*
FORM data_select.
CLEAR : ilabel. REFRESH : ilabel.
SELECT * APPENDING CORRESPONDING FIELDS OF TABLE ilabel
FROM zwt_label_master WHERE label_form = p_hkont.
LOOP AT ilabel.
WRITE : / ilabel-matnr, ilabel-c_code, ilabel-label_form.
ENDLOOP.
ENDFORM. " DATA_SELECT
오리지널 소스를 올려 주신 분께 감사드려요... 제가 어데서 구했는지 통~ 생각이 나지 않네요... ^^
-
옆집남자
2008.02.29 19:16
RPR_ABAP_SOURCE_SCAN 를 이용해서 윗분들이 알려준 평션 함 찾아보세요 분명 인터널 테이블 데이타를 보여주는
프로그램이 있을거예요...^^
-
bd
2008.02.29 21:31
우어 어제는
F4IF_INT_TABLE_VALUE_REQUEST 펑션 가지고 별짓을 다 해봐도 원하는 f4가 안나왔는대;;
답글 달린거 보고 디버깅 걸면서 뚝탁 하니....바루 되네요 @@
우어어어어~~ 언제나 좋은 답글 감사 드림니다.
-
icarus
2008.03.01 00:50
저도 덕분에 F4 Value Help에 대해 많이 배우네요...
감사합니다...ㅎㅎ
-
SAP폐인
2008.03.01 06:56
F4IF_로 시작하는 펑션은 Search help exit입니다. 유저가 만들수 있습니다. -
김지성
2008.03.04 02:19
저 버전이 640인데
ZWT_LABEL_MASTER 테이블이 없던데... -
bd
2008.03.05 03:37
zwt... cbo 펑션인듯 합니다.
6-2. Internal Table을 이용해 Input Help 구성
F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여, 인터널 테이블의 내용을 Possible Entry에 추가할 수 있다. [예제12-6-4 ]의 GT_CONNID는 Possible Entry에 보이는 인터널 테이블이며, GT_RTNTAB은 Search Help에서 선택한 Line을 담게 되는 인터널 테이블이다. [예제 12-6-2 ]와 같이 프로그램을 생성하여 테스트해보자.
<예제12-6-2 >
REPORT Z12_002 .
DATA: BEGIN OF gt_connid OCCURS 0,
connid TYPE sflight-connid,
END OF gt_connid.
DATA : gt_rtntab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
DATA : gt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE.
PARAMETERS: p_carrid LIKE sflight-carrid,
p_connid LIKE sflight-connid.
INITIALIZATION.
ATSELECTION-SCREEN ON VALUE-REQUEST FOR p_connid.
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-cprog
dynumb = sy-dynnr
request = 'A'
translate_to_upper = 'X'
TABLES
dynpfields = gt_dynpread.
READ TABLE gt_dynpread WITH KEY fieldname = 'P_CARRID'.
SELECT DISTINCT connid INTO TABLE gt_connid
FROM sflight
WHERE carrid = gt_dynpread-fieldvalue.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_CONNID'
dynpprog = sy-cprog
dynpnr = sy-dynnr
window_title = 'CONNID'
value_org = 'S'
TABLES
value_tab = gt_connid
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
p_connid = gt_rtntab-fieldval.
</예제>
[결과12-6-2 ]에서처럼 P_CARRID의 값에 사용자가 입력한 값에 해당하는 데이터만 테이블에서 조회하여 Possible Entry로 보여준다. DYNP_VALUES_READ 함수는 사용자가 화면에 'AZ'값을 입력하고 엔터를 입력하지 않아도(PAI 이벤트를 호출하지 않아도) 프로그램에서 변경된 값을 인식할 수 있도록 한다. P_CONNID 필드의 Possible Entry 버튼을 클릭하였을 때 사용자가 <Enter>를 입력하지 않았을 때에는 P_CARRID 파라미터는 변경된 'AZ' 값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수 있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 예제와 같이 사용자가 입력한 값을 제한 값으로 하여 Input Help를 생성할 수 있다.
이와 유사하게 DYNP_VALUES_UPDATE 함수는 화면을 동적으로 변경하는 기능을 수행한다.