본문 바로가기

SAP/ABAP

[ABAP] REPORT ZHANA01_01.

*&---------------------------------------------------------------------*
*& Report  ZHANA01_01
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZHANA01_01.

*****************************************************
* 1st 예제
*****************************************************
*DATA : wa_list TYPE spfli,
*       it_list LIKE TABLE OF wa_list.

*DATA it_list TYPE TABLE OF sflight.
*DATA wa_list LIKE LINE OF it_list.

*SELECT * INTO CORRESPONDING FIELDS OF TABLE it_list
*  FROM spfli.
*LOOP AT it_list INTO wa_list.
*  WRITE:/ wa_list-carrid, wa_list-connid.
*  CLEAR wa_list.
*ENDLOOP.


*****************************************************
* 일반 join 방식
*****************************************************
*DATA: BEGIN OF wa_list,
*      carrid  TYPE scarr-carrid,
*      carrname  TYPE scarr-carrname,
*      connid  TYPE  spfli-connid,
*      END OF wa_list,
*      it_list LIKE TABLE OF wa_list.
*
*
*
*SELECT * INTO CORRESPONDING FIELDS OF TABLE it_list
*  FROM spfli AS a INNER JOIN scarr AS b
*    ON a~carrid = b~carrid.
*
*LOOP AT it_list INTO wa_list.
*  WRITE:/ wa_list-carrid, wa_list-carrname, wa_list-connid.
*  CLEAR wa_list.
*ENDLOOP.


*****************************************************
* loop 를 이용한 join
*****************************************************
DATA: BEGIN OF wa_list,
      carrid  TYPE scarr-carrid,
      carrname  TYPE scarr-carrname,
      connid  TYPE  spfli-connid,
      END OF wa_list,
      it_list LIKE TABLE OF wa_list.

SELECT * INTO CORRESPONDING FIELDS OF TABLE it_list
  FROM spfli.

LOOP AT it_list INTO wa_list.
  SELECT SINGLE carrname INTO wa_list-carrname
    FROM scarr
   WHERE carrid = wa_list-carrid.
* 여기의 it_list의 carrname 에는 실제로는 값이 비어있는것과 같다.

MODIFY it_list FROM wa_list INDEX sy-tabix.

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


*****************************************************
* 대량 join (리소스 부족으로 exception 발생)
*****************************************************
*DATA: BEGIN OF wa_list,
*      carrid  TYPE scarr-carrid,
*      carrname  TYPE scarr-carrname,
*      connid  TYPE  spfli-connid,
*      END OF wa_list,
*      it_list LIKE TABLE OF wa_list.
*
*
*
*SELECT * INTO CORRESPONDING FIELDS OF TABLE it_list
*  FROM zsbook1 AS a INNER JOIN spfli AS b
*    ON a~carrid = b~carrid.
*
*LOOP AT it_list INTO wa_list.
*  WRITE:/ wa_list-carrid, wa_list-carrname.
*  CLEAR wa_list.
*ENDLOOP.