SAP BAPI 튜토리얼 – ABAP에서 BAPI를 생성하는 방법
⚡ 스마트 요약
BAPI에서 SAP ABAP는 외부 애플리케이션이 R/3 프로세스 및 데이터에 접근할 수 있도록 하는 표준화된 RFC 지원 비즈니스 객체 호출 방식입니다. 이 페이지에서는 표준화된 BAPI, SWO1에서 BAPI를 생성하는 방법, 테스트, 릴리스, 그리고 ABAP에서 BAPI를 호출하는 방법에 대해 설명합니다.
BAPI란 무엇입니까?
BAPI(비즈니스 애플리케이션 프로그래밍 인터페이스)는 외부 애플리케이션이 R/3 시스템의 비즈니스 프로세스 및 데이터에 액세스할 수 있도록 하는 표준화된 프로그래밍 인터페이스(메서드)입니다.
그들 안정적이고 표준화된 방법 제공 R/3 시스템과 외부 애플리케이션, 레거시 시스템 및 추가 기능 간의 원활한 통합을 달성합니다.
BAPI는 다음에 정의되어 있습니다. BOR(비즈니스 객체 저장소) 방법으로는 SAP 특정 비즈니스 기능을 수행하는 비즈니스 객체 유형입니다. 이들은 다음과 같이 구현됩니다. RFC 지원 기능 모듈은 ABAP Workbench의 Function Builder에서 생성됩니다.
일부 BAPI 및 메소드는 기본 기능을 제공하며 대부분의 경우에 사용할 수 있습니다. SAP 비즈니스 개체. 이를 호출합니다. 표준화된 BAPI.
표준화된 BAPI 목록:
- 데이터 읽기를 위한 BAPI - GetList() , GetDetail() , GetStatus() , ExistenceCheck()
- 데이터 생성 또는 변경을 위한 BAPI - Create() ,Change(),Delete() 및 Undelete()
- 대량 처리를 위한 BAPI -ChangeMultiple(), CreateMultiple(), DeleteMultiple().
BAPI의 장점
BAPI는 문서화되고 공개된 인터페이스이기 때문에 화면 기반 기술보다 선호됩니다. SAP 여러 릴리스에 걸쳐 안정성을 유지합니다. 이는 여러 가지 실질적인 이점을 제공합니다.
- 안정적인 인터페이스: 릴리스된 BAPI의 시그니처는 업그레이드 시 변경되지 않으므로 호출 프로그램은 계속 작동합니다.
- 비즈니스 로직 재사용: BAPI는 트랜잭션과 동일한 유효성 검사를 수행하므로 BAPI를 통해 추가된 데이터는 일관성을 유지합니다.
- 원격 접속 가능: BAPI는 RFC를 지원하는 함수 모듈이므로 다른 곳에서 호출할 수 있습니다. SAP 시스템, Java 또는 .NET 프로그램이나 웹 서비스.
- 화면 종속성 없음: 일괄 입력 기록과 달리 BAPI는 화면 레이아웃이 변경되어도 중단되지 않습니다.
개념과 그 이점이 명확해졌으므로, 다음 섹션에서는 BAPI를 단계별로 구축하는 방법을 설명합니다.
BAPI를 만드는 방법
단계 1) 트랜잭션 swo1(도구->비즈니스 프레임워크->BAPI 개발->비즈니스 개체 빌더)로 이동합니다. BAPI가 생성되는 기능 요구 사항에 따라 비즈니스 개체를 선택합니다.
단계 2) 변경 모드에서 비즈니스 개체를 엽니다. 그런 다음 유틸리티 ->API 메소드 ->메서드 추가를 선택합니다. 그런 다음 함수 모듈의 이름을 입력하고 계속을 선택합니다.
단계 3) 다음 대화 상자에서는 다음 정보를 지정해야 합니다.
- Method : 메소드에 적합한 이름을 제안합니다.
- 텍스트 : BAPI에 대한 설명을 입력합니다.
- 라디오 버튼 : 대화상자, Synchronous, 인스턴스 독립적. BAPI는 일반적으로 동기적으로 구현됩니다.
단계 4) 다음 대화 상자에서 '예'를 선택하여 메서드를 만듭니다.
단계 5) 프로그램 생성 및 실행이 완료되면 방금 생성한 메소드에서 프로그램을 확인하면 BAPI가 생성된다.
BAPI 테스트
다음을 통해 BAPI를 테스트할 수 있습니다. 지원 Business Object Builder에서 비즈니스 객체의 개별 메소드. (또는 'SWUD' 트랜잭션을 사용하여 방법을 테스트할 수도 있습니다).
BAPI 릴리스 및 동결
- BAPI를 해제하려면 먼저 함수 모듈을 해제합니다(트랜잭션 se37 사용).
- Business Object Builder에서 메소드의 상태를 '릴리스됨'으로 설정하십시오(트랜잭션 SWo1 – 편집->상태 변경->릴리스 사용).
BAPI에서 360' 보기용 BAPI 탐색기(거래 코드 BAPI)를 사용할 수도 있습니다.
ABAP에서 BAPI를 호출하는 방법
BAPI는 RFC를 지원하는 함수 모듈처럼 호출됩니다. 중요한 규칙은 BAPI는 자체적으로 COMMIT WORK를 실행하지 않으므로 호출자는 BAPI_TRANSACTION_COMMIT으로 변경 사항을 확정하거나 BAPI_TRANSACTION_ROLLBACK으로 변경 사항을 취소해야 한다는 것입니다. 아래 예제는 표준 BAPI를 사용하여 판매 주문을 생성합니다.
DATA: ls_header TYPE bapisdhd1, lt_items TYPE STANDARD TABLE OF bapisditm, lt_return TYPE STANDARD TABLE OF bapiret2, lv_order TYPE vbeln. * Fill the header and item structures, then call the BAPI CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2' EXPORTING order_header_in = ls_header IMPORTING salesdocument = lv_order TABLES order_items_in = lt_items return = lt_return. * A BAPI does not commit on its own - decide based on the return table READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS. IF sy-subrc = 0. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF.
⚠️ 경고: 커밋하기 전에 항상 RETURN 테이블에서 E 또는 A 유형의 메시지가 있는지 확인하십시오. 오류 발생 후 BAPI_TRANSACTION_COMMIT을 호출하면 문서가 불완전하게 저장되는데, 이는 가장 흔한 BAPI 오류 중 하나입니다.
BAPI vs BDC vs RFC
BAPI, BDC그리고 일반 RFC는 모두 데이터를 다음 위치로 이동시킵니다. SAP하지만 안정성과 재사용 재료 면에서 차이가 있습니다. 아래 표에서 비교해 보겠습니다.
| 기준 | BAPI | BDC | RFC(사용자 정의) |
|---|---|---|---|
| 인터페이스 | 비즈니스 객체의 릴리스된 메서드 | 거래 화면 순서 | 사용자 정의 함수 모듈 |
| 업그레이드 시 안정성 | 출시된 BAPI에 대해 보장됩니다. | 화면이 바뀌면 중단됩니다. | 개발자에 따라 다릅니다 |
| 원격 사용 가능 | 가능 | 아니 | 가능 |
| 비즈니스 검증 | 전액, 거래와 동일 | 전체 화면은 실제 화면을 실행합니다. | 개발자가 작성한 코드만 해당됩니다. |
| 가장 좋은 | 안정적인 통합 및 인터페이스 | BAPI가 존재하지 않는 로드 | 맞춤형 지점 간 서비스 |
일반적인 원칙은 가능한 한 공개된 BAPI를 사용하고, 없는 경우에는 BDC를 사용하며, 맞춤형 서비스에 대해서는 사용자 정의 RFC를 사용하는 것입니다.






