ABAP이란?

ABAP(Advanced Business Application Programming)은 SAP 시스템을 위해 만들어진 전용 프로그래밍 언어입니다.

ABAP이란?

ABAP(Advanced Business Application Programming)은 SAP 시스템을 위해 만들어진 전용 프로그래밍 언어입니다.

기업의 ERP 환경에서 맞춤형 보고서, 화면, 인터페이스 등을 개발하는 데 사용됩니다. 다른 범용 언어와 달리 비즈니스 로직과 데이터 처리에 특화되어 있어, SAP가 단순한 패키지 소프트웨어를 넘어 각 기업의 운영 방식에 유연하게 적응할 수 있도록 돕습니다.

그러면 이러한 ABAP은 왜 등장하게 되었을까요? 이를 알기 위해선 SAP의 역사에 대해 먼저 알아봐야 합니다.

 

SAP의 배경

1970년대 초반까지 각 기업들은 각각의 부서별로 시스템을 따로 운영했기 때문에, 데이터 관리에 큰 어려움을 겪고 있었습니다.

이러한 문제를 해결하기 위해 1972년, 독일 만하임에서 IBM 출신 엔지니어 5명이 회사를 차리며 솔루션을 제안해왔는데 이것이 바로 SAP(Systems, Applications & Products int Data Processing)입니다. SAP의 목표는 모든 비즈니스 프로세스를 하나의 통합 시스템 안에서 처리할 수 있도록 하자 였습니다.

SAP의 발전 과정

1970년대최초의 재무 회계용 소프트웨어(R/1) 출시
1980년대다중 모듈 구조의 R/2로 확장, 대기업 메인프레임에 도입
1990년대클라이언트-서버 환경 기반의 R/3 등장, 글로벌 시장에서 대세 ERP 솔루션으로 자리매김
2010년대 이후S/4HANA로 진화, 인메모리 DB(HANA)와 클라우드 환경 지원

* R : Real-time(기업의 데이터를 실시간 처리), R/1 : 1계층 구조, R/2 : 2계층 구조, R/3 : 3계층 구조

이렇게 발전을 해오던 SAP는 고민이 있었습니다. 그것은 바로 각 기업마다 요구하는 보고서, 화면, 기능이 모두 제각각이었다는 것입니다. SAP가 제공하는 표준 기능, 라이브러리가 존재하였지만 이것 만으로는 맞춤형 비즈니스 프로세스를 모두 담기는 어려웠고 커스터마이징에 대한 수요가 폭발적으로 증가했죠.

이때 등장한 것이 ABAP이었습니다.

ABAP의 등장

ABAP의 뿌리는 1980년대 초반에서 시작합니다.

80년대 초, SAP R/2 시스템에서 사용된 ABAP/4(Fourth Generation Language)라는 이름으로 처음 도입이 되었습니다. 이때는 주로 리포트 프로그램이나 배치 처리에 활용이 되었습니다. 그래서 처음에는 독일어인 "Allgemeiner Berichts-Aufbereitungs-Prozessor" 의 약자로 취급되었으며 이는 "일반 보고서 작성 프로세서"를 의미하였습니다.

하지만 90년대로 접어들면서 ABAP은 단순한 보고서 언어에서 벗어나, 이벤트 드리븐 방식으로 화면과 비즈니스 로직까지 개발할 수 있는 범용 언어로 확장되기 시작합니다.

이후 2000년대로 들어오며 웹 기술, SAP NetWeaver, HANA DB와 연계되며 지금의 ABAP까지 발전하게 되었습니다. 

이렇게 기업들은 ABAP을 통해 새로운 기능이 ERP 내부에서 안전하게 동작하도록 설계할 수 있게 되었고 DB 연동이나 이벤트 처리에도 훨씬 유연하게 대처할 수 있게 되었습니다. 

ABAP의 간단한 문법 정리

그럼 이러한 ABAP의 간단한 문법을 알아보겠습니다. 그전에 ABAP의 데이터 타입과 선언에 대해 알아야 합니다. ERP 데이터와 바로 연결되기 때문에, "데이터가 어떠한 형식으로 존재하느냐"는 ABAP에서는 아주 중요한 문제입니다.

 

DATA

실제 변수를 선언할 때 사용하는 키워드입니다.

DATA lv_num TYPE i.

TYPES

새로운 데이터 타입을 정의할 때 사용합니다. 재사용이나 구조체를 정의할 때 사용합니다.

TYPES : BEGIN OF ty_emplotee,
			id TYPE i,
            name TYPE string,
        END OF ty_employee.

DATA ls_emp TYPE ty_employee.

ls_emp-id = 1001.
ls_emp-name = '홍길동'.

WRITE : / ls_emp-id, ls_emp-name.

* 결과물
* 1001	홍길동

 

그 외 간단한 문법들

WRITE

가장 기본적인 출력문입니다. / 를 붙이면 줄바꿈을 의미합니다.

WRITE : / 'Hello ABAP!'.
WRITE : / 'SAP ERP 전용 언어입니다.'.

* 결과물
* Hello ABAP!
* SAP ERP 전용 언어입니다.

IF / ELSEIF / ELSE

조건문입니다. 다른 언어와 흡사하게 사용됩니다.

DATA lv_score TYPE i.
lv_score = 85.

IF lv_score >= 90.
  WRITE: / 'Excellent'.
ELSEIF lv_score >= 70.
  WRITE: / 'Good'.
ELSE.
  WRITE: / 'Needs Improvement'.
ENDIF.

DO / WHILE / LOOP

반복문입니다.

DATA lv_counter TYPE i VALUE 1.

DO 5 TIMES.
  WRITE: / 'Counter:', lv_counter.
  lv_counter = lv_counter + 1.
ENDDO.

SELECT

ABAP은 ERP 데이터와 밀접하기 때문에 SQL 구문을 자주 사용합니다.

DATA: lv_carrid TYPE spfli-carrid,
      lv_connid TYPE spfli-connid.

SELECT carrid connid
  FROM spfli
  INTO (lv_carrid, lv_connid)
  UP TO 5 ROWS.

  WRITE: / '항공사 코드:', lv_carrid, '노선 ID:', lv_connid.

ENDSELECT.

ABAP의 장점과 한계

SAP ERP 안에서만 동작하는 전용 언어라는 점 때문에, ABAP은 명확한 강점과 한계를 동시에 가지고 있습니다. 

ABAP의 장점

ERP와 밀착SAP ERP 데이터베이스와 비즈니스 로직에 최적화되어 있어, 기업 업무 프로세스를 그대로 구현하기 좋습니다.
안정성과 표준화SAP가 관리하는 언어이므로 시스템 업그레이드나 유지보수에 강합니다.
대규모 기업 환경에서도 안정적으로 운영됩니다.
풍부한 내장 기능Open SQL, 화면 생성 도구, 리포트 작성 도구 등 ERP 개발에 필요한 기능을 기본적으로 제공합니다.
확장성단순한 보고서부터 UI, 인터페이스, 대규모 트랜잭션 로직까지 구현 가능해 유연합니다.

ABAP의 한계

SAP 생태계 종속사실상 SAP 환경 외에서는 쓸 수 없으므로 범용성이 떨어집니다.
학습 곡선기본 문법은 쉽지만, ERP 비즈니스 로직과 연계해야 하므로 실제로는 steep learning curve가 존재합니다.
레거시 이미지Java, Python 같은 최신 언어와 비교하면 트렌디하지 않고, 문법적 제약도 존재합니다.
시장 한정성SAP를 사용하는 기업에서는 필수지만, 그 외의 개발 시장에서는 활용 가치가 낮습니다.

정리하자면, ABAP는 범용 프로그래밍 언어가 아니라, 기업 ERP 환경에 특화된 "전문가용 도구"라고 볼 수 있습니다. 따라서 SAP를 도입한 기업에서는 없어서는 안 될 핵심 언어지만, 동시에 SAP라는 울타리를 벗어나긴 어렵다는 점도 기억해야 합니다.


이번에 취직을 하며 SAP를 처음 접하게 되었습니다. 이 외에도 T-Code나 네이밍 컨벤션 등 아직 공부해야할 것들이 많지만 차근차근 나아가 보겠습니다.