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.
경우가 많은데, 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.
다음검색