>안녕하세여~ 더운데 다들 수고가 많으십니다.
>
>제가 이번에 프로그램을 짜다가 T-CODE SMW0을 처음 접하게 되었는데
>머 대략 SMW0에 문서를 저장하거나 등록하는 방법은 알겠는데
>정확하게 제가 원하는대 사용하는 방법을 몰라서 질문드립니다.
>
>실행시켰을때 EXCEL DOWN이라는 버튼을 추가해서 버튼을 눌렀을때 EXCEL파일을 불러오게 하려는건데
>
> >
>USER_COMMAND 에서
>WHEN 'EDOWN'
>
>머 이런식으로 시작하면 될 꺼 같은데 아직 초보라 어떻게 해야할 지 감을 못잡고 있습니다.ㅠㅜ
==========================================================================================================
기존 제가 개발했던 소스를 아래 적으니, 참고하세요. ^^
WHEN 'FC01'. <====WHEN 'EDOWN' 로 대체하시면 될 듯 하구요.
PERFORM SAP_OI_LOAD_MIME_DATA.
*----------------------------------------------------------------------*
* SMW0 ROUTING 생성/변경 양식
*----------------------------------------------------------------------*
INCLUDE: OFFICEINTEGRATIONINCLUDE.
DATA: FUNCTXT TYPE SMP_DYNTXT,
DOC_TABLE LIKE W3MIME OCCURS 0,
DOC_SIZE TYPE I,
DOC_TYPE(80) VALUE SOI_DOCTYPE_EXCEL97_SHEET, "엑셀
DOC_FORMAT(80) TYPE C,
LINK_SERVER TYPE REF TO I_OI_LINK_SERVER,
FACTORY TYPE REF TO I_OI_DOCUMENT_FACTORY,
DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY,
RETCODE TYPE T_OI_RET_STRING.
*&---------------------------------------------------------------------*
*& Form SAP_OI_LOAD_MIME_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SAP_OI_LOAD_MIME_DATA .
IF FACTORY IS INITIAL.
*
CALL METHOD C_OI_FACTORY_CREATOR=>GET_DOCUMENT_FACTORY
IMPORTING
FACTORY = FACTORY
RETCODE = RETCODE.
IF RETCODE NE C_OI_ERRORS=>RET_OK.
EXIT.
ENDIF.
*
CALL METHOD FACTORY->START_FACTORY
EXPORTING
R3_APPLICATION_NAME = 'document_name'
IMPORTING
RETCODE = RETCODE.
PERFORM SHOW_MESSAGE.
*
CALL METHOD FACTORY->GET_LINK_SERVER
IMPORTING
LINK_SERVER = LINK_SERVER
RETCODE = RETCODE.
PERFORM SHOW_MESSAGE.
*
CALL METHOD LINK_SERVER->START_LINK_SERVER
EXPORTING LINK_SERVER_MODE = 3
* DEFAULT 1(STANDARD NAME), 0 (INACTIVE), 2(CUSTOMER NAME),
* 3(UNIQUE NAME) -> 0, 2(동일사용자 X), 3 일때 다중실행 ##
* SERVER_NAME_SUFFIX = 'HR'
IMPORTING RETCODE = RETCODE.
PERFORM SHOW_MESSAGE.
ENDIF. "factory IS INITIAL..
*
CLEAR: DOC_TABLE[].
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
EXPORTING
OBJECT_ID = 'ZFI_DOC_9010' " SMW0 정의된 문서
IMPORTING
DATA_SIZE = DOC_SIZE
DOCUMENT_FORMAT = DOC_FORMAT
DOCUMENT_TYPE = DOC_TYPE
TABLES
DATA_TABLE = DOC_TABLE
EXCEPTIONS
OBJECT_NOT_FOUND = 1
INTERNAL_ERROR = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
RAISE FAIL_DOCUMENT_LOAD.
MESSAGE ID SY-MSGID TYPE 'E' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
IF DOC_SIZE NE 0.
* FACTORY 와 DOCUMENT 연결
CALL METHOD FACTORY->GET_DOCUMENT_PROXY
EXPORTING
DOCUMENT_TYPE = DOC_TYPE
IMPORTING
DOCUMENT_PROXY = DOCUMENT
RETCODE = RETCODE.
PERFORM SHOW_MESSAGE.
* Document를 Protected Mode로 Open하고 매크로를 실행함.
CALL METHOD DOCUMENT->OPEN_DOCUMENT_FROM_TABLE
EXPORTING
DOCUMENT_TABLE = DOC_TABLE[]
DOCUMENT_SIZE = DOC_SIZE
IMPORTING
RETCODE = RETCODE.
PERFORM SHOW_MESSAGE.
ELSE.
* MESSAGE E005 RAISING FAIL_DOCUMENT_OPEN.
* RAISE FAIL_DOCUMENT_OPEN.
* MESSAGE S000 WITH '선택한 문서가 없습니다'.
ENDIF.
ENDFORM. " SAP_OI_LOAD_MIME_DATA
*&---------------------------------------------------------------------*
*& Form SHOW_MESSAGE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM SHOW_MESSAGE .
CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE
EXPORTING
TYPE = 'E'.
ENDFORM. " SHOW_MESSAGE
댓글 4
-
그저조아
2010.08.12 19:39
-
맨날초보
2010.08.12 20:23
그저조아님이 궁금해 하시는 부분(데이터 선언) 소스에 올려놨습니다. 참고하셔서 도움되시길 바래요. ^^
-
그저조아
2010.08.12 21:00
맨날초보님 친절하게 답변해주셔서 감사합니다. 그런데 데이터선언 부분에 올려놓셨다는 소스가
DATA: FUNCTXT TYPE SMP_DYNTXT,
DOC_TABLE LIKE W3MIME OCCURS 0,
DOC_SIZE TYPE I,
DOC_TYPE(80) VALUE SOI_DOCTYPE_EXCEL97_SHEET, "엑셀
DOC_FORMAT(80) TYPE C,
LINK_SERVER TYPE REF TO I_OI_LINK_SERVER,
FACTORY TYPE REF TO I_OI_DOCUMENT_FACTORY,
DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY,
RETCODE TYPE T_OI_RET_STRING.
여기인가요?
저도 이렇게 했는데
FACTORY TYPE REF TO I_OI_DOCUMENT_FACTORY, 부분에서
활성화시키면 "FACTORY" is unknown 이렇게 오류뜨고
저부분은
광역유형 I_OI_DOCUMENT_FACTORY 가 없다고 오브젝트를 생성하겠냐고 물어보는데 왜그런거져? ;;;;
-
MadMax
2010.08.12 21:27
INCLUDE officeintegrationinclude. " FACTORY 관련
INCLUDE ole2incl. " OLE 관련
참고하세요,
앗 좋은 정보 감사합니다 ^^. 그런데 자꾸 Field "FACTORY" is unknown 이라고 뜨는데 여기저기 다 찾아봤는데 도데체 FACTORY를 어떻게 정의해줘야 하나요...? ;;;;
I_OI_DOCUMENT_FACTORY가 오브젝트가 생성되지않아서 문제인것 같기도 한데.. 아닌가여? ㅎㅎ 아직 초보라 모르는게 넘많아서....;