먼저, Search Help EXP 파라미터를 기준으로 RECORD TAB에 담겨줄 DATA를 선언한다.
그리고 IMP 파라미터 값을 가져오기 위해서는 RANGES 변수로 선언한다.
Elementary Search Help를 만들기 때문에 다음과 같이
Step이 SELECT와 DISP가 아니면 EXIT. 처리를 하여 속도 향상하는 코드를 넣어줌.
EXIT인 순간 그 단계는 종료되고 다음 단계로 넘어간다.
즉, SELONE / PRESEL은 바로 Skip하고 바로 SELECT 나 DISP단계로 진행
SELECT단계에서는 먼저 IMP 파라미터 값을 RANGES변수에 넣어줍니다.
RANGES로 넣어주는 이유는 Search Help에서 Multi Select를 해서 검색할 때
SELECT문에서 IN을 이용해서 다중 검색을 하기 위해
shlp-selopt에 어떤값이 들어오는지 확인하기 위해
KUNNR 필드에 'A30'을 넣고 Debugging을 태워보면 다음과 같은 결과를 얻을 수 있다.
Search Help의 이름과 입력한 Input 파라미터 필드이름 그리고 Ranges 변수로
Sign = I / Option = EQ / LOW(값) = A30 이 들어온다.
여러개 선택해서 넣으면 SHLP-SELOPT의 Row가 넣은만큼 들어온다.
LOOP를 통하여 이 값을 선언한 RANGES변수에 넣어준다.
변수가 비어있으면 Error Message를 띄우려면 다음과 같이 하면 된다.
빈값이면 검색안되는 Error Message를 만들었는데,
CALLCONTROL-STEP을 EXIT단계로 안바꿔 주고 EXIT.을 하면
현재 단계인 SELECT단계에서 다음단계인 DISP로 변경되면서 종료가 바로 되지 않는다.
EXIT단계로 강제 이동 후 EXIT을 해줘야 바로 Search Help가 종료된다.
IMP 파라미터를 가지고 SELECT문을 이제 사용자화 하는 코드를 작성해준다.
받은 파라미터들을 Where절에 IN으로 해주고 추가로 더 필요한 정보들은 Where절에 추가해서
Search Help에 띄워줄 데이터를 가공하면 된다.
최대 999건 조회되도록 하기 위해 UP To 999 Rows. 구문을 사용했다.
SELECT가 완료되면 1편에서 설명했던 스탠다드 Function Module 'F4UT_RESULT_MAP'을
호출하여 source_tab에 히트 리스트에 출력하기 위해 만들었던 Internal Table을 할당한다.
할당 후 CALLCONTROL-STEP을 disp로 넘겨줘서 SELECT를 끝내고 DISP단계로 넘어가면서
Seacrh Help를 띄워주게 된다.
[ABAP] Search Help Exit 함수 만들기 - 1편 :: 학습 일지 (tistory.com)
CALLCONTROL-NO_MAXDISP의 기능은 INPUT AREA에 기본적으로 나오는
Maximum No. of Hits를 보여주냐 안보여주냐를 설정하는 기능이다.
CALLCONTROL-NO_MAXDISP = abap_true. 로 설정해주면
위에 빨간 박스된 Maximum No. Of Hits 가 사라진다.
원하지 않으면 위에 코드처럼 abap_true설정하여 삭제 하면 된다.
Search Help Exit 만들기 완료!
'SAP > ABAP' 카테고리의 다른 글
[ABAP] Search Help 초기 필드값 세팅 (0) | 2024.05.28 |
---|---|
[ABAP] Table 생성 (0) | 2024.05.25 |
[ABAP] Class Method 정리 (0) | 2024.05.23 |
[ABAP] Search Help Exit 함수 만들기 - 1편 (0) | 2024.05.22 |
[ABAP] Search Help 만들기 (0) | 2024.05.21 |