고객번호 / 전표번호 / 거래시작일
을 타 Internal Table에서 가져왔다.
위와 같은 데이터 값이 저장되어있는데
여기에서 거래시작일 중 가장 최초거래일만을 가져와야 했는데
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
'SAP > 바보같은 실수들' 카테고리의 다른 글
서브루틴이 연결되지 않음 오류 ( 서브루틴 더블클릭시 가지 않음 ) (0) | 2021.10.19 |
---|---|
04. Type 설정 오류 'RLGRAP-FILENAME' vs 'FILENAME-FILEINTERN' (0) | 2021.04.12 |
03. 통화키에 대한 참조테이블(Reference Table), 참조필드(Reference Table) 설정 (0) | 2021.02.01 |
2. 쓸데없이 사용한 코드들... (IF NOT ~ IS INITIAL. MOVE-CORRESPONDING ~ TO ~) (0) | 2021.01.13 |
1. Sort 하지 않고 Binary Search를 해버렸다... (0) | 2021.01.12 |