✅ 직접 써보고 느끼는 ABAP이 가진 특징

ssook·2024년 1월 12일
1

사내 SAP ERP 시스템 운영 업무를 수행하며, 학부생 시절 전혀 접해보지 못했던 ABAP를 사용하기 시작했다.

아무래도 사내 시스템을 개발하고, 유지보수 하는 데에 특화되었고, SAP 생태계에 특화된 프로그래밍 언어이다 보니까

우리가 흔히 알고 있는 프로그래밍 언어(Java, python, javascript)와 다르게 ABAP 만이 가진 특이한 점들이 많았다.

그래서 이번 기회에 ABAP만이 가진 특징들을 정리하여 공유해보려고 한다!


📍 특이한 자료구조

ABAP에서 사용되는 특별한 자료구조들이 많은데, 그 중에서도 가장 인상 깊었던 자료구조 4개를 소개해보고자 한다.

바로 도메인(Domain), 데이터 딕셔너리(Data Dictionary), 트랜스페어런트 테이블(Transparent Table), 내부 테이블(Internal Table)이다.

  1. 도메인(Domain):
    • 도메인은 데이터의 속성(길이, 타입 등)을 정의하는 ABAP의 중요한 자료구조 중 하나이다. 자료형이 아니냐? 라고 생각할 수 있겠지만, 자료형과는 미묘하게 차이가 있다. 해당 데이터의 길이 제한도 도메인을 지정하는 개발자가 세팅할 수 있기 때문! 아무튼 이러한 도메인은 데이터 사전(Data Dictionary)에서 정의되며, 다양한 데이터 유형과 속성을 정의할 수 있다.
  2. 데이터 딕셔너리(Data Dictionary):
    • 데이터 딕셔너리는 ABAP에서 데이터 모델링을 위한 중앙 저장소로 사용된다. 여기에는 위에서 이야기한 도메인, 데이터 엘리먼트, 테이블 등이 정의되어 있는데, 테이블 ⊂ 데이터 엘리먼트 ⊂ 도메인 느낌으로 보면 된다. 아무튼 ABAP에서는 중앙 저장소 역할을 수행하는 데이터 딕셔너리를 통해 데이터 구조를 관리할 수 있으며, 메타데이터 역시 이 곳에서 제어할 수 있다.
  3. 트랜스페어런트 테이블(Transparent Table):
    • 트랜스페어런트 테이블은 데이터 딕셔너리에서 정의된 테이블로, 데이터베이스에 직접적으로 매핑된다. 트랜스페어런트 테이블은 ABAP 프로그램에서 Open SQL 문을 사용하여 데이터를 조작하는 데 사용한다. Open SQL의 경우 ABAP에서 사용하는 SQL의 한 종류인데, 우리가 흔히 알고 있는 SQL과 다르게 약간의 제한 조건이 있다. 이를테면, Left Outer Join만 가능하다던가… 조회 쿼리문 날릴 때, 첫 시작이 SELECT면 끝 구문이 ENDSELECT이어야 한다던가… 아무튼 SAP 생태계 내에서 사용하는 데이터베이스의 데이터를 이 자료구조로 가져온다고 보면 된다.
  4. 인터널 테이블(Internal Table):
    • 인터널 테이블은 ABAP에서 메모리 상에 생성되는 테이블로, 프로그램 실행 도중에만 존재한다. (디버깅할 때 엄청 보게 될 것.) 주로 데이터를 효율적으로 처리하기 위해 사용되며, 루프, 조인, 정렬 등 다양한 연산을 지원한다. 단 건을 가져올 때는 인터널 테이블 외에 구조체(structure)를 쓰기도 한다.

아무튼 ABAP에서 이런 특이한 자료구조들이 있는 이유는 ABAP이 위에서 이야기한 SAP 시스템의 특성과 목적에 맞게 만들어졌기 때문이다.

SAP 시스템은 기업의 다양한 비즈니스 프로세스를 통합하고 효율적으로 관리하기 위해 설계되었으며,

ABAP은 이러한 목적을 충족시키기 위해 독자적인 특징을 갖고 있다.

내가 위에서 짚은 데이터 딕셔너리와 투명 테이블과 같은 개념들은 SAP 시스템의 데이터 관리와 통합에 중요한 역할을 수행하며,

이는 다른 프로그래밍 언어에서는 주로 볼 수 없는 특징이다.


📍 SAP 통합 및 모듈화

ABAP은 SAP 소프트웨어와 강력하게 통합되어 SAP 시스템의 다양한 모듈과 컴포넌트와 상호 작용할 수 있다.

SAP의 모듈화 기능은 ABAP 언어를 사용하여 코드를 모듈화하고, 특정 기능을 수행하는 재 사용 가능한 단위로 분할하는 데 쓰인다.

이를 통해 개발자는 함수 모듈, 클래스, 모듈 풀 등을 사용하여 재 사용 가능하고 유지 보수가 용이한 코드를 작성할 수 있으며,

실제로 유지 보수할 때 모듈 별로 로직을 수정하는 데에 많이 쓴다.

  1. 프로그램 모듈 (Function Module):
    • 프로그램 모듈은 특정 기능을 수행하는 독립적인 코드 단위이다. 이 모듈은 다른 ABAP 프로그램에서 호출될 수 있으며, 데이터를 주고받을 수도 있다. 프로그램 모듈은 트랜잭션 코드(Tcode)와는 독립적으로 사용할 수 있으며, ABAP 프로그램이나 외부 시스템에서 호출될 수 있다.
  2. 클래스 (Class):
    • 클래스는 객체 지향 프로그래밍(OOP)의 개념을 기반으로 하는 모듈화의 한 형태이다. 사실 이 클래스란 개념은 타 객체 지향 프로그래밍 언어에서의 개념과 동일하다. 그냥 ABAP도 객체 지향을 지원하긴 하는구나… 정도로만 넘기면 될 듯 하다.
  3. 모듈 풀 (Module Pool):
    • 모듈 풀은 SAP GUI 화면을 구성하고 사용자 인터페이스를 만들기 위한 모듈화된 기술이다. 모듈 풀을 사용하여 화면 요소를 정의하고 사용자 입력을 처리하는 프로그램 로직을 구현할 수 있다. 트랜잭션 코드(Tcode)를 사용하여 특정 모듈 풀 화면에 진입할 수 있다. cf ) 리포트 프로그램 약간, 이와 반대되는 개념으로 report 프로그램이 있다. 모듈 풀 프로그램이 직접 사용자가 GUI 구성 요소의 배치를 만들어서 개발한다면 report 프로그램은 SAP에서 애초에 정해진 틀 대로 어느 정도 구현해주는 느낌에 가깝다.

📍 Tcode - SAP 트랜잭션 제어

트랜잭션 코드(T-code)는 SAP 시스템에서 특정 기능 또는 프로그램에 접근하기 위한 약어이다.

예를 들어, SAP의 MM 모듈에서 재고 조회를 위해 사용되는 트랜잭션 코드는 'MB51'이다.

(사내 시스템마다 사용하는 주로 T code가 다 다르다.

이를테면, 제조업이 아닌 업계에서 SAP ERP 시스템을 사용한다면 재고를 볼 일이 없으니까 MM 모듈을 쓸 일이 없다.)

각 트랜잭션 코드는 특정 모듈이나 프로그램으로 연결되어 사용자가 해당 기능을 실행할 수 있도록 한다.

이를테면, 사용자가 SAP GUI 또는 SAP Logon 화면에서 트랜잭션 코드를 입력하고 실행 버튼을 클릭하여 특정 기능을 실행할 수 있다.

예를 들어, 'MB51'을 입력하면 해당 트랜잭션의 실행 화면으로 이동한다.

이러한 트랜잭션 코드와 연계된 모듈은 사용자가 SAP 화면에서 특정 기능에 빠르게 접근할 수 있도록 해주어 사용자 경험을 향상시다.


그 외에 타 IDE에 비해 아주 강력한 디버깅 기능을 가지고 있다던가,

72자를 넘거나 변수명이 8글자를 넘으면 컴파일 오류를 띄운다던가

(…물론 전자의 경우 프로그램이 새로 생성될 때 해당 글자를 넘으면 안 된다는 가이드라인 비스무리한 게 있긴 하다)

심미적으로 완벽하지는 않지만 GUI 환경이 통합되어 있어 프론트 단과 백 단을 통합한 상태로 개발할 수 있다는 특징들을 가지고 있으나

위에서 꼽은 3가지가 현재 내게 있어 가장 특이한 점인 듯하여 적어보았다.

profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글