Chapter 12. SEARCH HELP 1. OVERVIEW 1. OVERVIEW ▲그림1-1. SEARCH HELP Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다.

Download Report

Transcript Chapter 12. SEARCH HELP 1. OVERVIEW 1. OVERVIEW ▲그림1-1. SEARCH HELP Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다.

Slide 1

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 2

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 3

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 4

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 5

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 6

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 7

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 8

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 9

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 10

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 11

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 12

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 13

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 14

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 15

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 16

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 17

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 18

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net


Slide 19

Chapter 12. SEARCH HELP

1. OVERVIEW

1. OVERVIEW

▲그림1-1. SEARCH HELP

Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터
사용되었으며 이전에는 Matchcode라는 것이 사용되었다.
사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다.
일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다.
1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해
‘F4’를 누르거나 Possible entry 버튼을 클릭한다.
2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다.
3. 사용자는 조건 값을 입력하고 탐색을 수행한다.
4. 시스템은 조건에 해당하는 값을 list로 보여준다.
5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에
적용된다.
* STEP 2,3은 기본탐색도움말일 경우에는 생략된다.
Possible Entry는 크게 3가지로 생성할 수 있다.
• Search Help 추가
• 함수를 이용한 스크립트 추가
• 도메인의 값 범위

참고사항
SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든
필드 값이
화면에 입력된다.
http://www.e-abap.net
1

Structure of an Elementary Search Help
탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를
정의 할 수 있다.
• 적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가?
• 화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가?
• 입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가?

▲그림1-2. Database selection

▲그림1-3. IMPORT EXPORT PARAMETER

적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다.
하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나
Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다.

Import and Export Parameters
INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.
[그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를
호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된
적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에
해당 필드가 존재하게 되면 보여지게 된다.
이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을
input template 라고 정의하고 있다.
탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는
input template를 정의 할 수 있다.
탐색도움말의 Parameter는 두 가지로 구분된다.
• Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다.
• Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.
http://www.e-abap.net
2

2. SEARCH HELP 생성
1

1. SE11 ABAI Dictionary에서 SEARCH HELP
명을 입력하고 생성버튼을 클릭한다.
Z 및 Y로 시작하는 시작하는 30자리 문자 이내의
이름을 지정하여야 한다.

2. 생성버튼을 클릭하면 탐색도움말 종류를
선택하는 창이 오픈된다.

- 기본 탐색 도움말
- 하나의 tab으로 구성됨

- 일괄 탐색 도움말
- 여러 개의 tab으로 구성됨

2

2-1.Elementary : 탐색도움말은 하나의
탐색 path를 이용한다.

2-1

2-2. Collective : 탐색 도움말은 여러 개의
Path를 가지고 있다. 사용자가 탐색도움말을
요청하면 탐색도움말은 사용자가 원하는
Path를 선택할 수 있도록 화면을 제공해준다.

2-2

3

http://www.e-abap.net

3

3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해
short text를 정의하여 입력한다.
Definition tab 의 항목에 대해
설명한다.
아래 그림과 같이 입력한 후 활성화 버튼을
클릭하여 활성화 하면 ZQM_DRUM 이라는
탐색 도움말이 생성된다.

다이얼로그 유형 선택
테이블 데이터가 많을
경우는 일반적으로
'C'타입을 선택한다

search help를
오픈할 때, 이미
screen에 입력된
값으로 제한한다

일괄탐색도움말을
기본탐색도움말로
사용할 수 있도록
한다.

함수를 참고하여
search_help의
조회조건 변경 및
조회결과 데이터를
변경 할 수 있다

export 받을 필드
ex) screen에 search
help와 동일한
필드명이 있으면\
export 지정된
모든 필드의 값이
반환된다

Search help에
관련된
필드를 추가한다

리스트의 위치 순서

기본값 필드에
파라미터 ID
를 세팅할 수 있다.

4

Search-help list에
보일 필드 위치 순서

http://www.e-abap.net

SPOS, LPOS의 위치를 보여준다.

SPOS

LPOS

TYPE

내역

설 명

A

값세트에 따른 다이얼로그

기 준 100 개 이 상 이 면 , C 유 형
이하이면, D 유형

C

값제한 다이얼로그

값을 입력받아야만 리스트를 보여줌

D

값 즉시 조회

즉시 값을 보여줌

유형 A = 유형 C + D
유형 C

유형 D

5

http://www.e-abap.net

4

4. SEARCH HELP를 실행해보자.
F8 입력하거나, 실행버튼을 클릭한다.
이것은 단순히 Search Help 테스트이며,
실제는 스크린의 필드에 링크 시켜야 한다.
IMPORT 파라미터로 설정된 필드
DRUM, SERIAL은 Context 필드이다.

5

5. SERIAL 필드에 ‘001’을 입력하고
조회해 보자.

6

6. 일련번호가 001 인 값만 조회된 것을
확인 할 수 있다.
라인을 선택하여 더블 클릭하게 되면
INPUT 입력 필드에 선택된 정보들이
입력된 것을 확인 할 수 있다.
이렇게 화면의 필드 값이 리턴 되는 것이
EXPORT 파라미터라고 한다.

6

http://www.e-abap.net

3. 기본탐색도움말

▲그림3-1. Attaching Search Helps to Screen Fields

탐색도움말은 4가지
있다.
• Attach the search
• Attach the search
• Attach the search
• Attach the search

방법으로 필드에 추가 될 수
help
help
help
help

to
to
to
to

a
a
a
a

data element
check table
table field
screen field

4가지 유형 중 SCREEN FIELD에 앞에서 생성한
탐색도움말을 추가하는 것을 학습하자.

▲그림3-2. Data element에 추가

▲그림3-3. Table filed에 추가

7

http://www.e-abap.net

1

1. 스크린 페인터를 실행하여 추가 하고자 하는
필드를 선택한다.
드럼번호 필드에 앞에서 생성한
SEARCH HELP를 추가하고자 한다.

2. 드럼번호 필드를 더블 클릭하면 필드
속성 창이 오픈된다.

2

SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을
입력한다.
탐색도움말 필드 이외의 속성은 모듈풀 단원을
참고하자.
※ 주의 할 점
현재 드럼번호의 필드명은 S_101-DRUM 이다.
이에 해당하는 탐색도움말의 필드명은
ZQMT0107-DRUM(테이블-필드) 이다.
스크린의 필드명과 탐색도움말의 필드명이
상이 할 경우에 탐색도움말을 조회하여
선택하게 되면EXPORT 파라미터로 선언된
첫 번째 값을 무조건 반환하게 된다.
만약 스크린의 드럼번호 필드명을
ZQMT0107-DRUM이라고 선언하면, 탐색도움말을
선택하게 되면 동일한 필드명이 리턴 된다.
또한 스크린에 ZQMT0107-SERIAL 이라는
필드가 존재하더라도 드럼번호 필드에
탐색도움말을 연결하여 선택하게 되더라도
ZQMT0107-SERIAL 화면 필드에 탐색도움말의
결과가 리턴 된다.

8

http://www.e-abap.net

3. 프로그램을 실행하여 드럼번호 필드에
탐색도움말이 추가된 것을 확인하자.
Possible Entry 버튼을 클릭하면
탐색도움말이 조회되는 것을 확인 할 수 있다.

3

드럼번호 필드를 선택 하면, 드럼번호 필드와
드럼번호 seq필드까지 함께 화면필드에
나타내기 위해서 어떻게 할 것인가?
두 가지 방법이 있다.
첫째, 테이블 필드에 serch help를
지정하고, screen에는
테이블 필드명과 동일하게 선언
둘째, PROCESS ON VALUE-REQUEST.
에서 직접 코딩해주는 방법이
있다.

1

9

2

http://www.e-abap.net

4. 탐색도움말 EXIT

▲그림4-1. 탐색 도움말 Exit 메커니즘

탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.

1

1. SE37 Function Builder에서 Z_QM_DRUM’
함수를 입력하고 생성한다.
Changing TAB에서 매개변수를 동일하게
입력한다.

2

2. TABLES TAB에서도 그림과 같이 동일하게
파라미터를 입력한다.

10

http://www.e-abap.net

예제12-4-1

function Z_QM_DRUM.
*"---------------------------------------------------------------------*"*"Local interface:
*" TABLES
*"
SHLP_TAB TYPE SHLP_DESCR_TAB_T
*"
RECORD_TAB STRUCTURE SEAHLPRES
*" CHANGING
*"
VALUE(SHLP) TYPE SHLP_DESCR_T
*"
VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL
*" EXCEPTIONS
*"
INVALID_OBJECT
*"---------------------------------------------------------------------Loop at record_tab.

concatenate record_tab-string 'TEST' into record_tab-string.
modify record_tab.
endloop.
endfunction.
결과12-4-1

RECORD_TAB은 탐색도움말의 조회 결과가
STRING 형태로 저장된 테이블이며,
이 테이블의 값을 변경하면 탐색도움말의
결과를 변경할 수 있다.
SHLP_TAB은 탐색도움말의 조건이다.
조건은 직접 테스트 해보기 바란다.
예제는 record_tab-string 에 ‘TEST’를
추가하여 변경하도록 하는 탐색도움말
함수이다.
탐색도움말이 추가된 화면의 필드에서 F4
기능을 조회해보자.
오더 필드에 TEST가 나오는 것을 확인 할 수
있다.
이외 부분들은 직접 디버깅하면서 충분히 응용
할 수 있을 거이다..

11

http://www.e-abap.net

5. SEARCH HELP 함수
탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다.
탐색도움말 함수를 생성하여 이해를 돕자.
모듈풀에 대한 이해가 필요하므로 해당 단원부터
참고하자
1. PROCESS ON VALUE-REQUEST 부문에
드럼번호 필드를 클릭하였을 경우 탐색도움말을
호출하는 코드를 삽입해보자.
f4_drum_s101 더블 클릭하여 모듈을 생성한다.
스크린 페인터를 실행하여 이전에 추가한
탐색도움말은 삭제한다.

2. F4IF_FIELD_VALUE_REQUEST
함수를 이용하여 탐색도움말을 생성해준다.
Search_help 파라미터를 설정하지 않으면,
TABENAME = ZQMT0107에서 테이블의 DRUM 필드에
설정된 탐색도움말이 조회된다.
필드에 기본으로 지정된 탐색도움말을 사용하지
않으려면 탐색도움말 파라미터에 다른
탐색도움말을 입력하면 된다.
Dynpnr 파라미터는 리턴 받을 화면 필드이다.
프로그램을 실행하면 [결과12-4-1]과 동일한
화면을 볼 수 있다.

예제12-5-1

module f4_drum_S101 input.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM'.
CALL FUNCTION
'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= ‘DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= SY-REPID
dynpnr
= SY-DYNNR
dynprofield
= 'S_101-DRUM'
callback_program = SY-REPID
callback_form
= l_form
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
endmodule. " f4_drum_S101

INPUT

ENDIF.
12

http://www.e-abap.net

예제12-5-2

MODULE f4_drum_s101 INPUT.
DATA: l_form
TYPE sy-xform
VALUE 'F4_PRUEFLOS_CALLBACK_FORM',
l_fname like dynpread-fieldname.
DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line,
scr_field
LIKE dynpread OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST'
EXPORTING
tabname
= 'ZQMT0107'
fieldname
= 'DRUM'
*
searchhelp
= 'ZQM_DRUM'
*
shlpparam
= 'DRUM'
dynpprog
= sy-repid
dynpnr
= sy-dynnr
*
dynprofield
= 'S_101-DRUM'
callback_program = sy-repid
callback_form
= l_form
TABLES
return_tab
= lt_return[]
EXCEPTIONS
OTHERS
= 99.
IF NOT sy-subrc IS INITIAL.
ENDIF.
REFRESH: scr_field.
LOOP AT lt_return.
concatenate 'S_101-' lt_return-fieldname INTO l_fname.
scr_field-fieldname = l_fname.
scr_field-fieldvalue = lt_return-fieldval.
APPEND scr_field.
ENDLOOP.
CALL FUNCTION 'DYNP_VALUES_UPDATE'
EXPORTING
dyname
= sy-cprog
dynumb
= sy-dynnr
TABLES
dynpfields
= scr_field.
IF sy-subrc <> 0.
ENDIF.
ENDMODULE.
" f4_drum_S101 INPUT
함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다.
이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다.
(DYNP_VALUES_UPDATE)

13

http://www.e-abap.net

결과12-5-2

프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서
Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기
때문에 필드명을 동일하게 만드는 구문이다.

14

http://www.e-abap.net

SELECTION SCREEN 필드의 탐색도움말
실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다.
DATA 유형(gp_zdata)의 필드의 탐색도움말을
실행한 화면이다. 위와 같은 기능을 추가하는
방법을 학습해보자.
예제12-5-3

~
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR
gp_zdata.
PERFORM pov_for_zdata.
FORM pov_for_zdata.
DATA: BEGIN OF lt_zdata OCCURS 0,
zdata
TYPE zmmt0023-zdata,
END
OF lt_zdata.
REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab.
SELECT DISTINCT zdata INTO TABLE lt_zdata
FROM zmmt0023
WHERE zdata <> space.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield
= ‘GP_ZDATA'
dynpprog
= sy-cprog
dynpnr
= sy-dynnr
window_title = '공정코드 선택'
value_org
= 'S'
TABLES
value_tab
= lt_zdata
return_tab = gt_rtntab.
READ TABLE gt_rtntab INDEX 1.
gp_zdata = gt_rtntab-fieldval.
ENDFORM.
" pov_for_zdata
15

http://www.e-abap.net

F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에
추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은
탐색도움말에서 선택한 line을 담게 되는 테이블이다.
[예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자.
예제12-5-4

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.
AT SELECTION-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.
16

http://www.e-abap.net

결과12-5-4

P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다.
DYNP_VALUES_READ 함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도
프로그램에서 변경된 값을 인식할 수 있도록 한다.
P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는
P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수
있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는
화면을 동적으로 변경 하는 기능을 한다.
예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

17

http://www.e-abap.net

6. 일괄 탐색도움말
사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자.
[그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path
를 추가하는 실습을 해보자.

▲그림6-1. 자재마스터 일괄 탐색도움말(Collective)

1

1. ZMTEXT 라는 기본탐색도움말(Elementary)
을 생성하자.
2. Selection Method 에는 자재마스터의
내역을 저장하고 있는 MAKT 테이블을
입력한다.
이 외 항목은 그림과 같이 입력한다.
활성화 버튼을 클릭한다.
2

18

http://www.e-abap.net

3

3. 자재마스터의 탐색도움말인 MAT1_A 를
변경한다.

4

4. 로그온 언어 유지보수를 선택한다.

5. Included search help 탭에서
앞에서 생성한 ZMTEXT 탐색도움말을
삽입하고 활성화 한다.

5

6

6. 자재마스터 조회 트랜잭션 화면을 열어
탐색도움말 버튼을 클릭한다.

7

7. MTEXT 라는 Search Path가 추가되었음을
확인 할 수 있다.

19

http://www.e-abap.net