RFC 펑션을 짜고 있는데요...
호출 시 BDC펑션을 타서 데이터(신규자재)를 생성하는 로직입니다.
mode 'N'으로 bdc가 완료되면 메세지를 읽어서 성공 여부를 체크하는데요.
성공 메세지가 MSGID = 06, MSGNR = 402 가 나와야 하는데
가끔 MSGID = 00, MSGNR = 344가 나오는데 왜 그런 걸까요?
어떨때는 성공 메세지가 나오는데요...
디버깅을 걸어서 그런것 같기도 한데... mode를 'A'로 놓으면 항상 잘 됩니다.
호출하는 쪽이 non-sap 이어서 그쪽은 제가 잘 모르겠구요...
댓글 3
-
지의
2008.12.03 17:07
-
activeman
2008.12.03 21:52
bdc프로그램에서 call transaction 부분을
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE,
CTUMODE LIKE CTU_PARAMS-DISMODE VALUE 'E',
CUPDATE LIKE CTU_PARAMS-UPDMODE VALUE 'S'.
PERFORM BDC_TRANSACTION USING 'MM03'.
FORM BDC_TRANSACTION USING TCODE.
* call transaction using
REFRESH MESSTAB.
CALL TRANSACTION TCODE USING BDCDATA
MODE CTUMODE
UPDATE CUPDATE
MESSAGES INTO MESSTAB.== > 이렇게 해보세요..그럼 messages에 MSGID, MSGNR가 저장되고
이부분을 확인해보시면 메시지번호가 제대로 들어오는지 확인이
가능합니다.
REFRESH BDCDATA.
ENDFORM. " bdc_transaction
즐밥하세요.
-
용스
2008.12.23 00:41
답변 주셔서 감사합니다. 에러의 원인은 다른곳에 있었네요 ^^;
activeman님 말씀데루 하면 성공 시 MESSTAB에 제가 말한 코드 값이 들어오는데요.
자재 생성 시(MM01) 데이터가 잘못들어가서 생성이 안된거더라구요.
테스트 서버에서 개발 서버에 같은 펑션을 복사했더니,
입력 데이터 중에 담당자를 한글로 입력해서, 메세지에 이상한 코드가 뜬거더라구요
에러 나는 경우도 생각해보셔야 겠죠.
언제나 되는건 없습니다.
그리고 성공메세지에 값하고 아래 값은 전혀 다른거 같은데요.