CS Student’s SAP&Tech Journey✨
[SAP] ABAP 객체지향 언어? / 기존 문법과 신문법의 차이 본문
ABAP을 처음 접했을 때, 다소 절차지향적인 느낌이 강했습니다. 하지만 SAP NetWeaver 7.0 이후 ABAP도 객체지향(OOP) 패러다임을 적극 반영하기 시작했고, 이후 ABAP 개발자라면 반드시 객체지향을 이해하고 활용할 수 있어야 합니다.
이번 포스팅에서는 기존 ABAP 문법과 객체지향 중심 신 문법의 차이, 객체지향 언어로서 어떤 특징을 갖고 있는지 알아보겠습니다.
📌 기존 문법 vs 신 문법 (ABAP NetWeaver 7.0 이후)
먼저 가장 기본적인 DATA 선언과 SELECT 문에서 문법 차이를 볼 수 있습니다.
* 기존 문법
DATA it TYPE TABLE OF scarr.
DATA wa LIKE LINE OF it.
LOOP AT it INTO wa.
ENDLOOP.
* 신 문법
DATA it TYPE TABLE OF scarr.
LOOP AT it INTO DATA(wa).
ENDLOOP.
기존에는 별도의 워크에리어(wa)를 선언해야 했다면, 신 문법은 INTO DATA() 형태로 LOOP 내부에서 바로 선언 가능합니다.
다음은 SELECT 문입니다.
* 기존 문법
SELECT a b c
FROM scarr
INTO TABLE lt_result
WHERE carrid = 'LH'.
* 신 문법
SELECT FROM scarr
FIELDS a, b, c
WHERE carrid = 'LH'
INTO TABLE lt_result.
📌 절차지향 vs 객체지향의 차이
- 절차지향: 위에서부터 아래로 흐르는 명령 중심의 구조 (예: FUNCTION MODULE, FORM 등)
- 객체지향: 데이터를 중심으로 객체를 설계하고, 객체 간 메세지를 주고받으며 동작함 (예: CLASS, METHOD 등)
ABAP에서는 Report 프로그램 안에서 CLASS와 METHOD를 직접 선언해 사용할 수 있으며, 실제 업무에서는 SE24 글로벌 클래스를 구성하는 것이 일반적입니다.
❓ABAP은 객체지향 언어인가?
객체지향 언어로 정의하기 위해서는 보통 아래 세가지 특성을 충족해야 합니다.
- Encapsulation (캡슐화): 접근 제어자 (Public / Private / Protected)
- Inheritance (상속): 클래스를 상속받아 기능 확장 기능
- Polymorphism (다형성): 동일한 명령으로 서로 다른 객체가 각자 다르게 동작
ABAP은 세가지 모두를 지원합니다. 특히 SAP NetWeaver 7.0부터 객체지향을 본격적으로 지원하면서, 전통적인 프로시저 기반 언어에서 OOP 언어로 본격 전환되었다고 할 수 있습니다.