SAP/ABAP

Popup with One(Several) Input Field(s) & Confirmation Button

Buggie 2024. 7. 11. 13:28

(Case)

GR 혹은 IV 

입고전기나 송장전기 시

전기일을 사용자로부터 입력받아서 처리하고자 할 경우가 종종 있다.

 

이 때, 화면을 별도로 생성해서 날짜 타입 Iuput Field 를 추가하고,

스크린 속성을 설정하고 하는 번거로운 과정 대신에

표준으로 제공되는 함수로 한방에 원하는 바를 얻을 수 있다.

 

(Solution)

Function : POPUP_GET_VALUES

FUGR : SP04 (조회와 요청 대화상자)

 

POPUP_GET_VALUES* 시리즈 함수 중에 가장 위에 걸 쓰면 되겠다.

사용법은 간단하다.

 

Import 파라미터에

 

 

TABLES 파라미터에 원하는 필드의 속성을 적어주면 끝..

팝업 화면에서 입력한 각 필드 값들이 VALUE 필드에 리턴된다.

 

좀더 자세하게 속성을 세팅도 가능하다.

아래의 FIELD_OBL 은 예상할수 있듯이, 필수값 지정..

FIELDTEXT 는 뭐,, 그렇겠지..

 

이렇게 해서 테스트 데이터를 간단히 넣고 실행하면,

 

이런 내가 딱 원하는 형태의 팝업창이 호출된다.

버튼도 딱 필요한 '확인 / 취소' 두개가 기본적으로 제공되는것이 깔끔하다.

 

리턴값은 위에서 말했듯, VALUE 필드에 매핑되므로, 이 값을 가지고

전기든 뭐든 후속작업시 사용하면 되겠다.

  

취소버튼을 클릭하면 RETURNCODE = 'A' 가 리턴된다.

 

 

(Sample Src.)

 

REPORT YTSR00210.

DATA: BEGIN OF LT_FIELDS OCCURS 1.
        INCLUDE STRUCTURE SVAL.
DATA: END OF LT_FIELDS.

DATA: LV_RETURNCODE(1)   TYPE C,
      LV_POPUP_TITLE(30) TYPE C VALUE '입력 팝업 테스트'.

LT_FIELDS-TABNAME   = 'EKBE'.
LT_FIELDS-FIELDNAME = 'BUDAT'.
LT_FIELDS-FIELD_OBL = 'X'.
APPEND LT_FIELDS.

CALL FUNCTION 'POPUP_GET_VALUES'
  EXPORTING
*   NO_VALUE_CHECK        = ' '
    POPUP_TITLE  = LV_POPUP_TITLE
    START_COLUMN = '5'
    START_ROW    = '5'
  IMPORTING
    RETURNCODE   = LV_RETURNCODE
  TABLES
    FIELDS       = LT_FIELDS.

IF SY-SUBRC = 0.
  IF LV_RETURNCODE = 'A' OR    "취소버튼 클릭시
     LT_FIELDS-VALUE IS INITIAL.  "입력값이 Null 이면
    EXIT.
  ENDIF.
  MESSAGE I000(ZMMM01) WITH LT_FIELDS-VALUE.
ENDIF.

 

샘플소스 실행결과

 

Function 으로 만들어서 써도 유용할 듯.