개발을 하다보면 정말 많이 Search Help 기능을 추가하게 됩니다.
이때 Search Help에 출력할 정보를 Hitlist라고 하는데 이 Hitlist의 내용을 동적으로 출력하고 싶다면 "F4IF_INT_TABLE_VALUE_REQUEST" Function를 사용하여 Search Help Exit이나 PROCESS ON VALUE-REQUEST 이벤트 블럭에 안에 작성해야합니다.
기능 설명
이 Function module 를 사용하면 내부 테이블의 값을 기반으로 사용자에게 선택할 수 있는 값을 바탕으로 사용자에게 선택 가능한 값( Hitlist )을 제공하는 팝업 창을 생성합니다. 또한 사용자가 특정 필드를 입력할 수 있는 값들을 유도하고, 선택할 값들을 편하게 지정하기 위해 사용됩니다. 사용자가 목록 안에서 하나 이상의 값을 선택하면, 선택된 값이 해당 입력 필드에 자동으로 채워지기 위해 도와줍니다.
Signature
예시 코드
PROCESS ON VALUE-REQUEST. "//Search Help를 클릭 시 수행되는 Event Block"
FIELD: gs_create-pernr MODULE f4_hitlist.
"#1 기본 Version F4 Help"
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'PERNR'
dynprofield = 'GS_CREATE-PERNR’
PVALKEY = 'Personal’ *//Personal List Key//*
window_title = '연락처 등록이 되지 않은 사원'
value_org = 'S'
TABLES
value_tab = gt_hitlist
dynpfld_mapping = lt_dselc
return_tab = lt_return_tab.
"#2 기능 추가 Version F4 Help"
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'PERNR'
PVALKEY = 'Personal'
dynprofield = 'GS_CREATE-PERNR'
MULTIPLE_CHOICE = 'X'
window_title = '연락처 등록이 되지 않은 사원'
value_org = 'S'
MARK_TAB = lt_mark
TABLES
value_tab = gt_hitlist
dynpfld_mapping = lt_dselc
return_tab = lt_return_tab.
"Personal List와 Multiple Selection, Default Select 기능이 추가된 코드"
실행 화면
실제 Hitlist에 출력될 정보를 가지고 있는 Internal Table를 Tables Parameter 'value_tab'에 입력하고 Search Help POPUP에서 값을 선택하였을때 해당 Hitlist의 어떤 열(Column)을 어떤 Screen Field에 넣을지 LT_DSELC 테이블을 통해 맵핑합니다.
예를 들어 2번째 행을 더블 클릭하면, 안유진에 대한 사번 필드 "PERNR" 이름의 필드 값 '24000038'이 Screen에 있는 GS_CREATE-PERNR 필드에 값이 입력되는 기능을 합니다. 또한, 선택된 행은 return_tab parameter으로 값이 반환되기도 합니다.
이번에는 Importing Parameter 'PVALKEY'에 대한 기능으로 Search Help의 Personal List기능을 사용하도록 하겠습니다. 'PVALKEY'에 Personal List의 키를 넣으면 되는데 정해진 Key는 없고 아무 문자열만 넣어도 무방합니다.
Personal List란 개인화 된 Search Help로 즐겨 찾기와 비슷한 기능입니다. 아래의 ‘Insert Personal List’의 버튼을 클릭하여 주로 사용하는 Value(행)을 Personal List에 추가하게 되면, ‘Personal Value List’ 버튼을 통해 전에 추가 했던 Personal List로만 조회가 가능합니다.
예를 들어 저희 ASAP 지도 교수님이자 그림에서 24000001 현명진 CEO님의 행을 Personal List에 Insert Personal List Button를 통해 추가하여 조회하겠습니다.
Personal Value List Button를 클릭하여 앞에서 추가했던 행만 조회가 가능합니다.
Personal List는 PVALKEY Importing Parameter에서 Key를 설정하여 사용할 수 있으며, 프로그램을 끄더라도 해당 Key에 Personal List는 저장되어 있습니다.
다음은 Multiselect를 추가한 #2 버전의 실행 결과를 보겠습니다.
해당 Search Help 화면은 Multiple Select이 가능하고 행을 미리 선택하게 기본값(Default)을 설정 할 수 있습니다. 기본값을 설정하기 위해 ddshmarks Table에 행 번호를 지정하면 되는데. 약간의 예시 코드를 곁들이자면 아래와 같습니다.
DATA: lt_mark TYPE ddshmarks,
ls_mark TYPE LINE OF ddshmarks.
ls_mark = 3.
APPEND ls_mark TO lt_mark.
해당 코드를 통해 3번 째 행을 기본값으로 지정하여 위에 그림과 같이 3번째 행이 기본적으로 선택 되어있는 것을 알 수 있습니다. Table 형식의 지정으로 인해 여러 행을 기본 선택으로 지정할 수 있음을 의미합니다.
주의 사항
- VALUE_ORG에서 Cell 방식으로 Search Help를 작동 시키기 위해서는 더 많은 정보를 알고 더 많은 설정을 해주어야 합니다.
- 현재 백서에서는 Structure 방식으로 Search Help를 작동시키는 법 만을 서술하고 있습니다.
오늘 글은 여기서 마무리하겠습니다 긴글 읽어주셔서 감사합니다.
틀린 점이나 수정해야할 점 있으면 적극적인 피드백 주시면 감사하겠습니다.
'ABAP Standard Function' 카테고리의 다른 글
[ABAP] GET_WEEK_INFO_BASED_ON_DATE / 해당 날의 주차와 월요일, 일요일 산출 (0) | 2024.12.27 |
---|---|
[ABAP] FIMA_DAYS_AND_MONTHS_AND_YEARS / 연, 월, 일 수 기간 계산 (0) | 2024.12.26 |
[ABAP] DATE_GET_WEEK / 주차 수 계산 일(Date) → 주(Week) (0) | 2024.12.23 |
[ABAP] CONVERSION_EXIT_ALPHA_OUTPUT / Leading Zero 제거 (0) | 2024.12.20 |
[ABAP] CLOI__PUT_SIGN_IN_FRONT / "-" 앞으로 가져오기 (0) | 2024.12.19 |