안녕하세요 ABAP 초짜입니다^^
SAP에 구매오더 정보를 타시스템으로 전송하는 RFC를 만들어야 합니다.(EAI 는 없습니다)
데이터 수신 RFC는 많이 만들어봤는데 전송은 처음입니다.
RFC로 데이터를 전송시 테이블로 데이터를 넘기고 수신결과를 바로 입력받아야 하는데
어떻게 해야할지 개념을 못잡고 있습니다.
구매정보를 테이블로 넘겨주고 바로 결과값을 입력받을 수 있는 방법이 있나요?
아시는 분은 쉽게 알려주시면 감사하겠습니다^^
댓글 5
-
버미!
2010.09.14 17:53
JCO를 이용하면 양방향 데이타를 주고 받을 수 있습니다. -
dusrude
2010.09.14 18:06
그럼 abap 입장에서는 테이블로만 정의를 해주면 rfc 펑션이 실행되면서 결과값을 받을수 있다는 말씀인가요?
만약 그렇다면 rfc내에서는 맨 마지막에 결과값을 받아서 db에 저장해야하는데 결과값 들어올때까지
진행을 멈춰야 하는건지요?
-
페리
2010.09.14 18:53
타시스템 -> RFC호출 이런 형태라면 리턴값을 받을수는 없어요.
이런 경우에는 타시스템 -> RFC호출 한 후에 정상적으로 잘 받았다는 메세지를 다시 RFC를 호출하는 방식으로는 가능하겠지요.
정리하자면..
타시스템 -> RFC호출
타시스템 -> 리턴값 RFC 호출 이렇게 두번 호출하시면 될듯해요
-
Kate
2010.09.14 22:35
RFC 수신의 경우는.. RFC의 소스코드를 타지만.. RFC 송신의 경우는 펑션내의 소스코드를 타지 않습니다.
RFC에 정의해준 파라미터가 껍데기가 되어서 호출을 하게되며, 이 때, Destination을 쓸 것입니다.
Destination을 써주지 않으면 RFC Function이라하여도 일반 Function으로 간주되어 소스코드를 타게됩니다.
RFC펑션을 송신으로 호출하게되면 Export와 Import가 서로 바뀌게됩니다.
Import에 데이터를 실어보내고 Export에 결과를 수신해옵니다. (Export에 담긴 값으로 DB에 결과를 업뎃하면 되겠습니다.)
물론 Tables는 송신도 되고 수신도 됩니다.
처음 개념을 잡으시는 분은 다소 헷갈릴 수 있습니다.
참고로 RFC는 기본적으로 싱크인터페이스를 위한 것입니다. (어싱크로너스 RFC호출법도 있긴 합니다만)
즉, RFC펑션을 호출하게되면 결과를 수신할 때까지 (꼭 값을 받지 않더라도 내부적으로 응답을 받을 때까지)
시스템이 기다리게됩니다. 따라서 세션이 계속 연결된 상태로 유지됩니다.
RFC 펑션호출 옵션에 따라서 결과를 수신한 뒤에 뒤의 프로그램을 실행하게 하거나 기다리지 않게 하는게 있습니다.
RFC 호출 옵션은 Help에 잘 나와있습니다.
-
activeman
2010.09.28 09:35
페리님...타시스템 -> RFC 호출 형태로도 return 값을 바로 받을 수 있습니다.
특히 SAP에서 구매오더 정보를 타시스템으로 전송하는것 보다는 타시스템에서 rfc호출하여 구매오더 정보를 가져가는게 더 쉽습니다.
OnePaper 자료를 검색해 보시면 구매정보를 가져 오는 엑셀(VBA)을 이용해서 만들어 놓은 예제가 있습니다.
참고하시기 바랍니다.