바로투입이력카드
SAP 게시판

교육·자격증공부 방법

SAP 개발 객체와 ABAP 학습 지도 — ABAP 입문 1장 ③

에이든ABAP 개발자운영자모듈 MMSD기타조회 20

「따라하며 배우는 SAP ABAP 입문」 1장의 마지막 편입니다. 앞선 1·2편에서 SAP의 업무 흐름과 시스템 구조를 실제 화면과 함께 살펴보았다면, 이번 3편에서는 직접 프로그램을 만들기 전에 꼭 알아야 할 개발 규칙과 전체 공부 순서를 정리합니다.

처음 실습 화면을 열었을 때 초보자가 가장 많이 겪는 당황스러운 순간들이 있습니다.

  • *"연습 삼아 프로그램 이름을 TEST01로 지었더니 왜 저장이 막히고 Access Key를 넣으라고 하지?"*

  • *"분명히 코드를 고치고 저장(Ctrl+S)까지 했는데, 실행해 보니 왜 고치기 전 화면이 그대로 나오지?"*

  • *"채용 공고나 현업에서 ECC 6.0, S/4HANA, Classic ABAP, ABAP Cloud라고 부르는 말들은 각각 무슨 차이일까?"*

이번 글에서 이 질문들에 대한 답을 실제 SAP 화면(SE93, SE38 Attributes, SE80, SE16 TADIR, SE11 TADIR)과 함께 명쾌하게 해결하고, 앞으로 어떤 순서로 공부하면 길을 잃지 않는지 5단계 학습 지도를 그려 보겠습니다.

이번 글에서 배울 내용과 진행 순서

이번 3편에서는 아래 네 단계와 확인 퀴즈를 순서대로 진행합니다.

  1. 1단계 — 개발 객체(Repository)와 SE93 T-code 연결 화면, 활성화(Activate): ABAP 개발자가 다루는 핵심 객체 6가지와 담당 T-code를 SE93 화면으로 살펴보고, 저장 후 반드시 활성화(Ctrl+F3)를 눌러야 하는 이유를 알아봅니다.

  2. 2단계 — 이름 규칙(Z/Y 네임스페이스)과 패키지($TMP · $ZEDU) 화면 확인: 왜 우리가 만드는 모든 이름은 Z나 Y로 시작해야 하는지, 연습할 때 쓰는 로컬 패키지($TMP)가 무엇인지 SE38 속성 창, SE80 패키지 트리, SE16·SE11의 TADIR 화면으로 직접 확인합니다.

  3. 3단계 — 현장에서 자주 듣는 버전과 환경 용어 비교: ECC 6.0 vs S/4HANA, 그리고 Classic ABAP vs ABAP Cloud의 차이를 초보자 눈높이에서 구분합니다.

  4. 4단계 — 초보자를 위한 5단계 ABAP 학습 지도와 실수 방지 팁: 입문부터 실무 리포트 완성까지의 추천 공부 순서와, 초보자가 자주 겪는 실수 5가지를 정리합니다.

  5. 마무리 점검 — 미니 퀴즈 5문항: 1장(①~③편)에서 배운 핵심 개념을 스스로 점검합니다.


1단계: 개발 객체(Repository)와 SE93 T-code 연결 화면, 활성화(Activate)

ABAP 개발자는 소스 코드 파일만 만들지 않습니다

일반 프로그래밍에서는 내 PC에 .py나 .java 같은 코드 파일을 만들어 작업하지만, SAP에서는 프로그램 코드뿐만 아니라 테이블 구조, 데이터 타입, 함수, 메시지, 화면 단축 번호(T-code)까지 모두 개발 객체(Development Object)라는 단위로 다루며, 서버 중앙의 Repository(저장소)에 모아 관리합니다.

입문자가 앞으로 가장 자주 만들고 조회하게 될 핵심 개발 객체 6가지는 다음과 같습니다(괄호 안은 SAP 내부에서 부르는 네 글자 객체 유형 코드와 담당 T-code입니다).

  • 프로그램 (PROG · T-code SE38, SE80): 데이터를 조회하고 화면에 표를 출력하는 실행 가능한 ABAP 프로그램(리포트)입니다.

  • 테이블 및 구조 (TABL · T-code SE11): 데이터가 저장될 데이터베이스 테이블이나 프로그램 안에서 쓸 데이터 구조(Structure)입니다.

  • 데이터 엘리먼트와 도메인 (DTEL / DOMA · T-code SE11): 테이블의 각 열(필드)이 어떤 데이터 타입·길이를 가지는지(DOMA), 화면에 어떤 한글·영문 제목(라벨)으로 표시될지(DTEL) 정의하는 부품입니다.

  • 함수 그룹과 함수 모듈 (FUGR / FUNC · T-code SE37, SE80): 여러 프로그램에서 공통으로 불러 쓸 수 있도록 묶어 둔 기능 단위입니다.

  • 메시지 클래스 (MSAG · T-code SE91): *"조회된 데이터가 없습니다"*, *"권한이 없습니다"*처럼 화면 아래쪽이나 팝업에 띄울 안내·오류 문구 모음입니다.

  • 트랜잭션 코드 (TRAN · T-code SE93): 개발자가 만든 프로그램에 ZMM001 같은 단축 코드를 연결해, 현업 사용자가 프로그램 이름을 몰라도 T-code만으로 실행할 수 있게 해 주는 객체입니다.

샘플 화면으로 보기: SE93에서 T-code가 프로그램에 연결되는 원리

*"명령창에 SE38이나 ZMM001 같은 T-code를 치면 어떻게 화면이 열릴까요?"* 명령창에 /nSE93을 입력해 트랜잭션 코드 관리 화면을 열어 보면 그 비밀을 바로 알 수 있습니다.

그림 1-1. SE93에서 트랜잭션 코드(SE38)가 실제 프로그램(RSABAPPROGRAM)에 연결된 구조를 확인하는 화면.
그림 1-1. SE93에서 트랜잭션 코드(SE38)가 실제 프로그램(RSABAPPROGRAM)에 연결된 구조를 확인하는 화면.
  • ① SE93(Maintain Transaction) 첫 화면: 확인하거나 새로 만들 Transaction Code(예: SE38)를 입력하고 Display(조회)를 누릅니다.

  • ② 연결된 Program과 Screen number: 오른쪽 상세 화면을 보면 SE38이라는 코드는 사실 내부적으로 RSABAPPROGRAM이라는 프로그램의 1000번 화면을 호출하도록 연결되어 있습니다. 마찬가지로 개발자가 ZEDU_PO_LIST 리포트를 다 만든 뒤 SE93에서 ZPO_LIST 같은 새 T-code를 만들어 연결해 주면, 현업 담당자는 명령창에 ZPO_LIST만 쳐서 바로 리포트를 쓸 수 있습니다.

  • ③ 주요 개발 객체별 담당 T-code 요약: 오른쪽 아래 표처럼 SE11(테이블·타입), SE16(데이터 조회), SE38(프로그램), SE80(통합 탐색기), SE24(클래스), SE37(함수), SE91(메시지) 일곱 개만 알아 두어도 실무 개발 도구의 90%를 다룰 수 있습니다.

저장(Save)만 하면 반영되지 않습니다 — 반드시 활성화(Activate)!

초보자가 가장 많이 하는 실수가 바로 "저장(Ctrl+S)만 누르고 바로 실행해 보는 것"입니다.

SAP에서 개발 객체를 수정하고 저장(Save, Ctrl+S)하면, 아직 나만 볼 수 있는 비활성(Inactive) 임시 버전으로만 저장됩니다. 이 상태에서는 다른 프로그램이나 사용자가 실행해도 예전 버전이 그대로 돌아갑니다.

코드를 다 작성한 뒤에는 반드시 상단 툴바의 성냥개비 모양 아이콘인 활성화(Activate, 단축키 Ctrl+F3)를 눌러야 합니다. 활성화를 누르면 SAP가 문법 오류가 없는지 검사한 뒤, 이상이 없을 때 비로소 시스템 전체에서 작동하는 활성(Active) 버전으로 반영합니다.


2단계: 왜 이름은 Z로 시작하고, 연습은 $TMP에 저장할까요?

고객 네임스페이스(Z / Y): SAP 표준과 내 것을 구분하는 규칙

SAP 서버 안에는 이미 SAP 본사가 만들어 둔 수십만 개의 표준 테이블(MARA, EKKO)과 표준 프로그램이 들어 있습니다. 만약 회사의 개발자가 아무 이름이나 지어서 만들었다가 SAP 표준 객체와 이름이 겹치거나, 나중에 SAP 시스템을 업그레이드할 때 덮어씌워지면 큰 사고가 납니다.

그래서 SAP는 "고객사(회사)에서 직접 만드는 모든 개발 객체의 이름은 반드시 알파벳 Z 또는 Y로 시작해야 한다"는 이름 구역(Customer Namespace, 고객 네임스페이스)을 정해 두었습니다.

  • Z로 시작하는 이름 (예: ZEDU_PO_LIST, ZMM_REPORT): 회사에서 직접 만드는 프로그램·테이블·패키지의 가장 기본적인 이름입니다.

  • Y로 시작하는 이름: 마찬가지로 고객사용 이름 영역이며, 회사에 따라 테스트용이나 부서별 구분용으로 나누어 쓰기도 합니다.

  • A ~ X로 시작하는 일반 이름 (예: EKKO, CL_SALV_TABLE): SAP 본사 전용 영역입니다. 개발자가 TEST01이나 HELLO 같은 이름으로 새 프로그램을 만들려고 하면 시스템이 *"SAP 표준 객체 수정 키(Access Key)를 입력하라"*며 가로막습니다. 당황하지 말고 이름을 ZTEST01처럼 Z로 시작하게 바꾸면 바로 만들어집니다.

절대 규칙: SAP 표준 객체는 직접 수정하지 않습니다

Z나 Y로 시작하지 않는 SAP 표준 프로그램과 표준 테이블은 구경(Display)만 하고 절대 직접 고치지 않습니다. 표준 화면에 우리 회사만의 규칙을 추가해야 할 때는 2편에서 배운 확장(Enhancement — BAdI, User Exit) 기능을 사용합니다.

패키지(Package)와 안전한 개인 연습장 $TMP

모든 개발 객체는 만들 때 "어느 패키지(Package)에 담을 것인가?"를 지정해야 합니다.

패키지(Package)는 관련된 테이블과 프로그램들을 한곳에 모아 두는 폴더이면서, 동시에 "이 객체를 트랜스포트(TR) 상자에 담아 운영 서버로 옮길 것인지 결정하는 표식"입니다.

  1. 일반 회사 패키지 (Z..., 예: ZMM): 운영 서버까지 옮겨야 하는 실무 프로그램을 담는 패키지입니다. 여기에 저장하면 반드시 트랜스포트 요청(TR) 번호를 넣으라는 창이 뜹니다.

  2. 로컬 패키지 ($TMP 또는 $...): 이름이 달러 기호($)로 시작하는 패키지는 다른 서버로 절대 이관되지 않고 현재 서버에만 남는 로컬 전용 폴더입니다.

- 특히 $TMP는 모든 SAP 시스템에 기본으로 준비된 개인 연습장입니다. - 새 프로그램을 저장할 때 뜨는 패키지 입력 창(Create Object Directory Entry)에서 아래쪽의 Local Object(로컬 객체, 단축키 F7) 버튼을 누르면, 복잡한 이관 번호 입력 없이 곧바로 $TMP에 안전하게 저장됩니다.

샘플 화면으로 보기 ①: SE38에서 프로그램 속성(Attributes) 확인하기

1편의 SE38 첫 화면에서 하위 객체로 Attributes(속성)를 선택하고 Display를 누르면, 아래처럼 그 프로그램의 신분증 화면이 열립니다.

그림 1-2. SE38에서 확인한 ZEDU_PO_LIST 프로그램의 속성(Attributes) 창. 패키지($ZEDU)와 언어 버전이 표시됩니다.
그림 1-2. SE38에서 확인한 ZEDU_PO_LIST 프로그램의 속성(Attributes) 창. 패키지($ZEDU)와 언어 버전이 표시됩니다.
  • ① Type: Executable program: 혼자서 바로 F8로 실행할 수 있는 리포트 프로그램(유형 코드 1)이라는 뜻입니다.

  • ② Package: $ZEDU: 이 프로그램이 담긴 패키지 폴더 이름입니다. 앞에 달러 기호($)가 붙은 로컬 패키지($TMP, $ZEDU)이므로 다른 서버로 이관되지 않고 이 실습 서버에만 안전하게 보관됩니다.

  • ③ ABAP Language Version: Standard ABAP: 이 프로그램이 전통·표준 방식인 Classic(Standard) ABAP 규칙으로 작성되었음을 보여 줍니다.

샘플 화면으로 보기 ②: SE80 패키지 트리와 SE16 객체 목차(TADIR)

이번에는 패키지 폴더 전체를 한눈에 보는 SE80(Object Navigator) 화면과, 그 뒤에서 객체 목록을 저장하고 있는 시스템 테이블 TADIR 화면을 나란히 확인해 보겠습니다.

SE80(Object Navigator)에서 패키지 폴더 트리로 보기 명령 필드에 /nSE80을 입력하고 왼쪽 드롭다운에서 Package를 고른 뒤 연습용 패키지인 $ZEDU를 열면, 아래 화면처럼 패키지 폴더 안에 데이터베이스 테이블(Database Tables), 프로그램(Programs), 메시지 클래스(Message Classes) 등이 종류별로 가지런히 묶여 있습니다.

그림 1-3. SE80(Object Navigator)에서 $ZEDU 패키지를 연 화면. 왼쪽 트리에 테이블과 프로그램이 종류별로 묶여 있습니다.
그림 1-3. SE80(Object Navigator)에서 $ZEDU 패키지를 연 화면. 왼쪽 트리에 테이블과 프로그램이 종류별로 묶여 있습니다.

SE16에서 시스템 객체 목차 테이블(TADIR)로 보기 SE80이 보여 주는 왼쪽 나무 목록은 사실 SAP 내부의 TADIR(오브젝트 디렉터리)이라는 시스템 테이블을 읽어서 그린 것입니다. SE16에서 TADIR 테이블을 열고 객체 이름(OBJ_NAME)에 ZEDU*를 넣어 조회하면 아래 화면이 나옵니다.

그림 1-4. SE16에서 조회한 TADIR 테이블의 ZEDU* 객체 목록. 객체 유형(OBJECT), 이름(OBJ_NAME), 소속 패키지(DEVCLASS)가 기록되어 있습니다.
그림 1-4. SE16에서 조회한 TADIR 테이블의 ZEDU* 객체 목록. 객체 유형(OBJECT), 이름(OBJ_NAME), 소속 패키지(DEVCLASS)가 기록되어 있습니다.

표의 열을 하나씩 읽어 보면 1장에서 배운 개념들이 한 줄에 다 모여 있습니다.

  • OBJECT: 객체 종류 코드 (TABL 테이블, DTEL 데이터 엘리먼트, DOMA 도메인, PROG 프로그램, MSAG 메시지 클래스 등)

  • OBJ_NAME: 모든 객체 이름이 고객 네임스페이스 규칙대로 Z로 시작합니다(ZEDU_PO_LIST, ZEDU_POH 등).

  • DEVCLASS: 소속 패키지 이름입니다. 모두 달러($)로 시작하는 로컬 패키지 $ZEDU에 속해 있습니다.

  • SRCSYSTEM / AUTHOR: 이 객체가 처음 만들어진 서버의 SID(A4H)와 작성자(DEVELOPER)입니다.

샘플 화면으로 보기 ③: SE11에서 확인하는 TADIR의 클라이언트 독립 구조

2편에서 "업무 데이터 테이블은 클라이언트 종속(MANDT 있음)이지만, 프로그램과 개발 객체 목차는 서버 전체가 공유하는 클라이언트 독립(MANDT 없음)"이라고 배웠습니다. 정말 그런지 SE11에서 TADIR 테이블의 설계도를 열어 확인해 볼까요?

그림 1-5. SE11에서 확인한 TADIR 테이블 구조. 첫 키 필드에 MANDT가 없어 모든 클라이언트가 공유하는 클라이언트 독립 테이블입니다.
그림 1-5. SE11에서 확인한 TADIR 테이블 구조. 첫 키 필드에 MANDT가 없어 모든 클라이언트가 공유하는 클라이언트 독립 테이블입니다.
  • ① 첫 번째 Key 필드에 MANDT가 없습니다: 1편에서 보았던 구매오더 테이블(ZEDU_POH)은 첫 번째 열이 MANDT(클라이언트 번호)였지만, TADIR 테이블은 MANDT 없이 곧바로 PGMID · OBJECT · OBJ_NAME 세 열을 기본 키(Key 체크)로 씁니다.

  • ② 왜 이렇게 설계되었을까요?: 개발 객체(프로그램, 테이블 구조)는 어느 클라이언트(001, 100)로 로그인하든 서버 전체에 딱 하나만 존재해야 하므로, 목차 테이블인 TADIR 역시 클라이언트 구분(MANDT) 없이 전 클라이언트가 함께 공유합니다.


3단계: 현장에서 자주 듣는 버전과 환경 용어 정리

프로젝트 공고나 실무 대화를 듣다 보면 "ECC 6.0 vs S/4HANA", 그리고 "Classic ABAP vs ABAP Cloud"라는 말을 자주 만납니다. 이름은 비슷해 보여도 서로 다른 기준이므로 딱 두 가지만 구분해 두면 헷갈리지 않습니다.

비교 1. ERP 제품의 세대 차이: ECC 6.0 vs S/4HANA

첫 번째는 회사가 쓰는 SAP ERP 제품이 이전 세대인지, 최신 세대인지의 차이입니다.

  • ECC 6.0 (이전 세대 ERP)

- 오랫동안 전 세계 기업들이 표준처럼 써 온 SAP ERP 버전입니다. - Oracle, MS SQL Server, DB2, SAP HANA 등 다양한 종류의 데이터베이스 위에서 돌아갑니다. - 같은 업무 데이터가 용도별로 여러 개의 세부 테이블로 나뉘어 저장되는 전통적인 구조를 가집니다.

  • S/4HANA (현행 세대 ERP)

- ECC의 뒤를 잇는 차세대 ERP로, 오직 초고속 인메모리 데이터베이스인 SAP HANA 위에서만 돌아갑니다. - 여러 개로 쪼개져 있던 테이블 구조를 대폭 단순화했습니다. 대표적으로 회계(FI·CO) 데이터를 ACDOCA라는 통합 전표 테이블 하나로 모았고, 자재 입출고 데이터를 MATDOC 하나로 통합했습니다.

초보 개발자가 알아 둘 핵심: 회사가 ECC 6.0을 쓰든 S/4HANA를 쓰든 우리가 배우는 ABAP 기본 문법과 리포트 개발 원리는 그대로 통합니다. 다만 S/4HANA(HANA DB) 환경에서는 데이터를 전부 ABAP 서버로 가져와서 반복문(LOOP)으로 더하기보다, 빠른 HANA 데이터베이스가 SELECT 문 안에서 합계(SUM)나 집계를 먼저 계산해서 결과만 넘겨주도록 짜는 방식(Code Pushdown)을 중요하게 여깁니다.

주의: "ECC 6.0이니까 신문법(DATA(...))은 못 쓴다"는 말은 절반만 맞습니다

어떤 ABAP 문법을 쓸 수 있는지는 ERP 제품 이름(ECC냐 S/4HANA냐)이 아니라, 2편의 System → Status 화면에서 보았던 SAP_BASIS 릴리스 번호로 결정됩니다. ECC 6.0 서버라도 최신 패치가 적용되어 SAP_BASIS가 740 이상이면 인라인 변수 선언(DATA(lv_text)) 같은 편리한 신문법을 쓸 수 있고, 700~731 같은 구버전이면 전통 문법으로 작성해야 합니다.

비교 2. ABAP 개발 방식의 차이: Classic ABAP vs ABAP Cloud

두 번째는 어떤 도구와 규칙으로 ABAP 코드를 작성하는가의 차이입니다.

  • Classic ABAP (Standard ABAP — 전통·표준 방식)

- 방금 그림 1-2 프로그램 속성 창에서 보았듯 ABAP Language Version: Standard ABAP을 쓰는 방식입니다. - SE38/SE80(SAP GUI) 또는 Eclipse(ADT)에서 SAP 표준 테이블을 직접 SELECT로 조회하고, 선택 화면(PARAMETERS)과 ALV 그리드 화면을 만듭니다. 현재 국내외 대부분의 기업 프로젝트와 운영 현장에서 가장 많이 쓰이는 기본기입니다.

  • ABAP Cloud (클라우드·Clean Core 방식)

- 클라우드 환경과 향후 SAP 업그레이드 시 프로그램이 깨지지 않도록(Clean Core) SAP가 새롭게 제시한 개발 모델입니다. - 오직 Eclipse 기반 도구(ADT)만 사용하며, SAP GUI 화면 대신 CDS 뷰와 RAP(RESTful Application Programming Model)로 웹(SAP Fiori) 화면의 백엔드를 개발합니다. 또한 SAP가 공식 허용(Released API)한 객체만 사용할 수 있습니다.

공부 순서 팁: 먼저 Classic ABAP으로 변수·내부 테이블·Open SQL·ALV 리포트의 기본기를 탄탄히 잡은 뒤, CDS 뷰와 RAP로 넓혀 가는 것이 가장 빠르고 확실한 길입니다.


4단계: 초보자를 위한 5단계 ABAP 학습 지도

처음 ABAP을 독학하거나 교육을 들을 때 무엇부터 어떤 순서로 공부해야 하는지 전체 로드맵을 다섯 단계로 정리했습니다.

  1. 1단계 — SAP 구조와 기본 화면 도구 익히기

- ERP·모듈·클라이언트·트랜스포트·패키지 개념 잡기 (이번 1장 ①~③편) - SAP GUI 화면 구성과 필수 T-code(SE11, SE16, SE38, SE80) 손에 익히기

  1. 2단계 — ABAP 기초 문법과 데이터베이스(SQL) 다루기

- SE38에서 첫 프로그램(Hello World) 만들고 활성화(Ctrl+F3)해 실행하기 - 기본 데이터 타입, 변수 선언, 조건문(IF/CASE), 문자열과 날짜 다루기 - 실무 ABAP의 꽃인 내부 테이블(Internal Table)과 구조체(Structure)로 여러 줄의 데이터 다루기 - SE11(ABAP Dictionary)에서 직접 테이블을 만들고, Open SQL(SELECT)로 데이터베이스 읽어 오기

  1. 3단계 — 리포트 프로그램의 뼈대 만들기

- 사용자에게 조회 조건을 입력받는 선택 화면(PARAMETERS, SELECT-OPTIONS) 만들기 - 리포트가 실행되는 순서인 이벤트 구조(INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION) 익히기 - 긴 코드를 역할별로 깔끔하게 나누는 서브루틴(FORM)·함수 모듈과 메시지(MESSAGE) 처리하기

  1. 4단계 — 실무 ALV 그리드 화면 만들기

- 조회 전용 표를 빠르고 깔끔하게 띄우는 SALV(CL_SALV_TABLE) 익히기 - 정렬, 합계, 색상 강조, 클릭하면 상세 팝업이 뜨는 이벤트(Hotspot) 붙이기 - 화면에서 사용자가 값을 직접 수정하고 DB에 저장까지 하는 ALV Grid 구현하기

  1. 5단계 — 실무 기본기와 종합 리포트 완성하기

- 실행 중인 코드를 한 줄씩 멈춰 보며 원인을 찾는 디버깅(Debugging)과 런타임 에러(덤프, ST22) 읽는 법 - 권한 검사(AUTHORITY-CHECK), SQL 성능 점검, 트랜스포트 이관 시 주의사항 익히기 - 선택 화면 → 다중 테이블 조인 조회 → 미입고 수량 계산 → SALV 출력 → 상세 팝업으로 이어지는 종합 구매 현황 리포트 혼자 힘으로 완성하기

초보자가 첫 실습 때 가장 자주 겪는 실수 5가지와 해결법

앞으로 직접 손을 움직여 실습할 때 아래 5가지만 기억해도 막히는 시간의 절반을 줄일 수 있습니다.

  • T-code를 입력했는데 반응이 없거나 이상한 글자가 찍힐 때: 키보드 입력기가 한글 상태이거나, 이미 다른 화면 안에 들어와 있어서입니다. 영문 상태로 바꾸고 앞에 /n을 붙여 /nSE38처럼 입력하세요.

  • 새 프로그램 이름을 넣고 만들려는데 Access Key 창이 뜨며 막힐 때: 프로그램 이름이 Z나 Y로 시작하지 않아서 SAP 표준 영역으로 인식된 것입니다. ZBOOK04_HELLO처럼 맨 앞 글자를 Z로 바꾸세요.

  • 분명히 코드를 고치고 저장(Ctrl+S)했는데 실행 결과가 그대로일 때: 활성화(Activate, Ctrl+F3)를 누르지 않아 비활성(Inactive) 상태인 것입니다. 저장 후에는 습관처럼 Ctrl+F3을 누르세요.

  • SE16에서 테이블 데이터를 조회했는데 딱 200줄에서 잘릴 때: 1편 그림 1-4에서 보았듯 조회 조건 화면 아래쪽의 최대 조회 건수(Maximum No. of Hits) 기본값이 200으로 들어가 있기 때문입니다. 전체 건수를 알고 싶을 때는 상단 Number of Entries 버튼을 누르거나 최대 건수 값을 늘려 주세요.

  • 구경만 하려다 실수로 Change(변경) 버튼을 눌렀을 때: 아무것도 고치지 않은 채 곧바로 F3(뒤로 가기)을 누르고, 저장할지 묻는 창에서 No를 고르면 안전하게 빠져나옵니다.


배운 내용 스스로 점검하기 (미니 퀴즈 5문항)

1장(①~③편)에서 배운 핵심을 간단한 퀴즈 다섯 문제로 점검해 보세요.

문제 1. 구매 담당자가 구매오더(4500000001)를 입력한 뒤 창고에서 물건을 받아 입고를 처리했습니다. ERP를 쓰지 않는 회사와 비교했을 때 SAP에서는 입고 담당자가 무엇을 다시 입력하지 않아도 되나요?

정답 및 해설

입고 담당자는 거래처·자재 코드·단가 등을 처음부터 다시 치지 않고, 구매오더 번호(EBELN)와 품목 번호(EBELP)를 불러와서 실제 들어온 수량만 확인해 입고 처리합니다. 입고 테이블(ZEDU_GR)에도 이 구매오더 번호와 품목 번호가 그대로 남기 때문에 발주 대비 입고·미입고 수량을 정확히 계산할 수 있습니다.

문제 2. 다음 다섯 가지 중 한 서버의 모든 클라이언트가 함께 공유하는 클라이언트 독립(Client-independent) 대상을 모두 골라 보세요. (힌트: 위 그림 1-5를 떠올려 보세요!) ① 구매오더 테이블(ZEDU_POH) 안에 들어 있는 데이터 행 ② SE38에서 만든 ZEDU_PO_LIST 프로그램 코드 ③ SE11에 정의된 ZEDU_POH 테이블의 구조(필드 목록) ④ 로그인 사용자 계정 DEVELOPER ⑤ 시스템 개발 객체 목차 테이블(TADIR)의 데이터

정답 및 해설

정답은 ②, ③, ⑤입니다.

프로그램 코드(②)와 테이블의 구조 정의(③), 그리고 그 개발 객체들의 목차인 TADIR(⑤, 첫 키 필드에 MANDT가 없음)은 서버 전체에 하나만 존재하는 클라이언트 독립입니다. 반면 그 테이블 안에 쌓이는 실제 업무 데이터 행(①)과 사용자 계정(④)은 클라이언트(MANDT)마다 따로 존재하는 클라이언트 종속입니다.

문제 3. 개발 서버(DEV)에서 리포트 화면의 열 제목을 멋지게 고치고 활성화까지 마쳤는데, 현업 담당자가 *"제 화면(운영 서버 PRD)은 옛날 그대로인데요?"*라고 연락이 왔습니다. 어떤 절차가 빠진 걸까요? 그리고 급하다고 운영 서버에서 직접 코드를 고치면 안 되는 이유는 무엇일까요?

정답 및 해설

개발 서버(DEV)의 변경 사항은 SE09에서 트랜스포트(Transport Request, TR)를 해제(Release)한 뒤, 품질 서버(QAS) 테스트를 거쳐 운영 서버(PRD)로 반입(Import)되어야 반영됩니다. 운영 서버에서 직접 코드를 고치면 검증되지 않은 오류로 인해 실제 회사 업무가 멈출 수 있고, 개발·품질 서버와 코드가 어긋나며 변경 감사 기록이 정상적으로 남지 않습니다.

문제 4. 동기가 연습용 프로그램을 HELLO_ABAP이라는 이름으로 만들려다 에러가 난다며 도움을 요청했습니다. 왜 막혔는지 이유를 알려 주고, 다른 서버로 이관되지 않도록 저장할 때 어느 패키지를 골라야 하는지 설명해 보세요.

정답 및 해설

고객사가 만드는 개발 객체 이름은 반드시 Z 또는 Y로 시작해야 합니다(ZHELLO_ABAP 등으로 변경). 그리고 연습용 프로그램이 실수로 운영 서버로 이관되지 않게 하려면 패키지 지정 창에서 Local Object(로컬 객체) 버튼을 눌러 $TMP 패키지에 저장해야 합니다.

문제 5. 선배가 *"우리 회사는 ECC 6.0 시스템이니까 DATA(lv_cnt) 같은 인라인 선언 문법은 아예 못 써"*라고 말합니다. 이 말이 맞는지 화면 어디에서 무엇을 보고 판단할 수 있을까요?

정답 및 해설

제품 이름이 ECC 6.0이라는 것만으로는 단정할 수 없습니다. 사용할 수 있는 ABAP 문법은 SAP_BASIS 릴리스 버전으로 결정됩니다. 2편의 그림 1-1에서 본 상단 메뉴 System → Status...의 구성 요소 정보(또는 SE16에서 CVERS 테이블 조회)를 열어 SAP_BASIS 릴리스가 740 이상인지 확인해야 합니다. 740 이상이면 ECC 6.0에서도 인라인 선언을 쓸 수 있습니다.


1장 전체 마무리

여기까지 「따라하며 배우는 SAP ABAP 입문」 1장(①~③편)을 모두 읽으셨습니다. 코드를 한 줄도 쓰지 않았지만, 이제 여러분은 ERP와 SAP 모듈·테이블 연결 화면(1편), 3-Tier 구조·클라이언트·트랜스포트·실제 리포트 실행 및 코드 화면(2편), 그리고 개발 객체·Z 이름 규칙·$TMP 패키지·전체 학습 로드맵(3편)까지 실무 ABAP 개발의 가장 중요한 지도를 머릿속에 그리셨습니다.

다음 장에서는 실제 SAP GUI 접속 설정부터 화면의 기본 조작법, 도움말(F1/F4) 활용, 그리고 데이터 조회 화면을 직접 다루는 방법을 이어서 살펴봅니다.

출처와 이용 안내
  • 이 글은 SAP와 ABAP 입문자를 위해 직접 작성한 「따라하며 배우는 SAP ABAP 입문」 연재 자료입니다.

  • 본문의 화면 캡처(SE80의 $ZEDU 패키지 트리, SE16의 TADIR 조회)와 샘플 화면(SE93 트랜잭션 조회, SE38 프로그램 속성, SE11의 TADIR 필드 구조)은 ABAP 실습 환경(A4H, SAP_BASIS 816, 클라이언트 001)에서 직접 실행해 확인한 화면과 로그를 바탕으로 제작했습니다. [SYSTEM CHECK]

  • 참고 자료: SAP Learning (*Introducing SAP ABAP Platform Fundamentals*), SAP News (*SAP S/4HANA & Business Suite 7 Maintenance*), SAP Community (*ABAP Cloud FAQ*). S/4HANA의 표준 통합 테이블(ACDOCA, MATDOC) 및 ECC 지원 DB 예시는 일반 실무 기준 설명이며 A4H 단일 서버에서는 표준 ERP 테이블이 제외되어 있어 별도 안내했습니다. [미확인]

  • 회사마다 패키지 명명 규칙과 이관 절차가 다를 수 있으므로 실무에서는 소속 프로젝트의 개발 표준을 먼저 확인해 주세요.

  • SAP와 SAP 제품명은 SAP SE의 상표이며, 바로투입은 SAP와 관련이 없습니다.

댓글 0

아직 댓글이 없어요.

교육·자격증 목록전체 목록