ABAP RTTS 응용ver

Jubami·3일 전
0

SAP 

목록 보기
13/13
  1. 원본
  2. 수정

1과 2를 구조체를 비교할 때 사용해보자..

TYPES : ty_s_scarr TYPE scarr.

TYPES : BEGIN OF ty_s_error,
          fname         TYPE fieldname,
          fdesc         TYPE fieldname,
          org_value(30),
          cmp_value(30),
        END OF ty_s_error.

DATA : ls_org TYPE ty_s_scarr,          " 원본.
       ls_cmp TYPE ty_s_scarr,          " 비교.
       lt_err TYPE TABLE OF ty_s_error. " 에러.

ls_org = VALUE #( carrid = 'AA' carrname = '에스파'   currcode = 'USD' ).
ls_cmp = VALUE #( carrid = 'AB' carrname = '아이브'  currcode = 'USD' ).

" 2개의 비교군이 있을 때 어떤 필드 값이 다를까?

" Get type.
DATA : lo_stdesc   TYPE REF TO cl_abap_structdescr,
       lo_datadesc TYPE REF TO cl_abap_datadescr.

" 최상위 CL_ABAP_TYPEDESCR에서 구조체 정보를 가져와서 downcasting.
lo_stdesc ?= cl_abap_typedescr=>describe_by_data( ls_org ).

" Fieldname이 담긴 Method 활용.
DATA(lt_component) = lo_stdesc->get_components( ).

LOOP AT lt_component INTO DATA(ls_component).

  CASE TYPE OF ls_component-type.
    WHEN TYPE cl_abap_elemdescr INTO DATA(lo_e).
      " --* GET FIELD DESC.
      DATA(ls_elem) = lo_e->get_ddic_field( sy-langu ).
  ENDCASE.

  "--* Assign Field Value.
  ASSIGN COMPONENT : ls_component-name OF STRUCTURE ls_org TO FIELD-SYMBOL(<fv_org_val>),
                     ls_component-name OF STRUCTURE ls_cmp TO FIELD-SYMBOL(<fv_cmp_val>).

  CHECK <fv_org_val> IS ASSIGNED AND <fv_cmp_val> IS ASSIGNED.

  "--* Field Value Check.
  IF <fv_org_val> NE <fv_cmp_val>.

    "--*  Get Field Name Desc.
    DATA(lv_fname) = ls_elem-reptext.

    APPEND VALUE #( fname     = ls_component-name   " Field Name.
                    fdesc     = lv_fname            " Field Desc.
                    org_value = <fv_org_val>        " Org Value.
                    cmp_value = <fv_cmp_val>        " Cmp Value.
                    ) TO lt_err.
  ENDIF.

ENDLOOP.
  • LT_COMPONENT 정보

    -> 선언한 필드 네임과 타입 정보가 들어있다.

  • 타입 정보

    -> D.E 정보가 들어있다..

결과

-> 원본값과 비교해서 다른 값을 담아봤다.

원본과 비교해서 데이터를 찾고자할 때 사용..
끝.

profile
LV.1 아밥퍼

0개의 댓글

관련 채용 정보