1 / 19

1. OVERVIEW

1. OVERVIEW. Chapter 12. SEARCH HELP. 1. OVERVIEW. ▲ 그림 1-1. SEARCH HELP. Search Help 는 입력도움 말로서 ABAP Dictionary 오브젝트이다 . Release 4.0 이후 부젼부터 사용되었으며 이전에는 Matchcode 라는 것이 사용되었다 . 사용자가 화면 필드에 값을 입력 하고자 할 때 , 입력 가능한 값의 LIST 를 보여주는 기능을 한다 .

nona
Download Presentation

1. OVERVIEW

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 1. OVERVIEW Chapter 12. SEARCH HELP 1. OVERVIEW ▲그림1-1. SEARCH HELP Search Help는 입력도움 말로서 ABAP Dictionary 오브젝트이다. Release 4.0 이후 부젼부터 사용되었으며 이전에는 Matchcode라는 것이 사용되었다. 사용자가 화면 필드에 값을 입력 하고자 할 때, 입력 가능한 값의 LIST를 보여주는 기능을 한다. 일반 유저는 다음과 같은 순서로 INPUT HELP(Search Help, 탐색 도움말)을 호출할 수 있다. 1. 사용자는 화면의 필드에서 입력 가능한 값이나 입력하고자 하는 값을 찾기 위해 ‘F4’를 누르거나 Possible entry 버튼을 클릭한다. 2. 시스템은 list의 적중률을 높이고 list 수를 제한하기 위해 조건 값의 입력을 요구한다. 3. 사용자는 조건 값을 입력하고 탐색을 수행한다. 4. 시스템은 조건에 해당하는 값을 list로 보여준다. 5. 사용자는 원하는 라인을 더블 클릭하거나 엔터를 입력하고, 선택된 값은 스크린의 필드에 적용된다. * STEP 2,3은 기본탐색도움말일 경우에는 생략된다. Possible Entry는 크게 3가지로 생성할 수 있다. • Search Help 추가 • 함수를 이용한 스크립트 추가 •도메인의 값 범위 참고사항 SEACH HELP를 선택하였을 경우 LINE의 각 필드가 화면의 필드명과 동일하면 선택한 LINE의 모든 필드 값이 화면에 입력된다.

  2. Structure of an Elementary Search Help  탐색도움말의 요소는 입력도움말의 표준 흐름을 정의 한다. 다음의 탐색도움말 흐름 Component를 정의 할 수 있다. •적중 LIST와 Value selection을 위한 dialog box는 어떠한 정보를 가지고 있을 것인가? •화면 필드에 값을 입력할 적중 리스트의 필드는 무엇으로 할 것인가? •입력 도움말을 실행하기 위한 dialog의 순서는 어떻게 할 것인가? ▲그림1-2. Database selection ▲그림1-3. IMPORT EXPORT PARAMETER 적중 LIST(HIT LIST)의 필드는 실행 시에 database select 의 조건으로 사용된다. 하나의 테이블에 모든 필요한 값이 존재할 경우에는 해당 테이블만 선택하면 된다. 그러나 Text 테이블이라도 링크를 걸어 보여 주고자 한다면 테이블 엔트리는 외부키로 연결되어 있어야 한다. Import and Export Parameters INPUT HELP가 호출될 때, 화면에 이미 입력된 값을 조건으로 하여 적중 리스트를 제한할 수 있다. [그림1-3]에서 사용자는 Carrier 필드에 ‘LH’를 입력하고 Flight Number의 Input help를 호출 하였을 때 Carrier ID에 해당하는 Flight number만 적중 리스트에 조회되도록 한다. 조회된 적중리스트 중 한 라인을 선택하게 되면 Departure city, Arrival city 정보까지 가지고 와 화면에 해당 필드가 존재하게 되면 보여지게 된다. 이때 SAP 매뉴얼에서는 Carrier 필드를 Context 필드라고 하며, 적중 리스트에서 선택된 line을 input template 라고 정의하고 있다. 탐색도움말의 interface는 INPUT HELP에 사용될 수 있는 Context data와 화면에 리턴 되는 input template를 정의 할 수 있다. 탐색도움말의 Parameter는 두 가지로 구분된다. •Import parameters : input template의 프로세스에 사용되는 context정보를 가지는 Parameter이다. •Export parameters : 적중 리스트에 보여지는 input template Parameter 이다.

  3. 2. SEARCH HELP 생성 1 1. SE11 ABAI Dictionary에서 SEARCH HELP 명을 입력하고 생성버튼을 클릭한다. Z 및 Y로 시작하는 시작하는 30자리 문자 이내의 이름을 지정하여야 한다. 2. 생성버튼을 클릭하면 탐색도움말 종류를 선택하는 창이 오픈된다. <Elementary Search Helps > - 기본 탐색 도움말 - 하나의 tab으로 구성됨 <Collective Search Helps> - 일괄 탐색 도움말 - 여러 개의 tab으로 구성됨 2-1.Elementary : 탐색도움말은 하나의 탐색 path를 이용한다. 2-2. Collective : 탐색 도움말은 여러 개의 Path를 가지고 있다. 사용자가 탐색도움말을 요청하면 탐색도움말은 사용자가 원하는 Path를 선택할 수 있도록 화면을 제공해준다. 2 2-1 2-2

  4. 3 3. 이후에 탐색도움말을 검색하기 쉽게 하기 위해 short text를 정의하여 입력한다. Definition tab 의 항목에 대해 설명한다. 아래 그림과 같이 입력한 후 활성화 버튼을 클릭하여 활성화 하면 ZQM_DRUM 이라는 탐색 도움말이 생성된다. 다이얼로그 유형 선택 테이블 데이터가 많을 경우는 일반적으로 'C'타입을 선택한다 search help를 오픈할 때, 이미 screen에 입력된 값으로 제한한다 일괄탐색도움말을 기본탐색도움말로 사용할 수 있도록 한다. 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다 export 받을 필드 ex) screen에 search help와 동일한 필드명이 있으면\ export 지정된 모든 필드의 값이 반환된다 Search help에 관련된 필드를 추가한다 Search-help list에 보일 필드 위치 순서 기본값 필드에 파라미터 ID 를 세팅할 수 있다. 리스트의 위치 순서

  5. SPOS, LPOS의 위치를 보여준다. SPOS LPOS

  6. 4 4. SEARCH HELP를 실행해보자. F8 입력하거나, 실행버튼을 클릭한다. 이것은 단순히 Search Help 테스트이며, 실제는 스크린의 필드에 링크 시켜야 한다. IMPORT 파라미터로 설정된 필드 DRUM, SERIAL은 Context 필드이다. 5. SERIAL 필드에 ‘001’을 입력하고 조회해 보자. 6. 일련번호가 001 인 값만 조회된 것을 확인 할 수 있다. 라인을 선택하여 더블 클릭하게 되면 INPUT 입력 필드에 선택된 정보들이 입력된 것을 확인 할 수 있다. 이렇게 화면의 필드 값이 리턴 되는 것이 EXPORT 파라미터라고 한다. 5 6

  7. 3. 기본탐색도움말 ▲그림3-1. Attaching Search Helps to Screen Fields  • 탐색도움말은 4가지 방법으로 필드에 추가 될 수 있다. • Attach the search help to a data element • Attach the search help to a check table • Attach the search help to a table field • Attach the search help to a screen field • 4가지 유형 중 SCREEN FIELD에 앞에서 생성한 탐색도움말을 추가하는 것을 학습하자. ▲그림3-2. Data element에 추가 ▲그림3-3. Table filed에 추가

  8. 1. 스크린 페인터를 실행하여 추가 하고자 하는 필드를 선택한다. 드럼번호 필드에 앞에서 생성한 SEARCH HELP를 추가하고자 한다. 2. 드럼번호 필드를 더블 클릭하면 필드 속성 창이 오픈된다. SEARCH HELP 필드에 ZQM_DRUM 탐색도움말을 입력한다. 탐색도움말 필드 이외의 속성은 모듈풀 단원을 참고하자. ※ 주의 할 점 현재 드럼번호의 필드명은 S_101-DRUM 이다. 이에 해당하는 탐색도움말의 필드명은 ZQMT0107-DRUM(테이블-필드) 이다. 스크린의 필드명과 탐색도움말의 필드명이 상이 할 경우에 탐색도움말을 조회하여 선택하게 되면EXPORT 파라미터로 선언된 첫 번째 값을 무조건 반환하게 된다. 만약 스크린의 드럼번호 필드명을 ZQMT0107-DRUM이라고 선언하면, 탐색도움말을 선택하게 되면 동일한 필드명이 리턴 된다. 또한 스크린에 ZQMT0107-SERIAL 이라는 필드가 존재하더라도 드럼번호 필드에 탐색도움말을 연결하여 선택하게 되더라도 ZQMT0107-SERIAL 화면 필드에 탐색도움말의 결과가 리턴 된다. 1 2

  9. 3. 프로그램을 실행하여 드럼번호 필드에 탐색도움말이 추가된 것을 확인하자. Possible Entry 버튼을 클릭하면 탐색도움말이 조회되는 것을 확인 할 수 있다. 드럼번호 필드를 선택하면, 드럼번호필드와 드럼번호seq필드까지 함께 화면필드에 나타내기 위해서 어떻게 할 것인가? 두가지 방법이 있다. 첫째, 테이블 필드에 serch help를 지정하고, screen에는 테이블 필드명과동일하게 선언 둘째, PROCESS ON VALUE-REQUEST. 에서 직접 코딩해주는 방법이 있다. 3 1 2

  10. 4. 탐색도움말 EXIT ▲그림4-1. 탐색 도움말 Exit 메커니즘 탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다. 탐색도움말 함수를 생성하여 이해를 돕자. 1 1. SE37 Function Builder에서 Z_QM_DRUM’ 함수를 입력하고 생성한다. Changing TAB에서 매개변수를 동일하게 입력한다. 2. TABLES TAB에서도 그림과 같이 동일하게 파라미터를 입력한다. 2

  11. function Z_QM_DRUM. *"---------------------------------------------------------------------- *"*"Local interface: *" TABLES *" SHLP_TAB TYPE SHLP_DESCR_TAB_T *" RECORD_TAB STRUCTURE SEAHLPRES *" CHANGING *" VALUE(SHLP) TYPE SHLP_DESCR_T *" VALUE(CALLCONTROL) LIKE DDSHF4CTRL STRUCTURE DDSHF4CTRL *" EXCEPTIONS *" INVALID_OBJECT *"---------------------------------------------------------------------- Loop at record_tab. concatenate record_tab-string 'TEST' into record_tab-string. modify record_tab. endloop. endfunction. 예제12-4-1 결과12-4-1 RECORD_TAB은 탐색도움말의 조회 결과가 STRING 형태로 저장된 테이블이며, 이 테이블의 값을 변경하면 탐색도움말의 결과를 변경할 수 있다. SHLP_TAB은 탐색도움말의 조건이다. 조건은 직접 테스트 해보기 바란다. 예제는 record_tab-string 에 ‘TEST’를 추가하여 변경하도록 하는 탐색도움말 함수이다. 탐색도움말이 추가된 화면의 필드에서 F4 기능을 조회해보자. 오더 필드에 TEST가 나오는 것을 확인 할 수 있다. 이외 부분들은 직접 디버깅하면서 충분히 응용 할 수 있을 거이다..

  12. 5. SEARCH HELP 함수 탐색도움말 함수를 참고하여 search_help의 조회조건 변경 및 조회결과 데이터를 변경 할 수 있다. 탐색도움말 함수를 생성하여 이해를 돕자. 모듈풀에 대한 이해가 필요하므로 해당 단원부터 참고하자 1. PROCESS ON VALUE-REQUEST 부문에 드럼번호 필드를 클릭하였을 경우 탐색도움말을 호출하는 코드를 삽입해보자. f4_drum_s101 더블 클릭하여 모듈을 생성한다. 스크린 페인터를 실행하여 이전에 추가한 탐색도움말은 삭제한다. 2. F4IF_FIELD_VALUE_REQUEST 함수를 이용하여 탐색도움말을 생성해준다. Search_help 파라미터를 설정하지 않으면, TABENAME = ZQMT0107에서 테이블의 DRUM 필드에 설정된 탐색도움말이 조회된다. 필드에 기본으로 지정된 탐색도움말을 사용하지 않으려면 탐색도움말 파라미터에 다른 탐색도움말을 입력하면 된다. Dynpnr 파라미터는 리턴 받을 화면 필드이다. 프로그램을 실행하면 [결과12-4-1]과 동일한 화면을 볼 수 있다. 예제12-5-1 module f4_drum_S101 input. DATA: l_form TYPE sy-xform VALUE 'F4_PRUEFLOS_CALLBACK_FORM'. CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' EXPORTING tabname = 'ZQMT0107' fieldname = ‘DRUM' * searchhelp = 'ZQM_DRUM' * shlpparam = 'DRUM' dynpprog = SY-REPID dynpnr = SY-DYNNR dynprofield = 'S_101-DRUM' callback_program = SY-REPID callback_form = l_form EXCEPTIONS OTHERS = 99. IF NOT sy-subrc IS INITIAL. ENDIF. endmodule. " f4_drum_S101 INPUT ENDIF.

  13. 예제12-5-2 MODULE f4_drum_s101 INPUT. DATA: l_form TYPE sy-xform VALUE 'F4_PRUEFLOS_CALLBACK_FORM', l_fname like dynpread-fieldname. DATA: lt_return TYPE STANDARD TABLE OF ddshretval with header line, scr_field LIKE dynpread OCCURS 0 WITH HEADER LINE. CALL FUNCTION 'F4IF_FIELD_VALUE_REQUEST' EXPORTING tabname = 'ZQMT0107' fieldname = 'DRUM' * searchhelp = 'ZQM_DRUM' * shlpparam = 'DRUM' dynpprog = sy-repid dynpnr = sy-dynnr * dynprofield = 'S_101-DRUM' callback_program = sy-repid callback_form = l_form TABLES return_tab = lt_return[] EXCEPTIONS OTHERS = 99. IF NOT sy-subrc IS INITIAL. ENDIF. REFRESH: scr_field. LOOP AT lt_return. concatenate 'S_101-' lt_return-fieldname INTO l_fname. scr_field-fieldname = l_fname. scr_field-fieldvalue = lt_return-fieldval. APPEND scr_field. ENDLOOP. CALL FUNCTION 'DYNP_VALUES_UPDATE' EXPORTING dyname = sy-cprog dynumb = sy-dynnr TABLES dynpfields = scr_field. IF sy-subrc <> 0. ENDIF. ENDMODULE. " f4_drum_S101 INPUT 함수를 이용한 탐색도움말에서 여러 개의 필드를 리턴 받고 싶을 경우가 발생할 수 있다. 이 경우에는 F4IF_FIELD_VALUE_REQUEST 함수에서 테이블을 선언하여 화면을 동적으로 변경하면 된다. (DYNP_VALUES_UPDATE)

  14. 결과12-5-2 프로그램을 실행한 결과이다. 디버깅 화면에서 LOOP AT lt_return ~ end loop. 구문에서 Scr_field 에 탐색도움말의 결과를 append 한다. Concate 구문은 화면의 필드명이 S_101로 시작하기 때문에 필드명을 동일하게 만드는 구문이다.

  15. SELECTION SCREEN 필드의 탐색도움말 실행 가능한 레포트 프로그램의 SELECTION SCREEN 필드에 POSSIBLE ENTRY를 추가 할 수 있다. DATA 유형(gp_zdata)의 필드의 탐색도움말을 실행한 화면이다. 위와 같은 기능을 추가하는 방법을 학습해보자. 예제12-5-3 ~ INITIALIZATION. AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_zdata. PERFORM pov_for_zdata. • FORM pov_for_zdata. • DATA: BEGIN OF lt_zdata OCCURS 0, • zdata TYPE zmmt0023-zdata, • END OF lt_zdata. • REFRESH: gt_dynpupdate, gt_dynpread, gt_rtntab. • SELECT DISTINCT zdata INTO TABLE lt_zdata • FROM zmmt0023 • WHERE zdata <> space. • CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' • EXPORTING • retfield = ‘GP_ZDATA' • dynpprog = sy-cprog • dynpnr = sy-dynnr • window_title = '공정코드 선택' • value_org = 'S' • TABLES • value_tab = lt_zdata • return_tab = gt_rtntab. • READ TABLE gt_rtntab INDEX 1. • gp_zdata = gt_rtntab-fieldval. • ENDFORM. " pov_for_zdata

  16. F4IF_INT_TABLE_VALUE_REQUEST 함수를 이용하여 인터널 테이블의 내용을 Possible Entry에 추가 한다. lt_zdata는 Possible Entry에 보여지게 될 인터널 테이블이며, GT_RTNTAB은 탐색도움말에서 선택한 line을 담게 되는 테이블이다. [예제12-5-4]와 같이 프로그램을 생성하여 테스트 해보자. 예제12-5-4 • REPORT z12_002 . • DATA: BEGIN OF gt_connid OCCURS 0, • connid TYPE sflight-connid, • END OF gt_connid. • DATA : gt_rtntab LIKE ddshretval OCCURS 0 WITH HEADER LINE. • DATA : gt_dynpread LIKE dynpread OCCURS 0 WITH HEADER LINE. • PARAMETERS: p_carrid LIKE sflight-carrid, • p_connid LIKE sflight-connid. • INITIALIZATION. • AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_connid. • CALL FUNCTION 'DYNP_VALUES_READ' • EXPORTING • dyname = sy-cprog • dynumb = sy-dynnr • request = 'A' • translate_to_upper = 'X' • TABLES • dynpfields = gt_dynpread. • READ TABLE gt_dynpread WITH KEY fieldname = 'P_CARRID'. • SELECT DISTINCT connid INTO TABLE gt_connid • FROM sflight • WHERE carrid = gt_dynpread-fieldvalue. • CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST' • EXPORTING • retfield = 'P_CONNID' • dynpprog = sy-cprog • dynpnr = sy-dynnr • window_title = 'CONNID' • value_org = 'S' • TABLES • value_tab = gt_connid • return_tab = gt_rtntab. • READ TABLE gt_rtntab INDEX 1. • p_connid = gt_rtntab-fieldval.

  17. 결과12-5-4 P_CARRID의 값에 해당하는 것만 테이블에서 조회하여 탐색도움말로 보여주는 코드이다. DYNP_VALUES_READ함수는 사용자가 화면에 ‘AZ’값을 입력하고 엔터를 입력하지 않아도 프로그램에서 변경된 값을 인식할 수 있도록 한다. P_CONNID 필드의 Possible entry 버튼을 클릭하였을 때 사용자가 엔터를 입력하지 않았을 경우에는 P_CARRID 파라미터는 변경된 ‘AZ’값이 할당되지 않은 상태이다. 이때 화면의 변경된 값을 읽을 수 있도록 DYNP_VALUES_READ 함수를 이용하여야 한다. 앞에서 살펴보았던 DYNP_VALUES_UPDATE 함수는 화면을 동적으로 변경 하는 기능을 한다. 예제와 같이 사용자가 입력된 값을 제한 값으로 하여 탐색도움말을 생성할 수 있다.

  18. 6. 일괄 탐색도움말 사용자들이 자주 사용하는 자재마스터(MM03)의 일괄 탐색도움말에 Search Path를 추가해보자. [그림6-1]은 자재마스터의 표준 일괄 탐색도움말이다. 이곳에 MATERAIL TEXT 라는 Search Path 를 추가하는 실습을 해보자. ▲그림6-1. 자재마스터 일괄 탐색도움말(Collective) 1 1. ZMTEXT 라는 기본탐색도움말(Elementary) 을 생성하자. 2. Selection Method 에는 자재마스터의 내역을 저장하고 있는 MAKT 테이블을 입력한다. 이 외 항목은 그림과 같이 입력한다. 활성화 버튼을 클릭한다. 2

  19. 3 3. 자재마스터의 탐색도움말인 MAT1_A 를 변경한다. 4. 로그온 언어 유지보수를 선택한다. 5. Included search help 탭에서 앞에서 생성한 ZMTEXT 탐색도움말을 삽입하고 활성화 한다. 6. 자재마스터 조회 트랜잭션 화면을 열어 탐색도움말 버튼을 클릭한다. 7. MTEXT 라는 Search Path가 추가되었음을 확인 할 수 있다. 4 5 6 7

More Related