반응형

SAP에서 프로그램을 개발할 때 가장 많이 쓰는 ALV Class 에대해서 알아보자.

 

SAP에서 제공하는 ALV Class는 바로 CL_GUI_ALV_GRID .

 

ALV란 Report 프로그램에서 데이터를 조회하거나 조회된 데이터를 가공하는데 사용되는 

ABAP List Viewer.

 

아래 그림과 같이 하나의 테이블로 구성되어 화면에 나타나는 것을 ALV라고 한다.

ALV 화면

 

기본적으로 ALV Class인 CL_GUI_ALV_GRID 클래스를 사용하기 위해서는 

 

하기와 같이 DATA 타입을 선언이 필요하다. 

 

Data 타입 선언 후 생성

 

인라인 방법으로는 다음과 같다.

Inline 선언 (New Syntax)

 

container_name에는 스크린의 Custom Control Name에 넣어준 이름을 넣어주시면 됩니다.

 

그러면 CL_GUI_ALV_GIRD에서 자주 사용하는 메서드를 알아보자.

 

1. GET_SELECTED_ROWS

 

ALV에 선택된 행에 대한 정보를 받아오는 Method다.

.

 

해당 Method는 CL_GUI_ALV_GRID 를 참조하는 객체를 생성한 go_alv를 이용하여 호출.

 

'BACK' (뒤로가기) 버튼을 눌렀을 때 선택된 라인에 대한 정보를 얻기위해 아래와 같이 코드를 작성 후

 

디버깅을 위한 User command에 코드 작성

 

디버깅을 걸고 2개 선택을 한 후 lt_rows에 어떤 정보가 오는지 확인해보겠습니다.

2라인 선택 후 'BACK' 버튼 실행

 

하기와 같이 2번째와 4번째 선택된 행의 Index 정보를 얻을 수 있습니다.

해당 기능을 통해 Add버튼 혹은 Del 버튼 등 로직을 작성하는데 사용할 수 있습니다.

 

2. GET_CURRENT_CELL.

 

AVL에서 커서가 놓은 위치의 값과 속성들을 반환하는 메소드입니다.

 

호출 방법은 동일

 

해당 메소드는 2개의 라인과 컬럼의 인덱스 번호를 반환한다.

 

하나는 현재 선택된 셀의 라인과 컬럼을 반환하고 

 

다른 하나는 필터링을 통해 설정하거나 숨기기 했을 때 실제로 보이는 값과

 

인터널 데이블의 순서가 다르기 때문에 인터널 테이블의 라인과 칼럼을 반환한다.

 

 

다음과 같이 ALV에서 Over Days 컬럽에 5번째 라인 30을 선택하고 디버깅을 진행해보면

특정 셀 선택 후 실행

 

해당 셀에 몇번째 컬럼인지 , 라인의 인덱스 정보, 값 등 선택된 행에 대한 정보를 얻을 수 있다. 

해당 셀에 대한 세부 정보

 

3. CHECK_CHANGED_DATA.

 

ALV 내에서 변경된 데이터를 확인하는 Method입니다.

동일 방법으로 'BACK'시 디버깅을 위해 해당 위치에 코드 작성

 

위에서 확인했던 Over Days 30의 값을 40으로 변경해서 디버깅 진행해보겠습니다.

 

그러면 lv_valid 값이 변경되어서 'X'를 받아옵니다.

 

만약 alv에 아무것도 변경하지 않았다면 lv_valid 값은 빈값으로 반환 .

 

해당 기능을 이용하여 alv에 변경사항이 있을 시 언급해주는 로직을 작성 가능.

 

4. REFRESH_TABLE_DISPLAY

 

조회된 화면에 ALV 인터널 테이블을 다시 조회할 때 사용하는 메소드로,

 

데이터가 변경되거나 SELECT문을 다시 수행할 때 새로고침 해주는 메소드

 

해당 메소드는 아래와 같은 방법으로 호출 할 수 있다.

 

is_stable : 라인의 컬럼 위치를 기억하여 재조회 하고 이전의 위치에 화면을 보이게 하는 역할.

 

i_soft_refresh : 'X'를 주었을 때 sort, filter, sum 등 현재 alv의 layout 세팅을 그대로 유지한 상태로 refresh 진행.

 

i_soft_refresh에 빈값을 넣으면 alv sort등이 유지가 안되어 원하는 위치에 라인을 추가할 경우 

 

원하는 위치에 반영이 되지않을 수 있으니 참고하세요.

반응형

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

[ABAP] ALV Grid Event Handler - 2편  (0) 2024.06.11
[ABAP] ALV Grid Event Handler - 1편  (0) 2024.06.10
[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Class Method 정리  (0) 2024.05.23
반응형

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

먼저 ABAP Table을 만들기 위해서는 

 

T-Code : SE11로 들어간다.

 

SE11 에서 Table 만드는 방법

 

Database table에 Table이름을 입력하고 Create 버튼을 누르면 Table 생성 화면으로 넘어간다.

 

먼저 Delivery Class를 설정해야 하는데, 

Delivery Class란 테이블 데이터의 전송 제어를 위한 세팅 이다.

Delivery Class 종류

 

들어갈 수 있는 값으로는 A,C,L,G,E,S,W 이렇게 7가지가 있는데, 

설명 읽어봐도 알 수 있듯이 일반 사용자가 사용할 수 있는 케이스는 A와 C입니다.

 

A : 각 시스템에서 데이터를 직접 제어하는 경우로 일반적으로 사용되는 Customer Table.

C : 데이터를 CTS가능하게 하여 개발, QA, 운영 등 동일한 데이터를 가져야 할 때 사용하는 Customer Table.

 

일반적으로 A를 선택하고 넘어가시면 됩니다.

 

Data Browser / Table view Editing

 

테이블의 데이터를 유지보수 툴 이용 접근 허용 여부를 선택해주는 것이다.

 

Display/Maintenance Allowed with Restrictions : 제한적으로 Display와 Maintenance 를 허용하는 것

                                                                                   허용되는 T-code는 SE16과 SE54 이며 / 데이터 수정 및 SM30은 불가

 

Dsiplay/Maintenance Allowed :  모든 기능을 허용한다. 이 설정이 되어있으면 SE16N에서 데이터 수정이 가능하다.

 

Display/Maintenance Not Allowed : 모든 기능을 허용 하지 않는다.

 

Only display allowed : Display 접근만 가능.

 

보통 개발중엔 Allowed로 하고 나중에 Restiction으로 바꿔서 허용하는 경우가 많다.

 

Fileds 탭

 

Fields Tab에서는 테이블에 들어갈 필드와 타입을 설정해주는 곳이다.

이미 정의되어있는 Data element를 넣어주고 엔터를 눌러주면 데이터 타입이 들어간다.

 

또한, 키를 설정하고 싶으면 key부분에 체크박스를 하여 선택해주면 테이블의 키값이 된다.

Remark 같은 data타입 없이 직접 타입을 주고싶으면 Built-In Type 버튼을 눌르면 입력이 가능하다.

Built-In Type 버튼 눌렀을 때

 

Built-In Type 버튼을 누르면 Data Element로 설정된 부분은 수정불가로 변하고

Data Type을 입력할 수 있는 필드들은 수정이 가능하도록 바뀐 것을 볼 수 있다.

 

또한, 해당 필드에 Search Help를 연동 시키고 싶으면 아래와 같이 필드를 선택하고

Search Help 버튼을 눌러서 Search Help 이름을 반영해 주면 된다.

Search Help 버튼 클릭

 

그다음 만들 때마다 세팅을 어떻게 줘야 할지 모르는 기술적 세팅(Technical Settings) 을 해야한다.

Technical Settings 버튼

Technical Setting이란 테이블의 범주, Size 세팅,

버퍼사용여부, DB Log를 쌓을지 여부 세팅하는 곳이다.

 

Data Class는 필수 선택이다.

 

먼저 필수 항목인 Data Class를 알아보자.

Data Class 에 들어갈 수 있는 값

 

Data Class : 데이터의 건수가 변경이 얼마나 자주 일어나는지에 따라 물리적 영역 정의다.

-. APPL0 (Master Data) : 거의 변경이 되지 않는 데이터 (ex 주소 )

-. APPL1 (Transaction Data) : 변경이 자주 되는 데이터 (ex 거래 )

-. APPL2 (Organization data) : 변경이 없는 데이터        (ex 국가 )

 

해당 테이블의 성격에 따라 위 3가지 중 하나를 선택하면 된다. 

보통 개발 할때 APPL0과 APPL1을 많이 사용하게 된다.

 

다음은 Data Class 아래있는 항목인 Size Category는 말 그대로 저장가능한 데이터 건수를

지정하여 공간을 얼마나 가져갈지 계산한다.

넉넉하게 설정하되 너무 크게 잡아 데이터베이스 공간 낭비가 너무 되지 않도록 사이즈를 정한다.

 

Table 의 Data Size 설정

 

다음은 Buffering 설정을 해야한다.

다음은 Buffering 설정을 해야한다.

Buffering 선택 리스트

 

Buffering Not Allowed : 버퍼를 비활성화. ( 트랜젝션이 많이 안일어나는 테이블 일경우 선택 )

Buffering allowed but switched off : 트랜젝션 상황에 따라 버퍼를 활성화/비활성화 한다. 

Buffering Activated : 버퍼 활성화 ( 데이터에 접근이 많은 경우 선택 ) 

 

주로 CBO테이블일 경우 데이터 접근이 많지 않기에 메모리 영역을 확보하여

Performance를 고려하는 방법으로 버퍼를 허용안하고 만드는 경우가 많습니다.

 

Buffering Type 설정은 버퍼를 사용할 경우 선택하는 케이스로

Not Allowed 선택 했을 시 체크할 필요 없습니다.

 

Buffering Type 설정

 

Single records buffered 는 말그대로 1개 를 버퍼에 저장한다는 것입니다.

예를들어 select single * from ytest_t001 where belnr = '450000001' 이런 식으로 했을 때 1개의 데이터를 버퍼에 저장.

 

Generic Area Buffered는 Key값 기준 일치하는 데이터 모두 버퍼링.

Fully Buffered는 모든 레코드를 버퍼링 한다는 의미입니다.

 

DB Log 설정

 

Log data Changed 는 Delete Update의 DB Log를 쌓을지의 여부 세팅 값입니다.

 

이렇게 테이블 생성 하는 법을 알아봤는데,

개발 할 때 기술적 세팅은 Delivery Class와 Size 세팅만하고

나머지 세팅은 건드는 일이 없을 확률이 큽니다.

 

Table 세팅하는 방법에 대해서 알아봤습니다.

반응형
반응형

 

Class 내부에 Method를 만들어보고 Attribute와 Method의 Parameter가 어떠한 차이가 있는지 확인.

 

클래스 생성 화면

 

 클래스 생성에서 Attribute에 Method Variable인 MV_NUM를 Static Attribute / Public 을 설정해서 저장

 

Level 이란 클래스가 해당 요소를 사용하기 위한 주체가 될 수 있는지 결정

Level 설정 하는 화면

 

Level에는 Instance Atrribute와 Static Attribute그리고 Constant 값을 가질 수 있다.

 

1. Instace Atrribute : 클래스를 이용하여 인스턴스화한 객체마다 부여되는 속성으로 보면된다.

 

2. Static Attribute : 클래스 자체 속성으로 클래스를 이용하여 인스턴스화한 객체에 상속되는 속성.

                                 즉, 해당 클래스로 인스턴스화된 객체들은 Static 속성의 값이 같다.

 

3. Constant : 특정 변수를 고정시켜서 그 값을 사용할 수 있다. (Attribute 에만 존재하고 Method는 존재하지 않음)

 

Visibility 설정 하는 화면

 

Visibility는 보안 수위를 설정하는 기능으로 Public과 Protected 그리고 Private 값이 들어올 수 있다.

 

1. Public : 클래스 외부에서도 접근 가능으로 클래스를 호출해 사용하는 프로그램 등 에서 어디서든 접근 할 수 있고, 자식 클래스에 상속이 된다.

 

2. Protected : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속된다

 

3. Private : 클래스 내부에서만 접근 가능으로 클래스 관리 툴에서만 접근할 수 있고, 자식 클래스에 상속되지 않는다.

 

Method 입력 Tab

 

 Methods에 2개 Method를 작성합니다. 1개는 변수2개를 받아 서로 빼는 method고

다른 1개는 변수 1개를 받아 제곱하는 method를 만들어 보자.

 

위에 그림에서 method를 마우스로 클릭하고 Parameters 버튼을 클릭하면 다음과 같이 변수 입력하는 창이 나옵니다.

 

Method에 Import, Export 파라미터 설정 화면

 

 Method 2개에 importing 변수와 exporting 변수를 입력해주고  Sourcecode 버튼을 눌러 코드를 작성하면 된다.

 

GET_MINUS / GET_SQUARE Method 코드

 

 

Sourcecode를 다음과 같이 작성하고 프로그램에서 Method를 어떻게 호출하여 사용하는지와

Class의 Attribute에 작성된 MV_NUM의 값이 어떻게 되는지 추적 해본다.

 

 

같은 프로그램내에서 방금만든 클래스의 Method를 호출

디버깅 화면

 

기본적으로 Method를 호출하는 방법은

CALL METHOD class=>method명 으로 사용하면 된다.

 

 동적으로 Method를 호출하여 사용가능하며 동적 호출은

class=>method명( f ) 로 사용하면 되고 dynamic 기호인 ( )를 꼭 사용해야 된다.

 

지금 만든 GET_MINUS 나 GET_SQUARE는 Static method이기 때문에 => 이 기호를 사용하지만

Instance method는 클래스를 인스턴스화하여 사용하기 때문에 -> 이 기호를 사용해야 한다.

 

 

그러면 위에 작성한 코드에서 Method변수와 Attribute (MV_NUM)이 어떻게 되는지 디버깅타면서 알아보자.

 

GET_MINUS Method 내부

 

GET_MINUS method를 타고 Importing 값과 Exporting값이 적용되었고 MV_NUM은 91로 저장되었다.

 

GET_MINUS Method 나온 후

 

GET_SQUARE method로 들어가기 전에 exporting 값이 lv_result에 할당이 되었고,

이제 get_square method에 들어갔을 때 MV_NUM은 어떤지 보자.

 

GET_SQUARE Method 내부

 

ET_SQUARE Method에 들어갔을 때 lv_num1,lv_num2,ev_result 값은 리셋으로 시작되지만

Class Attribute의 값(MV_NUM)은 GET_MINUS에서 얻은 값인 91로 그대로 유지되고 있다.

 

다음 단계로 넘어가면 LV_NUM2 = 91 - 25 = 66으로 적용되고

그 후 다시 MV_NUM의 값을 LV_NUM2로 바꾸면 MV_NUM의 값은 66으로 고정된다.

 

 

Method의 변수로 등록하는 것은 Method가 실행될때마다 리셋되지만,

 

Class Attribute에 넣어준 속성 값들은 프로그램내에서 계속 유지되어 있어 언제든지 Method를 통해 값을 가공하여 원하는 값을 얻을 수 있다.

 

Attribute에는 변수 뿐만 아니라 인터널 테이블 MT_XXX / 스트럭쳐 MS_XXX 식으로

 

Naming Rule에 어긋나지않게 작성 후 받아서 가공할 수 있다.

반응형

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

[ABAP] Search Help 초기 필드값 세팅  (0) 2024.05.28
[ABAP] Table 생성  (0) 2024.05.25
[ABAP] Search Help Exit 함수 만들기 - 2편  (0) 2024.05.22
[ABAP] Search Help Exit 함수 만들기 - 1편  (0) 2024.05.22
[ABAP] Search Help 만들기  (0) 2024.05.21
반응형

 

먼저, 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