본문 바로가기
카테고리 없음

ABAP VALUE-REQUEST FOR 값에 ENTER 적용 로직

by 온레 2023. 11. 23.

 

 

오늘은 abap에서

AT SELECTION-SCREEN ON VALUE-REQUEST FOR 에

'ENTER' 가 자동 처리되도록 추가한 소스 입니다.

 

 

AT SELECTION-SCREEN ON VALUE-REQUEST FOR

 

사용자가 F4를 눌렀을 때, 선택 가능한 정보를 도움말 창에서 선택할 수 있는 값을

동적으로 로딩하도록 구현하고,

 

그 이후 자동으로 ENTER 기능이 적용되도록 로직 추가하였습니다.

 

 

F4 처리 및 ENTER 기능 적용 예제

 

REPORT ZVALUE_REQUEST_EXAMPLE.

TABLES: sflight.

PARAMETERS: p_carrid TYPE sflight-carrid OBLIGATORY.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_carrid.

  DATA: lt_carrid TYPE TABLE OF sflight-carrid,
        lv_input TYPE sy-msgid,
        lv_output TYPE sy-msgty.
  
  DATA : LT_RETURN TYPE STANDARD TABLE OF DDSHRFTVAL,
         LS_RETURN TYPE DDSHRETVAL.
	
  " Fetch possible values for p_carrid from the database
  SELECT carrid
    FROM sflight
    INTO TABLE lt_carrid
    UP TO 10 ROWS.

  " Prepare the input and output parameters for the F4 help
  lv_input = 'F4'.
  lv_output = 'E'.

  " Display F4 help for p_carrid
  CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
    EXPORTING
      retfield   = 'CARRID'
      value_org  = 'S'
      TABLES
        value_tab  = lt_carrid
        return_tab = lt_return
    EXCEPTIONS
      parameter_error = 1
      no_values_found = 2
      OTHERS          = 3.

  CASE sy-subrc.
    WHEN 0.
      " User selected a value from the F4 help
      read table lt_return into ls_return index 1.
      p_carrid = ls_return-fieldval.
      
      CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
      	EXPORTING
        	functioncode = 'ENTE'
        EXCEPTIONS
            function_not_supported = 1
            other = 2.

    WHEN 1.
      " Parameter error
      MESSAGE ID lv_input TYPE lv_output INTO sy-msgid sy-msgty.
      MESSAGE sy-msgid TYPE sy-msgty.

    WHEN 2.
      " No values found
      MESSAGE ID lv_input TYPE lv_output INTO sy-msgid sy-msgty.
      MESSAGE sy-msgid TYPE sy-msgty.
  ENDCASE.