본문 바로가기
ERP-SAP/ABAP

<NEW ABAP> 2강 READ TABLE을 NEW ABAP으로 바꿔보기 + 1강도 추가연습

by 행복한워니의 기록 2024. 11. 15.
728x90
반응형

공부 삘 받았을 때 계속 해야 한다.
또 내가 중요하다 생각하는건 read table...
엄청 많이 쓰는 인터널테이블 기술이다.

우선 테스트 데이터 만들기....

<OLD ABAP>

귀찮아서 바로 data 선언해서 긁어오는 뉴아밥을 사용했지만 아무튼 테스트 데이터를 ITAB 에 담았다.(LT_SFLIGHT)

그리고 늘 하듯이.
SORT LT_SFLIGHT BY CARRID CONNID FLDATE 로 소팅후에
READ TABLE LT_SFLIGHT INTO 스트럭쳐 WITH KEY CARRID = 'AA'
                    CONNID = '0064'
                    FLDATE = '20240713'
BINARY SEARCH.
해서 값을 찾아
WRITE 로 필드값을 출력했다.


그러면....
뉴아밥은 어떻게 이걸 할까?

<NEW ABAP>

위와 같이 쓴다...
구아밥과 뭐가 더 편한가? 생각해보면
사실 READ TABLE + INTO 안쓰고
WITH KEY 를 안쓴것...
즉, 구문이 조금 줄어들었다.
대신 대괄호를 써야한다.. ㅎㅎ
약간 더 심플해진 느낌이 있고
index 1 이나 값이있는지 체크할때(transpoting no field) 할때는 더 빠르고 편해진 것 같다.

바이너리 서치는 어짜피 선언부터 sorted table 로
따로 만들어서 써야 하니.......
올드아밥과 뉴아밥을 적절히 사용하면 좋을 것 같다.

대신 선언시에 NON UNIQUE KEY 를 안쓰면
키중복값들은 들어가있지 않으니 이 부분은 주의해야 한다.

위에껄 다 따라쳐서 F8로 실행했다면....

우리 1강에서 배웠던 SWITCH 를 활용해서
저 IF SY-SUBRC = 0 부터를
SWITCH 로 바꿀 수 있지 않을까??

1강 복습 시작!!!!!!
먼저 본인이 생각해서 코딩을 한번 짜보자.
나도 그랬으니....

그럼 내 코딩은..
아래처럼 짰다..

왜 2줄이냐고??
2개의 차이가 출력에서 난다.
분명 똑같아 보일텐데 다르다..
직접 짜봐야 안다...

위에는 그냥 필드의 길이에 상관없이 다닥다닥 붙여버린다.

아래는 필드길이 속성을 유지하며 합쳐준다.

뭔말이냐고???

아래 결과를 보자.
출력 리스트중 맨 아래 2개 라인이다.


어떤가.......
요런 차이를 잘 기억해두면 좋을 것 같다.

728x90
반응형