data: dy_table type ref to data,
dy_line type ref to data,
data : idetails type abap_compdescr_tab,
xdetails type abap_compdescr.
data : ref_table_des type ref to cl_abap_structdescr.
ref_table_des ?=
cl_abap_typedescr=>describe_by_name( p_table ).
idetails[] = ref_table_des->components[].
빩간색 표시된 부분에 대한 해석 부탇 드려요~ ^^
댓글 5
-
버미!
2010.08.19 01:48
-
맑은하늘
2010.08.19 02:15
reference object 를 선언할 때 type ref to 를 사용합니다.
?= 는 move-correnspoding 과 비슷합니다. 오른쪽 오브젝트에 있는 구성요소중에서
왼쪽오브젝트와 같은것들을 가져오게 되고, 그중에 components라는 복사된 오브젝트를
idetails로 옮겨주는 거예요.
?=가 실행되기전에 cl_abap_typedesc=>describe_by_name( p_table ) 이라는 메쏘드가 먼저 실행되고
그 실행된 결과중에서 같은 것들이 ref_table_des 로 옮겨지게 되는 것입니다. 즉, p_table 에 대한 구성요소가
메쏘드에 의하여 실행되어 p_table에 대한 구성요소가 components 에 담겨지게 되고 이를 ref_table_des 로
옮겨서 idetails 로 다시 옮기는 겁니다. 이해가 되셨음 좋겠네요. ^^;
-
Kate
2010.08.20 03:02
?= 이건 와이드닝 캐스팅입니다.
개념은 일반 클래스(자바와 C++포함)와 같습니다.
-
Kate
2010.08.20 03:08
간단하게 예를 보여드리면, (정식교재에 있는 내용이죠)
<NARROWING CAST = UPCAST>
DATA: r_veh TYPE REF TO lcl_vehicle,
r_bus TYPE REF TO lcl_bus.
CREATE OBJECT r_bus.
r_vehicle = r_bus. “ NARROWING CAST (부모형 -> 자식형)
<WIDENING CAST = DOWNCAST>
r_bus ?= r_vehicle. “WIDENING CAST (자식형 -> 부모형)
r_bus->수납하기( ). “수납하기( ) : r_bus 만이 가진 method
r_vehicle->수납하기(). “ error
=> 자식 고유의 METHOD를 쓰기 위해선 NARROWING CAST 상태에선 쓸 수 없으므로 원래 자신의 상태로 변형 되야 한다.
-
처음처럼
2010.08.20 18:10
답변 감사합니다.^^ 잘 배웠습니다.
p_table의 구조를 받아서 ref_table_des란 class에 넣습니다.
ref_table_des의 components(필드)들을 idetails란 인터널 테이블에 넣습니다.