고객번호 / 전표번호 / 거래시작일

을 타 Internal Table에서 가져왔다.

Untitled

위와 같은 데이터 값이 저장되어있는데

여기에서 거래시작일 중 가장 최초거래일만을 가져와야 했는데

ABAP에서 MAP 같은 개념을 알지 못하여

고객번호별로 Loop을 돌리며 거래시작일을 Loop 돌리고

지역변수 하나(LV_BUDAT)를 생성 거래시작일을 넣어주고 LOOP안에서 비교하며 낮은 값을 넣어주는 방식으로 고민하다

LOOP에 LOOP도 찝찝하고 좀 바보같은 방법이길래 다른 방법이 없을까 고민하며 생각했던 건

고객번호별 거래시작일로 SORT 이후

DELETE ADJACENT DUPLICATES FROM [INTERNAL TABLE] COMPARING [ 필드네임 OR ALL FIELDS ] 였다.

혹시라도 최초거래시작일이 아닌 최근거래시작일을 구하고 싶다면

SORT itab BY field1 ASCENDING field2 DESCENDING.

이런식으로 필드별로 오름차순 내림차순을 정해주고 중복을 제거하면 될것.

훨씬 코드가 간결하고 가독성도 높으며 부가적인 변수 선언도 없으고 프로세스도 덜 먹는것으로 보인다.

잊지 말자 DELETE ADJACENT DUPLICATES

+ Recent posts