SAP 표준 프로그램이나 테이블 구조를 직접 고친 시스템에 업그레이드나 Support Package를 넣는다고 해 봅시다. 고친 오브젝트를 SAP가 이번에 다시 보냈다면, 업데이트 도중에 SPDD에서, 이어서 SPAU에서 수정 조정(modification adjustment)을 하라는 요청이 나옵니다. 이 글을 읽고 나면 수정 조정이 무엇을 맞추는 일인지, SPDD와 SPAU가 무엇을 어떤 순서로 맡는지, 수정 도우미(Modification Assistant)로 고친 것과 아닌 것이 조정 때 어떻게 다른지 알고, 다음 업데이트 전에 고친 곳과 그 이유를 정리해 둘 수 있습니다.
예시의 프로그램 RDEMO_STD_ORDER(SAP 표준이라고 가정), 고객 include ZDEMO_STD_ORDER_EXT, 수정 번호 DEMK900001은 모두 지어낸 이름이고, 코드는 실행하지 않았습니다. 내용은 SAP NetWeaver 7.5 도움말의 표준 변경(Changing the SAP Standard) 부분을 기준으로 했고, 최신 릴리스의 화면 이름과 다를 수 있습니다. 로그인이 필요한 SAP Note는 다루지 않습니다.
업데이트는 고친 표준을 덮어씁니다
SAP는 업그레이드, Support Package, Enhancement Package 설치를 묶어 업데이트라고 부릅니다. 업데이트를 하면 SAP 오브젝트가 새로 받은 오브젝트로 덮어써지고, 고객이 고친 내용도 모두 덮입니다. 덮인 수정을 다시 넣도록 돕는 도구가 ABAP Dictionary 오브젝트용 SPDD와 그 밖의 저장소 오브젝트용 SPAU입니다.
조정이 필요한 것은 고객이 고쳤고 SAP가 이번 업데이트로 다시 보낸 오브젝트입니다. 고객 이름 공간에 도메인, 데이터 요소, 테이블을 새로 만들기만 했다면 SPDD 조정은 필요 없습니다. 그러니 표준을 직접 고친 오브젝트가 많을수록 업데이트 때 조정 목록에 오를 수 있는 오브젝트도 많아집니다.
오브젝트마다 할 일은 크게 둘입니다. 수정을 살리려면 조정(Adjust)해서 SAP의 변경과 고객의 수정을 합칩니다. 수정이 더 필요 없으면 원본으로 되돌려(Reset to original) 수정을 버립니다. 되돌린 오브젝트는 다음 업데이트에서 SPAU에 다시 나오지 않습니다. 어느 쪽도 하지 않으면 새 SAP 표준이 활성이 되어 수정은 덮인 채로 남고, 다음 업그레이드에서 같은 조정을 다시 하라는 요청을 받습니다. SAP가 조정하거나 되돌려 두라고 권하는 까닭은 다음 업그레이드의 일을 줄이기 위해서입니다.
SAP 노트
업데이트가 고친 표준을 덮어쓰면
고친 오브젝트를 SAP가 다시 보내면 조정할 일이 생긴다
고객이 표준을 고친다
RDEMO_STD_ORDER- SAP 이름 공간의 오브젝트를 바꾼다
- 위 이름은 가상의 SAP 표준 프로그램
업데이트가 새 표준을 보낸다
- 업그레이드, Support Package, Enhancement Package
- SAP 오브젝트를 새로 보낸 것으로 덮어쓴다
- 고친 내용도 함께 덮인다
SPDD·SPAU에서 정한다
SPDD / SPAU- 조정: SAP 변경과 고객 수정을 합친다
- 원본으로 되돌리기: 수정을 버린다
- 그냥 두면 새 표준이 활성이 되고 다음 업그레이드에서 다시 묻는다
SAP NetWeaver 7.5 도움말 기준입니다. 프로그램 이름은 가상 예시이며 실행 결과가 아닙니다.
SPDD가 먼저, SPAU가 다음입니다
SPDD는 ABAP Dictionary 가운데 도메인, 데이터 요소, 테이블과 구조(테이블의 기술 설정과 인덱스 포함)를 맡습니다. 이들은 업데이트가 Dictionary 오브젝트를 한꺼번에 활성화하기 전에 맞춰야 데이터와 테이블 필드를 잃지 않으므로, SPDD 조정은 업데이트 도중에 하고 모두 마쳐야 업데이트가 이어집니다. 조정한 오브젝트는 직접 활성화하지 않습니다. 뷰, 검색 도움말, 잠금 오브젝트 같은 나머지 Dictionary 오브젝트는 바뀌어도 데이터를 잃지 않으므로 업그레이드 뒤 SPAU에서 맞춥니다.
SPAU는 프로그램, 함수 모듈, 화면, 인터페이스, 문서 같은 저장소 오브젝트를 맡고, 업데이트 도구(SUM이나 SPAM/SAINT)가 SPAU를 시작하라고 묻습니다. 목록은 SAP Note, 수정 도우미로 고친 것(With Assistant), 수정 도우미 없이 고친 것(Without Assistant) 같은 탭으로 나뉩니다. SAP Note를 구현해도 SAP 이름 공간의 오브젝트가 바뀌고 업데이트가 그중 일부를 덮어쓰므로, 업데이트에 그 수정이 빠진 SAP Note는 다시 구현하고, 들어 있는 것은 더 필요 없는(obsolete) 것으로 확인합니다. SAP는 수정과의 충돌을 풀기 위해 SAP Note부터 맞추라고 권합니다. 향상(enhancement) 구현은 향상한 오브젝트가 바뀌면 맞지 않게 될 수 있어 SPAU_ENH에서 따로 봅니다.
조정은 개발 시스템에서 먼저 합니다. 참여하는 사람마다 태스크를 둔 전송 요청에 조정 결과를 담고 툴바의 Assign Transport로 표시해 두면, 다음 시스템을 업데이트할 때 그 요청이 자동으로 제안되어 같은 조정을 되풀이하지 않아도 됩니다. SPAM·SAINT에서는 이 등록이 꼭 있어야 하고, 두 도구가 조정 전송의 컴포넌트 정보를 대상 시스템과 대조합니다. 다만 품질·테스트 시스템에서 손으로 맞출 오브젝트가 남는 경우도 있습니다. 요청과 태스크의 관계는 전송 요청과 태스크 노트에서 다뤘습니다.
SAP 노트
SPDD 먼저, SPAU 다음
개발 시스템에서 맞추고 전송 요청으로 다음 시스템에 넘긴다
SPDD: ABAP Dictionary
SPDD- 도메인, 데이터 요소, 테이블과 구조
- 일괄 활성화 전에 맞춰야 데이터와 필드를 잃지 않는다
- 조정한 오브젝트는 활성화하지 않는다
SPAU: 나머지 저장소 오브젝트
SPAU- 프로그램, 함수 모듈, 화면, 인터페이스, 문서
- 뷰, 잠금 오브젝트 같은 다른 Dictionary 오브젝트도
- SAP Note를 먼저, 그다음 수정
SPAU_ENH: 향상 구현
SPAU_ENH- 향상한 오브젝트가 바뀌면
- 그 구현이 맞지 않게 될 수 있다
조정을 담은 전송 요청을 Assign Transport로 표시하면 다음 시스템을 업데이트할 때 자동으로 제안됩니다. SAP NetWeaver 7.5 도움말 기준입니다.
수정 도우미로 고쳤는지가 조정을 바꿉니다
수정 도우미는 ABAP Workbench 편집기에서 표준 오브젝트를 고칠 때 들어가는 수정 모드입니다. 원본은 보호되어 있어 Insert·Replace·Delete 같은 별도 버튼으로만 바꿀 수 있고, 바꾼 내용은 모두 기록됩니다. 프로그램에서는 각 수정이 모듈, 서브루틴, 이벤트 같은 모듈화 단위에 묶여 기록되고, 업데이트 때 소스 비교도 전송 오브젝트 전체가 아니라 이 단위로 이뤄집니다.
SAP가 이번에 바꾸지 않은 단위에 넣은 수정은 자동으로 옮길 수 있습니다(초록 신호). SAP도 같은 단위를 바꿨다면 분할 화면 편집기에서 왼쪽의 새 SAP 원본과 오른쪽의 고객 수정본을 보며 무엇을 옮길지 사람이 정합니다(노란 신호). 아래 화면처럼 가상의 check_order 서브루틴에 고객 검사 한 줄을 넣었다면, 다음 업데이트에서 SAP가 check_order를 그대로 두었는지에 따라 조정 방식이 달라집니다.
SAP는 넣는 코드를 고객 이름 공간 include의 서브루틴으로 옮기고 SAP 프로그램마다 고객 include를 하나 쓰라고 권합니다. 업그레이드 시간이 줄고 충돌을 풀 때도 도움이 된다는 설명이고, 그러면 표준 안에 남는 수정은 이 예처럼 짧은 줄이 됩니다.
수정 도우미 없이 고친 오브젝트는 Without Assistant 탭에 모입니다. 가능하면 버전 관리를 쓰고, Adjust 동작을 실행하면 해당 Workbench 도구로 넘어가 손으로 맞춥니다. 버전 관리를 쓸 수 없다면 바꾼 내용을 꼼꼼히 기록해 두라고 SAP는 권하고, 그 기록이 다음 조정 때 큰 도움이 될 수 있다고 적습니다. 수정 도우미를 끄면 원본과의 차이 기록이 사라져 다시 켜도 돌아오지 않으므로, SAP는 켜 둔 채 고치라고 권합니다.
Dictionary에서는 고객 이름 공간의 필드를 SAP 구조에 직접 넣었다면 SPDD는 그 필드를 append 구조로 옮기고 SAP가 보낸 구조는 원래대로 되돌리는 방법을 제안합니다. 버전 비교 결과 수정이 더 필요 없어 보여도 그것이 의도한 결과인지는 사람이 정합니다. 고객이 구조에 넣은 필드와 같은 이름의 필드를 SAP가 보냈을 때, 그 필드가 손으로 넣은 수정(manual correction)이었다면 고객 수정을 되돌리고, 자기 용도로 만든 것이었다면 고객 필드의 이름을 바꿔야 합니다. 답을 가르는 것은 필드를 넣은 까닭이고, SAP는 이런 충돌을 피하도록 고객 필드에 Z 접두어를 쓰라고 권합니다.
SAP 노트
고친 방식에 따라 달라지는 조정
수정 도우미 기록이 있는지, SAP가 같은 곳을 바꿨는지
자동 조정 · 초록 신호
With Assistant- 수정 도우미로 고쳤다
- SAP가 그 모듈화 단위를 바꾸지 않았다
- 여러 오브젝트를 한 번에 Adjust
도구 지원 조정 · 노란 신호
With Assistant- 수정 도우미로 고쳤다
- SAP도 같은 단위를 바꿨다
- 분할 화면 편집기에서 사람이 고른다
수정 도우미 없이 고친 것
Without Assistant- 가능하면 버전 관리로 비교한다
- 조정은 해당 Workbench 도구에서 손으로
- 버전 관리를 못 쓰면 남긴 기록이 다음 조정을 돕는다
신호 색은 SPAU의 With Assistant 탭 기준입니다(NW 7.5 도움말). 실행해서 얻은 결과가 아니라 문서의 규칙을 정리한 것입니다.
다음 조정을 작게 만드는 것
SAP는 Customizing, 개인화, 출구(exit), BAdI로 요구를 채울 수 없을 때만 표준을 고치라고 합니다. 고친다면 수정을 서브루틴에 담고, 도메인 길이는 바꾸지 말고, 여러 곳에서 쓰는 함수 모듈·테이블·메시지는 되도록 건드리지 말라고 권합니다.
이미 쌓인 수정을 줄이는 길도 있습니다. 이번 업데이트 전까지 조정되지 않고 남아 있던 오브젝트는 그동안 수정 없이 쓰였으므로, SAP는 그 수정이 더 필요 없을 가능성이 높다며 표준으로 되돌리라고 합니다. SUM은 업데이트를 시작하기 전에 이런 오브젝트를 찾아 되돌릴지 묻습니다. 그때 되돌리지 않기로 했다면 SPDD·SPAU 목록에 Not adjusted since 열을 더해 걸러 볼 수 있습니다. 업그레이드 전에 조정이 필요한지, 어느 단계에서인지 미리 분석해 대상 오브젝트를 SPDD에서 볼 수도 있습니다.
오늘 할 일은 하나입니다. 수정 브라우저(SE95)를 열어 Without Modification Assistant 쪽에 나오는 오브젝트마다 무엇을 왜 고쳤는지 한 줄씩 적어 두세요. 수정 도우미 기록이 없는 오브젝트라면 다음 조정 때 그 한 줄로 수정을 살릴지 되돌릴지 가늠할 수 있습니다.
이 기록에 대화를 더해 주세요.
궁금한 점, 다른 접근, 직접 해 본 결과를 나눠 주세요.
로그인 상태 확인 중…
댓글을 불러오는 중…