답변 정말 감사 합니다.. 오타가 그렇게 있을줄이야..ㅜㅜ
그런데 선배님께서 주신 소스 코드로 다시 해보아도.. 똑 같은 에러 메시지가 뜨네요 ..
에러 메시지에 대해 조금이라도 지식이 있었으면 쉽게 해결 해 보았을 텐데..
아직 공부해나가야 할 길이 멀었네요 .. 앞으로 더욱 열심히 해겠습니다. ㅎㅎ
그리고 .. 오타 다시 수정해서 이렇게 올립니다.
FIND statement가 정의 되지 않았다고 계속 뜨는데 ..
FIND 구문 쪽을 살펴봐도.. 틀린 부분이 없는데도 계속 이렇게 되네요 ..
다시 한번 .. 조언 부탁 드립니다.
----- 수정한 소스 코드 -----------
TYPES:
BEGIN OF st_flight_c,
mandt(3) TYPE c,
carrid(3) TYPE c,
connid(3) TYPE n,
fldate(8) TYPE n,
price(20) TYPE c,
currency(5) TYPE c,
planetype(10) TYPE c,
seatsmax(10) type n,
seatsocc(10) TYPE n,
paymentsum(22) TYPE c,
seatsmax_b(10) TYPE n,
seatsocc_b(10) TYPE n,
seatsmax_f(10) TYPE n,
seatsocc_f(10) TYPE n,
END OF st_flight_c,
BEGIN OF st_flight,
carrid(3) TYPE c,
connid(4) TYPE n,
fldate TYPE d,
price(9) TYPE p DECIMALS 2,
currency(5) TYPE c,
planetype(10) TYPE c,
seatsmax TYPE i,
seatsocc TYPE i,
END OF st_flight.
DATA : set_string type string,
datastring TYPE string,
wa_flight_c TYPE st_flight_c,
wa_flight TYPE st_flight.
START-OF-SELECTION.
CALL FUNCTION 'BC401_GET_SEP_STRING'
* EXPORTING
* im_number ='1'
* im_table_name = 'SFLGHT'
* im_separator = '#'
* im_unique = 'X'
IMPORTING
ex_string = datastring
EXCEPTIONS
no_data = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE a038(bc401).
ENDIF.
SHIFT datastring BY 2 PLACES.
find '##' in datastring.
IF sy-subrc <> 0.
MESSAGE a702(bc401).
ENDIF.
SPLIT datastring AT '##' INTO set_string datastring.
SPLIT set_string AT '#' INTO
wa_flight_c-mandt
wa_flight_c-carrid
wa_flight_c-connid
wa_flight_c-fldate
wa_flight_c-price
wa_flight_c-currency
wa_flight_c-planetype
wa_flight_c-seatsmax
wa_flight_c-seatsocc
wa_flight_c-paymentsum
wa_flight_c-seatsmax_b
wa_flight_c-seatsocc_b
wa_flight_c-seatsmax_f
wa_flight_c-seatsocc_f.
MOVE-CORRESPONDING wa_flight_c TO wa_flight.
WRITE: /
wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate DD/MM/YYYY,
wa_flight-price CURRENCY wa_flight-currency,
wa_flight-currency,
wa_flight-planetype,
wa_flight-seatsmax,
wa_flight-seatsocc.
그런데 선배님께서 주신 소스 코드로 다시 해보아도.. 똑 같은 에러 메시지가 뜨네요 ..
에러 메시지에 대해 조금이라도 지식이 있었으면 쉽게 해결 해 보았을 텐데..
아직 공부해나가야 할 길이 멀었네요 .. 앞으로 더욱 열심히 해겠습니다. ㅎㅎ
그리고 .. 오타 다시 수정해서 이렇게 올립니다.
FIND statement가 정의 되지 않았다고 계속 뜨는데 ..
FIND 구문 쪽을 살펴봐도.. 틀린 부분이 없는데도 계속 이렇게 되네요 ..
다시 한번 .. 조언 부탁 드립니다.
----- 수정한 소스 코드 -----------
TYPES:
BEGIN OF st_flight_c,
mandt(3) TYPE c,
carrid(3) TYPE c,
connid(3) TYPE n,
fldate(8) TYPE n,
price(20) TYPE c,
currency(5) TYPE c,
planetype(10) TYPE c,
seatsmax(10) type n,
seatsocc(10) TYPE n,
paymentsum(22) TYPE c,
seatsmax_b(10) TYPE n,
seatsocc_b(10) TYPE n,
seatsmax_f(10) TYPE n,
seatsocc_f(10) TYPE n,
END OF st_flight_c,
BEGIN OF st_flight,
carrid(3) TYPE c,
connid(4) TYPE n,
fldate TYPE d,
price(9) TYPE p DECIMALS 2,
currency(5) TYPE c,
planetype(10) TYPE c,
seatsmax TYPE i,
seatsocc TYPE i,
END OF st_flight.
DATA : set_string type string,
datastring TYPE string,
wa_flight_c TYPE st_flight_c,
wa_flight TYPE st_flight.
START-OF-SELECTION.
CALL FUNCTION 'BC401_GET_SEP_STRING'
* EXPORTING
* im_number ='1'
* im_table_name = 'SFLGHT'
* im_separator = '#'
* im_unique = 'X'
IMPORTING
ex_string = datastring
EXCEPTIONS
no_data = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE a038(bc401).
ENDIF.
SHIFT datastring BY 2 PLACES.
find '##' in datastring.
IF sy-subrc <> 0.
MESSAGE a702(bc401).
ENDIF.
SPLIT datastring AT '##' INTO set_string datastring.
SPLIT set_string AT '#' INTO
wa_flight_c-mandt
wa_flight_c-carrid
wa_flight_c-connid
wa_flight_c-fldate
wa_flight_c-price
wa_flight_c-currency
wa_flight_c-planetype
wa_flight_c-seatsmax
wa_flight_c-seatsocc
wa_flight_c-paymentsum
wa_flight_c-seatsmax_b
wa_flight_c-seatsocc_b
wa_flight_c-seatsmax_f
wa_flight_c-seatsocc_f.
MOVE-CORRESPONDING wa_flight_c TO wa_flight.
WRITE: /
wa_flight-carrid,
wa_flight-connid,
wa_flight-fldate DD/MM/YYYY,
wa_flight-price CURRENCY wa_flight-currency,
wa_flight-currency,
wa_flight-planetype,
wa_flight-seatsmax,
wa_flight-seatsocc.
댓글 5
-
e-abap
2007.02.10 23:44
-
나침반친구
2007.02.11 19:47
저도 테스트 해봤는데요, 같은 에러가 뜨네요.
버전이 46B이거든요. FIND구문에서 F1 눌러보면 나오는게 없네요. 46B버전 이상에서 지원되는 구문인가봐요?
FIND구문 대신 SEARCH구문 사용해보세요. 이렇게 하면 에러가 안나네요.
SEARCH datastring FOR '##'. datastring변수에서 ##가 있나 찾는 구문인데요.
SY-SUBRC = 0 일 때 SY-FDPOS에 찾은 단어의 위치정보가 들어 있어가 있으니 참고하시구요.
-
e-abap
2007.02.12 00:45
Release 3.0C 이전 구버젼에서는 STRING 관련 함수가 다음 것들이 있었네요.
STRING_CENTER
STRING_CONCATENATE
STRING_LENGTH
STRING_MOVE_RIGHT
STRING_REVERSE
STRING_SPLIT
STRING_SPLIT_AT_POSITION
STRING_CONCATENATE_3
STRING_UPPER_LOWER_CASE
STRING_CONDENSE
STRING_REPLACE -
e-abap
2007.02.13 20:54
-
해창이아빠
2009.02.10 13:18
좋은 정보 감사합니다
find '##' in datastring.
IF sy-subrc <> 0.
MESSAGE a702(bc401).
ENDIF.
이 구문은 주석 처리 해버리세요~.
회원님의 서버에 string관련 라이브러리가 전부 설치 되지 않은것 같습니다.