메세지 관련 질문입니다.
아래는 지금 제가 짜고 있는 도서대여내역 조회 리포트 프로그램입니다.
이름과 도서명을 입력 받아 도서대여내역을 출력합니다.
사용하는 테이블은
사원정보를 담고 있는 ZSADBLO
도서정보를 담고 있는 ZBOOKINFO
도서대여정보를 담고 있는 ZBOOKLENT 입니다.
문제는 MESSAGE처리 부분입니다.
입력된 이름이 사원정보에 있고 대여정보에 있으면 출력을 해주고,
사원정보에 있고 대여정보에 없다면 '대여정보가 없습니다' 라는 메세지를 팝업 형식으로 출력한 뒤
확인버튼을 누르면 이름입력란에 커서가 가도록 하고,
사원정보에도 없고 대여정보에도 없으면 '이름을 정확히 입력하세요'라는 메세지를 출력하고 마찬가지로 확인버튼을 누르면
이름입력란으로 커서가 가도록 하고 싶습니다.
나름대로 메세지 구문을 짜봤는데 생각처럼 나오지 않아 이렇게 질문을 올립니다.ㅜㅜ
답변부탁드립니다!!ㅜㅜ
참고로 노란색 부분이 제가 작성한 메세지 부분입니다.
---------------------------------------------------------------------------------------------------------------
*&---------------------------------------------------------------------*
*& Report ZTEST_SADBLO_16 *
*& *
*&---------------------------------------------------------------------*
*& 작성자: 김연일 *
*& 작성일자:2008.11.06 *
*& 작성내용:도서 대여 내역 조회 *
*&---------------------------------------------------------------------*
*화면 상단 HEADING 제거*
REPORT ZTEST_SADBLO_16 NO STANDARD PAGE HEADING
MESSAGE-ID ZMESSAGE_SADBLO
LINE-SIZE 150.
*----------------------------------------------------------------------*
* DATA 선언부 *
*----------------------------------------------------------------------*
DATA: BEGIN OF WA_BOOK,
SANUM TYPE ZSADBLO-SANUM,
NAME TYPE ZSADBLO-NAME,
SAPART TYPE ZSADBLO-SAPART,
BOOKNAME TYPE ZBOOKINFO-BOOKNAME,
BOOKMAN TYPE ZBOOKINFO-BOOKMAN,
BOOKCOMPANY TYPE ZBOOKINFO-BOOKCOMPANY,
BOOKLENTDAY TYPE ZBOOKLENT-BOOKLENTDAY,
BOOKBACKDAY TYPE ZBOOKLENT-BOOKBACKDAY,
BOOKTRUEBACKDAY TYPE ZBOOKLENT-BOOKTRUEBACKDAY,
END OF WA_BOOK.
DATA: IT_BOOK LIKE TABLE OF WA_BOOK.
DATA: WA_ZSADBLO TYPE ZSADBLO.
DATA: IT_ZSADBLO LIKE TABLE OF WA_ZSADBLO.
*----------------------------------------------------------------------*
* SELECT-OPTION과 PARAMETERS 선언 *
*----------------------------------------------------------------------*
*SELECT-OPTION 선언*
SELECT-OPTIONS: S_NAME FOR WA_BOOK-NAME NO INTERVALS DEFAULT
'김연일',
S_BNAME FOR WA_BOOK-BOOKNAME NO INTERVALS DEFAULT
'하악하악'.
*----------------------------------------------------------------------*
* 필드에 값이 입력된 후 실행되면 리스트을 출력 *
*----------------------------------------------------------------------*
*START-OF-SELECTION*
START-OF-SELECTION.
SELECT *
INTO CORRESPONDING FIELDS OF TABLE IT_ZSADBLO
FROM ZSADBLO.
WRITE: WA_ZSADBLO-NAME.
SELECT A~SANUM A~NAME A~SAPART B~BOOKNAME B~BOOKMAN B~BOOKCOMPANY
C~BOOKLENTDAY C~BOOKBACKDAY C~BOOKTRUEBACKDAY
INTO CORRESPONDING FIELDS OF TABLE IT_BOOK
FROM ( ( ZBOOKLENT AS C
INNER JOIN ZSADBLO AS A ON C~SANUM = A~SANUM )
INNER JOIN ZBOOKINFO AS B ON C~BOOKID = B~BOOKID )
WHERE NAME IN S_NAME
AND BOOKNAME IN S_BNAME.
LOOP AT IT_BOOK INTO WA_BOOK.
IF WA_BOOK-BOOKBACKDAY < WA_BOOK-BOOKTRUEBACKDAY.
FORMAT COLOR 6 ON.
WRITE: / WA_BOOK-SANUM,
WA_BOOK-NAME,
WA_BOOK-SAPART,
WA_BOOK-BOOKNAME,
WA_BOOK-BOOKMAN,
WA_BOOK-BOOKCOMPANY,
WA_BOOK-BOOKLENTDAY,
WA_BOOK-BOOKBACKDAY,
WA_BOOK-BOOKTRUEBACKDAY.
FORMAT COLOR OFF.
ELSEIF WA_BOOK-BOOKBACKDAY >= WA_BOOK-BOOKTRUEBACKDAY.
WRITE: / WA_BOOK-SANUM,
WA_BOOK-NAME,
WA_BOOK-SAPART,
WA_BOOK-BOOKNAME,
WA_BOOK-BOOKMAN,
WA_BOOK-BOOKCOMPANY,
WA_BOOK-BOOKLENTDAY,
WA_BOOK-BOOKBACKDAY,
WA_BOOK-BOOKTRUEBACKDAY.
ENDIF.
ENDLOOP.
*----------------------------------------------------------------------*
* 필드에 값이 입력된 후 실행되면 리스트를 뿌려주기 전에 HEADEING 뿌림 *
*----------------------------------------------------------------------*
*TOP-OF-PAGE*
TOP-OF-PAGE.
WRITE: (4) '사번' CENTERED,
(5) '사원명' CENTERED,
(12) '업무' CENTERED,
(15) '도서명' CENTERED,
(40) '저자' CENTERED,
(20) '출판사' CENTERED,
(19) '대여일' CENTERED,
(10) '반납예정일' CENTERED,
(10) '실제반납일' CENTERED.
ULINE.
*----------------------------------------------------------------------*
* ERROR MESSAGE 출력 *
*----------------------------------------------------------------------*
*AT SELECTION-SCREEN*
AT SELECTION-SCREEN ON S_NAME.
IF S_NAME-LOW <> WA_BOOK-NAME.
IF S_NAME-LOW EQ WA_ZSADBLO-NAME.
MESSAGE S014.
ELSEIF S_NAME-LOW NE WA_ZSADBLO-NAME.
MESSAGE S011.
ENDIF.
ELSEIF S_BNAME-LOW <> WA_BOOK-BOOKNAME.
MESSAGE S013.
ENDIF.
---------------------------------------------------------------------------------------------------------------
조회후.. 커서 위치 설정이니 +_+
AT SELECTION-SCREEN OUTPUT.
IF S_NAME-LOW <> WA_BOOK-NAME.
IF S_NAME-LOW EQ WA_ZSADBLO-NAME.
MESSAGE S014.
set CURSOR FIELD '필드명'.
ELSEIF S_NAME-LOW NE WA_ZSADBLO-NAME.
MESSAGE S011.
set CURSOR FIELD '필드명'.
ENDIF.
ELSEIF S_BNAME-LOW <> WA_BOOK-BOOKNAME.
MESSAGE S013.
set CURSOR FIELD '필드명'.
ENDIF.
으로 한번 해보시죠 ...