본문 바로가기
SAP Story/ABAP

BAPI 란?

by 돈보따리 2022. 10. 27.
반응형

SAP 표준에서 제공하는 기능 중 BAPI 라는 기능이 있는데요.
이번 포스팅에서는 BAPI에 대한 개념을 익혀보도록 할게요.

 


BAPI

  BAPI는 Business Application Programming Interfaces의 약자로 SAP 시스템의 비즈니스 프로세스 및 데이터에 대 한 내부 및 외부 액세스를 용이하게 해주는 표준화된 프로그래밍 인터페이스 입니다. 쉽게 말해 SAP의 표준 비즈 니스 프로세스를 그대로 담아둔 것이라고 볼 수 있습니다.

  BAPI는 SAP의 비즈니스 개체의 메서드로 BOR( Business Object Repository )에 정의되며, SAP 시스템에서 비즈 니스 데이터의 객체지향의 View를 가능하게 합니다. BAPI를 사용해 호출할 수 있는 Function은 ABAP Workbench Function Builder에 RFC 지원 Function Module로 저장됩니다.

※ SAP 표준 트랜잭션을 저장할 수 있는 기능을 지원하는 Function 으로 이해하면 되겠습니다.

 

BDC

  이와 유사한 기능으로 BDC가 있습니다. BDC는 Batch Data Communication의 약자로 액셀의 매크로 기능 과 유사하게 어떤 트랜잭션을 실행하고, 어떤 데이터 를 입력할지 결정하는 레코딩 작업을 먼저 진행해야 합니다. BDC를 통해 SAP 설치 후 기존의 시스템이나 외부 시스템에 축적된 데이터나 액셀 파일을 한 번에 입력할 수 있습니다. 또한 단순 반복 작업을 줄이기 위해 사용할 수도 있습니다.

 

BAPI vs BDC

  그렇다면 BAPI와 BDC의 차이는 무엇일까요?
  BAPI와 BDC는 데이터를 업로드한다는 것은 비슷하지만 분명한 차이가 존재합니다.

  먼저 BDC는 트랜잭션 지향적으로 SAP의 Standard Transaction을 통해 SAP에 업로드됩니다. 데이터를 업로드하는 동안 사람의 개입 없이 반복적으로 트랜잭션을 계속 실행할 수 있고, 동일한 트랜잭션의 여러 실행을 묶어 매크로처럼 한 번에 실행 할 수 있습니다. 하지만 이미 지정된 레코딩에 따라 작동하기 때문에 단순한 데이터 수정에도 전체가 실행되기 때문에 자원 낭비나, 속도가 저하될 수 있습니다.

  BAPI는 함수의 목적에 맞게 필요한 Business Object만 가지고 데이터를 가공하기 때문에 속도가 빠르고, 필요한 Business Object만 메모리에 올려서 가공하기 때문에 자원 낭비가 적고 빨리 회수됩니다. 또한 BAPI는 특수한 RFC( Remote Function Call )로 SAP 시스템 내의 비즈니스 프로세스와 데이터를 시스템 내부나 SAP가 아닌 시스템에서도 접근할 수 있습니다. 하지만 BAPI는 Parameter가 매우 많기 때문에 어떤 Parameter를 사용해야 할지 찾기 힘들고 BDC와 달리 에러 메시지를 찾는 것이 힘들다는 단점이 있습니다.

 

필요한 BAPI를 찾아보자 - TCode 실행

T-Code :: BAPI 를 실행하여 BAPI Function을 조회할 수 있습니다.

[T-Code :: BAPI 를 실행한 초기화면]

T-Code 실행 후 초기화면 왼쪽의 탭에서 각 모듈에서 사용하는 BAPI를 검색할 수 있습니다.

예시로 SD 모듈에서 Sales Order 를 생성하는데 사용하는 BAPI_SALESORDER_CREATEFROMDAT2를 찾아 보았습니다.

Documentation 탭을 보면 해당 BAPI에 대한 기능과 예시, Parameter에 대한 정보를 얻을 수 있습니다.
단, 문서를 보기위해서는 로그인 언어를 EN으로 해야합니다.

( Parameter 에 대한 정보는 구글을 잘 찾아보아도 확인할 수 있습니다. )

 

필요한 BAPI를 찾아보자 - Function 찾기

T-Code :: SE37 을 실행하여 BAPI Function을 조회할 수 있습니다.

SE37 실행 후 Function Module 에 'BAPI*' 을 입력하고, F4 키를 Push합니다.

시스템에 있는 BAPI를 찾을 수 있다.

BAPI 사용 예시

Function 을 사용하는 것처럼 사용할 수 있습니다. 다만, 일반 펑션과 다르게 리턴 결과에 따라서 Commit 또는 RollBack 을 실행해줘야 합니다.

 

Commit 또는 Rollback 실행 예시


다음에 또 유익한 글로 돌아오겠습니다.

반응형

댓글