FIELD-SYMBOLS: <FS_TABLE> TYPE STANDARD TABLE,
<FS_WA> TYPE ANY,
<FS_FIELD> TYPE ANY.
DATA : LO_STRUCTDESCR TYPE REF TO CL_ABAP_STRUCTDESCR,
LO_TABLEDESCR TYPE REF TO CL_ABAP_TABLEDESCR,
LT_COMP TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
LS_COMP TYPE CL_ABAP_STRUCTDESCR=>COMPONENT,
LT_DATA TYPE REF TO DATA,
LS_DATA TYPE REF TO DATA.
DATA : BEGIN OF LT_MARA OCCURS 0,
MATNR LIKE MARA-MATNR,
MAKTX LIKE MAKT-MAKTX,
GROES LIKE MARA-GROES,
MEINS LIKE MARA-MEINS,
END OF LT_MARA.
* "사용될 필드를 선언
LS_COMP-NAME = 'MATNR'.
LS_COMP-TYPE = CL_ABAP_ELEMDESCR=>GET_C( 18 ).
APPEND LS_COMP TO LT_COMP.
LS_COMP-NAME = 'MAKTX'.
LS_COMP-TYPE = CL_ABAP_ELEMDESCR=>GET_C( 18 ).
APPEND LS_COMP TO LT_COMP.
LS_COMP-NAME = 'GROES'.
LS_COMP-TYPE = CL_ABAP_ELEMDESCR=>GET_C( 18 ).
APPEND LS_COMP TO LT_COMP.
LS_COMP-NAME = 'MEINS'.
LS_COMP-TYPE = CL_ABAP_ELEMDESCR=>GET_C( 18 ).
APPEND LS_COMP TO LT_COMP.
SELECT A~MATNR A~GROES A~MEINS B~MAKTX
INTO CORRESPONDING FIELDS OF TABLE LT_MARA
FROM MARA AS A
JOIN MAKT AS B
ON A~MATNR EQ B~MATNR
AND B~SPRAS EQ 'E'
UP TO 200 ROWS.
" 3. 구조 타입 및 테이블 타입 생성
LO_STRUCTDESCR = CL_ABAP_STRUCTDESCR=>CREATE( LT_COMP ).
LO_TABLEDESCR = CL_ABAP_TABLEDESCR=>CREATE( P_LINE_TYPE = LO_STRUCTDESCR ).
*"선언된 구조체를 LT_DATA에 ASSIGN 처리
CREATE DATA LT_DATA TYPE HANDLE LO_TABLEDESCR.
ASSIGN LT_DATA->* TO <FS_TABLE>.
LOOP AT LT_MARA.
CREATE DATA LS_DATA TYPE HANDLE LO_STRUCTDESCR.
ASSIGN LS_DATA->* TO <FS_WA>.
* "LT_DATA에 ASSIGN된 필드를 찾아 데이터를 입력 처리함.
ASSIGN COMPONENT 'MATNR' OF STRUCTURE <FS_WA> TO <FS_FIELD>.
<FS_FIELD> = LT_MARA-MATNR.
ASSIGN COMPONENT 'MAKTX' OF STRUCTURE <FS_WA> TO <FS_FIELD>.
<FS_FIELD> = LT_MARA-MAKTX.
ASSIGN COMPONENT 'GROES' OF STRUCTURE <FS_WA> TO <FS_FIELD>.
<FS_FIELD> = LT_MARA-GROES.
ASSIGN COMPONENT 'MEINS' OF STRUCTURE <FS_WA> TO <FS_FIELD>.
<FS_FIELD> = LT_MARA-MEINS.
APPEND <FS_WA> TO <FS_TABLE>.
ENDLOOP.
BREAK-POINT.
실행으로 생성된 인터널 테이블 구조

댓글 없음:
댓글 쓰기
참고: 블로그의 회원만 댓글을 작성할 수 있습니다.