안녕하세요, 안하던 OOP를 하려니 장애가 많이 생기네요..^^;
Class에 메소드를 하나 만들었는데, importing 파라미터로 standard table type의 it_Table 이라는 받았습니다.
이 인터널 테이블을 읽으려고 하는데
'Read Table it_table With Key AA = XX'
이런식으로 읽었더니 'The specified type has no structure and therefore no component called "AA" 라는
에러가 나네요.
아무래도 it_table의 필드에 대한 정보가 없어서 그런것 같은데, 어떻게 해야 할까요?
댓글 10
-
지의
2007.11.30 17:20
인터널 테이블 구조와 값이 어떻게 들어가는지 보여주세요. -
웁~쓰
2007.11.30 19:22
INTO 절이나 TRANSPORTING NO FIELDS 절이 필요 한건 아닌지 모르겠네요..ㅋ
-
숟가락맨
2007.11.30 19:24
인터널 테이블에 AA라는 필드가 없어서 그런가보네요..인터널 테이블에 필드가 뭐뭐있는지...확인해야할듯한데요...
글구..클레스에서는 헤더가 없는 인터널 테이블만 사용하는거로 알고있는데....
'Read Table it_table With Key AA = XX' << 이걸 바로 쓸수가 없지 않나요?
data ls_table like it_table.
'Read Table it_table into ls_table With Key AA = XX' 이런식으로 써야하는거같은데.... 그냥 쓸수 있음 걍 쓰고요...ㅎ;;
-
kms
2007.11.30 19:44
답변 감사합니다.
work area , field symbol을 선언해서
Read Table it_Table into work area with key AA = XX
Read Table it_Table assigning field symbol with key AA = XX
이렇게 두가지 다 해봐도 안되네요.
아무래도 it_Table에 대한 정보가 standard table type이라는 것밖에 없어서 AA 라는 component 를
인식하지 못한게 아닌가하고 추측해 봅니다.
결론적으로 메소드를 합쳐서 importing 할일이 없게 만들었습니다..^^;; -
창천 구 만리
2007.11.30 19:57
헤더가 없는 것으로 보이네요.
it_table 이라는 타입형태로 import 받으셨으면, 동일한 필드를 가지는 스트럭쳐를 구성하신 다음 그쪽으로 데이터를 넘기면서 처리 하시면 될 듯 하네요.
-
슈퍼아밥퍼가되련다
2007.11.30 20:00
감사합니다.
-
kms
2007.11.30 22:38
창천 구 만리 님 답변 감사합니다.
it_table이라는 파라미터는 standard table 타입이라서 바디만 있는게 맞구요.
read table with key를 쓰는건 특정 key에 대한 line만을 읽고 싶은건데 말씀하신대로 하려면 파라미터로 받은 인터널 테이블을 구조를
선언한 다른 인터널 테이블에 담은 후 read table을 해야할것 같습니다.
제가 이해한게 맞다면 제 의도가 살짝 빗나간것 같구요.
제가 원한 답변은 메소드 내에서 그런 중간 과정없이 read table을 할수 있는 방법에 대한 것이었습니다.
-
창천 구 만리
2007.11.30 23:19
음...제가 정확히 안드려서 그런가 보군요...
it_table을 선언 하실때 헤더를 선언해주시면 됩니다.
data it_table type standard.......with header line.
이런식으로요.
그리고 실제 메소드 내에서 단순 read 를 사용하시던지 위에 님들 말씀처럼 into 를 사용하셔서 동일한 필드를 가지는 스트럭쳐에 담으시던지 하시면 됩니다.
-
kms
2007.12.01 00:56
헤더와 같이 선언하는 data it_table type standard.......with header line. 구문은 프로그램내에서 이미 선언되어 있습니다.
또한 메소드에 exporting 할 때는 it_table의 body만 넘겨주고요. 이때 파라미터를 standard table 타입으로 넘겨주기 때문에
it_table의 구조에대한 정보는 메소드내에 존재하지 않는것 같구요.
그래서 read table it_Table with key AA=XX into work_area 나 read table it_Table with key AA=XX Assigning
를 했을 때
it_tabl에 AA component 가 없다는 에러가 나는게 아닌가 합니다. 물론 여기서 work_area는 it_Table의 헤더에 해당하는것이구요,
마지막으로 메소드 내에서 'data it_table type standard.......with header line.' 식의 선언은 유효하지 않습니다.
바디와 헤더를 따로 선언 하셔야 합니다.
제가 말씀드리는건 로컬이 아닌 글로벌 클래스 기준입니다.
-
창천 구 만리
2007.12.01 01:30
음...제가 잘못 생각했군요...import 받으시는 놈을 read 하신단 말씀이셨군요...쪽지 보냈습니다...님이 말씀하신 것이 맞는지 확인해 보세요...