λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ§‘‍πŸ’Ό SAP/ABAP

[SAP ABAP] BAPI λž€? BAPI 예제

by Jay Din 2024. 12. 23.
728x90
λ°˜μ‘ν˜•

1. BAPI(Business Application Programming Interface) λž€?

BAPIλŠ” SAP의 ν‘œμ€€ν™”λœ μΈν„°νŽ˜μ΄μŠ€λ‘œ, SAP μ‹œμŠ€ν…œμ˜ λΉ„μ¦ˆλ‹ˆμŠ€ 객체(Business Object)와 μƒν˜Έμž‘μš©ν•˜κΈ° μœ„ν•΄ μ‚¬μš©λ©λ‹ˆλ‹€.

μ™ΈλΆ€ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ΄λ‚˜ λ‹€λ₯Έ SAP λͺ¨λ“ˆμ—μ„œ SAP 데이터λ₯Ό μ•ˆμ „ν•˜κ³  효율적으둜 μ½κ±°λ‚˜ μˆ˜μ •ν•  수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

 

핡심 κ°œλ…:

  1. Business Object:
    • SAPμ—μ„œ νŠΉμ • λΉ„μ¦ˆλ‹ˆμŠ€ ν”„λ‘œμ„ΈμŠ€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” μ—”ν‹°ν‹°. 예: 고객(Customer), 판맀 μ˜€λ”(Sales Order), 자재(Material) λ“±.
  2. RFC(원격 ν•¨μˆ˜ 호좜):
    • BAPIλŠ” RFC κΈ°μˆ μ„ 기반으둜 μž‘λ™ν•˜λ©°, SAP λ‚΄μ™ΈλΆ€ κ°„μ˜ 톡신을 κ°€λŠ₯ν•˜κ²Œ ν•©λ‹ˆλ‹€.

 

2. BAPI μž‘λ™ 원리

μž‘λ™ 흐름

  1. μž…λ ₯ 데이터 μ€€λΉ„: BAPIκ°€ μš”κ·œν•˜λŠ” νŒŒλΌλ―Έν„°(μž…λ ₯κ°’)을 μ€€λΉ„ν•©λ‹ˆλ‹€.
  2. BAPI 호좜: CALL FUNCTION을 톡해 BAPIλ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.
  3. κ²°κ³Ό 처리: λ°˜ν™˜κ°’(Return Table)을 ν™•μΈν•˜κ³ , ν•„μš”ν•œ 후속 μž‘μ—…μ„ μ§„ν–‰ν•©λ‹ˆλ‹€.

μ£Όμš” μš”μ†Œ

  1. Exporting: 호좜 μ‹œ μ „λ‹¬λ˜λŠ” μž…λ ₯κ°’
  2. Importing: 호좜 ν›„ λ°˜ν™˜λ˜λŠ” κ²°κ³Όκ°’
  3. Tables: λŒ€λŸ‰ λ°μ΄ν„°μ˜ μž…λ ₯/좜λ ₯을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν…Œμ΄λΈ” ν˜•νƒœμ˜ νŒŒλΌλ―Έν„°
  4. Return: BAPI 호좜 κ²°κ³Ό λ©”μ‹œμ§€(성곡, 였λ₯˜ λ“±).

 

3. BAPI μ‚¬μš©λ²•

BAPI μ˜ˆμ‹œ

  1. BAPI 쑰회,λ³€κ²½, 생성 (T-Code:SE37)
    • SE37: ν•¨μˆ˜ λͺ¨λ“ˆμ„ 쑰회, λ³€κ²½, 생성할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. μž…λ ₯/좜λ ₯ ꡬ쑰 뢄석
    • BAPI μΈν„°νŽ˜μ΄μŠ€μ˜ Exporting, Importing, Tables, Return νŒŒλΌλ―Έν„°λ₯Ό ν™•μΈν•©λ‹ˆλ‹€
  3. 데이터 μ€€λΉ„
    1. ν•„μš”ν•œ ν•„μˆ˜ νŒŒλΌλ―Έν„°μ˜ νƒ€μž…μ„ μ •ν™•νžˆ λ§žμΆ°μ•Ό 였λ₯˜λ₯Ό λ°©μ§€ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

4. BAPI 예제

λ‹€μŒμ€ 고객의 μ£Όμ†Œλ₯Ό μ‘°νšŒν•˜λŠ” κ°„λ‹¨ν•œ μ˜ˆμ œμž…λ‹ˆλ‹€.

" λ³€μˆ˜ μ„ μ–Έ
DATA: LV_CUSTOMER_NUMBER TYPE KUNNR,            " 고객 번호
      LS_CUSTOMER_DATA TYPE BAPICUSTOMER_04,    " 고객 μ£Όμ†Œ 데이터
      LT_RETURN TYPE TABLE OF BAPIRET2,         " λ°˜ν™˜ λ©”μ‹œμ§€ ν…Œμ΄λΈ”
      LS_RETURN TYPE BAPIRET2.                  " λ°˜ν™˜ λ©”μ‹œμ§€

" 고객 번호λ₯Ό μž…λ ₯λ°›λŠ” νŒŒλΌλ―Έν„°
PARAMETERS: P_CUSTNO TYPE KUNNR OBLIGATORY.

START-OF-SELECTION.

  " μž…λ ₯받은 고객 번호λ₯Ό λ³€μˆ˜μ— μ €μž₯
  LV_CUSTOMER_NUMBER = P_CUSTNO.

  " BAPI 호좜
  CLEAR: LS_CUSTOMER_DATA, LT_RETURN.

  CALL FUNCTION 'BAPI_CUSTOMER_GETDETAIL2'
    EXPORTING
      CUSTOMERNO      = LV_CUSTOMER_NUMBER          " μž…λ ₯받은 고객 번호
    IMPORTING
      CUSTOMERADDRESS = LS_CUSTOMER_DATA.            " λ°˜ν™˜λœ 고객 μ£Όμ†Œ 데이터
*    TABLES
*      RETURN          = LT_RETURN.                  " λ°˜ν™˜ λ©”μ‹œμ§€ ν…Œμ΄λΈ”

  " μ—λŸ¬ λ©”μ‹œμ§€ 확인
  IF LS_CUSTOMER_DATA IS INITIAL.
    WRITE: 'κ°€μ Έ 올 데이터가 μ—†μŠ΅λ‹ˆλ‹€.'.
  ELSE.
    " 고객 데이터 좜λ ₯
    WRITE: / 'Customer Name:', LS_CUSTOMER_DATA-NAME,
           / 'Street:', LS_CUSTOMER_DATA-STREET,
           / 'City:', LS_CUSTOMER_DATA-CITY.
  ENDIF.

μ‹€ν–‰κ²½κ³Ό

 

5. BAPIλ₯Ό μ‚¬μš©ν•˜λŠ” 경우

  1. SAP μ™ΈλΆ€μ™€μ˜ 톡신:
    • μ™ΈλΆ€ μ‹œμŠ€ν…œ(Java, .NET, Python λ“±)이 SAP 데이터λ₯Ό μ½κ±°λ‚˜ μ“°λŠ” 경우
    • 예: μ „μžμƒκ±°λž˜ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ—μ„œ SAP μ£Όλ¬Έ 데이터λ₯Ό 호좜
  2. SAP λ‚΄λΆ€ λͺ¨λ“ˆ κ°„ 데이터 전달:
    • SAP λ‚΄λΆ€ λ‹€λ₯Έ λͺ¨λ“ˆ κ°„ 데이터 κ΅ν™˜μ΄ ν•„μš”ν•œ 경우
    • 예: SD λͺ¨λ“ˆμ—μ„œ FI λͺ¨λ“ˆλ‘œ 데이터 전달
  3. λŒ€λŸ‰ 데이터 처리:
    • 효율적이고 μ•ˆμ „ν•˜κ²Œ λŒ€λŸ‰ 데이터λ₯Ό μ‘°νšŒν•˜κ±°λ‚˜ μˆ˜μ •ν•  λ•Œ
    • 예: 자재 λͺ©λ‘ 쑰회
  4. ν‘œμ€€ν™”λœ ν”„λ‘œμ„ΈμŠ€ 호좜:
    • SAP ν‘œμ€€ λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ μž¬μ‚¬μš©ν•˜μ—¬ 개발 μ‹œκ°„μ„ μ ˆμ•½

 

6. BAPI μ‚¬μš© μ‹œ 주의점

  1. μΈν„°νŽ˜μ΄μŠ€ νŒŒμ•…
    • BAPIκ°€ μš”κ·œν•˜λŠ” μž…λ ₯ νŒŒλΌλ―Έν„°λ₯Ό λͺ…ν™•νžˆ 이해해야 ν•©λ‹ˆλ‹€.
    • ν•„μˆ˜ νŒŒλΌλ―Έν„° λˆ„λ½ μ‹œ 였λ₯˜κ°€ λ°œμƒν•©λ‹ˆλ‹€.
  2. μ„±λŠ₯ κ³ λ €
    • λŒ€λŸ‰ 데이터λ₯Ό λ‹€λ£¨λŠ” 경우 적절히 μ΅œμ ν™”λœ BAPIλ₯Ό 선택해야 ν•©λ‹ˆλ‹€.
    • λΉ„νš¨μœ¨μ μΈ BAPI ν˜ΈμΆœμ€ μ„±λŠ₯ μ €ν•˜λ₯Ό μœ λ°œν•  수 μžˆμŠ΅λ‹ˆλ‹€.

 

7. BAPI μ‚¬μš©μ„ ν”Όν•΄μ•Ό ν•˜λŠ” 경우

  1. λ‹¨μˆœ 데이터 μ‘°μž‘:
    • λ‹¨μˆœν•œ 데이터 μ‘°νšŒλ‚˜ λ³€κ²½ μž‘μ—…μ€ 직접 SQL을 μ‚¬μš©ν•˜ 것이 더 적합할 수 μžˆμŠ΅λ‹ˆλ‹€.
  2. 데이터 양이 맀우 큰 경우:
    • BAPIλŠ” νŠΉμ • λΉ„μ¦ˆλ‹ˆμŠ€ λ‘œμ§μ„ ν¬ν•¨ν•˜λ―€λ‘œ λŒ€κ·œλͺ¨ 데이터 μ „μ†‘μ—λŠ” λΉ„νš¨μœ¨μ μΌ 수 μžˆμŠ΅λ‹ˆλ‹€.
    • λŒ€κ·œλͺ¨ μž‘μ—…μ—λŠ” IDOCμ΄λ‚˜ Batch Input을 κ³ λ €ν•΄λ³΄λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.
  3. ν…Œμ΄λΈ”μ„ 직접 μˆ˜μ •ν•΄μ•Ό ν•˜λŠ” 경우:
    • BAPIλŠ” 데이터 무결성을 보μž₯ν•˜μ§€λ§Œ, ν‘œμ€€ ν…Œμ΄λΈ”μ„ 직접 μˆ˜μ •ν•΄μ•Ό ν•œλ‹€λ©΄ μ μ ˆν•˜μ§€ μ•Šμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

8. BAPI와 λ‹€λ₯Έ 기술의 비ꡐ

기술 νŠΉμ§• μ‚¬μš© 사둀
BAPI SAP ν‘œμ€€ API, λΉ„μ¦ˆλ‹ˆμŠ€ 객체에 νŠΉν™” 데이터 쑰회/μˆ˜μ •, SAP-μ™ΈλΆ€ 톡신
RFC 원격 ν•¨μˆ˜ 호좜 μΈν„°νŽ˜μ΄μŠ€ SAP κ°„ λ˜λŠ” SAP-μ™ΈλΆ€ μ‹œμŠ€ν…œ 톡신
IDOC λŒ€λŸ‰ 데이터 전솑, 비동기 방식 λŒ€κ·œλͺ¨ 데이터 전솑 및 톡합
Batch Input λŒ€κ·œλͺ¨ 데이터 μž…λ ₯, ν‘œμ€€ νŠΈλžœμž­μ…˜ μ‚¬μš© λŒ€λŸ‰ 데이터 μž…λ ₯

 

 

 

728x90
λ°˜μ‘ν˜•