반응형

ABAP 개발을 하다보면 Search help 기능을 많이 만들게 된다.

 

그때마다 자주 사용하는 CALL FUNCTION인 

 

'F4IF_FIELD_VALUE_REQUEST'

 

'F4IF_INT_TABLE_VALUE_REQUEST'

FUNCTION에 대해서 알아보고, 초기 필드값을 넘겨줘서 제한된 값을 얻는 방법에 대해서 알아보자.

 

'F4IF_FIELD_VALUE_REQUEST' 는 기본적으로 이렇게 구성된다.

 

tabname 테이블 또는 스트럭쳐 Name일 말한다. 

 

fieldname 해당 tabname에 필드 네임을 넣어준다.

 

위에 코드로 예시를 들면 T001이라는 테이블에 BUKRS(company code) 필드를 말한다.

 

searchhelp는 해당 search help 이름을 말한다.

 

 

 

SE11에서 Tabname 'T001'을 조회해보면 해당 테이블에 필드 BUKRS가 있고,

Input Help/Check tab에 Srch help에 C_T001이라는 Search Help가 연결된 것을 확인 할 수 있다.

 

이렇게 할당되어있는 경우에는 위에 Search Help값을 필드 BUKRS가 Search Help C_T001이 연결되어있기에 문제없이 호출이 된다.

 

Search help값을 주석하고 돌려도 이렇게 잘 되는 것을 알 수 있다.

 

searchhelp 값 주석 처리

 

Search Help 실행

 

하지만 Tabname에 특정 필드에 연결된 search help가 없을 경우엔 Search help를 넣어줌으로써 해당search help를 불러온다.

 

Search help를 직접 할당한 경우엔 fieldname, tabname 아무 값이나 넣고 돌려도 C_T001이 열린다.

 

대신 tabname과 fieldname은 필수로 exporting해줘야 하는 값이기에 삭제하면 Dump에러가 발생한다.

 

tabname / fieldname 아무렇게나 설정

 

Search Help 실행

 

shlpparam은 Search Help에서 값을 가져올 Field 이름이다.

위에서는 BUKRS를 넣어줬으니 Bukrs값을 가져온다는 의미이다.

해당 C_T00l1은 BUKRS만 구성되어있지만,

 

아래 서치헬프 H_T002은 SPRAS, SPTXT값을 가져올 수 있다.

Search Help 'H_T002' 정보

 

 

dynprog Exporting 파라미터를 보낼 프로그램

 

dynnpr exporting 파라미터를 보낼 프로그램의 Screen 번호

 

dynprofiled exporting 파라미터를 내보낼 필드로 보시면 된다.

 

말그대로 dynamic하게 반영해주기 때문에 아주 편하고 유용하게 사용된다.

 

자 그럼 초기 필드값의 세팅하는 방법에 대해서 알아보자.

 

Exporting 에 callback_program과 callback_form을 넣어주면 됩니다.

 

callback_program 은 Search Help 실행 전 Perform문을 부를 프로그램 정보

 

callback_form은 callback_program에 있는 Perform문의 이름을 가리킨다.

 

 

그러면 sy-repid(현재 프로그램)에 CALL_BACK_BUKRS 퍼폼문을 부른다는 의미이기에 다음과 같이 해당 프로그램에 Perform문을 작성해준다.

 

이부분은 Exit을 이용한 Search Help를 만들때와 같은 방법으로 selopt을 설정하여 파라미터를 넘겨주는 것과 같다.

 

BUKRS필드에 '맛있닭'이라는 초기값을 세팅해서 F4(search help)를 사용해보면 다음과 같은 결과가나온다.

 

자 그러면 2번째로 많이 쓰이는 FUNCTION인 'F4IF_INT_TABLE_VALUE_REQUEST'와 비교해보자.

 

Function 이름에서 부터 Internal table을 가지고 search help할 것이라는 느낌을 받을 수 있듯이

위와 같이 search help할 테이블을 인터널 테이블로 구성하고 TABLES에 해당 인터널테이블을 보내

Search Help를 만들어 주는것으로 보면 된다.

 

특정 테이블의 필드와 매칭된 search help 나 혹은 만들어진 search help가 아니라 커스텀한 테이블을 가지고 search help를 구성할 때 사용한다고 생각하면 될 것 같다.

 

retfield는 internal table에서 구성된 어떤 필드를 exporting 할 파라미터인지를 정해주는 것으로 보면 된다.

 

초기 필드값 세팅하는 방법은 위의 방법과 같이 callback_program 과 callback_form을 지정해주고

Perform문을 만들어 주기만 하면 끝.

 

하지만 위에 설명한 CALL BACK FORM에서 다른점은 다음과 같다.

 

해당 펑션은 internal table로 받아오기 때문에, F4 실행전 수행하는 Form문에서는 

어떤 필드에 초기값을 넣어줘야할지 인식을 못한다.

 

첫번째 값이면 'F0001' 두번째면 'F0002' ~ 이런식으로 넣어주면 된다.

 

위의 코드를 보면 3번째 필드에 초기값을 세팅하는 것이라고 보면 된다.

 

 

User 필드에 세팅하고 싶다면 

ls_selopt-shlpfield = 'F0001'로 설정하면 User필드에 값이 들어 간다.

 

기존의 Search Help가 대량의 데이터거나 internal table이 대령 데이터일 경우

 

초기값을 세팅하여 초기값으로 제한된 Hit List를 띄어 선택할 수 있게 할 수 있어서

 

F4를 눌렀을 떄 시간을 단축시킬 수 있어 프로그램이 훨씬 깔끔해지는 장점이 생긴다.

 

반응형

'SAP > ABAP' 카테고리의 다른 글

[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] ALV Class - Method 1편  (1) 2024.06.04
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Class Method 정리  (0) 2024.05.23
[ABAP] Search Help Exit 함수 만들기 - 2편  (0) 2024.05.22
반응형

 

먼저, Search Help EXP 파라미터를 기준으로 RECORD TAB에 담겨줄 DATA를 선언한다.

 

그리고 IMP 파라미터 값을 가져오기 위해서는 RANGES 변수로 선언한다.

Data 타입 선언

 

Elementary Search Help를 만들기 때문에 다음과 같이

Step이 SELECT와 DISP가 아니면 EXIT. 처리를 하여 속도 향상하는 코드를 넣어줌.

단계 설정

 

EXIT인 순간 그 단계는 종료되고 다음 단계로 넘어간다.

즉, SELONE / PRESEL은 바로 Skip하고 바로 SELECT 나 DISP단계로 진행

 

 

SELECT단계에서는 먼저 IMP 파라미터 값을 RANGES변수에 넣어줍니다.

RANGES로 넣어주는 이유는 Search Help에서 Multi Select를 해서 검색할 때

SELECT문에서 IN을 이용해서 다중 검색을 하기 위해

 

import 파라미터 설정

 

shlp-selopt에 어떤값이 들어오는지 확인하기 위해 

 

KUNNR 필드에 'A30'을 넣고 Debugging을 태워보면 다음과 같은 결과를 얻을 수 있다.

 

Search Help의 이름과 입력한 Input 파라미터 필드이름 그리고 Ranges 변수로

Sign = I / Option = EQ / LOW(값) = A30 이 들어온다.

여러개 선택해서 넣으면 SHLP-SELOPT의 Row가 넣은만큼 들어온다.

LOOP를 통하여 이 값을 선언한 RANGES변수에 넣어준다.

 

변수가 비어있으면 Error Message를 띄우려면 다음과 같이 하면 된다.

Error 처리 방법

 

빈값이면 검색안되는 Error Message를 만들었는데,

 

CALLCONTROL-STEP을 EXIT단계로 안바꿔 주고 EXIT.을 하면

 

현재 단계인 SELECT단계에서 다음단계인 DISP로 변경되면서 종료가 바로 되지 않는다.

 

EXIT단계로 강제 이동 후 EXIT을 해줘야 바로 Search Help가 종료된다.

 

IMP 파라미터를 가지고 SELECT문을 이제 사용자화 하는 코드를 작성해준다.

Search Help 띄워줄 Select 쿼리문

 

받은 파라미터들을 Where절에 IN으로 해주고 추가로 더 필요한 정보들은 Where절에 추가해서

Search Help에 띄워줄 데이터를 가공하면 된다.

 최대 999건 조회되도록 하기 위해 UP To 999 Rows. 구문을 사용했다.

 

SELECT가 완료되면 1편에서 설명했던 스탠다드 Function Module 'F4UT_RESULT_MAP'을

호출하여 source_tab에 히트 리스트에 출력하기 위해 만들었던 Internal Table을 할당한다.

F4UT_RESULTS_MAP 사용방법

 

할당 후 CALLCONTROL-STEP을 disp로 넘겨줘서 SELECT를 끝내고 DISP단계로 넘어가면서

Seacrh Help를 띄워주게 된다.

 

[ABAP] Search Help Exit 함수 만들기 - 1편 :: 학습 일지 (tistory.com)

 

CALLCONTROL-NO_MAXDISP의 기능은 INPUT AREA에 기본적으로 나오는

Maximum No. of Hits를 보여주냐 안보여주냐를 설정하는 기능이다.

Search Help input Area 화면

 

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
반응형

 

Exit 함수를 이용하여 사용자가 생성한 데이터를 보여주는 Search Help를 만드는 방법

 

Naming룰은 기본적으로 Search Help 이름_Exit으로 작성 se80 or se37에서 Function Module 생성

Search Help Exit 함수 만드는 창

 

 Exit Function Module은 Chaning 파라미터 2개와 Table 파라미터 2개를 필수로 입력해야 한다.

Changing Parameter

 

SHLP_DESCR 은 Description of Search Help을 나타내는 Structure

 

DDSHF4CTRL은 Control Structure for F4 Process with Search Help Exit로 Search Help를 컨트롤하는 Structure

 

Tables Parameter

 

SHLP_DESCT라는 Table을 참조하는데 이 Table은 위에 Chainging의 SHLP_DESCR 스트럭쳐로 구성되어 있는 테이블

 

SEAHLPRES는 Search help result structure를 나타내는 하나의 테이블

 

4개 파라미터는 이름까지 스탠다드와 동일하게 설정을 해주어야 한다 다르면 Error 발생

 

Search Help가 작동하게 되면 위에 Chaning parameter에 넣어둔  시스템 스트럭처인

 

CALLCONTROL의 STEP(현재 단계)를 할당.

 

또한, 코드를 작성할때 CALLCONTROL-STEP에 원하는 단계를 할당하면 단계를 건너뛰고 해당단계로 넘어갈 수 있음.

 

CALLCONTROL-STEP 단계는 SELONE → PRESEL → SELECT → DISP → RETURN → EXIT 순서로 진행

 

1. SELONE

Collective Seacrh Help에서만 호출 됨.

Elementary Search Help에서도 호출은 돼어 CALLCONTROL-STEP에 담기지만

이 단계에서는 다른 단계로 건너뛰지 않는다면 바로 다음단계로 넘어가게 된다.

Elementary Search Help를 주로 만들고 다루기 때문에 잘 사용은 안함.

 

2. PRESEL

SELECT단계 바로 직전 단계로 Function Module을 이용하여 시스팀 Structure인

SHLP의 컴포넌트 SELOPT를 수정한다.

 

SHLP_DESCR의 SELOPT이 Table형태로 들어가 있다.

반응형

SELECT 단계에서 SHLP-INTDESCR 이용하여 Field text 명을 변경할 있다.

SELECT 단계에서 필드값 설정

 

SHLP-INTDESCR-TITLE 상단에서 변경해주면 Search Help Title 설정이 가능하다.

Search Help의 Title 설정방법

 

3. SELECT

Hit List를 구성할 데이터를 Select하는 단계로function module 'F4UT_RESULTS_MAP' 을 이용하여

RECORD_TAP에 데이터를 받습니다.

 

F4UT_RESULTS_MAP Function

 

4. DISP

Disp는 말그대로 Search Help에 Hit List가 표시되는 단계입니다.

 

 

5. RETURN

Return단계는 Hit List의 값을 스크린으로 전달합니다.

 

 

6. EXIT

EXIT단계는 Search Help를 닫는 단계입니다.

 

 

다음편엔 Search Help 페이지에서 만든 Input Area를 받아와서 SELECT를 수정하여 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 함수 만들기 - 2편  (0) 2024.05.22
[ABAP] Search Help 만들기  (0) 2024.05.21
반응형
반응형

Search Help 만드는 법 기록.

 

1. T-code : SE11

SE11 화면에서 Search Help 선택
Create 버튼 후 이름 설정 ( Z or Y ) 시작.
Search Help 만드는 화면창

 

1. Search Help의 종류

 

2. Search Help에 대한 Description (필수)

 

3. Search Help를 만들 데이터를 가져오는 원천으로 Table 또는 View가 가능.

    그 아래 Text table은  Selection method의 Text테이블이 존재하면 자동으로 가져옴.

 

4. Search help 화면을 어떻게 띄울지에 대한 선택값.

 

Dialog with value restriction  : 사용자로부터 값을 입력받아야만 리스트가 조회되는 Search Help

Display values immediately   : 즉시 리스트 조회되는 Search Help

Dialog depends in set values : 리스트 기준 100개 이상이면 Dialog with value restriction를 100개 미만이면 Display

                                                     values immediately 방식으로 조회되는 Search Help

 

5. Search help exit : Function Modules을 등록하여 개발자가 코딩을 하여 select하는 것을 제어할 때 사용

 

6. Search Help를 불러올때 화면에 보이는 값을 입력하는 곳

 

6번에 대한 Parameter 입력하는 곳

 

각 필드으 대한 설명은 다음과 같다.

 

IMP (Import)  : Search Help를 조회하기 전 Input값을 받는 파라미터

EXP (Export)  : Search Help가 조회된 후 화면에 보여주는 파라미터

LPos               : 화면에 나타나는 필드의 순서를 설정

SPos               : Input값 필드의 순서를 설정

SDis                : 활성화 / 비활성화 설정

Modified         : 체크하면 현재 제시된 Data Element를 다른것으로 변경할 필요 있을 때 사용.

Default Value : Input 필드값 초기설정 혹은 즉시 보여주는 Search Help일 경우 그 값으로 조회

 

위에 입력값에 대한 화면 (SPos 순서대로 Input 필드의 순서가 설정된다. )

 

Customer에 *를 넣고 화면을 조회 해보면,

 

조회하면 다음과 같이 LPos와 같은 순서로 필드값이 나타나고 Tax Number는

 

Exp에 체크를 해제했기 때문에 Search Help 조회 후에는 등장하지 않는다.

 

위에 조건 값에 대한 Seach Help 화면

 

다음과 같이 Parameter 값에서 Biz Site와 Legal Entity의 SDis를 체크한다면

SDis 체크
Legal Entity와 Biz Site가 비활성화 된 것을 확인

 

 

이번엔 Default Value를 설정하여 Input Field 값이 반영 되는지 확인 해보자.

KUNNR 필드에 'A30' 디폴트 값 설정

 

Customer 필드에 디폴트 값이 반영되어 Search Help가 켜진다.

 

위에서 설명했던 4번 Dialog Type을 Display with value immediatley로 변경을 해보자.

Dialog Type 변경

 

결과

 

Search Help를 열어보면 위에 처럼 Input Field가 등장하는게 아니라

 

다음과 같이 KNA1 Table에 있는 데이터를 가져와서 필드값을 바로 보여준다.

 

이렇게 Search Help 만드는 방법에 대해 알아봤다.

반응형

'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 함수 만들기 - 2편  (0) 2024.05.22
[ABAP] Search Help Exit 함수 만들기 - 1편  (0) 2024.05.22

+ Recent posts