2025. 4. 27. 09:00ㆍSAP - ABAP
PERFORM문 안에 들어가면 그 안에서는 지역변수가 선언이 되지만
Statics의 경우는 FORM 문 안에서 지역변수 임에도 정적으로 선언이 된다.
그리고 Local 영역에서 한 번 선언한 Statics 변수는 로컬에서 다음 참조 시 재정의되지않는다.
또한 이전 지정된 값을 보존하기 때문에 Binary search 보다 퍼포먼스 측면에서 더욱 낫다고 한다.
[예시 1]
TEST_A는 지역변수, TEST_B는 Statics로 변수를 선언해주었다.
DO 5 TIMES.
PERFORM TEST_CASE.
ENDDO.
FORM TEST_CASE.
DATA TEST_A TYPE I VALUE 1.
STATICS TEST_B TYPE I VALUE 1.
TEST_A = TEST_A + 1.
TEST_B = TEST_B + 1.
ENDFORM.
TEST_A는 매번마다 2 라는 값이 들어가겠지만
TEST_B는 5회동안 2, 3, 4, 5, 6 이 들어가게 된다.
왜냐하면 일반적인 지역변수 선언은 서브루틴이 끝나면 메모리 공간에서 삭제가 되고
STATICS를 통한 변수 선언은 메모리를 적재시켜놓기 때문!
[예시 2]
데이터 양이 방대한 TABLE에서 데이터를 매번 SELECT해야할 때,
STATICS를 사용하여 처음 1회 SELECT 해놓으면
다음 차례에서는 지속적으로 메모리공간에 담아놓기 때문에
SELECT를 하지 않아도 기 추출해놓은 데이터를 가지고 활용할 수 있다는 점에서 퍼포먼스를 높이고 부하를 줄여준다,
FORM TEST_CASE2 USING PV_A
CHANGING PV_B.
STATICS: LT_TABLE TYPE HASHED TABLE OF GT_TABLE
WITH UNIQUE KEY A
WITH HEADER LINE.
READ TABLE LT_TABLE WITH KEY A = PV_A.
IF SY-SUBRC = 0.
PV_B = LT_TABLE-B.
ELSE.
SELECT SINGLE A B
INTO (LT_TABLE-A, LT_TABLE-B)
FROM TABLE
WHERE A EQ PV_A.
IF SY-SUBRC = 0.
PV_B = LT_TABLE-B.
INSERT LT_TABLE INTO TABLE LT_TABLE.
ENDIF.
ENDIF.
ENDFORM.
'SAP - ABAP' 카테고리의 다른 글
[SAP/ABAP] 문자열에 0 채우기, 0 제거 함수 (CONVERSION_EXIT_ALPHA_OUTPUT / INPUT) (0) | 2025.04.30 |
---|---|
[SAP/ABAP] 'READ_REPORT_LINE_TOO_LONG' Dump 발생 시 대처 방법 (0) | 2025.04.29 |
[SAP] TIMESTAMP 한국 시간으로 변경(RKE_TIMESTAMP_CONVERT_OUTPUT) (0) | 2025.04.24 |
[SAP] 엑셀 고정 템플릿 양식 관리 - 웹저장소(Web Repository) 등록 및 활용 방법 (0) | 2025.04.20 |
[SAP] ALV 레이아웃 개인 / 광역 세팅 방법 (0) | 2025.04.19 |