본문 바로가기

SAP/ABAP

[ABAP] REPORT ZHANA01_02.

*&---------------------------------------------------------------------*
*& Report  ZHANA01_02
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZHANA01_02.

* 구조체 방식으로 변수 선언
DATA: BEGIN OF wa_list,
       carrname TYPE scarr-carrname.
        INCLUDE TYPE spfli.
DATA: END OF wa_list,
      it_list LIKE TABLE OF wa_list.

DATA: it_scarr TYPE TABLE OF scarr,
      wa_scarr LIKE LINE OF it_scarr.

SELECT-OPTIONS so_car FOR wa_list-carrid.

* 마스터성 데이터를 가져오는 부분 선택화면 시작 전 실행하면 해당 페이지 실행시
* 단 한번 만 ACCESS 하므로 효율이 좋다고 볼 수 있다.
* 아래 방법이 READ TABLE 방식
INITIALIZATION.
  SELECT carrid carrname INTO CORRESPONDING FIELDS OF TABLE it_scarr
    FROM scarr.

* 선택 화면 시작
START-OF-SELECTION.

* 여기서 마스터 데이터를 가져오게 되면 조회 시 마다 동일한 데이터를 계속 읽어온다.
*  SELECT carrid carrname INTO CORRESPONDING FIELDS OF TABLE it_scarr
*    FROM scarr.
    
  SELECT * INTO CORRESPONDING FIELDS OF TABLE it_list
    FROM spfli
    WHERE carrid IN so_car.

  LOOP AT it_list INTO wa_list.
    CLEAR wa_scarr.
    READ TABLE it_scarr WITH KEY carrid = wa_list-carrid INTO wa_scarr.
    wa_list-carrname = wa_scarr-carrname.

    MODIFY it_list FROM wa_list INDEX sy-tabix.

    WRITE:/ wa_list-carrid, wa_list-carrname, wa_list-connid.
    CLEAR wa_list.
  ENDLOOP.