SAP Search Help 만드는 방법 — 검색도움말(F4) 완전 정리

SAP 화면에서 입력 필드를 클릭하면 오른쪽에 작은 네모 버튼이 뜹니다. 누르거나 F4를 치면 선택 가능한 값 목록이 나오죠. 이걸 Search Help(검색도움말) 라고 부릅니다.

부르는 이름이 여러 개라 처음엔 헷갈립니다. Search Help, Possible Entry, Input Help, F4 Help, 그리고 예전 표현인 Matchcode까지 전부 같은 것을 가리킵니다.

이 글에서는 Search Help가 무엇인지, 어떤 경로로 화면에 붙는지, 그리고 SE11에서 직접 만드는 방법까지 정리합니다.

1. Search Help는 왜 필요한가

사용자 입장에서 생각하면 간단합니다.

전표를 입력하는데 회사코드 칸이 비어 있습니다. 여기에 뭘 넣어야 할까요? 1000? KR01? 사용자는 모릅니다. 어떤 값을 넣을 수 있는지 알려주는 장치가 필요하고, 그게 Search Help입니다.

개발자 입장에서는 하나가 더 있습니다. 사용자가 목록에서 고르게 하면 오타로 인한 오류가 원천적으로 사라집니다. 존재하지 않는 코드를 입력해서 나는 에러를 미리 막는 셈이죠.

2. 화면에 Search Help가 붙는 여섯 가지 경로

여기가 처음 배울 때 가장 헷갈리는 부분입니다. 같은 F4 도움말인데 붙는 자리가 여러 곳이라, “분명 만들었는데 화면에 안 나온다”는 상황이 자주 생깁니다.

우선순위가 높은 순서가 아니라, 설정 위치별로 정리하면 이렇습니다.

① 프로그램에서 직접 호출

펑션 모듈 F4IF_INT_TABLE_VALUE_REQUEST로 내가 만든 인터널 테이블을 목록으로 띄우는 방식입니다.

abap

CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
  EXPORTING
    retfield        = 'CARRID'          " 선택 시 되돌려줄 필드
    dynpprog        = sy-repid
    dynpnr          = sy-dynnr
    dynprofield     = 'P_CARRID'        " 값을 채워 넣을 화면 필드
    value_org       = 'S'               " 구조체 단위 전달
  TABLES
    value_tab       = lt_help           " 보여줄 목록
    return_tab      = lt_return
  EXCEPTIONS
    parameter_error = 1
    no_values_found = 2
    OTHERS          = 3.

DDIC에 없는 데이터를 목록으로 띄워야 할 때 씁니다. 예를 들어 커스텀 테이블의 특정 조건에 맞는 값만 보여주고 싶을 때죠.

보통 AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid. 이벤트 안에서 호출합니다.

② MATCHCODE OBJECT 구문

선택화면 파라미터에 직접 붙이는 방식입니다.

abap

PARAMETERS: p_carrid TYPE s_carr_id MATCHCODE OBJECT s_carrier_id.

한 줄로 끝나서 간편합니다. 조회조건 화면에만 적용됩니다.

③ 스크린 페인터(Screen Layout)에서 지정

다이나믹 프로그램(모듈풀)의 화면 필드에 붙이는 방식입니다. 스크린 페인터에서 필드를 더블클릭하면 속성 창이 뜨고, Dict 탭의 Search Help 항목에 이름을 넣으면 됩니다.

④ 데이터 엘리먼트에 지정

가장 파급력이 큰 방식입니다. SE11에서 데이터 엘리먼트를 열고 추가 특성(Further Characteristics) 탭의 Search Help 영역에 이름과 파라미터를 지정합니다.

이렇게 하면 그 데이터 엘리먼트를 쓰는 모든 화면에 자동으로 F4가 붙습니다. 표준 필드가 어디서나 같은 도움말을 보여주는 이유가 이것입니다.

반대로 말하면 영향 범위가 넓다는 뜻이기도 합니다. 표준 데이터 엘리먼트는 건드리지 마세요.

⑤ 테이블·구조의 필드에 지정

SE11에서 테이블을 열고 입력 도움말/체크(Entry help/check) 탭에서 특정 필드에 Search Help를 붙이는 방식입니다. 필드를 선택한 뒤 상단의 Search Help 버튼을 누르면 이름을 입력하는 팝업이 뜹니다.

데이터 엘리먼트보다 범위가 좁고, 그 테이블을 참조하는 화면에만 적용됩니다.

⑥ 체크 테이블·도메인 값 범위

명시적으로 Search Help를 만들지 않아도 F4가 뜨는 경우가 있습니다.

  • 체크 테이블(Check Table) 이 지정되어 있으면 그 테이블의 값이 자동으로 목록이 됩니다
  • 도메인에 고정값(Fixed Values) 이 정의되어 있으면 그 값들이 목록으로 나옵니다
  • 날짜 타입 필드는 달력 팝업이 자동으로 붙습니다

“만든 적 없는데 F4가 나온다”면 대개 이 경우입니다.

우선순위 정리

여러 곳에 설정되어 있으면 더 구체적인 쪽이 이깁니다. 대략 이 순서입니다.

프로그램 직접 호출 (F4IF_...)
   ↑ 우선
화면 필드에 지정한 Search Help
   ↑
테이블/구조 필드에 지정한 Search Help
   ↑
데이터 엘리먼트에 지정한 Search Help
   ↑
체크 테이블 / 도메인 고정값

“분명 데이터 엘리먼트에 붙였는데 다른 게 나온다”면, 화면이나 프로그램 쪽에 더 구체적인 설정이 걸려 있는지 확인하세요.

3. Search Help의 두 종류

Elementary Search Help (기본 검색도움말)

목록 하나짜리 단순한 형태입니다. 우리가 만드는 대부분이 여기 해당합니다.

Collective Search Help (집합 검색도움말)

Elementary Search Help 여러 개를 묶은 것입니다. F4를 눌렀을 때 상단에 탭이 여러 개 나오는 화면을 보신 적 있을 겁니다. 자재를 찾을 때 “자재명으로 찾기”, “BOM으로 찾기”, “구 자재번호로 찾기” 같은 탭이 나오는 그 형태죠.

같은 값을 여러 경로로 찾을 수 있게 해주는 구조입니다.

실무에서는 대부분 Elementary로 충분합니다. 검색 경로가 여러 개 필요한 마스터 데이터에만 Collective를 씁니다.

4. Search Help 만들기 — SE11 실습

이제 직접 만들어 보겠습니다. SFLIGHT 항공편 정보를 찾는 검색도움말 ZSH_SFLIGHT를 예로 듭니다.

생성 시작

  1. SE11 실행
  2. 하단의 검색도움말(Search help) 라디오 버튼 선택
  3. 이름 입력 (ZSH_SFLIGHT) → 생성 클릭
  4. 기본 검색도움말(Elementary search help) 선택

이제 정의 화면이 열립니다. 크게 네 덩어리로 나뉩니다.

영역하는 일
Data Collection어떤 데이터를 가져올지
Dialog Behavior어떤 모양으로 보여줄지
Parameters어떤 필드를 보여주고 되돌려줄지
Search Help Exit목록을 로직으로 가공할지

5. Data Collection — 데이터를 어디서 가져오나

선택방법 (Selection Method)

목록에 뿌릴 데이터의 출처입니다. 여기에 넣을 수 있는 것은 셋입니다.

  • 데이터베이스 테이블 — 가장 단순합니다. SFLIGHT처럼 테이블명을 그대로 씁니다
  • 뷰(View) — 여러 테이블을 조인해야 할 때. 항공사명까지 함께 보여주려면 SCARR와 조인한 뷰가 필요합니다
  • CDS View — S/4HANA 환경의 권장 방식입니다

실무에서는 뷰를 쓰는 경우가 많습니다. 코드만 덜렁 보여주면 사용자가 못 고르니까요. 코드와 명칭을 함께 보여주려면 조인이 필요합니다.

텍스트테이블 (Text Table)

선택방법으로 지정한 테이블에 텍스트 테이블이 연결되어 있으면 자동으로 채워집니다. 직접 입력할 필요가 거의 없습니다.

SAP 테이블은 코드와 명칭이 분리되어 있고, 명칭은 언어 키(SPRAS)를 가진 별도 테이블에 들어 있습니다. 이 연결이 SE11에서 미리 정의되어 있으면 SAP이 알아서 찾아옵니다.

6. Dialog Behavior — 어떤 모양으로 보여줄까

다이얼로그 유형 (Dialog Type)

F4를 눌렀을 때 바로 목록을 보여줄지, 조건 입력창을 먼저 띄울지를 정합니다.

유형동작언제 쓰나
D (값 즉시 조회)목록을 바로 표시데이터가 적을 때
C (값 제한 다이얼로그)조건 입력창을 먼저 표시데이터가 많을 때
A (값 세트에 따른 다이얼로그)건수에 따라 자동 판단애매할 때

A100건을 기준으로 나뉩니다. 100건 이상이면 C처럼 조건창을 먼저 띄우고, 그 이하면 D처럼 목록을 바로 보여줍니다.

실무 선택 기준은 단순합니다. 회사코드나 통화처럼 수십 건 수준이면 D, 자재나 거래처처럼 수만 건이면 C입니다. 애매하면 A로 두면 됩니다.

수만 건짜리 테이블에 D를 걸어두면 F4를 누를 때마다 전량 조회가 돌아 화면이 멈춥니다. 성능 사고의 흔한 원인이니 주의하세요.

단축 키 (Hotkey)

Collective Search Help에서 특정 Elementary를 바로 지목하는 용도입니다.

입력 필드에 =A.AZ.123.FRA 같은 형태로 치면, 단축키가 A인 Elementary Search Help가 열리면서 각 조건 필드에 AZ, 123, FRA가 자동으로 채워집니다.

[이미지 자리] Hotkey 입력 형식과 그 결과 열리는 팝업의 대응 관계 alt: SAP 검색도움말 단축키 입력값이 조건 필드에 매핑되는 구조

숙련된 사용자를 위한 기능입니다. 마우스 없이 키보드만으로 원하는 목록을 바로 여는 것이죠. 만들 때는 Elementary마다 겹치지 않는 한 글자를 배정하면 됩니다.

Enhanced Options (HANA 환경)

HANA DB에서만 동작하는 옵션 세 가지입니다.

Autosuggest in input fields — F4를 누르지 않아도 입력하는 중에 드롭다운으로 후보를 보여줍니다. 웹 검색창의 자동완성과 같은 동작입니다.

Multi-column full text search — 여러 컬럼을 한 번에 전문 검색합니다. 코드든 명칭이든 아무 칸에 쳐도 찾아줍니다.

Accuracy Value for Error-Tolerant Full Text Search — 오타 허용 수준을 0~1 사이 값으로 정합니다. 0.8이면 80% 정도 일치해도 결과에 포함시킵니다.

사용자가 정확한 값을 모를 때 비슷한 값을 제안해주는 기능이라, 마스터 데이터 검색에서 체감 효과가 큽니다. 다만 HANA가 아니면 동작하지 않습니다.

7. 매개변수 — 가장 중요한 부분

여기가 Search Help의 핵심입니다. 어떤 필드를 목록에 보여주고, 어떤 값을 주고받을지 정하는 곳입니다.

선택방법으로 지정한 테이블의 필드 중 필요한 것만 골라 등록합니다. SFLIGHT라면 CARRID, CONNID, FLDATE 정도면 충분하죠. 전부 다 넣을 필요는 없습니다.

각 컬럼이 하는 일을 하나씩 보겠습니다.

IMP (Import) — 조건을 받을 것인가

체크하면 화면에 이미 입력된 값을 조건으로 받아 목록을 걸러줍니다.

항공사 필드에 AA를 넣은 상태에서 운항일자 F4를 눌렀다고 해봅시다.

  • CARRID에 IMP 체크 → AA 항공편만 목록에 나옵니다
  • 체크 안 함 → 전 항공사 데이터가 다 나옵니다

사용자 경험이 크게 갈리는 지점입니다. 이미 회사코드를 골랐는데 전 회사 데이터가 다 나오면 사용자는 그 안에서 또 찾아야 합니다. 상위 조건에 해당하는 필드는 IMP를 켜두는 게 원칙입니다.

EXP (Export) — 값을 되돌려줄 것인가

목록에서 한 줄을 골랐을 때, 그 필드 값을 화면에 채워 넣을지를 정합니다.

  • CARRID에 EXP 체크 → 선택하면 항공사 필드에도 값이 들어갑니다
  • 체크 안 함 → 그 필드는 비어 있는 채로 남습니다

여러 필드를 한 번에 채우고 싶으면 해당 필드들에 모두 EXP를 켜면 됩니다. 다만 화면 쪽에서 그 필드들이 연결되어 있어야 실제로 값이 들어갑니다.

LPos (List Position) — 목록에 보이는 순서

목록에서 컬럼이 나오는 순서입니다. 1이 맨 왼쪽입니다.

0을 넣으면 목록에서 숨겨집니다. 조건으로는 쓰되 화면에는 안 보이게 하고 싶을 때 유용합니다.

사용자가 가장 먼저 보고 판단하는 값을 앞에 두세요. 코드보다 명칭이 앞에 있는 게 나을 때도 많습니다.

SPos (Screen Position) — 조건창의 필드 순서

다이얼로그 유형이 CA일 때 뜨는 제한사항(Restrictions) 창의 입력 필드 순서입니다.

LPos와 별개로 관리됩니다. 목록은 코드순으로 보여주되 조건창은 날짜부터 입력받게 하는 식의 구성이 가능합니다.

SDis (Screen Display Only) — 조건창에서 표시 전용

체크하면 제한사항 창에서 그 필드가 회색으로 잠깁니다. 값은 보이지만 사용자가 바꿀 수 없습니다.

상위 화면에서 이미 확정된 조건을 사용자가 임의로 바꾸지 못하게 막을 때 씁니다. 예를 들어 회사코드가 이미 정해진 상태라면, 조건창에서 그걸 다른 회사로 바꿔서 조회하면 안 되겠죠.

수정 (Modify) — 데이터 엘리먼트 변경

각 매개변수는 원본 필드의 데이터 엘리먼트를 그대로 씁니다. 이 체크박스를 켜면 다른 데이터 엘리먼트로 바꿀 수 있습니다.

필드 라벨을 다르게 보여주고 싶거나, 길이·자릿수 속성이 다른 것을 써야 할 때 사용합니다. 자주 쓰는 기능은 아닙니다.

기본값 (Default Value)

조건창에 미리 채워둘 값입니다. 상수를 넣을 수도 있고, 시스템 필드를 참조할 수도 있습니다.

8. 검색도움말 Exit — 로직으로 목록 손보기

정의 화면 상단의 검색도움말 Exit(Search Help Exit) 필드에는 펑션 모듈 이름을 넣을 수 있습니다.

여기에 지정한 펑션 모듈은 Search Help가 동작하는 각 단계마다 호출되어, 목록 데이터를 프로그램 로직으로 가공할 수 있게 해줍니다.

주로 이럴 때 씁니다.

  • 중복값 제거 — 조인 때문에 같은 값이 여러 번 나올 때
  • 권한 필터링 — 사용자가 볼 수 있는 데이터만 남길 때
  • 조건부 제외 — 마감된 건, 삭제 표시된 건 등을 빼야 할 때
  • 동적 조건 추가 — 뷰만으로는 표현 못 하는 조건이 있을 때

기본 골격은 이렇습니다.

abap

FUNCTION z_shlp_exit_sflight.
*"  IMPORTING/EXPORTING/TABLES  shlp, callcontrol, ...

  CASE callcontrol-step.

    WHEN 'SELECT'.
      " 데이터 조회 직전 — 조건을 추가하거나 직접 조회
    WHEN 'DISP'.
      " 목록 표시 직전 — record_tab을 가공
      " 예: 중복 제거
      SORT record_tab BY string.
      DELETE ADJACENT DUPLICATES FROM record_tab COMPARING string.
    WHEN 'RETURN'.
      " 사용자가 값을 선택한 직후

  ENDCASE.

ENDFUNCTION.

표준 템플릿 F4IF_SHLP_EXIT_EXAMPLE을 복사해서 시작하면 파라미터 시그니처를 맞추기 쉽습니다.

처음부터 Exit를 쓰려고 하지 마세요. 뷰나 선택방법으로 해결되는 것은 그쪽에서 처리하는 게 훨씬 단순하고 성능도 좋습니다. Exit는 SQL로 표현이 안 될 때 꺼내는 마지막 수단입니다.

9. 만든 뒤 확인하기

  1. 활성화(Ctrl+F3) 를 잊지 마세요
  2. SE11 화면에서 테스트(F8) 를 눌러 단독 실행해 봅니다
  3. 목록이 제대로 나오면, 실제 화면에 연결합니다

연결까지 마쳤는데 F4가 안 나온다면 아래를 순서대로 확인하세요.

증상확인할 것
F4를 눌러도 아무 반응 없음검색도움말이 활성화되어 있는가
다른 목록이 나옴더 우선순위 높은 곳에 다른 설정이 걸려 있는가 (2장의 우선순위 참조)
목록이 비어 있음선택방법 테이블에 실제 데이터가 있는가
전체 데이터가 다 나옴조건 필드에 IMP가 체크되어 있는가
골랐는데 화면에 값이 안 들어감해당 필드에 EXP가 체크되어 있는가
F4 누르면 화면이 멈춤다이얼로그 유형이 D인데 데이터가 너무 많지 않은가
같은 값이 여러 번 나옴뷰 조인 때문인지 확인, Exit로 중복 제거

10. 정리

  • Search Help = Possible Entry = Input Help = F4 Help, 전부 같은 것입니다
  • 화면에 붙는 경로가 여섯 가지이고, 더 구체적인 쪽이 우선합니다
  • Data Collection에서 데이터 출처를, Dialog Behavior에서 표시 방식을, 매개변수에서 필드 구성을 정합니다
  • 매개변수의 IMP는 조건을 받을지, EXP는 값을 돌려줄지를 정하는 스위치입니다
  • 데이터가 많으면 다이얼로그 유형을 C로 두세요. D로 두면 성능 사고가 납니다
  • 로직이 꼭 필요할 때만 Search Help Exit를 씁니다

Search Help는 만들기는 쉬운데 어디에 붙였는지를 잊으면 추적이 어려운 오브젝트입니다. 커스텀으로 만들 때는 어느 데이터 엘리먼트나 어느 테이블 필드에 연결했는지 문서로 남겨두시길 권합니다. 나중에 “이 F4는 어디서 오는 거지”를 찾느라 시간을 쓰게 됩니다.

이 글은 SAP ECC / S/4HANA 온프레미스 환경 기준입니다. 화면 구성과 용어는 릴리즈에 따라 조금씩 다를 수 있습니다.

“SAP Search Help 만드는 방법 — 검색도움말(F4) 완전 정리”에 대한 2개의 생각

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤