SAP BOX

'26/10/30 UPDATE

ABAP / FIELD NOTES

SCMON에 기록이 없는 Z 프로그램은 정말 안 쓰는 걸까

SCMON은 어떤 ABAP 코드가 어떤 맥락에서 불렸는지 남기고, 짧은 기간 뒤 지워지는 그 데이터를 SUSG가 묶어 둡니다. 연말에만 도는 프로그램이 짧은 기록에서 왜 안 쓰는 것처럼 보이는지, 기록에서 삭제까지 SAP가 권하는 순서를 가상 예로 봅니다.

S/4HANA 전환을 앞두고 Z 프로그램을 정리하려고 운영 시스템에서 사용 기록을 몇 달 모았다고 해 봅시다. 한 번도 불리지 않은 프로그램 목록이 나왔습니다. 이 목록을 그대로 지워도 될까요? 이 글을 읽고 나면 SCMON과 SUSG가 무엇을 남기고 어떻게 보관하는지, 수집 기간이 짧을 때 연말에만 도는 프로그램이 왜 안 쓰는 것처럼 보이는지 알고, 기록에서 삭제까지 SAP가 권하는 순서에 맞춰 지울 후보를 고를 수 있습니다.

예시의 프로그램 ZDEMO_FY_CARRY와 수집 기간(3~5월)은 지어낸 것이고, 회계연도가 12월에 끝나는 가상 회사를 가정했습니다. 측정한 값이 아니며 코드는 실행하지 않았습니다. 내용은 SAP Learning 강의 'Collecting Usage Data for Custom Code', SAP S/4HANA 2023 전환 가이드(문서판 7.0), SAP가 공개한 발표 자료 두 편(2019년 TechEd, 2023년 SAP Garage)을 기준으로 정리했습니다. 문서는 영어입니다. 로그인이 필요한 SAP Note와 SCMON·SUSG의 화면 항목은 이 글에서 다루지 않습니다.

전환 전에 안 쓰는 코드를 찾는 까닭

SAP S/4HANA 2023 전환 가이드는 커스텀 코드 마이그레이션 단계를 반드시 거칠 단계는 아니지만 강하게 권하는 단계로 둡니다. 전환 프로젝트를 기존 커스텀 코드의 정리 작업과 묶으라고 하면서, 운영에서 실제로 쓰는 커스텀 개발을 한데 모아 볼 수 있어야 하고 더는 쓰지 않는 커스텀 코드는 지워야 한다고 적습니다. 커스텀 코드 점검 결과가 쓰지 않는 코드의 폐기 같은 준비 작업을 정하는 바탕이 된다는 설명도 있습니다.

SAP Learning 강의는 그 이유를 이렇게 풉니다. S/4HANA는 새 데이터 모델과 코드로 다시 짠 애플리케이션이므로, 예전에 붙인 확장 가운데 일부는 이제 표준 기능이 대신하거나 업무가 바뀌어 더 필요 없을 수 있습니다. 그런 코드를 체계적으로 찾아 지우는 첫걸음이 사용 기록입니다.

SCMON이 남기는 것, SUSG가 모으는 것

사용 기록을 모으는 도구는 둘입니다. 하나는 UPL(Usage and Procedure Logging), 다른 하나는 ABAP Call Monitor(트랜잭션 SCMON)입니다. 둘 다 클래스 메서드나 함수 모듈 같은 ABAP 코드의 실행을 기록해, 어떤 코드가 어떤 맥락에서 실행되었는지 알려 줍니다. SCMON이 더 새로운 도구이고, 그 코드를 누가 불렀는지까지 남깁니다. 성능 문제를 피하려고 두 도구를 동시에 켜지 않기를 권하므로 하나를 골라 씁니다. SAP의 2019년 발표 자료는 SCMON·SUSG 쪽을 권장으로 표시합니다.

어디서 켜는지도 정해져 있습니다. 판단 기준은 최종 사용자의 실제 사용이므로, 고른 도구는 운영 시스템에서 돌려야 합니다. 개발이나 테스트 시스템의 호출로는 이 질문에 답할 수 없습니다. 같은 발표 자료는 지금 쓰는 SAP Business Suite 환경에서 미리 할 수 있는 일로 SCMON·SUSG를 켜 두는 것을 꼽습니다.

짚어 둘 점은 SCMON이 모은 데이터가 짧은 기간이 지나면 지워진다는 것입니다. 그래서 트랜잭션 SUSG로 사용 데이터를 묶어(aggregate) 관리합니다. SAP 발표 자료가 그리는 흐름은 SCMON으로 모으고, 운영 시스템에서 SUSG로 묶고, 그 데이터를 Custom Code Migration 앱에 올려 마이그레이션 범위를 정하는 순서입니다. 이 흐름에는 SAP Solution Manager가 필요하지 않고, Solution Manager의 CCLM·UPL 도구로 평가하는 길도 여전히 있습니다.

SAP 노트

사용 기록이 쌓이고 쓰이는 길

운영 시스템에서 모으고, 묶고, 분석 앱에 올린다

  1. SCMON(ABAP Call Monitor)

    SCMON

    • 운영 시스템에서 켠다
    • 어떤 ABAP 코드가 어떤 맥락에서 돌았는지
    • 누가 불렀는지도 남긴다
  2. SUSG로 묶기

    SUSG

    • SCMON 데이터는 짧은 기간 뒤 지워진다
    • SUSG가 모아서 관리한다
    • 운영 시스템에서 집계한다
  3. Custom Code Migration 앱

    SAP Fiori app

    • 사용 데이터를 올려 범위를 정한다
    • 안 쓴 확장을 가려낸다
    • 범위는 손으로 고칠 수 있다

SAP Learning 강의와 SAP 발표 자료(2019·2023) 기준입니다. 화면과 메뉴는 이 글에서 다루지 않습니다.

SCMON은 무엇이 어디서 불렸는지를 남기지만 그 데이터는 오래 가지 않습니다. 그래서 SUSG로 묶어 두고, 분석은 그 묶은 데이터를 Custom Code Migration 앱에 올려서 합니다.

기간이 짧으면 안 씀과 아직 안 옴이 섞인다

SAP Learning 강의는 고른 도구를 대체로 6~18개월 돌리고, 그 기간에 연말 결산이 한 번 이상 들어가야 한다고 권합니다. 이 조건이 왜 필요한지는 기록이 무엇인지 생각하면 보입니다. 사용 기록은 그 기간에 실제로 불린 코드의 목록입니다. 그러니 기록에 없다는 사실은 그 기간에 불리지 않았다는 뜻이지, 앞으로도 쓰지 않는다는 뜻이 아닙니다.

가상의 ZDEMO_FY_CARRY가 연말 결산 뒤 1월에 한 번만 도는 배치 프로그램이라고 해 봅시다. 3월부터 5월까지 석 달만 모은 기록에는 이 프로그램이 나올 수 없습니다. 매일 도는 보고서는 기록이 넘치는데 이 프로그램은 0건이니, 목록만 보면 지울 후보 맨 위에 올라옵니다. 같은 프로그램도 연말 결산을 지난 기록에서는 호출과 호출한 쪽이 남아 결론이 정반대가 됩니다. SAP가 권하는 기간 조건은 이런 프로그램을 놓치지 않게 하는 장치로 읽을 수 있습니다.

SAP 노트

기록이 없다는 것은 '안 쓴다'가 아니다

가상 예: 연말 결산 뒤에만 도는 ZDEMO_FY_CARRY

  • 3~5월 석 달 기록

    ZDEMO_FY_CARRY: -

    • 매일 도는 Z 보고서는 기록이 있다
    • ZDEMO_FY_CARRY는 기록이 없다
    • 뜻: 이 기간에 불리지 않았다
  • 연말 결산을 지난 기록

    ZDEMO_FY_CARRY: called

    • ZDEMO_FY_CARRY 호출이 남는다
    • 누가 불렀는지도 함께 남는다
    • 같은 프로그램, 다른 결론
  • SAP가 권하는 기간

    6-18 months

    • 고른 도구를 6~18개월 돌린다
    • 그 안에 연말 결산이 한 번 이상
    • 운영 시스템의 실제 사용이 기준

프로그램과 기간은 가상이며 측정한 값이 아닙니다. 회계연도는 12월에 끝난다고 가정했고, 결과는 기록 기간의 규칙으로 따진 것입니다.

연말 결산 뒤에만 도는 프로그램은 연말을 지나지 않은 기록에 나타날 수 없습니다. SAP가 수집 기간에 연말 결산을 넣으라고 권하는 까닭입니다.

아래 편집기 화면이 이 가상 프로그램입니다. ①은 프로그램 이름, ②는 연말 결산 뒤에만 도는 작업이라는 설명, ③은 실제 처리를 부르는 줄입니다. 기록 기간이 연말을 지나지 않았다면 ③은 그 기간에 한 번도 실행되지 않았으므로 기록이 남을 수 없습니다.

SAP GUI ABAP 편집기에 가상 프로그램 ZDEMO_FY_CARRY가 열려 있고 번호 세 개가 있다. 1은 REPORT zdemo_fy_carry. 줄, 2는 연말 결산 뒤 한 번만 도는 배치 작업이라는 주석, 3은 PERFORM carry_balances USING p_year. 줄이다. 아래 메모는 회계연도가 12월에 끝나는 회사를 가정하고, 연말을 지나지 않은 3~5월 기록에는 이 프로그램이 나올 수 없고, 연말을 지난 기록에는 호출과 호출한 쪽이 남는다고 설명한다.
회계연도가 12월에 끝나는 회사에서 연말 결산 뒤에만 도는 가상 프로그램 ZDEMO_FY_CARRY. 프로그램, 회계연도, 실행 주기는 가정이고 코드는 실행하지 않았으며, 기록에 나오고 안 나오는 것은 기록 기간의 규칙으로 따진 것이다.

기록에서 삭제까지 SAP가 권하는 순서

사용 기록은 삭제의 출발점일 뿐입니다. SAP Learning 강의가 권하는 순서는 다섯 단계입니다. 첫째, 위처럼 사용 데이터를 모으고 묶습니다. 둘째, 커스텀 코드 분석으로 지워도 되는 확장을 가려냅니다. SAP Fiori 앱 Custom Code Migration은 UPL이나 SCMON의 사용 통계를 바탕으로 안 쓴 확장을 찾아 줍니다. 이 앱은 새로 전환한 S/4HANA 샌드박스 시스템에 있고, 샌드박스가 아직 없으면 SAP BTP ABAP 환경에서 RFC와 Cloud Connector로 SAP ERP 시스템에 붙여 쓸 수 있습니다. ADT의 ABAP Test Cockpit으로 분석하는 길도 있습니다. 2023년 발표 자료는 앱이 정한 범위를 필요하면 손으로 조정하는 단계를 따로 둡니다.

셋째, 백업과 되살리는 절차를 만듭니다. 지운 코드가 다시 필요해질 수 있다는 걱정에 답하는 단계입니다. 별도의 백업용 ABAP 시스템이나 제3자 제품을 쓸 수 있고, SAP는 쓰지 않는 코드를 외부 Git 저장소에 두는 gCTS(Git-enabled Change and Transport System)를 선택지로 내놓았습니다. 어느 쪽이든 되살릴 때는 ATC 점검과 테스트를 거친 뒤에 운영으로 전송합니다. 넷째, 품질 담당 팀이 확장을 뺀 상태에서 앱이 기술적으로 문제없이 도는지 시험합니다. 다섯째, 전환 중에 지웁니다. Custom Code Migration 앱이 지울 확장을 담은 전송 요청을 만들고, 전환 때 Software Update Manager(SUM)가 이 요청을 받아 해당 개발 오브젝트를 지웁니다.

SAP 노트

기록에서 삭제까지, SAP가 권하는 순서

전환 전 커스텀 코드 정리

  1. 모으고 묶기

    SCMON -> SUSG

    • SCMON이나 UPL 중 하나를 운영에서
    • 6~18개월, 연말 결산 포함
    • SUSG로 묶어 둔다
  2. 지울 후보 가려내기

    Custom Code Migration

    • 앱이 사용 통계로 안 쓴 확장을 찾는다
    • S/4HANA 샌드박스나 BTP ABAP 환경에서
    • 범위는 손으로 조정한다
  3. 백업과 되살리는 길

    gCTS (Git)

    • 별도 ABAP 시스템, 제3자 제품, gCTS 중 하나
    • 되살릴 때는 ATC 점검과 테스트 뒤
    • 확장을 뺀 채 앱이 도는지 테스트
  4. 전환 때 지우기

    SUM

    • 앱이 삭제할 확장을 담은 전송 요청을 만든다
    • SUM이 전환 중 그 요청을 받아 지운다

SAP Learning 강의 'Collecting Usage Data for Custom Code'와 SAP Garage 발표(2023-11-08) 기준입니다.

사용 기록은 삭제의 출발점일 뿐입니다. 후보를 가려낸 뒤 백업과 되살리는 길을 만들고, 확장을 뺀 상태를 테스트한 다음에야 전환 중에 지웁니다.

이 순서에서 사용 기록이 쓰이는 곳은 처음 두 단계입니다. 기록 기간이 연말을 빠뜨렸다면 둘째 단계의 후보 목록부터 흔들리므로, 기간을 확인하는 일은 앱을 열기 전에 해 둘 수 있습니다.

오늘 할 일은 하나입니다. 이미 모아 둔 SCMON·SUSG 기록이 있다면, 지울 후보를 보기 전에 그 기록 기간이 연말 결산을 지났는지부터 확인하세요. 지나지 않았다면 그 목록은 이 기간에 불리지 않은 코드의 목록으로만 읽습니다.

끝 · END OF NOTE
RSS 구독목록으로
COMMENTS BOX

이 기록에 대화를 더해 주세요.

궁금한 점, 다른 접근, 직접 해 본 결과를 나눠 주세요.

최신순

로그인 상태 확인 중…

댓글을 불러오는 중…