아래 소스를 보시고 뭐가 잘못됏는지 알려주세요.
결과화면에 조건을 주지 않았는데 결과값에 대한 실행이 안되고
첫번째 WA_CARR 에 있는 동그라미버튼이 눌렀는데 실행이 안됩니다.
WA_CARR1는 되는데..
보시고 원인과 해결방법 얄려주세요.
*&---------------------------------------------------------------------*
*& Report ZTEST_ITGSMS01 *
*& *
*&---------------------------------------------------------------------*
*& *
*& *
*&---------------------------------------------------------------------*
REPORT ztest_itgsms01.
DATA: spfli_wa TYPE TABLE OF spfli.
DATA: t_sflight TYPE TABLE OF sflight.
DATA: BEGIN OF wa,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
fldate TYPE sflight-fldate,
END OF wa.
DATA: itab LIKE STANDARD TABLE OF wa WITH HEADER LINE..
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: wa_carr FOR itab-carrid NO INTERVALS NO-EXTENSION,
wa_carr1 FOR itab-connid NO INTERVALS
NO-EXTENSION VISIBLE LENGTH 0,
wa_carr2 FOR itab-fldate.
SELECTION-SCREEN END OF BLOCK b1.
CLEAR spfli_wa.
SELECT carrid connid cityfrom cityto FROM spfli
INTO CORRESPONDING FIELDS OF TABLE spfli_wa
WHERE carrid IN wa_carr AND connid IN wa_carr1.
CLEAR t_sflight.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE t_sflight
FOR ALL ENTRIES IN spfli_wa
WHERE carrid = spfli_wa-carrid AND connid = spfli_wa-connid and fldate
IN wa_carr2.
LOOP AT itab .
WRITE: / itab-carrid, itab-connid, itab-cityfrom,
itab-cityto, itab-fldate.
ENDLOOP.
댓글 4
-
효방 ^-^
2008.10.04 22:21
-
앙리
2008.10.05 21:10
수정해도 오류만 뜨고 도대체 뭐가 잘못 됐는지 알 수가 없습니다. 뭐가 잘못됐는지 수정부탁합니다.
그리고 Possible Entry는 정상적으로 나오는데 문제는 결과이 않나오니..
아래 내용은 위소스를 바탕으로 수정한 내용인데 결과는 않나오고 오류가 나옵니다. 도와주세요. ㅜ..ㅜ
*&---------------------------------------------------------------------*
*& Report ZTEST1
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ztest1.
DATA: spfli_wa TYPE TABLE OF spfli.
DATA: t_sflight TYPE TABLE OF sflight.
DATA: BEGIN OF wa,
carrid TYPE spfli-carrid,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
fldate TYPE sflight-fldate,
END OF wa.
DATA: itab LIKE STANDARD TABLE OF wa WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS: wa_carr FOR itab-carrid NO INTERVALS NO-EXTENSION,
wa_carr1 FOR itab-connid NO INTERVALS
NO-EXTENSION VISIBLE LENGTH 0,
wa_carr2 FOR itab-fldate.
SELECTION-SCREEN END OF BLOCK b1.
CLEAR spfli_wa.
SELECT carrid connid cityfrom cityto FROM spfli
INTO CORRESPONDING FIELDS OF TABLE spfli_wa
WHERE carrid IN wa_carr AND connid IN wa_carr1.
CLEAR t_sflight.
SELECT * FROM sflight
INTO CORRESPONDING FIELDS OF TABLE t_sflight
FOR ALL ENTRIES IN spfli_wa
WHERE carrid = spfli_wa-carrid AND connid = spfli_wa-connid AND t_sflight-fldate
IN wa_carr2.
LOOP AT itab.
WRITE: / itab-carrid, itab-connid, itab-cityfrom,
itab-cityto, itab-fldate.
ENDLOOP. -
효방 ^-^
2008.10.06 01:23
첫째로 프로그램 상 에러가 나는 이유는 두번째 조건절에서,
WHERE carrid = spfli_wa-carrid AND connid = spfli_wa-connid AND t_sflight-fldate IN wa_carr2.
DB의 field와 상관없는 구문때문에 에러가 발생했습니다.
결과가 나오지 않는 부분은 위에서도 말씀 드렸듯이 select를 해서 얻은 결과는 spfli_wa와 t_flight에 각각 담겨있고,
itab 인터널 테이블에는 아무값이 존재하지도 않습니다. 결과가 나올리가 없겠죠? ^^;
얻으시려고 하는 결과가 맞는지 모르겠지만, 아래 구문처럼 수정하시면 결과를 보실수 있을실 겁니다!
그럼.....즐밥하세요 ^^;;
REPORT ZTEST1.
TABLES : SFLIGHT.
DATA: SPFLI_WA TYPE TABLE OF SPFLI WITH HEADER LINE.
DATA: T_SFLIGHT TYPE TABLE OF SFLIGHT WITH HEADER LINE.
DATA: BEGIN OF WA,
CARRID TYPE SPFLI-CARRID,
CONNID TYPE SPFLI-CONNID,
CITYFROM TYPE SPFLI-CITYFROM,
CITYTO TYPE SPFLI-CITYTO,
FLDATE TYPE SFLIGHT-FLDATE,
END OF WA.
DATA: ITAB LIKE STANDARD TABLE OF WA WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS: WA_CARR FOR ITAB-CARRID NO INTERVALS NO-EXTENSION,
WA_CARR1 FOR ITAB-CONNID NO INTERVALS
NO-EXTENSION VISIBLE LENGTH 0,
WA_CARR2 FOR ITAB-FLDATE.
SELECTION-SCREEN END OF BLOCK B1.
CLEAR SPFLI_WA.
SELECT CARRID CONNID CITYFROM CITYTO FROM SPFLI
INTO CORRESPONDING FIELDS OF TABLE SPFLI_WA
WHERE CARRID IN WA_CARR
AND CONNID IN WA_CARR1.
CLEAR T_SFLIGHT.
SELECT * FROM SFLIGHT
INTO CORRESPONDING FIELDS OF TABLE T_SFLIGHT
FOR ALL ENTRIES IN SPFLI_WA
WHERE CARRID = SPFLI_WA-CARRID
AND CONNID = SPFLI_WA-CONNID
AND FLDATE IN WA_CARR2.
LOOP AT T_SFLIGHT.
READ TABLE SPFLI_WA WITH KEY CARRID = T_SFLIGHT-CARRID
CONNID = T_SFLIGHT-CONNID.
IF SY-SUBRC EQ 0 .
MOVE-CORRESPONDING SPFLI_WA TO ITAB.
MOVE T_SFLIGHT-FLDATE TO ITAB-FLDATE.
APPEND ITAB.
ENDIF.
WRITE: / ITAB-CARRID, ITAB-CONNID,
ITAB-CITYFROM, ITAB-CITYTO, ITAB-FLDATE.
CLEAR : ITAB.
ENDLOOP. -
앙리
2008.10.06 03:04
미처 생각지 못했습니다. 감사합니다.^^
1. 일단 결과값이 나오지 않는 부분은 출력하고자 하는 인터널 테이블 itab에 아무런 데이터가 존재하지 않기 때문입니다.
LOOP AT itab .
WRITE: / itab-carrid, itab-connid, itab-cityfrom,
itab-cityto, itab-fldate.
ENDLOOP.
=> 비록 LOOP문을 만나도 데이터가 존재하지 않기 때문에. LOOP도 실행되지 않고, 값도 출력되지 않을 겁니다.
2. 같은 소스를 실행해 본 결과, Possible Entry 값이 잘 나옵니다. 다시 한번 실행해 보세요 ^^;