이번 연습은 구 아밥으로 스트럭쳐의 각 필드에 값을 넣어 append 하여 itab을 만드는 것을
뉴아밥으로 쉽게 하는 방법이다.
이것은 너무나 유용해 보여서 자주 쓸 것만 같다.
그런데 연습 하다보니 주의할점이 있어 다른 블로그에서는 이 부분을 알려주지 않았기에 쓰도록 하겠다.
-------------------‐-------------
1. 스트럭쳐의 필드에 값 넣기
(1) 타입 선언 후 값넣기
사실 그냥 data : begin of 스트럭쳐명 으로
선언해서 썼는데 뉴아밥의 경우 types로 미리 선언을 많이 해주는 것 같다.
스트럭쳐는 type 선언이나 data 미리 선언이나
아무거나 해도 될 것 같은데 뭐라고 하나만 기억하자.
먼저 type 선언 후 코딩..
위에서 선언 후
아래 data(ls_carrid) 를 바로 선언해버리면서
value 옆에 내가 만든 타입을 넣고 값을 넣었다.
types를 만들면 여러곳에서 재사용성이 좋아지고
perform을 쓸때 유용하게 쓸 수 있다.
그런데 abap의 경우 어짜피 like구문이라는게 또 있어서 data 선언으로 만든 스트럭쳐들 똑같이 like로 따라만들면 되니... perform 에서 using 같은데 쓸거아니라면.....
뭘 해도 상관 없을것이다.
(2) data 선언으로...
뭔말이냐면..
이렇게 해도 된다는 뜻...
value # 으로 바뀌겠지...
왜? 위에 선언을 해놨으니...
그럼 두번째..
ITAB 에 APPEND 시켜보자.
(1) 타입선언 <--뉴아밥시 주의할점이 포함.
위에 선언한 스트럭쳐를 토대로 테이블 타입을 만들어준다.
아래는 3개의 선언이 있다
data 로 선언한 인터널 테이블
types 로 만든 인터널테이블 types 2개
이 두개는 엑티브 문제없는 코드들이다.
즉, 인터널 테이블 타입을 선언할 때
"키값을 같이 셋팅해줘야 한다 " <--중요
lt_carrid2 는 바로 data 선언으로 처리하려 하는데
키값이 셋팅안되어있으면 오류가 난다.
즉, 저런식으로 받아넣고 싶으면 with key를 써서 table types 를 선언해라...
그게 싫다면? 두번째...
(2) 그냥 data 로 인터널 테이블 선언을 해라....
위 사진에 이미 답이 있다.
LT_CARRID 는 DATA선언후에 VALUE #을 통해 값을 담았는데 오류가 없다....
WITH KEY 선언들이 없어도 말이다...
장단점? TYPE로 WITH KEY 선언시 바이너리 서치를 뉴아밥을 통해 바로 할 수 있는 장점이 있을것인데 그냥 구아밥 구문처리 해도 문제가 없으니....사실 취향껏 썼으면 싶다
그럼 선언할 때 키를 안해주면 어떤 오류가 나냐고??
저 선언으로 value값으로 못던져.... 한다..
그러면 이런 값을 담는 것에 제일 많이 쓰이는 것을 떠올려보면 당연히 ranges 아닌가...
특히 날짜나 어떤값들을
sign option low high 값을 담아야 하니...
아래와 같이 담아보자.
특징은 반복되는 sign 과 option은 반복되는 값 괄호 밖으로 빠져있다.
두번째 특징은 ra_datum[] 대괄호로 인터널 테이블이란 것을 알려주고있다.
[] 이거 빼면 오류가 난다.
그리고 블럭처리된 아래 2개라인은...
read table 반복연습 해 보는 것이다.
1번라인 읽기 / 조건절 주고 읽기...
많이 쓸 것 같다.. ㅎㅎㅎ
'ERP-SAP > ABAP' 카테고리의 다른 글
<ABAP> Dynamic internal table (동적 인터널 테이블)에서 cell tab color tab 넣기 만들기 (0) | 2024.12.13 |
---|---|
<NEW ABAP> LOOP AT INTO GROUP BY 사용하고 OLD ABAP 과 비교 (0) | 2024.11.28 |
<NEW ABAP> 2강 READ TABLE을 NEW ABAP으로 바꿔보기 + 1강도 추가연습 (0) | 2024.11.15 |
<NEW ABAP> 1강 COND, SWITCH (OLD ABAP : CASE, IF) 로 바꿔보기 (0) | 2024.11.15 |
<ABAP> XML DOWNLOAD 개발하기 (2) | 2024.11.07 |