CAFE

§ Tip & Tech §

Ranges table을 만드는 또 다른 방법 (LIKE RANGE OF )

작성자쥔장|작성시간06.07.11|조회수6,165 목록 댓글 0
select ...  문장의  where절에서  in  조건에 줄 데이터가 range tables을 사용하는
경우가 많은데,  4.6B 교재에 다른 형태로 정의하는 것이 있어서 소개합니다

( 기존방법 : Ranges  itab for f.)

Internal table 정의 하는 방법 중의 하나로 소개가 되고 있습니다.

DATA itab TYPE RANGE OF type.           vs    Ranges  itab for f.
DATA itab LIKE RANGE OF f.

이렇게 선언을 하면  Ranges로 선언했을 때와 똑같은 구조를 가지는 internal
table이 만들어 집니다. (standard type internal table)

   SIGN(1)     TYPE C
   OPTION(2) TYPE C
   LOW          TYPE type bzw. LIKE f
   HIGH          TYPE type bzw. LIKE f

이때 만들어지는 인터널 테이블은  header line이 없는 것이라서  with header line
옵션을 주어야  ranges를 사용하던 것과 같은 방식으로 사용할 수 있습니다.

Additions:
1. ... INITIAL SIZE n
2. ... WITH HEADER LINE


Ranges가 있는데, 왜 이런 것을 만들었을까요?  
   ABAP help를 보니까  ABAP Object에서는  header line이 있는 internal table을
   선언할 수 없다고 합니다. ABAP Object 소스를 보다보면 자주 보게될 것 같습니다.


사용법은 Ranges와 같습니다.

1) header line이 있는 것을 사용할 경우
================================================
REPORT  YTEST_006                     .

DATA : RA_ERDAT LIKE RANGE OF VBAK-ERDAT WITH HEADER LINE .

DATA : BEGIN OF IT_VBAK OCCURS 0,
             VBELN LIKE VBAK-VBELN,
             ERDAT LIKE VBAK-ERDAT,
       END OF IT_VBAK.

START-OF-SELECTION.

  RA_ERDAT-OPTION = 'BT'.
  RA_ERDAT-SIGN = 'I'.
  RA_ERDAT-LOW  = '20021201'.
  RA_ERDAT-HIGH = '20021210'.
  APPEND RA_ERDAT.

  SELECT VBELN ERDAT
         INTO TABLE IT_VBAK
         FROM VBAK
         WHERE ERDAT IN RA_ERDAT.



2) header line이 없는 것을 사용할 경우
=============================================
REPORT  YTEST_006                     .

DATA : RA_ERDAT LIKE RANGE OF VBAK-ERDAT.
data : wa_erdat like line of ra_erdat.

DATA : BEGIN OF IT_VBAK OCCURS 0,
              VBELN LIKE VBAK-VBELN,
              ERDAT LIKE VBAK-ERDAT,
           END OF IT_VBAK.

START-OF-SELECTION.

  wa_ERDAT-OPTION = 'BT'.
  wa_ERDAT-SIGN = 'I'.
  wa_ERDAT-LOW  = '20021201'.
  wa_ERDAT-HIGH = '20021210'.

  APPEND wa_erdat to RA_ERDAT .

  SELECT VBELN ERDAT
         INTO TABLE IT_VBAK
         FROM VBAK
         WHERE ERDAT IN RA_ERDAT.
다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼