(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 으로 만들어서 써도 유용할 듯.
'SAP > ABAP' 카테고리의 다른 글
MIGO 에서 구현한 Badi Enhancement 가 입고 BAPI 처리 시 실행되지 않는 경우 강제로 타게 하는 방법 (4) | 2024.11.11 |
---|---|
Working Day 여부 체크 (계산)하는 함수 → DATE_CONVERT_TO_FACTORYDATE (0) | 2024.11.08 |
스마트폼을 PDF 파일로 이메일에 첨부하기 (2) | 2024.05.09 |
SUBMIT (program) 시 ABAP Memory 사용하지 않고, 결과만 가져오기 (0) | 2024.04.11 |
SAP Customer Exit CLFM0002 (0) | 2023.08.01 |