콘텐츠로 이동

F4_HNADL_SH2

개요

ABAP Dictionary 에서 생성된 Search Help 를 별도의 변경 없이 재사용하여 사용할 수 있으며,
F4_HNADL_SH 보다 더욱 상세한 기능을 제공한다.


SEARCH HELP 설정

1. INPUT UI 구성

  • INPUT FIELD 를 이용하여 SEARCH HELP 설정
  • TABLE 의 INPUT Properties 중 ShowValueHelp 를 True 로 설정
  • value 에 필드 바인딩
  • Events 의 valueHelpRequest 에 이벤트 바인딩

이미지
<사진 1> Search Help 호출을 위한 INPUT UI Property 설정 화면


2. SEARCH HELP LAYOUT 구성 및 Field Option 설정

2.1. ABAP 소스 코드 예시

METHOD ev_f4_dic2.

  DATA: lv_index       TYPE sy-index,
        ls_layo        TYPE /u4a/cl_f4_hnadl=>ty_f4layo_conf,
        ls_search_layo TYPE /u4a/cl_f4_hnadl=>ty_set_search_layo,
        ls_result_layo TYPE /u4a/cl_f4_hnadl=>ty_set_result_layo,
        lt_values      TYPE /u4a/y0093.

*--------------------------------------------------------------------*
* 1. Selected Index 조회
*--------------------------------------------------------------------*
  /u4a/cl_utilities=>get_selected_index(
    EXPORTING
      i_event_name = i_event_name
    IMPORTING
      e_index      = lv_index ).

  CHECK lv_index IS NOT INITIAL.

*--------------------------------------------------------------------*
* 2. F4 Popup General Configuration
*--------------------------------------------------------------------*
  ls_layo-f4gen_info = VALUE #(
      width        = ''
      height       = ''
      selmult      = '00'
      styleclass   = ''
      draggable    = '00'
      title        = 'Dictionary F4 Help2'
      auto_search  = '00'
      zebra        = '00'
      dbclick      = '00'
      labelspanxl  = '00'
      labelspanl   = '00'
      labelspanm   = '00'
      labelspans   = '00'
      emptyspanxl  = '00'
      emptyspanl   = '00'
      emptyspanm   = '00'
      emptyspans   = '00'
  ).

*--------------------------------------------------------------------*
* 3. Search Condition Configuration
*--------------------------------------------------------------------*
  ls_search_layo = VALUE #(
      shlpname    = 'H_SCARR'
      shlpfield   = 'CARRID'
      initvalue   = ''
      placeholder = ''
      width       = ''
      enable      = ''
      field_label = 'CARR_ID'
      uityp       = ''
      shname      = ''
      shretfld    = ''
      values      = lt_values
      isfocus     = ''
      visible     = ''
      align       = ''
  ).

  APPEND ls_search_layo TO ls_layo-search_field.

*--------------------------------------------------------------------*
* 4. Result List Configuration
*--------------------------------------------------------------------*
  ls_result_layo = VALUE #(
      shlpname      = 'H_SCARR'
      shlpfield     = 'CARRID'
      field_label   = 'CARR_ID'
      width         = ''
      isfix_col     = '00'
      col_align     = '00'
      txt_align     = ''
      visible       = '00'
      minwidth      = ''
      resizable     = '00'
      filter_option = '00'
      enable_filter = '00'
      enable_sorter = '00'
      wrapping      = '00'
  ).

  APPEND ls_result_layo TO ls_layo-result_field.

ENDMETHOD.

2.2. SEARCH HELP 팝업 기본 설정 Parameter 설명

2.2.1. TY_SET_GEN_LAYO_INF

PARAMETERS Description
WIDTH F4 팝업 넓이 (500px, 60%)
HEIGHT F4 팝업 높이 (500px, 60%)
SELMULT 선택 멀티 여부 (예: 00 = DEFAULT 단일선택, 01 = 멀티선택, 02 = 단일선택)
STYLECLASS CSS Class
DRAGGABLE 팝업 Draggable (예: 00 = DEFAULT 팝업 DRAG 가능, 01 = 팝업 DRAG 가능, 02 = 팝업 DRAG 불가)
TITLE 팝업 TITLE
AUTO_SEARCH 팝업 호출 후 자동 검색 여부 (예: 00 = DEFAULT 자동검색 안함, 01 = 자동검색 처리, 02 = 자동검색 안함)
ZEBRA 결과리스트 Alternating line color (예: 00 = DEFAULT 처리안함, 01 = 처리함, 02 = 처리안함)
DBCLICK 결과리스트 선택 더블클릭 사용 여부 (단일선택 전용, 00 = DEFAULT 처리안함, 01 = 처리함, 02 = 처리안함)
LABELSPANXL 검색조건 라벨 여백 (XL) (예: 00 = DEFAULT 5)
LABELSPANL 검색조건 라벨 여백 (L) (예: 00 = DEFAULT 5)
LABELSPANM 검색조건 라벨 여백 (M) (예: 00 = DEFAULT 5)
LABELSPANS 검색조건 라벨 여백 (S) (예: 00 = DEFAULT 12)
EMPTYSPANXL 검색조건 입력필드 우측 여백 (XL) (예: 00 = DEFAULT 0)
EMPTYSPANL 검색조건 입력필드 우측 여백 (L) (예: 00 = DEFAULT 0)
EMPTYSPANM 검색조건 입력필드 우측 여백 (M) (예: 00 = DEFAULT 0)
EMPTYSPANS 검색조건 입력필드 우측 여백 (S) (예: 00 = DEFAULT 0)
MAXHIT_INP_CONF MAX HITS 입력필드
CLOSE_BTN_CONF1 우상단 종료버튼
CLOSE_BTN_CONF2 우하단 종료버튼
SEARCH_BTN_CONF 검색버튼
FILTER_BTN_CONF 필터 버튼 CONFIG 정보
CONFIRM_BTN_CONF 확인 버튼
SEARCH_TXT_CONF 검색조건 text
MAXHIT_TXT_CONF max hits text
RESCNT_TXT_CONF 검색결과 cnt text

2.2.2. TY_SET_MAXHIT_CONF_INF

PARAMETERS Description
WIDTH MAX HIT 입력필드 가로 크기 (100px, 20%)
VISIBLE MAX HIT 입력필드 활성 여부 (예: 00 = DEFAULT 활성처리, 01 = 활성, 02 = 비활성)
ENABLE MAX HIT 입력 가능 여부 (예: 00 = DEFAULT 입력가능, 01 = 입력 가능, 02 = 입력 불가)
ALIGN MAX HIT 입력필드 좌·우 정렬 (예: 00 = DEFAULT Initial)
MAXHITS MAX HIT 입력필드 초기값
HIT_LIMIT MAX HIT 입력필드 MAX 제한값 5000 (0 = all 검색)
PLACEHOLDER MAX HIT 입력필드 placeholder value

2.2.3. TY_SET_BTN_CONF_INF

PARAMETERS Description
TEXT 버튼 TEXT
TOOLTIP 버튼 TOOLTIP
ICON 버튼 ICON
TYPE 버튼 TYPE (예: 00 = 해당 버튼의 DEFAULT TYPE)
VISIBLE 버튼 활성 여부 (예: 00 = 해당 버튼의 DEFAULT 활성여부, 01 = 활성, 02 = 비활성)
ENABLE 버튼 PRESS 가능 여부 (예: 00 = 해당 버튼의 DEFAULT PRESS 여부, 01 = PRESS 가능, 02 = PRESS 불가)
WIDTH 버튼 가로 크기 (100px, 20%)

2.2.4. TY_SET_TXT_CONF_INF

PARAMETERS Description
TEXT text
VISIBLE TEXT 활성 여부 (예: 00 = 해당 TEXT의 DEFAULT 활성여부, 01 = 활성, 02 = 비활성)

2.2.5. TY_SET_SEARCH_LAYO

PARAMETERS Description
SHLPNAME Name of a Search Help
SHLPFIELD Name of a search help parameter
INITVALUE Init value
PLACEHOLDER placeholder value
WIDTH input field width (EX: 10px, 30%...)
ENABLE input field 입력 가능 여부 (예: 00 = DEFAULT 입력가능, 01 = 입력 가능, 02 = 입력 불가)
FIELD_LABEL Label Text
UITYP F4 help 검색조건 필드 유형
SHNAME Name of a Search Help
SHRETFLD Name of a search help parameter
VALUES F4 SerchHelp Search Condition DDLB
ISFOCUS 검색조건 FOCUS 여부 (예: 00 = DEFAULT 처리 안함, 01 = FOCUS 처리, 02 = FOCUS 처리 안함)
VISIBLE 검색조건 활성 여부 (예: 00 = DEFAULT 활성, 01 = 활성 처리, 02 = 활성 처리 안함)
ALIGN 검색조건 입력필드 좌·우 정렬 (예: 00 = DEFAULT Initial)

2.2.6. TY_SET_RESULT_LAYO

PARAMETERS Description
SHLPNAME Name of a Search Help
SHLPFIELD Name of a search help parameter
FIELD_LABEL Label Text
WIDTH column width (EX: 10px, 30%...)
ISFIX_COL 결과리스트 컬럼 고정여부 (예: 00 = DEFAULT 고정안함, 01 = 고정 처리, 02 = 고정 처리 안함)
COL_ALIGN 컬럼 ALIGN (예: 00 = DEFAULT Begin)
TXT_ALIGN 결과리스트 CELL의 TEXT 좌·우 정렬 (예: 00 = DEFAULT Initial)
VISIBLE 결과리스트 컬럼 활성 여부 (예: 00 = DEFAULT 활성, 01 = 활성 처리, 02 = 활성 처리 안함)
MINWIDTH 컬럼 최소 width (100)
RESIZABLE 컬럼 RESIZE 가능 여부 (예: 00 = DEFAULT RESIZE 가능, 01 = RESIZE 가능, 02 = RESIZE 불가)
FILTER_OPTION 결과리스트 필터 OPTION (예: 00 = DEFAULT CP)
ENABLE_FILTER 결과리스트 FILTER 사용 여부 (예: 00 = DEFAULT FILTER 사용, 01 = FILTER 사용, 02 = FILTER 사용안함)
ENABLE_SORTER 결과리스트 SORTER 사용 여부 (예: 00 = DEFAULT SORTER 사용, 01 = SORTER 사용, 02 = SORTER 사용안함)
WRAPPING 결과리스트 CELL의 TEXT WRAPPING 처리 여부 (예: 00 = DEFAULT 처리함, 01 = 처리함, 02 = 처리안함)

2.3. SEARCH HELP DIALOG SCREEN

Search help 화면 영역
<사진 2> Search help 화면 영역


3. Search Help 호출 및 Call Back Method 설정

3.1. Search Help 호출

"*- Call : Dictionary F4 Help2.
CALL METHOD /U4A/CL_F4_HNADL=>F4_SEARCH_HELP2
  EXPORTING
    IO_VIEW         = AR_VIEW        " [U4A] UI Element Super Class.
    I_SHLPNAME      = 'H_SCARR'      " Name of a Search Help.
    I_ROW           = LV_INDEX       " 호출처 INDEX.
    I_SEVENT_NAME   = 'EV_F4_DIC2_CB' " 서버 이벤트 명.
    IS_F4LAYO_CONF  = LS_LAYO.       " F4 엔트리 컨피그레이션.

ENDMETHOD.

3.2. Call Back Method 생성

  • ADD EVENT METHOD 버튼을 통해 생성해야 함
  • 선택한 Row Index는 I_FDATA-ROWINDEX에 존재함
  • CARRID, CARRNAME 값을 Input Field에 적용
METHOD EV_F4_DIC2_CB.

  DATA:
    LV_CARRID    TYPE S_CARR_ID,
    LV_CARRNAME  TYPE S_CARRNAME,
    LV_FNAME     TYPE STRING.

  FIELD-SYMBOLS:
    <LFS_DATA> TYPE DATA,
    <LFS_OTAB> TYPE TY_OTAB.

*--------------------------------------------------------------------*
  "*- Get : Selected F4 Help Value.
*--------------------------------------------------------------------*

  CALL METHOD /U4A/CL_F4_HNADL=>F4_GET_SELECT01
    EXPORTING
      IS_F4DATA = I_FDATA
      I_FLDNM   = 'CARRID'
    IMPORTING
      E_VALUE   = LV_CARRID.

  CALL METHOD /U4A/CL_F4_HNADL=>F4_GET_SELECT01
    EXPORTING
      IS_F4DATA = I_FDATA
      I_FLDNM   = 'CARRNAME'
    IMPORTING
      E_VALUE   = LV_CARRNAME.

*--------------------------------------------------------------------*
  "*- Get : Selected Index.
*--------------------------------------------------------------------*

  LV_FNAME = 'I_FDATA-ROWINDEX'.
  ASSIGN (LV_FNAME) TO <LFS_DATA>.
  CHECK <LFS_DATA> IS ASSIGNED.

*--------------------------------------------------------------------*
  "*- Set : Input Value.
*--------------------------------------------------------------------*

  READ TABLE GT_OTAB ASSIGNING <LFS_OTAB> INDEX <LFS_DATA>.
  CHECK <LFS_OTAB> IS ASSIGNED.

  <LFS_OTAB>-CARRID   = LV_CARRID.
  <LFS_OTAB>-CARRNAME = LV_CARRNAME.

ENDMETHOD.

4. 검색 결과 반영

4.1. Application 실행 후 원하는 Input Field의 Search Help Click

img
<사진 3> 프로그램에서 Search help 아이콘을 눌러 호출

img
<사진 4> Search help 화면에서 조회 후 라인 선택

4.3. Call Back Method 결과 (선택한 Row의 Input Field에 검색 조회 결과 시 선택한 Material Number 가 들어간 것을 확인 )

img
<사진 5> 테이블에 값 입력 확인