본문 바로가기
SAP/ABAP

[ABAP]SAP BAPI 함수

by 먼가먼가 2024. 8. 9.
728x90
SMALL

 

BAPI 란?

 

  • BAPI(Business Application Programming Interface)는 SAP에서 제공하는 표준화된 프로그래밍 인터페이스입니다.
  • BAPI는 SAP의 객체 지향 개념을 기반으로 하며, 주로 데이터 통합, 시스템 간 통신, 사용자 정의 애플리케이션 개발 등의 목적으로 사용됩니다.

 

쉽게 말하면, BAPI는 SAP의 표준 트랜잭션을 프로그램 내에 함수를 통해 실행 하는 기능을 지원하는 것으로 이해하면 되겠습니다.

 

 

 

 

BAPI의 구조

 

BAPI는 일반적으로 다음과 같은 구성 요소로 이루어져 있습니다.

 

  • Import Parameters: 외부에서 함수로 전달되는 입력 데이터.
  • Export Parameters: BAPI 실행 후 외부로 반환되는 출력 데이터.
  • Tables: 입력과 출력을 모두 처리할 수 있는 테이블 형식의 파라미터.

 

 

 

BAPI 사용 예시

 

 - 판매오더를 생성하기 위해 사용 되는 "BAPI_SALESORDER_CREATEFROMDAT2" 함수 ABAP 코드 예시입니다.

 

 

DATA: lt_return         TYPE TABLE OF bapiret2,
      lt_order_items_in TYPE TABLE OF bapiorderitemin,
      lt_order_partners TYPE TABLE OF bapiaddr1,
      lt_order_schedules TYPE TABLE OF bapischdl,
      lt_order_conditions TYPE TABLE OF bapicond,
      ls_salesdocument   TYPE bapisaleorder,
      ls_return          TYPE bapiret2.

"헤더 데이터 설정
ls_salesdocument-doc_type  = 'OR'.   " 주문 유형 (예: 'OR' - 표준 주문)
ls_salesdocument-sales_org = '1000'. " 판매 조직
ls_salesdocument-distr_chan = '10'.  " 유통 채널
ls_salesdocument-division  = '00'.   " 부서

"파트너 정보 설정 (예: 고객)
APPEND VALUE #( partn_role = 'AG' partn_numb = '100000' ) TO lt_order_partners. " AG: 주문자 역할

"주문 항목 설정
APPEND VALUE #( material = 'MAT001' target_qty = '10' plant = '1000' ) TO lt_order_items_in.

"스케줄라인 설정
APPEND VALUE #( it_qty = '10' req_date = '20240809' ) TO lt_order_schedules.

"조건 설정 (예: 가격)
APPEND VALUE #( cond_type = 'PR00' cond_value = '100.00' currency = 'USD' ) TO lt_order_conditions.

"판매 주문 생성 BAPI 호출
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
  EXPORTING
    order_header_in  = ls_salesdocument
  IMPORTING
    salesdocument_ex  = ls_salesdocument
  TABLES
    return           = lt_return
    order_items_in   = lt_order_items_in
    order_partners   = lt_order_partners
    order_schedules  = lt_order_schedules
    order_conditions = lt_order_conditions.

"반환 메시지 확인
LOOP AT lt_return INTO ls_return.
  WRITE: / ls_return-message.
ENDLOOP.

"변경 사항 커밋
IF lt_return IS INITIAL.
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
ELSE.
  CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
ENDIF.

 

 

▶ BAPI 함수는 SAP 프로세스를 프로그램 내에 태워 사용자가 직접 Standard T-code 접근 없이 데이터를 생성 및 변경할 수 있는 장점이 있습니다. 하지만 수많은 BAPI 함수와 매우 많은 Parameter, 어떤 Parameter를 사용해야 할지 찾기 힘들고 에러 메시지를 찾기 힘들다고 생각됩니다.

 

다음에는 BAPI 함수를 잘 사용할 수 있는 Tip과 테스트 방법 등을 포스팅해보겠습니다:)

728x90
LIST