Case)
MIGO 에서 구매오더 번호를 여러 개 입력해서 아이템이 여러 라인이 있다.
아이템 기준 체크로직을 추가했다.
그리고 체크에 걸리면 메시지 처리 후 자재문서를 만들지 말아야 한다.
MIGO 는 S/4 로 오게 되면서 생긴 MM 에서 자주 사용하는 Tcode 이다.
GR/GI, 이전전기 등등의 트랜잭션을 다 처리할 수 있다.
MIGO 에서 입고를 하는 것과 동일한 동작을
대체하여 CBO 프로그램 상에서 BAPI_GOODSMVT_CREATE 함수를 써서 할 수 있다.
문제는, 스탠다드 MIGO 에 체크로직을 추가해야 하는데, Badi 를 구현하여
'MB_MIGO_BADI' 체크하는데까지는 가능하지만,
저 CBO 의 BAPI 함수를 수행할 때는 이 Badi 가 Trigger 되지 않는다는 것이다.
그 이유는 Badi 는 스크린 레벨에서 동작하기 때문인데..
Solution)
아래의 몇 스텝만 따라하면 MIGO 에서 동작하는 것과 동일하게
BAPI 실행시에도 Badi 에 걸어둔 체크로직이 타게 할 수 있다. (So Simple 하다)
1. CBO 로 Function 을 생성한다. (단, Badi 와 동일한 파라미터 값 가지도록)
2. 'MB_CREATE_GOODS_MOVEMENT' 내에서 1번에서 만든 Function 을 호출한다.
(Enhancement Point 를 생성해야 하는데, 그 위치는 Function 의 소스 중 맨 아래쪽이다.
즉, ENDFUNCTION 바로 위가 되겠지?)
3. 위 두 개의 단계만 해주면, BAPI 가 실행될때마다 Badi 에서 구현해준 로직이 호출된다.
MB_MIGO_BADI 를 참조하여 ZMB_MIGO_BADI 를 생성한다.
기본 제공되는 메소드 중에 적당한 위치에 체크로직을 구현해 준다.
POST_DOCUMENT 는 전기할때 타는 메소드,
CHECK_ITEM 또는 CHECK_HEADER 는 점검할때 타는 메소드..
한군데서만 체크를 수행하면 되므로, 적당히 POST_DOCUMENT 에 로직을 구현해서
MIGO 에서는 전기시 체크가 잘 된다.
MB_CREATE_GOODS_MOVEMENT 함수의 가장 아랫부분에 Enhancement Point 를 생성한다.
이 CBO Function 의 핵심은..
파라미터 타입이 IT_MSEG 으로 Screen Level 의 아이템 라인을 받아서 아이템 기준 체크로직을
Badi 에서 걸었던 체크로직과 동일하게 걸어준다는것이다.
여기까지 활성화하고, BAPI 를 태워보면
체크가 가능하다.
끝.
'SAP > ABAP' 카테고리의 다른 글
ABAP 프로그램 샘플 소스 Code Block 테스트 (0) | 2024.11.13 |
---|---|
Tistory 에서 코드블럭에 ABAP 테마 추가하기 (17) | 2024.11.12 |
Working Day 여부 체크 (계산)하는 함수 → DATE_CONVERT_TO_FACTORYDATE (0) | 2024.11.08 |
Popup with One(Several) Input Field(s) & Confirmation Button (0) | 2024.07.11 |
스마트폼을 PDF 파일로 이메일에 첨부하기 (2) | 2024.05.09 |