콘텐츠로 이동

F4_HNADL_SHDYN2

목적

사용자가 정의한 F4_HELP의 가능 Entries를 활용하여 Search Help를 구현하는 방법을 사용할 수 있으며, F4_HNADL_SHDYN보다 더욱 상세한 기능을 제공


주요 단계

1. SEARCH HELP UI 구성

  • INPUT FIELD 를 이용한 SEARCH HELP 예시를 설정

1.1 TABLE 의 INPUT Properties에서 ShowValueHelp를 True로 변경

1.2 value 필드에 적절한 바인딩 적용

1.3 Events 의 valueHelpRequest에 이벤트 바인딩

이미지

<사진 1> TABLE의 INPUT Properties 설정 화면


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

  • SEARCH HELP 를 위한 LAYOUT을 구성하고 Field Option을 설정
  • ABAP Source Code 예시
METHOD EV_F4_DYN2.

  DATA : LV_INDEX TYPE SY-INDEX,
         LV_NUM   TYPE N LENGTH 2.

  DATA : LS_LAYO        TYPE /U4A/CL_F4_HNADL=>TY_DYN_F4LAYO_CONF,
         LS_SEARCH_LAYO TYPE /U4A/CL_F4_HNADL=>TY_SET_DYN_SEARCH_LAYO,
         LS_RESULT_LAYO TYPE /U4A/CL_F4_HNADL=>TY_SET_DYN_RESULT_LAYO.

  DATA : LS_OTAB TYPE TY_OTAB,
         LT_OTAB TYPE TABLE OF TY_OTAB.

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

  "* Selected Index.
  CALL METHOD /U4A/CL_UTILITIES=>GET_SELECTED_INDEX
    EXPORTING
      I_EVENT_NAME = I_EVENT_NAME
    IMPORTING
      E_INDEX      = LV_INDEX.

  CHECK LV_INDEX IS NOT INITIAL.

  "* Dynamic F4 Help Table Data.
  DO 100 TIMES.
    LV_NUM = SY-INDEX.
    CONCATENATE 'OBJECT_' LV_NUM INTO LS_OTAB-NAME.
    LS_OTAB-NO = SY-INDEX.
    APPEND LS_OTAB TO LT_OTAB.
    CLEAR LS_OTAB.
  ENDDO.

  "* F4 Help Pop-Up General Info.
  LS_LAYO-F4GEN_INFO-TITLE = 'Dynamic F4 Help2'.
  LS_LAYO-F4GEN_INFO-MULTSEL = '00'.
  LS_LAYO-F4GEN_INFO-EXPANDED = '00'.
  LS_LAYO-F4GEN_INFO-ZEBRA = '00'.
  LS_LAYO-F4GEN_INFO-DBCLICK = '00'.

3. SEARCH HELP 다이얼로그 화면

이미지

<사진 2> Search help 화면 영역


4. 선택한 ROW의 값을 이용한 Call Back Method 설정

  • CALL BACK METHOD는 ADD EVENT METHOD Button을 통해 생성해야 함
CALL METHOD /U4A/CL_F4_HNADL=>F4_SEARCH_HELP_DYNAMIC2
  EXPORTING
    IO_VIEW            = AR_VIEW
    I_ROW              = LV_INDEX
    I_SEVENT_NAME      = 'EV_F4_DYN2_CB'
    IS_DYN_F4LAYO_CONF = LS_LAYO
    IT_DATA            = LT_OTAB
  EXCEPTIONS
    PROCESS_STRU_DOES_NOT_FORMAT = 1
    DATA_DOES_NOT_EXIST          = 2
    FIELD_TYPE_NOT_ALLOWED       = 3
    OTHERS                       = 4.

5. Call Back Method를 통해 Input Field에 선택한 Name값 설정

  • 선택한 Row Index는 I_FDATA-ROWINDEX 에 존재함
METHOD EV_F4_DYN2_CB.

  DATA : LV_NAME  TYPE STRING,
         LV_DATE  TYPE D,
         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   = 'NAME'
    IMPORTING
      E_VALUE   = LV_NAME.

  "* 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>-NAME = LV_NAME.

ENDMETHOD.

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

이미지

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


이미지

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


8. Call Back Method 결과 확인

  • 선택한 Row의 Input Field에 검색 조회 결과 시 선택한 Name이 들어간 것을 확인

이미지

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