◆ 하고자 하는 것
MM02 품질 검사 탭 (Quality management) - Inspection setup 체크 되어 있으면 해지
-------> 입고 작업 -----> 체크 해지 되어 있는 것 다시 원복
◆ 구현
MM02로 자재 변경으로 Inspection setup 변경하고 원복하는 것을 BDC로 구현함
(BAPI를 몰라서 ㅡㅜ)
◆ 문제점
첫번째 BDC는 정상적으로 실행 됩니다.
( 디버깅과 자재 조회, 변경이력으로 확인)
두번째 다시 원복하는 BDC가 타지 않네요.... 에러도 아니고 특별한 메세지 넘기지도 않고요...
원인이 어떤 걸까요?? 고수님들의 답변을 기다립니다.
(위에 변경하는 BAPI 있으면 알려 주시면 고맙겠습니다. 굽신굽신~~ )
◆ 프로그램
FUNCTION Z_IWMS_GR_LOC_CREATE.
.......
PERFORM mat_inspect_update USING 'S'.
write : '입고 작업 실행 중...'.
PERFORM mat_inspect_update USING 'E'.
...........
ENDFUNCTION.
FORM mat_inspect_update USING p_exit.
DATA : lv_qmatv LIKE marc-qmatv ,
lv_temp_ins TYPE c.
CLEAR: lv_qmatv, lv_temp_ins .
SELECT SINGLE qmatv INTO lv_qmatv
FROM marc
WHERE matnr = i_tc100-matnr
AND werks = i_tc100-werks .
IF sy-subrc = 0 and lv_qmatv = 'X' and p_exit = 'S'.
lv_temp_ins = ' '.
ELSEIF sy-subrc = 0 and lv_qmatv = ' ' and p_exit = 'E'
lv_temp_ins = 'X '.
ENDIF.
* First Screen (material 입력)
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '0060' ,
' ' 'RMMG1-MATNR' i_tc100-matnr , " Material
' ' 'BDC_OKCODE' '/00' .
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '0070' ,
' ' 'BDC_CURSOR' 'MSICHTAUSW-DYTXT(01)',
' ' 'BDC_OKCODE' '=ENTR' ,
' ' 'MSICHTAUSW-KZSEL(01)' 'X' . " 선택
* 품질 검사 탭으로 이동
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '4004',
' ' 'BDC_OKCODE' '=SP23' ,
' ' 'BDC_CURSOR' 'MAKT-MAKTX' .
* Plant
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '0081' ,
' ' 'BDC_CURSOR' 'RMMG1-WERKS',
' ' 'BDC_OKCODE' '=ENTR' ,
' ' 'RMMG1-WERKS' i_tc100-werks . " Plant
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '4000' ,
' ' 'BDC_OKCODE' '=PB01' ,
' ' 'BDC_CURSOR' 'MAKT-MAKTX' .
* Active 선택/비선택
PERFORM bdc_process USING :
'X' 'SAPLQPLS' '0100' ,
' ' 'BDC_CURSOR' 'RMQAM-AKTIV(01)' ,
' ' 'BDC_OKCODE' '=WEIT' ,
' ' 'RMQAM-AKTIV(01)' lv_temp_ins .
PERFORM bdc_process USING :
'X' 'SAPLMGMM' '4000' ,
' ' 'BDC_OKCODE' '=BU' ,
' ' 'BDC_CURSOR' 'MAKT-MAKTX'.
CALL TRANSACTION 'MM02' USING bdcdata
MODE 'N'
UPDATE 'S'
MESSAGES INTO messtab. " message
CLEAR messtab.
READ TABLE messtab WITH KEY msgid = 'M7' msgnr = '060'.
IF sy-subrc = 0.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO i_tab-msg1.
i_tab-msgtyp = 'F'.
ENDIF.
WAIT UP TO 3 SECONDS.
CALL FUNCTION 'DEQUEUE_ALL'.
COMMIT WORK AND WAIT.
ENDFORM. " MAT_INSPECT_UPDATE
댓글 4
-
갈매기
2010.11.12 00:29
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA' -
워너송
2010.11.12 01:36
BAPI_MATERIAL_SAVEDATA 에서 어떤 필드를 변경 해야 할까요? -
갈매기
2010.11.12 02:41
MARC-QMATV 이거네요 -
워너송
2010.11.16 19:57
자문 자답... 위의 BDC 소스는 bdcdata를 Clear 안 했네요..... ㅡㅜ
BAPI_MATERIAL_SAVEDATA는 품질 검사 관련이 없습니다.
BAPI_MATINSPCTRL_SAVEREPLICA 이 해당 되지 않을까 생각 합니다.