메뉴 건너뛰기

SAP 한국 커뮤니티

SAP 데이터 EXCEL로 내리는 절차

sapjoy 2007.06.04 11:12 조회 수 : 13338 추천:71

Word로 떨구는 절차(OLE)
 
 
 
 작성자 정연홍 (seamist)                     
 번호 24  조회수 1
 작성일 2002-01-30 오후 9:16:24
 친구관리  입은 옷 사기    내주소록에 추가    커뮤니티 회원정보    회원관리
 
ESN의 양한수님의 글을 옮김.


-----------------------------------------------------------------------------


SAP를 사용하다 보면 출력문제때문에 고심할때가 가끔 있는대요.
그냥 list processing으로 처리해도 되는것은 상관 없지만 양식
이 너무나도 중요하다고 해서(실은 요청하는 사람의 일방적인 생
각인 경우가 많지만) 서식을 사용하는 경우도 있고 한대요.


아시겠지만 서식을 쓰는것이 짜증나는 작업이죠,word 나 excel
에 비해서 그리 멋있지도 않고....


답이 있습니다.word 나 excel 로 데이타를 보내주면 되니까요.
이를 하기위해선 세가지 정도의 과정이 필요한대요.


예를 들면..



1. abap 소스코드안에서 office로 데이타를 넘겨주겠다고 선언


 


 


* 2개의 INCLUDE 문 사용하고
INCLUDE < CTLDEF >.
INCLUDE OFFICEINTEGRATIONINCLUDE.
* FUNCTION 및 기타루틴
DATA: FACTORY TYPE REF TO I_OI_DOCUMENT_FACTORY.
DATA: DOCUMENT TYPE REF TO I_OI_DOCUMENT_PROXY.
DATA: RETCODE TYPE T_OI_RET_STRING.


DATA: DOC_TABLE LIKE W3MIME OCCURS 0.
DATA: DOC_SIZE TYPE I.
DATA: DOC_TYPE(80) VALUE SOI_DOCTYPE_WORD97_DOCUMENT.
DATA: DOC_FORMAT(80) TYPE C.


* UPLOAD 된 office 화일을 인식시키는 함수
CALL FUNCTION 'SAP_OI_LOAD_MIME_DATA'
       EXPORTING
            OBJECT_ID        = 'ZHRPROFILE'
       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.



    CALL METHOD FACTORY->GET_DOCUMENT_PROXY
                      EXPORTING DOCUMENT_TYPE = DOC_TYPE
                      IMPORTING DOCUMENT_PROXY = DOCUMENT
                                RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.


    CALL METHOD DOCUMENT->OPEN_DOCUMENT_FROM_TABLE
                      EXPORTING DOCUMENT_TABLE = DOC_TABLE[]
                                DOCUMENT_SIZE  = DOC_SIZE
                      IMPORTING RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.


 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 =
                                            '인사기록카드'
*                                  register_on_close_event = 'X'
*                                  register_on_custom_event = 'X'
                        IMPORTING RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.


    CALL METHOD FACTORY->GET_LINK_SERVER
                       IMPORTING LINK_SERVER = LINK_SERVER
                                 RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.


    CALL METHOD LINK_SERVER->START_LINK_SERVER
                      IMPORTING RETCODE = RETCODE.
    CALL METHOD C_OI_ERRORS=>SHOW_MESSAGE EXPORTING TYPE = 'E'.


  ENDIF.                               "factory IS INITIAL.


ENDFORM.                               " INIT_FACTORY
* 주의사항 - 데이타를 모두다 character type으로 변환해주어야 함.


 


 



2. office 화일을 SAP R/3 로 upload.



메뉴 : 툴 ? 업무기본구조 ? 웹개발 ? 웹레포팅
트랜잭션 코드 : SMW0
WebRFC 어플리케이션 이진데이터 선택


* 주의사항 - 오피스화일을 edit 할때마다 매번 upload 해주어
야 한다.


 


3. office 제품의 매크로기능중 visual basic 편집기를 이용하
여 R/3 의 데이타를 받아들이는 루틴을 코딩.


-> 덧붙임 : 워드를 열어보면 매크로 관련 메뉴에서 Visual Basic편집기가 있슴.


    이걸 몰라서-- 열라 헤메고 다녔슴.


 



Sub R3_Macro1()


   Call R3_D1


   Call R3_D2


   Call R3_Gen


   Call R3_Pic


Call R3_Print


 



End Sub


 


Sub R3_Macro2()


   Call R3_D1


   Call R3_D2


   Call R3_Gen


   Call R3_Pic


End Sub


 


Sub R3_D1()


 


    Dim R3Table As Object


    Dim WordTbl As Table


 


    Set R3Table = ThisDocument.Container.LinkServer.Items("D1").Table


    Set WordTbl = ThisDocument.Tables(1)


     


    WordTbl.Cell(2, 2).Range.InsertAfter Text:=CVar(R3Table.Value(1, 1))


    WordTbl.Cell(2, 4).Range.InsertAfter Text:=CVar(R3Table.Value(1, 2))


 


 


 


 


이상의 3부분으로 나눌수 있는데 주저리 주저리 써놓아서 이해하
기가 어려울듯한대요 스탠다드의 개발 클래스
SOFFICEINTEGRATION 에 예제 프로그램들이 있습니다.


참고적으로 위의 예제는 오피스97의 word를 기준으로 써놓은 것
이고요,오피스 2000에선 잘 안되는 경우도 있다고 하네요...


참고하세요.


----------------------------------------------------------------------------


위 절차대로만 한다라면 Word파일로 떨어짐.
 
 


 

번호 제목 글쓴이 날짜 조회 수
547 ABAP TUNNING sapjoy 2012.03.12 234722
546 New function vs Old function(obsolete) sapjoy 2014.03.31 127533
545 테이블Active시 (Warnings Occurred During Activation) 안나오게하는방법 [6] 양키 2012.03.29 99695
544 자주 사용하는 String 조작 명령어 [7] 양키(이경환) 2015.01.13 34596
543 collect 구문 [4] sapjoy 2006.12.03 27027
542 사용자 패스워드 변경 함수, 창 [11] sapjoy 2009.12.21 25762
541 R/3 용어 정의 Definitions [4] sapjoy 2007.01.23 23898
540 BAPI_PR_CREATE 구매요청 생성시에 사용하세요 [2] 노름마치 2007.12.10 23695
539 SELECT statement D.Y.Kim 2007.07.20 23646
538 문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수 [3] 꿀단지 2011.10.11 19875
537 LIKE와 TYPE의 차이 [13] sapjoy 2006.12.06 19699
536 숫자입력 체크(Numeric character check) [1] 양키(이경환) 2014.01.28 19576
535 SDN -> SCN 변경되면서 Contents별로 바뀐 LINK 모음 [13] Wise 멘토 2012.07.06 19045
534 ABAP 핵심정리 [23] SARA 2007.03.14 17330
533 ALV LIST 진행시 LAYOUT 속성값 [18] kwon09 2007.04.11 17296
532 ABAP 구문 총정리 [39] file Wise 멘토 2008.11.24 17152
531 인터널 테이블 라인수 lines [8] sapjoy 2014.01.20 17079
530 FOR ALL ENTRIES IN 구문 사용시 select 필드 선택시 주의사항. [7] 나침반친구 2007.03.13 16971
529 SYST 시스템 변수 정리 [5] 아밥뽀 2014.08.23 16915
528 프로그램 정보(프로그램 리스트, PROGRAM LIST, PROGRAM TABLE) [3] sapjoy 2007.02.23 16715