덕환이가 무럭 무럭 자라 BADI 에도 관심을 가져주는구나.. 내용을 보진 않았지만.. 잘 했겠지뭐 ^^
REQUIREMENT : MSEG 테이블에 STANDARD INCLUDE(CI_COBL)에 의한 ACCOUNTING DETAIL의 예외 사항을 위해 필드를 추가하는 기능을 지원하지 않기 때문에, MIGO에 탭을 추가하고 사용자 값을 Z 테이블에 저장한다.
SOLUTION : MB_MIGO_BADI의 실행을 위해 BADI 를 생성한다.
SE80 에서서브스크린을가진프로그램을생성하고사용자필드를위한레이아웃을디자인하라
Z**TOP INCLUDE 에사용자필드를선언하고, PBO 모듈에그프로그램명과스크린번호를아래그림과같이입력해라
PAI 에서는그필드(사용자필드)를 X 로선언한다.
LINE_MODIFY 메서드에서 FLAG 를선언하고자재문서번호를체크하기위해값을 'X' 세팅한다 ( 자재입고를마친후생성된자재문서를보기위해 MIGO 를실행할때그필드들을디스플레이모드로세팅할수있다)
POST_DOCUMENT 메서드에서그값과 LINE ITEM( 이경우에는생산오더번호, 자재등등.. )의값을함께 Z 테이블에 APPEND 한다. 이들값이이메서드에서사용가능하려면 LINE_MODIFY 메서드에서 'EXPORT TO MEMORY ID' 를사용하여메모리를사용해야한다
사용자필드를유효하게하기위해, SE80에가서생성된프로그램명을넣고 PROCESS ON VALUE_REQUEST 에모듈을생성하고사용자필드들의유효성검증을요청하게한다.
자재문서를보는동안그필드들을계속볼수있도록하기위해 PBO 에모듈을추가하고 LINE_MODIFY 메서드에있는생산오더번호와 FLAG 의값을 IMPORT 한다. 만약 FLAG 가 'X' 이면 LOOP AT SCREEN 구문을사용한다.
LOOP AT SCREEN. IF SCREEN-NAME = 'ZZGBAGS'. SCREEN-INPUT = '0'. MODIFY SCREEN. ENDIF. ENDLOOP.