이 포스트는 ABAP을 하면서 쌔빨간 덤프와 터무니없는 오류 메세지들, 시행착오를 겪으며 알게된 저만의 꿀팁을 정리하고자 합니다.
SAP 교육 땐 배우지 못했지만 추후 알게된 내용들을 정리해 두기 위함이니 내용이 좀 터무니 없더라도 너른 마음으로 귀여워(?) 해주시면 감사하겠습니다.
이 스크립트는 새로운 정보를 계속 업데이트 할 예정입니다.
- LOOP문안에서 SELECT문 사용을 지양해라.
사실 이 문장은 ABAP을 접해본 사람이라면 무조건 들었을거라 생각합니다. LOOP를 돌며 반복적으로 DATA를 SELECT 하는 행위는 매우 비효율적이기 때문에 지양하는 것이 통상적으로 좋으나 제가 말하고자 함은 무조건적으로 지켜야하는 절대적인 룰은 아니다라는 것입니다.
데이터의 양과 상황을 고려해 더 효율적인 방법을 찾아야합니다.
- Internal Table을 SORT는 최소한으로.
READ TABLE 문에서 이진탐색옵션을 사용하기 위해 Internal Table을 검색할 키값으로 정렬하는 것은 필수다. 이 때 여러 곳에서 쓸데없이 SORT를 하지말자. (확실히 하겠다고 READ문 직전마다 SORT를 했었던;;)
- FOR ALL ENTRIES를 쓸 땐 데이터의 양을 미리 판단하자
TEXT TABLE과 같은 데이터를 SELECT 할 때 FOR ALL ENTRIES를 사용하곤 하는데 이 때 데이터의 양이 중요함. Internal Table이 비어있으면 무한루프를 돈다. 아래와 같이 SELECT하기전 체크해야함. 또한 FOR ALL ENTRIES에 사용할 IN_TAB에 너무 많은 데이터가 있을 때도 마찬가지로 속도가 매우 느려짐.CHECK IN_TAB[] IS NOT INITIAL. OR IF IN_TAB[] IS NOT INTIAL.
- 'REUSE_ALV_FIELDCATALOG_MERGE' 해당 펑션을 사용할 때 INTERNAL TABLE에 새로 추가한 필드들이 보이지 않는다면 LIKE 로 참조했는지 확인.
"ALVBUFFER" 와 관련된 뭔가 바로 반영되지 않는 이슈가 있는거 같은데 정확한 이유는 찾지 못했음.