콘텐츠로 이동

F4_HNADL_SHDYN

목적

사용자가 정의한 F4_HELP의 가능 Entries를 활용하여
Search Help를 구현하는 방법을 설명한다.


주요 단계

1. SEARCH HELP UI 구성

  • INPUT FIELD를 이용하여 SEARCH HELP UI를 구성한다.

이미지

<사진 1> SEARCH HELP UI 구성 화면


2. SEARCH HELP TABLE 구성

  • SEARCH HELP 기능을 위한 TABLE 설정 및 적용 방법을 설명한다.

2.1 ABAP SOURCE CODE 예시 (EV_F4_DYN_SH_OPEN)

METHOD EV_F4_DYN_SH_OPEN.

  DATA: LV_INDEX    TYPE I,
        LT_FINFO    TYPE /U4A/CL_F4_HNADL=>GTT_FLD_INFO,
        LS_FINFO    TYPE /U4A/CL_F4_HNADL=>GTY_FLD_INFO,
        LS_ITAB     TYPE TY_OTAB,
        LT_ITAB     TYPE TABLE OF TY_OTAB,
        LV_NAME     TYPE STRING,
        LV_NUM      TYPE N LENGTH 2,
        LV_QUANTITY TYPE I.

*-------------------------------------------------------------------*

  " Search Help Table 구성
  DO 10 TIMES.

    ADD 1 TO LV_NUM.
    CONCATENATE 'OBJECT_' LV_NUM INTO LV_NAME.

    ADD 100 TO LV_QUANTITY.

    LS_ITAB-NO       = LV_NUM.
    LS_ITAB-NAME     = LV_NAME.
    LS_ITAB-QUANTITY = LV_QUANTITY.
    LS_ITAB-DATE     = SY-DATUM.

    APPEND LS_ITAB TO LT_ITAB.

    CLEAR LS_ITAB.
    CLEAR LV_NAME.

  ENDDO.

3. SEARCH HELP 검색 조건 필드 추가 및 옵션 설정

3.1 GTY_F4_CONFIG 구조

검색 조건으로 사용할 FIELD를
GTY_F4_CONFIG 구조의 TABLE에 추가한다.

3.2 검색 조건 FIELD 옵션

Name Description
FNAME 검색 조건으로 사용할 Field 이름
LABEL 조회 결과 테이블의 Column 이름
ISSH 조회 조건 입력란으로 사용(X) 여부
WIDTH 검색 조건 입력 필드 길이 (px, %, em)
CWIDTH 조회 결과 컬럼 길이 (px, %, em)
MWIDTH 최소 화면 너비 (px, %, em)
NOZERO Zero 값 허용 여부
PLACEHOLDER 검색 조건 필드의 Placeholder 값

3.3 ABAP SOURCE CODE 예시 (검색 조건 설정)

" 검색조건 필드 속성 추가

LS_FINFO-FNAME       = 'NAME'.
LS_FINFO-LABEL       = 'Name'.
LS_FINFO-ISSH        = ABAP_TRUE.
LS_FINFO-WIDTH       = '80%'.
LS_FINFO-CWIDTH      = '300PX'.
LS_FINFO-MWIDTH      = '40PX'.
LS_FINFO-NOZERO      = ABAP_FALSE.
LS_FINFO-PLACEHOLDER = 'Please enter your name.'.

APPEND LS_FINFO TO LT_FINFO.
CLEAR LS_FINFO.

LS_FINFO-FNAME       = 'QUANTITY'.
LS_FINFO-LABEL       = 'Quantity'.
LS_FINFO-ISSH        = ABAP_TRUE.
LS_FINFO-WIDTH       = '80%'.
LS_FINFO-CWIDTH      = '100PX'.
LS_FINFO-MWIDTH      = '40PX'.
LS_FINFO-NOZERO      = ABAP_FALSE.
LS_FINFO-PLACEHOLDER = 'Please enter quantity.'.

APPEND LS_FINFO TO LT_FINFO.
CLEAR LS_FINFO.

4. SEARCH HELP LAYOUT 및 필드 속성 설정

4.1 SEARCH HELP 레이아웃 옵션

Name Description
I_CSS_STY Search Help Dialog CSS Style Class 설정
I_DRAGGABLE Drag 가능 여부
I_RESIZABLE Size 조절 가능 여부
I_HEIGHT Dialog 세로 높이
I_WIDTH Dialog 가로 넓이
I_TITLE Dialog Title
I_MULTSEL 검색 결과 복수 선택 여부
I_EXPANDED 조회 조건 펼침 여부
I_ROW 선택한 ROW INDEX
I_SEVENT_NAME Call Back Method 명
IT_FLD_INFO 조회 조건 Field 정보 TABLE
IT_DATA 조회 결과 TABLE

5. SEARCH HELP DIALOG 화면

이미지

<사진 2> 호출된 Search Help 구성 화면


6. 선택한 Row의 값을 이용한 CALL BACK METHOD 설정

  • ADD EVENT METHOD 버튼을 통해 생성한다.

6.1 ABAP SOURCE CODE 예시 (EV_F4_SH_SELECT)

METHOD EV_F4_SH_SELECT.

  DATA: I_VALUE  TYPE STRING,
        I_VALUE2 TYPE STRING,
        GV_FNAME TYPE STRING.

  FIELD-SYMBOLS: <FS_FDATA> TYPE DATA,
                 <FS_OTAB>  TYPE TY_OTAB.

*-------------------------------------------------------------------*

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

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

  GV_FNAME = 'I_FDATA-ROWINDEX'.

  ASSIGN (GV_FNAME) TO <FS_FDATA>.
  CHECK <FS_FDATA> IS ASSIGNED.

  READ TABLE GT_OTAB ASSIGNING <FS_OTAB> INDEX <FS_FDATA>.
  CHECK SY-SUBRC EQ 0.

  <FS_OTAB>-NAME     = I_VALUE.
  <FS_OTAB>-QUANTITY = I_VALUE2.

ENDMETHOD.

7. SEARCH HELP 실행 절차

7.1 Input 필드의 Search Help 버튼 클릭

이미지

<사진 3> Search Help 호출 버튼 화면


7.2 SEARCH HELP DIALOG에서 조회 결과 선택

이미지

<사진 4> Search Help 조회 결과 선택 화면


7.3 CALL BACK METHOD를 이용하여 선택한 값 적용

이미지

<사진 5> Search Help 선택 결과 적용 화면