이글은 아래 링크의 원본 글에 대한 한글 번역 입니다
https://www.sapnuts.com/courses/core-abap/badi-sap/real-time-of-using-badi.html

 

 

Real time example of using BADI in SAP

 

SAP 벤더 마스터(XK01) BADI 예제, XK01용 BADI 구현

 

 
요구사항: 벤더가 독일인데 지역이 비어있으면 에러 메시지를 출력합니다.

요구사항 분석

SAP에서는 티코드 XK01로 벤더를 생성합니다. 생성된 벤더는 LFA1 (벤더 마스터 테이블)에 저장 됩니다. XK01로 벤더를 생성할때 (그리고 XK02로 벤더를 변경할때도) 로직을 추가하여 지역이 올바르게 입력되었는지 검사해야 합니다. 그러기 위해서 BADI를 사용하겠습니다.

XK01용 BADI를 구현하기 위해서, 다음 단계를 따라야 합니다.

단계1: BADI를 찾습니다.

단계2: 적절한 BADI를 선택합니다.

단계3: BADI를 구현합니다.

단계4: BADI를 테스트 합니다.

 

XK01/XK02용 BADI를 찾아봅시다.

BADI 구현을 위한 첫 단계는 먼저 BADI를 찾는 것입니다.

티코드 SE24로 이동하여 CL_EXITHANDLER 클래스의 GET_INSTANCE 메소드에 브레이크포인트를 겁니다.

LFA1 테이블에서 벤더 넘버를 하나 구해두고 티코드 XK02로 가서 벤더 넘버를 입력합니다.

Implementing BADI for XK01

엔터키를 눌러 다음 화면으로 이동합니다. 적당히 값을 입력하고 저장 버튼을 누릅니다(또는 컨트롤 S).

BADI for XK01

브레이크포인트에 멈추고 디버거가 실행됩니다. BADI 이름을 모두 적어 둡니다.

BADI for Vendor in SAP

아래 처럼 BADI 이름을 다 적었습니다.

  • VENDOR_FIELDSTATUS
  • GOS_SRV_SELECT
  • ADDRESS_CHECK
  • ADDR_TXJCD_CHECK
  • CVI_CALL_BTE
  • ADDRESS_UPDATE
  • VENDOR_ADD_DATA

 

적절한 BADI를 선택하고 검증해 봅시다.

적절한 BADI를 찾기 위해서, 티코드 SE18로 이동하여 BADI 이름을 입력하고 살펴봅니다.

내역에 명시된 설명을 바탕으로 추측합니다. 인터페이스에 메소드 파라미터도 참고합니다. 이런식으로 몇몇 BADI를 선택할 수 있습니다.

요구사항에 맞는 적절한 BADI로 VENDOR_ADD_DATA를 선택하겠습니다.

 

BADI를 구현해 봅시다.

BADI는 객체 지향 프로그래밍(OOP) 방법을 사용합니다. BADI 자체는 인터페이스에 지나지 않습니다. BADI를 구현하는 것은 즉, 그 인터페이스를 구현하는 것입니다.

BADI를 구현하기 위해서 티코드 SE19(BADI Builder)로 이동하여 BADI 이름을 입력하고 create implementation 버튼을 누릅니다.

Implement BADI for XK01

팝업창이 나타나면 implementaion name을 입력합니다. 예: ZVENDOR_ADD_DATA

Vendor BADI implementation

내역을 입력하고, 메소드 목록에서 적절한 메소드를 선택하여 더블클릭합니다.

 

여기서는 CHECK_ALL_DATA 메소드가 점검 로직을 넣기에 적절해 보입니다.

METHOD IF_EX_VENDER_ADD_DATA~CHECK_ALL_DATA.
BREAK-POINT.
ENDMETHOD.

티코드 XK02로 이동하여 벤더 넘버를 입력하고 주소 체크박스에 체크를 합니다. 엔터키를 눌러 주소 화면으로 이동하고 아무거나 변경한 다음 저장합니다. 이제 위 브레이크 포인트에 걸려서 디버거가 뜨는지 확인합니다. 요구사항에 맞는 아주 적절한 구현 위치를 찾은것 같습니다. 테스트로 넣은 브레이크 포인트 구문을 지우고 실제 필요한 아래 코드를 입력합니다.

METHOD IF_EX_VENDER_ADD_DATA~CHECK_ALL_DATA.
IF I_LFA1=LAND1= 'DE' AND I_LFA1-REGIO= ' '.
MESSAGE 'Region is required for German Vendors'  TYPE  'E'.
ENDMETHOD.

저장하고 활성화 합니다.

BADI 구현이 끝났습니다.

 

BADI가 잘 작동하는지 테스트해 봅시다.

BADI를 테스트하기 위해 티코드 XK02로 이동합니다. 벤더 넘버를 입력하고 엔터키를 누릅니다.

국가를 DE로 변경하고 지역은 빈값으로 입력합니다.

 

저장 (컨트롤 S).

 

에러 메시지가 뜹니다.

BADI in SAP

 

BADI를 잘 만든 것으로 확인됩니다.

 

 

이글은 아래 링크의 원본 글에 대한 한글 번역 입니다
https://www.sapnuts.com/courses/core-abap/badi-sap/real-time-of-using-badi.html

+ Recent posts