SAP ABAP F4 팝업 구현
스탠다드로 제공하거나 dicrtionary를 이용하는 방법 말고 직접 ABAP을 이용해 F4 help를 만들 수 있다.
F4IF_INT_TABLE_VALUE_REQUEST 함수는 테이블 데이터를 기반으로 F4 팝업을 생성하여 사용자에게 검색 가능한 값을 제시한다.
F4 팝업을 구현하기 위해서는 먼저 내부 테이블을 준비한 후, F4IF_INT_TABLE_VALUE_REQUEST 함수를 호출하여 데이터를 표시합니다.
ex,
DATA: lt_value_list TYPE TABLE OF ddshretval,
lt_field_list TYPE TABLE OF dfies,
lt_return_tab TYPE TABLE OF ddshretval,
ls_value_list TYPE ddshretval,
ls_field_list TYPE dfies.
DATA: lv_field_value TYPE string.
" 검색 도움말을 위한 데이터 테이블 준비
DATA: lt_f4_data TYPE TABLE OF string,
ls_f4_data TYPE string.
" 데이터 삽입
ls_f4_data = '1001|전자제품'. APPEND ls_f4_data TO lt_f4_data.
ls_f4_data = '1002|가구'. APPEND ls_f4_data TO lt_f4_data.
ls_f4_data = '1003|의류'. APPEND ls_f4_data TO lt_f4_data.
" 필드 리스트 설정
ls_field_list-fieldname = 'MATNR'. " 필드명
ls_field_list-scrtext_l = '상품 코드'. " 긴 텍스트
ls_field_list-scrtext_m = '코드'. " 중간 텍스트
ls_field_list-scrtext_s = '코드'. " 짧은 텍스트
APPEND ls_field_list TO lt_field_list.
ls_field_list-fieldname = 'MAKTX'.
ls_field_list-scrtext_l = '상품명'.
ls_field_list-scrtext_m = '명'.
ls_field_list-scrtext_s = '명'.
APPEND ls_field_list TO lt_field_list.
" F4 팝업 호출
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'MATNR'
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_MATNR'
value_org = 'S'
TABLES
value_tab = lt_f4_data
field_tab = lt_field_list
return_tab = lt_return_tab
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
" 선택된 값 가져오기
IF lt_return_tab IS NOT INITIAL.
READ TABLE lt_return_tab INTO ls_value_list INDEX 1.
lv_field_value = ls_value_list-fieldval.
WRITE: '선택된 값:', lv_field_value.
ENDIF.
- RETFLD: 선택된 값이 반환될 필드명입니다.
- DYNPPROG: 현재 실행 중인 프로그램의 이름을 지정합니다.
- DYNPFLD: F4 팝업을 사용할 화면 필드의 이름입니다.
- VALUE_TAB: F4 팝업에서 표시할 데이터를 담고 있는 테이블입니다.
- FIELD_TAB: 팝업 창에서 필드에 대한 설명을 제공하는 테이블입니다.
- RETURN_TAB: 사용자가 선택한 값을 저장하는 테이블입니다.
예제 실행 결과
위 코드를 실행하면 다음과 같은 F4 팝업이 표시된다.
상품 코드 | 상품명 |
---|---|
1001 | 전자제품 |
1002 | 가구 |
1003 | 의류 |
Tags:
SAP ABAP