SAP 일반

SAP ABAP Performance Tunning - ST12 , ST03 사용법

모델와이 2025. 2. 13. 09:00

안녕하세요. 모델와이입니다.

오늘은 개발자들이 개발을 하다보면, 늘 부딪히게 되는 개발튜닝에 대한 내역을 설명드리겠습니다.

개발자뿐만 아니라, 운영을 하다보면 컨설턴트와 PI들도 개발자에게 튜닝을 요구하기 위한 좋은 도구라고 생각됩니다.

초급개발자일 수록 혹은 SI 혹은 SM을 진행할 때에도 늘 필요한 기능이니 참고하시어 업무에 도움이 되시길 바랍니다.

 

 

SAP Performance Tuning: 개발자가 꼭 알아야 할 성능 최적화 기법

SAP 시스템에서 성능 최적화(Performance Tuning)는 사용자 경험을 향상시키고, 시스템 리소스를 효율적으로 활용하며, 운영 비용을 절감하는 중요한 요소입니다. 특히 ABAP 개발자로서 최적화된 코드를 작성하는 것은 시스템의 안정성과 효율성을 높이는 핵심 역량 중 하나입니다. 이번 글에서는 SAP 성능 최적화 기법을 크게 SQL 튜닝, ABAP 코드 최적화, 시스템 모니터링 도구 활용이라는 세 가지 관점에서 살펴보겠습니다.


1. SQL 튜닝 (Database Performance Optimization)

SAP의 많은 프로세스는 데이터베이스와 연동되기 때문에 SQL 성능 최적화는 필수적인 요소입니다. 잘못된 SQL 쿼리는 성능 저하뿐만 아니라 시스템 부하를 가중시킵니다.

🔹 SQL 튜닝을 위한 핵심 기법

  1. SELECT * 사용 금지: 불필요한 데이터를 조회하지 않도록 필요한 필드만 선택합니다.
    SELECT matnr, maktx FROM mara INTO TABLE lt_mara WHERE matnr = '123456'.
    
  2. WHERE 절에 적절한 조건 적용: 테이블의 주요 인덱스 컬럼을 활용하여 조회 속도를 향상시킵니다.
  3. INNER JOIN과 FOR ALL ENTRIES 활용: 다중 테이블 조회 시 성능을 고려하여 JOIN 또는 FOR ALL ENTRIES를 적절히 활용합니다.
  4. INDEX 활용 여부 확인: 인덱스가 적절히 사용되지 않으면 성능 저하의 원인이 될 수 있으므로 ST05 SQL Trace로 인덱스 사용 여부를 확인합니다.

🔍 SQL 성능 분석 도구

  • ST05 (SQL Trace): SQL 쿼리 실행 속도를 분석하고 인덱스 활용 여부를 확인하는 데 사용
  • DB02: 데이터베이스 테이블 크기 및 인덱스 활용 현황을 모니터링

2. ABAP 코드 최적화

ABAP 개발자는 SQL 튜닝뿐만 아니라 코드 레벨에서도 최적화를 수행해야 합니다.

🔹 ABAP 코드 최적화 주요 기법

  1. LOOP 안에서 SELECT문 실행 금지 🚫
    • 데이터베이스 부하를 줄이기 위해 JOIN, FOR ALL ENTRIES, INNER TABLE 활용
    • FOR ALL ENTRIES가 JOIN에 비해 프로세스적으로 좋지 않다고 나와있으나, 피치 못할 상황의 경우에는 사용하는 것이 좋습니다. 다른 로직으로 처리 시 비효율 적인 프로세스가 나올 수 있으므로 상황에 맞는 판단이 필요합니다.
    SELECT matnr, maktx FROM mara INTO TABLE lt_mara WHERE matnr IN lt_matnr.
    
  2. 필요한 데이터만 처리
    • READ TABLE 시 BINARY SEARCH를 사용하여 속도를 향상시킵니다.
    • with key가 되는 조건으로 SORT가 되지 않으면 sy-subrc 가 8이 떨어져 데이터를 입력할 수 없으니 반드시 정렬 후 로직을 진행하여야 합니다.
    SORT lt_mara BY matnr.
    READ TABLE lt_mara WITH KEY matnr = '123456' BINARY SEARCH.
    
  3. 필수적인 경우에만 LOOP 사용
    • LOOP문 내 연산을 최소화하고, 필터링된 데이터를 미리 가져오도록 설계합니다.
  4. 병렬 처리 활용 (Parallel Processing)
    • 대량 데이터 처리를 위해 CALL FUNCTION ... STARTING NEW TASK를 활용한 병렬 처리 적용

🔍 코드 성능 분석 도구

  • SAT (Runtime Analysis): ABAP 코드 실행 시간 분석
  • SE30 (ABAP Runtime Analysis): 코드의 실행 성능을 측정하고 병목 구간 파악
  • ST12 (SQL & ABAP Trace): SQL과 ABAP 성능을 함께 분석

3. SAP 시스템 모니터링 도구 활용

SAP에서는 성능 최적화를 지원하는 다양한 도구를 제공합니다. 성능 저하 원인을 분석하고 사전 예방 조치를 취하는 것이 중요합니다. 위에 말씀드린 3가지 성능 분석 도구 중 SAT와 ST12에 대해 설명드리겠습니다.

🔹 SAT (ABAP Runtime Analysis) 사용법

SAT은 ABAP 프로그램의 실행 성능을 분석하는 도구로,

실행 시간을 측정하고 병목 지점을 찾아 최적화하는 데 활용됩니다.

  1. 트랜잭션 코드 SAT 실행
    • SAP GUI에서 SAT을 입력하고 실행합니다.
    • SE30을 입력해도 SAT의 구버전이기때문에 SAT로 연결을 권장합니다.
  2. 테스트할 프로그램 설정
    • "Test Program" 필드에 분석할 프로그램 이름을 입력합니다.
    • "User" 필드에 실행할 사용자를 입력합니다.
    • 필요 시, "Variant"를 설정하여 특정 입력값으로 실행할 수 있습니다.
      SAT 프로그램 화면


  3. Trace 실행
    • "Execute" 버튼을 눌러 트레이스를 실행합니다.
    • 실행 시 입력한 화면 or Transaction or Function이 실행되며 원하는 위치의 작업을 수행하시고 뒤로 나오면 결과가 분석됩니다.
  4. 결과 분석
    • 실행이 완료되면 트레이스 결과를 확인할 수 있습니다.
    • CPU 시간, DB 시간, ABAP 명령 실행 시간을 확인하여 가장 시간이 오래 걸리는 부분을 최적화합니다.
    • Profile Trace Result와 Hit List의 내역을 확인하여 Net의 비율이 높은 내역을 확인하면 부하가 오래걸린 내역을 확인할 수 있습니다. 추가로 왼쪽의 화면을 더블클릭할 경우 해당하는 내역만 검색하여 조회할 수 있습니다.

SAT 입력 결과

 

🔹 ST12 (SQL & ABAP Trace) 사용법

ST12는 SQL 실행 시간과 ABAP 실행 시간을 동시에 분석할 수 있는 강력한 도구입니다. SE30과 ST05의 기능을 결합한 도구라고 보면 됩니다.

  1. 트랜잭션 코드 ST12 실행
    • SAP GUI에서 ST12을 입력하고 실행합니다.
      ST12 화면


      Trace 설정
      • "Trace For"에서 **"Current Mode" 를 선택합니다.
      • 실행에 필요한 내역을 입력 후 "Execute / Start trace" 을 클릭하여 프로그램을 실행 후 작동합니다.
      • 원하는 내역을 모두 처리 후 뒤로 돌아오면 오른쪽 아래에 "Trace analyses"에 내역이 추가됩니다.
      • Trace 내역을 선택 후 아래 Evaluate의 버튼을 클릭하면 분석된 내역이 표출됩니다.
        ST12


  2. Trace 실행 및 데이터 수집
    • "Start Recording"을 클릭하여 프로그램을 실행하면서 트레이스를 수집합니다.
    • 실행 후 "End Recording"을 클릭하여 트레이스를 종료합니다.
  3. 결과 분석
    • SQL 실행 시간, ABAP 실행 시간, 데이터베이스 액세스 횟수를 확인할 수 있습니다.
    • SQL 성능 분석이 필요하면 **ST05 (SQL Trace)**와 함께 사용하여 인덱스 활용 여부를 확인할 수도 있습니다.
    • ABAP Trace의 화면을 보면 해당 T-code를 실행하며 나온 내역들이 조회됩니다.
      위의 전체 프로세스에 대한 작동 비율이 표기되며 해당 비율은 빨간색이여서 나쁘다기보단 전체 점유율에 가깝습니다.
    • 앞서 설명드린 SAT와 같이 전체 Net %를 확인하여 많은 시간이 소요된 프로세스를 확인할 수 있습니다.

결과 분석

 

 

 


🎯 결론: 성능 최적화는 개발자의 필수 역량

SAP 시스템에서 성능 최적화는 단순한 선택이 아니라 필수적인 개발 스킬입니다.

SQL 튜닝, ABAP 코드 최적화, 그리고 SAP 모니터링 도구 활용을 통해 보다 효율적인 시스템을 구축할 수 있습니다.

개발자는 지속적으로 성능 분석 및 개선 활동을 진행하여 최적화된 코드를 작성해야 합니다.

 

물론 튜닝하겠다고 초가삼간 다 태우는 그런 일은 없길 바랍니다.

효율이 좋은 게 최선이지만, 오류 코드를 만들지 않는 것이 기본입니다.

 

👉 앞으로도 SAP 개발과 관련된 다양한 실무 팁을 공유하겠습니다.

궁금한 점이나 추가적으로 다뤄줬으면 하는 주제가 있다면 댓글로 남겨주세요! 😊

 

감사합니다.