[ABAP] 내부 테이블의 특정 항목만을 다른 테이블로 추출(Extract Field Values In Internal Table)
CL_ABAP_CORRESPONDING이라는 재미있는 표준 클래스를 찾았으므로 내부 테이블의 특정 항목 만
다른 테이블에 꺼내는 샘플 코드를 써 보았습니다.
src_tbl: 추출 소스 테이블
del_dup : 'X'의 경우 중복 값을 제외 (DELETE DUPLICATE) 한 결과를 반환합니다.
out_tbl: 추출 대상 테이블. src_tbl에서 추출하는 항목과 동일한 이름 항목을 가져야합니다 (당연히 )
예를 들어, 메인 테이블과는 별도로 코드의 텍스트 값을 취득할 때에 값 일람 테이블을 취득한 후,
이것을 For all entries의 테이블로 지정하는 등이면 편리하지 않을까요.
SAMPLE_CL_ABAP_CORRESPONDING
REPORT Y_SAMPLE_CL_ABAP_CORRESPONDING.
* 参照PGM:DEMO_CORRESPONDING_CLASS_TB
TYPES:
BEGIN OF line1,
matnr TYPE mara-matnr,
meins TYPE mara-meins,
mtart TYPE mara-mtart,
matkl TYPE mara-matkl,
END OF line1,
BEGIN OF line2,
meins TYPE mara-meins,
END OF line2,
BEGIN OF line3,
mtart TYPE mara-mtart,
END OF line3.
DATA:
itab1 TYPE TABLE OF line1 WITH KEY matnr,
itab2 TYPE TABLE OF line2 WITH NON-UNIQUE KEY meins,
itab3 TYPE TABLE OF line3 WITH NON-UNIQUE KEY mtart.
CLASS LCL_move_correspond DEFINITION.
PUBLIC SECTION.
CLASS-METHODS main IMPORTING src_tbl TYPE ANY TABLE
del_dup TYPE c
EXPORTING out_tbl TYPE ANY TABLE.
ENDCLASS.
CLASS LCL_move_correspond IMPLEMENTATION.
METHOD main.
* 共通項目名の内容を抜き出し
cl_abap_corresponding=>create(
source = src_tbl
destination = out_tbl
mapping = VALUE cl_abap_corresponding=>mapping_table( )
)->execute( EXPORTING source = src_tbl
CHANGING destination = out_tbl ).
SORT out_tbl.
IF del_dup = abap_on.
* 値の重複を除外
DELETE ADJACENT DUPLICATES FROM out_tbl.
ENDIF.
ENDMETHOD.
ENDCLASS.
START-OF-SELECTION.
* 元となるテーブルにデータを格納
SELECT matnr, meins, mtart, matkl
FROM mara INTO TABLE @itab1.
* meins一覧作成
LCL_move_correspond=>main( EXPORTING src_tbl = itab1
del_dup = abap_on ”値重複除外:on
IMPORTING out_tbl = itab2 ).
* 書き込み
cl_demo_output=>write( itab2 ).
* mtart一覧
LCL_move_correspond=>main( EXPORTING src_tbl = itab1
del_dup = abap_on
IMPORTING out_tbl = itab3 ).
* 書き込み
cl_demo_output=>write( itab3 ).
* 書き込んだ内容を表示
cl_demo_output=>display( ).
Reference
이 문제에 관하여([ABAP] 내부 테이블의 특정 항목만을 다른 테이블로 추출(Extract Field Values In Internal Table)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Go_Ohta/items/8b501398e0eed04ae5f1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)