콘텐츠로 이동

F4_HNADL_SH

목적

ABAP DICITIONARY에서 생성된 Search help를 별도의 변경 없이 재사용하여 해당 기능을 구현하는 방법을 설명


주요 단계

1. SEARCH HELP UI 설정

o INPUT FIELD 를 이용하여 SEARCH HELP를 설정하는 방법을 설명

이미지

<사진 1> SEARCH HELP UI 구성 예시

2. SEARCH HELP LAYOUT 및 필드 옵션 설정

o SEARCH HELP LAYOUT 구성 및 FIELD OPTION 설정

o ABAP SOURCE CODE 예시 (EV_F4_SH_OPEN)

METHOD EV_F4_SH_OPEN.

      DATA: LV_INDEX TYPE I.
      DATA: LS_LAYO  TYPE /U4A/CL_F4_HNADL=>GTY_F4_CONFIG.
      DATA: LS_INFO  TYPE /U4A/S9997.
  *-----------------------------------------------------------

      "Search Help layout
      LS_LAYO-MAXHITS     = 450.                  " 조건 MAX HIT
      LS_LAYO-AUTO_SEARCH = ABAP_FALSE  . " 초기 팝업 OPEN 자동 조회
      LS_LAYO-WIDTH       = '1000px'.            " F4 팝업 넓이
      LS_LAYO-HEIGHT      = '800px'.               " F4 팝업 높이
      LS_LAYO-SELMULT     = ABAP_FALSE.     " 선택 멀티 여부 (예:X)
      LS_LAYO-STYLECLASS  = ''.                    " CSS Class
      LS_LAYO-DRAGGABLE   = ABAP_TRUE.    " 팝업 Draggable
      " 필드 정보 탭(LS_LAYO-FIELD_INFO)
      LS_INFO-SHLPNAME    = 'MAT0M'.             " Search Help 명
      LS_INFO-SHLPFIELD   = 'MATNR'.        " Search Help 필드명
      LS_INFO-INITVALUE   = '1234'.           " 필드 초기값
      LS_INFO-PLACEHOLDER = 'Material Number'.  " Place Holder 값
      LS_INFO-WIDTH       = '300px'.                  " 필드 넓이
      LS_INFO-DISPLAY     = ABAP_FALSE.             " 필드 EDIT 가능 여부

      APPEND LS_INFO TO LS_LAYO-FILED_INFO.

ENDMETHOD.

2.1. SEARCH HELP LAYOUT 설정 필드

Name Description
MAXHITS 검색 결과 조회 시 최대 건수
AUTO_SEARCH SEARCH HELP DIALOG OPEN 시 자동 검색 여부
WIDTH SEARCH HELP DIALOG 가로 크기
HEIGHT SEARCH HELP DIALOG 세로 크기
SELMULT 검색 결과 다중 선택 여부
STYLECLASS CSS 스타일 클래스 설정
DRAGGABLE SEARCH HELP DIALOG 이동 가능 여부
FILED_INFO 조회 조건 필드 옵션 설정

2.2. 검색 조건 FIELD OPTION 설정

Name Description
SHLPNAME SEARCH HELP 명칭
SHLPFIELD 옵션 변경 필드 명칭
INITVALUE 초기값 설정
PLACEHOLDER PLACEHOLDER 값 설정
WIDTH 필드 가로 크기
DISPLAY 필드 편집 가능 여부

3. SEARCH HELP DIALOG 화면

o SEARCH HELP DIALOG 실행 예시 제공

이미지

<사진 2> 서치헬프 구성 화면


4. 선택한 ROW의 값을 이용한 CALL BACK METHOD 설정

4.1. CALL BACK METHOD는 ADD EVENT METHOD 버튼을 통해 생성

4.2. ABAP SOURCE CODE 예시 (EV_F4_SH_OPEN)

" GET INDEX
      CALL METHOD /U4A/CL_UTILITIES=>GET_SELECTED_INDEX
        EXPORTING
          I_EVENT_NAME = I_EVENT_NAME
        IMPORTING
          E_INDEX      = LV_INDEX.

      " Search Help Open
      CALL METHOD /U4A/CL_F4_HNADL=>F4_SEARCH_HELP
        EXPORTING
          IO_VIEW         = ME->/U4A/IF_SERVER~AR_VIEW
          I_SHLPNAME    = 'MAT0M'          " Search Help 명
          I_ROW            = LV_INDEX            " 선택한 ROW
          I_SEVENT_NAME = 'EV_F4_SH_SELECT' " Callback Method
          IS_LAYO_CONF  = LS_LAYO.         " Search Help Layout 옵션

ENDMETHOD.

5. CALL BACK METHOD를 이용한 Input Field 값 설정

5.1. 선택한 Row Index를 I_FDATA-ROWINDEX에 적용

5.2. ABAP SOURCE CODE 예시 (EV_F4_SH_SELECT)

METHOD EV_F4_SH_SELECT.

      DATA: I_VALUE  TYPE C LENGTH 18.
      DATA: GV_FNAME TYPE STRING.

      FIELD-SYMBOLS : <FS_FDATA> TYPE DATA.
      FIELD-SYMBOLS : <FS_MAT>   TYPE TY_MATNR.
  *-------------------------------------------------------

      " Search Help Select
      CALL METHOD /U4A/CL_F4_HNADL=>F4_GET_SELECT01
        EXPORTING
          IS_F4DATA = I_FDATA
          I_FLDNM   = 'MATNR'
        IMPORTING
          E_VALUE   = I_VALUE.

      " Read selected ROW values
      GV_FNAME = 'I_FDATA-ROWINDEX'.

      ASSIGN (GV_FNAME) TO <FS_FDATA>.

      CHECK <FS_FDATA> IS ASSIGNED.

      " Set the selected MATNR to INPUT VALUE
      READ TABLE GT_MAT ASSIGNING <FS_MAT> INDEX <FS_FDATA>.

      CHECK SY-SUBRC EQ 0.

      <FS_MAT>-MATNR = I_VALUE.

      UNASSIGN <FS_FDATA>.
      UNASSIGN <FS_MAT>.

ENDMETHOD.

6. SEARCH HELP 실행 절차

6.1. 실행 후 원하는 Input Field의 Search Help 클릭

이미지

<사진 3> 서치헬프 호출 버튼 표시 화면

6.2. SEARCH HELP DIALOG 화면에서 검색 후 원하는 조회 결과 선택

이미지

<사진 4> 서치헬프 팝업창 조회 결과 화면

6.3. CALL BACK METHOD 결과 확인 (선택한 Row의 Input Field에 Material Number 반영)

이미지

<사진 5> 서치헬프 선택 결과 값 입력 결과 확인