본문 바로가기

SAP셀프스터디/22일만에 이지아밥 1회독 하기

[chapter09] search help

최초 작성일: 23년 2월 22일

최종 작성일:

 

탐색 도움말은 사용자가 화면 필드에 값을 입력할 떄 입력 가능한 리스트(hit list)를 제공한다. 

01. overview

input help는 화면 필드에서 사용자가 입력할 수 있는 값을 조회하는 sap 표준 기능이다.

input field를 생성하거나 조회하는 방법은 3가지가 있다.

 

1)abap dictionary search help를 이용한 input help

t-code: se11에서 seach help를 생성하여 테이블 필드에 할당한다.

그리고 스크린 필드는 테이블 필드의 속성을 상속받아 input help로 사용할 수 있다.

테이블 필드에 search help가 존재하지 않으면 check table의 테이터와 domain의 fixed value가 input help에 연결된다.

 

2)스크린을 이용한 input help

스크린 페인터에서 개별 필드에 직접 input help를 할당하거나 스크린의 pai 이벤트에서 입력 값을 제한할 수 있다.

FIELD empno VALUES ( '0001', '0002').
FIELD <f> SELECT * FROM <dbtab>.

 

3)dialog module에서의 input help

사용자가 screen 필드에서 f4키를 입력할 때, POV(PROCESS ON VALUE-REQUEST)이벤트에서 Dialog모듈을 호출함으로써 input help를 화면에 보여줄 수 있다.

input help와 search help는 같은 것이 아니다.

input help에서 주로 사용되는 것이 이번장에서 중점적으로 살펴보게 되는 search help 오브젝트 이다.

search help는 탐색 도움말로서 abap dictionary 오브젝트 이다.

release 4.0 이후 버전 부터 사용되었으며 이전에는 matchcode라는 이름으로 사용되었다.

현재도 type-1 프로그램의 parameters 변수를 선언할때, marchcode라는 명령어를 사용하여 search help를 추가 한다.

다음 구문을 이용하여 seach help를 parameters에 연결한다.

PARAMETERS <param> MATCHCODE OBJECT <search help>.

search help는 사용자가 화면 필드에 값을 입력하고자 할때, 입력 가능한 값의 list를 보여주는 기능할 한다.

possible value를 찾기 위한 여러가지 필드의 선택 조건을 주고 사용자가 입력한 조건을 참고하여 결괏값만을 보여준다.

이때 f4키를 누르면 입력가능한 값들이 dialog box에 조회된다.

 

search help는 다음 두가지 타입으로 구분된다.

 

  • elementary search help
    • 기본 탐색 도움말
    • 하나의 table으로 구성됨
    • selection method의 데이터를 활용
  • collective search help
    • 일괄 탐색 도움말
    • 여러 개의 tab으로 구성됨.
    • elementary search help의 조합으로 구성됨.

T-CODE: MM01

MM01로 접속 후 F4누르
선택된 값은 스크린의 필드에 적용된다.

 

02. search help 생성

elementary search help : 하나의 탐색 path 사용

collective search helP : 여러 개의 path를 가지는 search help. 사용자가 search help를 요청하면 search help는 사용자가 원하는 path를 선택할 수 있도록 화면을 제공해준다.

active하려고 했더니 해당 버튼이 비활성화 되어 있음..

02-1. selection method

search help는 실행시점에 데이터 베이스에서 데이터를 가져와서 적중 리스트(hit list)를 구성하게 된다.

이때 사용되는 데이터 베이스 대상을 selection method라고 한다.

selection method로는 abap dictionary table 또는 view를 사용할 수 있다.

적중 리스트는 사용자에게 입력 가능한 리스트를 보여준다.

한 테이블에 필요한 값이 존재할 때에는 selection method에 해당 테이블만 선택하면 된다.

그러나 원하는 테이터가 두 개 이상의 테이블에 존재하면 테이블 엔트리는 외부키로 연결된 view를 이용하여야 한다.

import 파라미터(SELECT * FROM ZEMP WHERE EMP_NO='0001'.)로 선언된 search help 필드는 selection method에서 데이터를 조회할 때 조건 값으로 사용된다.

dialog 유형

  • A: 값 세트에 따른 다이얼 로그 - hit list기준 100개 이상이면 c 유형으로 조회, 이하 이면 d 유형으로 조회
  • C: 값 제한 다이얼 로그 - 값을 입력받아야 리스트 조회
  • D: 값 즉시 조회 - 즉시 리스트 조회

-> searchhelp가 활성화 되지 않아.. SAP 탐색도움말(Search Help)의 조회할 적중 리스트 최대수를 변경하는 방법 (tistory.com) 에서 dialog 유형에 따른 최대 적중수는 확인 함..

 

02-2. search help의 import와 export 파라미터

화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다.

책에 나온 예시에 따르면 employee no필드에 '0001'를 입력하고 input help를 호출하면 적중 리스트가 조회된다.

여기서 employee no필드를 context 필드라고 하며,

적중 리스트에서 선택된 line을 input template라고 한다.

search help의 interface는 input help에서 사용될 수 있는 context data와 화면에 반환되는 input template로 정의할 수 있다.

1) import 파라미터

input template의 프로세스에 사용되는 context 정보를 가지는 파라미터 이다.

import 파라미터로 설정되면, 데이터를 제한하는 조건 값으로 사용된다.

import 파라미터가 export 파라미터로도 설정될 수 있으며 이 경우에는 사용자가 선택한 결괏값이 화면에 반환된다.

2) export 파라미터

hit list에 보이는 input  template 파라미터 이며, 결과가 화면에 반환된다.

03.search help 활용

search help는 3가지 방법으로 필드에 추가될 수 있다.

  • data element에 search help 추가
  • table fiedl에 search help 추가
  • screen field에 search help 추가

03-1. data element에 search help 추가

T-CODE:SE11

03-2.table field에 search help 추가

테이블 필드에 search help를 추가하면 테이블 피드를 참고하는 모든 스크린 필드에 search help가 연결된다.

search help의 export 파라미터가 테이블 필드에 할당되면 사용자가 리스트를 선택할  파라미터와 같은 이름의 스크린 필드들에 값이 반환된다.

또한, import 파라미터가 테이블 피드에 할당되면, 스크린 필드에 입력된 값은 적중 리스트의 값을 제한하게 된다.

T-CODE: SE11

03-3.screen field에 search help추가 -> 13장 module pool program 공부할때 다시 해볼것

screen painter를 이용해 스크린 필드에 직접 search help를 할당할 수 있다.

이 경우에는 해당 스크린 필드에만 search help가 작동하게 된다.

만약, 이와 유사한 여러개의 스크린에 search help를 사용하려면 테이블 필드에 search help를 추가하고 스크린 필드는 테이블 속성을 참고하면 된다.

만약 search help가 여러 가지 방법으로 중복 하당 되었다면 어떤 search help를 호출 하게 될까? (우선 순위)

1. 스크린 필드에 추가된 search help

2. 테이블 필드에 추가된 search help

3. check 테이블의 input help 기능

4. data element에 추가된 seach help

5. domain의 fixed value

6. time 또는 calender help( 예, 날짜 타입- dat 필드)

04.search help exit -> FUNCTION 만드는 거 배우고 난 다음에 다시 공부하자

search help exit 에 함수를 지정하여 search help의 조회조건 및 결과 데이터를 변경 할수 있다.

T- CODE: SE37

05. collective search help

collective seach help는 여러 개의 elementary search help로 구성되어 있으며,

사용자는 collective search help의 여러 path를 이용해 원하는 결과를 선택할 수 있다.

사용자가 collective search help를 선택하게 되면 elementary search help의 interface( import, export 파라미터)를 통해 값을 반환 받게 된다.

elementary search help와 collective search help는 파라미터(import, export)가 서로 연결 되어 있다.

 

step 01. elementary search help 생성하기

step 02. 생성 시, hot key에 단축 값 입력해서 저장하기

(hot key는 collective search help에서 바로 elementary search help를 호출하는 단출 기능 역할을 한다. 예를 들어 사용자가 입력 필드에서 a로 시작하는 자재의 내역을 조회 하기 위해 '=z.a'와 같이 입력하면 zmext search help가 바로 호출하게 된다.

step 03. 연결하려고 하는 elementary search help를 T-CODE : 11통해 접속한다. 

step 04. included search help 탭에서 step 01~ 02통해서 만든 search help를 추가 한다.

step 05. tab 상단 'param.assignment'버튼을 눌러 elementary search help와 collective search help 

의 matnr 파라미터를 연결하여 활성화 한다. -> 연결하려고 하는 키 값 마다 다를 듯..

 

search help는 기본적으로 다음 2개의 특수문자(와일드 카드)를 지원한다

  • * : 길이가 일정하지 않은 문자열 대체
  • + : 하나의 byte에 해당하는 문자 대체

 

06.dialog module의 input help.

input help를 구성하는 방법은 3가지가 있으며 스크린의 dialog module에서 함수를 이용하여 input help를 구성하는 방법을 살펴볼것..

 

dialog module의 input help

사용자가 screen 필드에서 f4 키를 입력할 때, POV(PROVESS ON VALUE - REQUEST)이벤트에서 DIALOG 모듈을 호출함으로써 Input help를 화면에 보여줄 수 있다

 

input help 함수를 이용하여 조회조건 변경 및 조회 결과 데이터를 변경 할 수 있다.

여기에는 abap dictionary table과 internal table을 활용하는 두 가지 방법이 있다.

 

06-1. abap dictionary table을 이용해 input help 구성

T- CODE: SE80

step 01. SE80에서 프로그램 생성

step 02.

screen number에 100 입력 후 t description에 description을 기재 한다. 이후 저장한다음에 active상태로 돌릴 것
active후 위에 layout을 선택하면 screen painter가 실행
PROCESS ON VALUE-REQUEST 부문에 CARRID 필드를 선택했을 때 INPUT HELP를 호출하는 코드 삽입. F4_CARRID 를 더블 클릭하여 모듈을 생성한다.
선택 후 체크 표시 아이콘을 누른다.

module 혹은 function 만드는 절을 공부해야겠지만..

F4IF_FIELD_VALUE_REQUEST 함수는 테이블 데이터를 이용해 Input help를 생성해준다.

search help 파라미터를 설정하지 않으면, tab-name = 'ZEMP'구문에서 테이블의 carrid 필드에 설정된 search help가 조회된다.

필드에 기본으로 지정된 search help를 사용하지 않으려면  search help파라미터에 다른 search help를 입력하면 된다.

위 예제에서는 아까 만들다 실패한(액티브가 안되는 데 교육용 서버이다보니 뭔가 생성을 막아둔게 아닌 지 의심 스러움) 'ZH_EMP' 서치 헬프를 사용한다.

그리고 단순히 ZEMP 테이블에 존재하는 CARRID 필드의 데이터를 INPUT HELP로 구성하려면 Search help파라미터를 주석처리 하면 된다.

dynpnr 파라미터는 반환받을 스크린의 필드이다.

그리고 sy-dynnr은 현재 스크린 번호를 저장하는 시스템 변수 이다.

search help의 적중 리스트(hit list)는 return_tab 파라미터에 저장된다.

 

06-2. internal table을 이용해 input help 구성 -> 아래 코드 이해 못함.. ㅠㅠ

FA4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여, 인터널 테이블의 내용을 Possible entry에 추가할 수  있다.

REPORT Z09_002.

DATA: BEGIN OF gt_data OCCURS 0,
	  carrid TYPE zemp-carrid,
END OF gt_data.

DATA: gt_rtntab LIKE ddshretval OCCURS 0 WITH HEADER LINE.
DATA: gt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE.

PARAMETERS: p_carrid LIKE zemp-carrid,
			p_connid LIKE zemp-connid.
            
 INITIALIZATION
 
 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid.
 	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 carrid INTO TABLE gt_data
   FROM zemp
   WHERE carrid = gt_dynpread-fieldvalue.
   
   CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
   		EXPORTING
        	retfield = 'p_carrid'
            dynpprog = sy-cprog
            dynpnr = sy-dynnr
            window_title = 'carrid'
            value_org = 'S'
      TABLES
      	value_tab = gt_data
        return_tab = gt_rtntab.
       
      READ TABLE gt_rtnrab INDEX 1.
      p_carrid = gt_rtntab-fieldval.