반응형

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

+ Recent posts