안녕하세요~ 아시는분 도움좀 부탁드립니다.
제가 펑션을 자주 보게 되는데요
저는 이해를 못하겠습니다.
펑션을 만들때 RFC를 타고 가야 한다는것도 몰랐었는데요
DESTINATION GT_MAINCURR-ZDEST
제가 보는 프로그램에서는
저렇게 정의를 해놓았더라구요
그리고 디버깅을 해보면
제가 입력한 값중에 BUKRS값이 저 DESTINATION에 저장이 되어있었구요.
1. 그럼 저 구문에 저장되어있는 곳으로 CALL FUNCTION 'Z_FI_REVERSE_FORM_RFC'
이 펑션이 RFC타고 ( 다른 서버에도 이와 같은 펑션이 있다고 가정하에 말씀드리면요)
왔다갔다 하면서 데이터를 가져오는건가요??
2. CALL FUNCTION에서 정의 해놓은
EXPORTING
TABLES
EXCEPTIONS
IMPORTING
이것들은 무슨 역활을 하는건가요??
자세히좀 알고 싶어서요..
제가 이해력이 좀 늦다 보니..
책을 봐서도 잘 이해가 안되더라구요.
예로 들어서 해주시면 더욱 감사드리구요.
알게 쉽게좀 표현해주셨음 좋겠습니다.
3. EXCEPTIONS
에서요
COMMUNICATION_FAILURE = 9 MESSAGE MSG_TEXT
SYSTEM_FAILURE = 8 MESSAGE MSG_TEXT.
이렇게 정의가 되어있던데요
저건 또 뭘 의미 하는건가요?
4. EXCEPTIONS 에서 OTHERS = 1.
넣는것도 보았는데요..
저건 어떨 때 사용하는것이좋은지..
제 질문이 좀 초보적이지만
그래도 잘 좀 보시고 부탁드리겠습니다...
배우는 입장에서는 부끄러움이 없어야 한다고는 배웠습니다.
모르는걸 물어보는것은 좋은 자세라고 배웠구요
모르는걸 그냥 넘기는것이 바보라고 배운 저에게는
이렇게라도 초보적인질문이라도 아시는분들 통해 이해가 될때까지 좀 배우고자 합니다..
오늘하루도 수고하세요~~
그럼 답변 부탁드립니다..
댓글 2
-
루자빗
2009.01.20 17:14
-
쭈니
2009.01.20 17:34
exportin은 호출할때 넘겨주는 값이니까 A시스템에서 B시스템에 값을넘겨줄 필드를 선택하겠네요??
importing에서는 실행시에 호출을 해서 프로그램 수행이 끝나고 난 뒤에 값을 다시 돌려주는건가요???
그럼 제가 A라는 시스템에서 B시스템에 법인코드를 넘겨준다는 얘기는
프로그램 수행시에 입력값이 C140이라고 입력했던 코드가 수행할때 이 펑션을 만나서 수행하는동안 B시스템들중에 C140이라는곳을
찾아 가겠네요??
그리고 A시스템에서는
EXPORTING
BUKRS
IMPORTING
STGRD
TABLES
T041C
이렇게 정의를 해놓았다면
B시스템에서도 똑같이 정의를 해놓고 펑션안에서의 로직도 A시스템에 있는거와 같이 만들어 놓으면 되는건가요??
1. DESTINATION : SM59 에서 조회, 정의
2. CALL FUNCTION XXX DESTINATION DES. 로 DESTINATION 에 정의되어 있는 RFC 펑션을 호출 가능합니다.
3. 펑션을 호출한 프로그램 상에서 매개변수들...( 프로그램 상에서는 이렇게 보여지지만, 펑션의 입장에서는 반대로 생각해야 합니다. )
EXPORTING : 펑션을 호출할때 넘겨줄 값
IMPORTING : 펑션을 호출한 뒤 리턴 값
TABLES : 펑션을 호출할때 넘겨줄 값도 되고 반대로 리턴 값도 됩니다. 테이블 형식으로 데이터를 넘겨 주고 받게 됩니다.
EXCEPTIONS : 예외처리
4. 실제 해당 펑션을 찾아보시려면 DESTINATION 에 정의되어 있는 SAP 서버로 로그인 하여 펑션을 조회해야 합니다.
( 해당 DESTINATION 찾아서 REMOTE LOG ON 버튼 )
5. SE37 에서 펑션을 조회 해보시면 EXCEPTIONS 탭에 소스상에 표현된 예외처리 사항들을 확인 할 수 있습니다.
예외처리는 펑션 호출시 발생할 수 있는 여러가지 에러사항들에 대해 사용자가 대응할 수 있게 만들어 놓은 것이라고 생각하시면 됩니
다. 예를 들어 EXCEPTIONS NO_DATA_FOUND = 1 이라는 예외 처리사항을 펑션에 정의해 두었다면... 이러한 상황 발생시 시스템 변수
SY-SUBRC 는 1 값을 가지게 됩니다. 프로그램 상에서는 IF SY-SUBRC = 1. 등의 체크로직을 걸어 메시지로 처리하던가 다른 방법으로
데이터를 가져오는 등 대응법이 나오게 되겠지요.
6. 펑션이나 메서드 등을 호출 할때엔 패턴을 이용하면 간편합니다. CTRL + F6 으로(? 단축키가 좀 헷갈리는데 PATTERN 이라는 버튼이
있을겁니다 ) 펑션이나 메서드 기타등등을 호출하면 실수나 오타 등을 줄일 수 있게 되니 편리한 점이 많습니다.
주절주절 적어서 정리가 안 되었습니다. 즐밥하세요.