ABAP DOI 상세 정보 (1)

5617 단어

DOI란 무엇입니까?


DOI는Desktop Office Integration의 약자로 SAP가 제공하는 솔루션과 Office를 통합하는 기술 방안입니다.초기 SAP는 OLE 기술로 Office와 통합했습니다.OLE 문법은 VBA를 참조하고 ABAP에서 방법을 호출하여 Excel을 조작하는데 문법의 우호성이 떨어진다.또한 ABAP 내부 테이블에서 Excel에 데이터를 쓰기 때문에 속도가 매우 느리고 성능이 납득하기 어렵다.
DOI는 OLE의 대체품으로 볼 수 있으며 대상을 대상으로 하는 방식으로 이루어진다.위에서 말한 두 가지 문제를 잘 해결했다.(참조: Desktop Office Integration 공식 도움말)

DOI 개발 기술 요점


관련 대상


SAP는 Office와 통합되어 코드를 통해 Excel 문서를 만들 수도 있고 Excel 템플릿 문서를 응용 프로그램 서버에 놓고 DOI에서 호출할 수도 있습니다. DOI는 이 문서를 열어 문서를 조작하고 처리합니다.먼저 코드가 Excel 문서를 만드는 방법을 소개합니다.Excel 문서를 작업하려면 다음 네 개 이상의 객체가 필요합니다.
  • container: Excel 스프레드시트 (spreadsheet) 를 저장하는 용기.이것은 비교적 이해하기 쉬울 것이다. 용기는 일반적으로 dialog screen에서 정의하고 ABAP 프로그램의 기본 screen(즉 screen 번호가 1000인 스크린)
  • 을 직접 사용할 수도 있다.
  • container control: 용기에서 다른 Office 통합에 필요한 대상을 만들고 관리하는 데 사용되며,container control은 인터페이스로 유형은 i_oi_container_control이다.
  • documentproxy: 모든 documentproxy의 실례는 오피스 응용 프로그램으로 열린 문서를 대표합니다. Excel일 수도 있고 Word일 수도 있습니다. 여러 개의 문서를 열려면 여러 개의 실례를 정의해야 합니다.documentproxy는 인터페이스로 유형i_oi_document_proxy이다.
  • spreadsheet:spreadsheet 인터페이스, 최종 조작을 대표하는 Excel 문서,spreadhseet의 유형은 i_oi_spreadsheet
  • businessdocumentset: 서버의 문서 템플릿을 읽으면 cl_bds_document_set종류로 business document set를bds로 줄여서bds는 조작할 문서를 관리하는 데 사용되며 한 개 이상의 문서를 포함할 수 있습니다.

  • DOI에서 Excel을 조작하려면

  • container 가져오기
  • container control 대상 만들기 실례
  • documentproxy 대상을 만드는 실례
  • 서버에서 템플릿 문서를 열거나 새 Excel 문서를 만듭니다
  • 열린 Excel 문서, Excel 관련 속성 설정 또는 호출 방법
  • 종료 시 Excel 문서 닫기, 리소스 풀기
  • 우리의 첫 번째 예는 대화상자 화면을 사용하지 않고 Excel 문서를 새로 만들어서 화면 1000에 표시합니다.다음은 개발 단계입니다.

    공통 변수 정의

    * desktop office integration interface
    data: gr_container type ref to cl_gui_container,
          gr_control type ref to i_oi_container_control,
          gr_document type ref to i_oi_document_proxy,
          gr_spreadsheet type ref to i_oi_spreadsheet.
    

    이것들이 바로 우리가 앞에서 언급한 네 가지 필수적인 대상이다.

    컨테이너 가져오기

    cl_gui_container류의 정적 방법screen0은 화면 1000을 가져와gr_에 값을 부여합니다container.
    form get_container.
      gr_container = cl_gui_container=>screen0.
    endform.  
    

    container control 대상의 실례를 만들고 초기화합니다.


    코드는 비교적 직관적이고 해석이 많지 않다.
    form create_container_control.
    * create container control
      call method c_oi_container_control_creator=>get_container_control
        importing
          control = gr_control.
    
    * initialize control
      call method gr_control->init_control
        exporting
          inplace_enabled          = 'X '
          inplace_scroll_documents = 'X'
          register_on_close_event  = 'X'
          register_on_custom_event = 'X'
          r3_application_name      = 'DOI demo by Stone Wang'
          parent                   = gr_container.
    endform.   
    

    documentproxy 대상을 만드는 실례

    form create_excel_document.
      call method gr_control->get_document_proxy
        exporting
          document_type  = 'Excel.Sheet'
          no_flush       = 'X'
        importing
          document_proxy = gr_document.
    
      call method gr_document->create_document
        exporting
          document_title = 'DOI test by Stone Wang '
          no_flush       = 'X '
          open_inplace   = 'X'.
    endform.                    "create_excel_document
    
    open_inplace 매개변수는 Excel 문서가 독립적으로 표시되는지 SAP GUI에 포함되어 표시되는지 제어합니다.내장형 디스플레이의 경우 gr_control 메서드에서 init_control 매개변수는 inplace_enabled 로 설정됩니다.
    위의 코드를 통합합니다.
    form main.
      skip 1.
    
      perform get_container.
      perform create_container_control.
      perform create_excel_document.
    endform.
    

    첫 번째 문장 X 은 반드시 필요합니다. 그렇지 않으면 화면을 만들 수 없습니다.

    전체 코드

    report  zdoi_hello.
    
    type-pools: soi.
    
    data: gr_container type ref to cl_gui_container,
          gr_control type ref to i_oi_container_control,
          gr_document type ref to i_oi_document_proxy,
          gr_spreadsheet type ref to i_oi_spreadsheet.
    
    start-of-selection.
      perform main.
    
    form get_container.
      gr_container = gr_container = cl_gui_container=>screen0.
    endform.                    "get_container
    
    form create_container_control.
    * create container control
      call method c_oi_container_control_creator=>get_container_control
        importing
          control = gr_control.
    
    * initialize control
      call method gr_control->init_control
        exporting
          inplace_enabled          = 'X '
          inplace_scroll_documents = 'X'
          register_on_close_event  = 'X'
          register_on_custom_event = 'X'
          r3_application_name      = 'DOI demo by Stone Wang'
          parent                   = gr_container.
    endform.                    "create_container_control
    
    form create_excel_document.
      call method gr_control->get_document_proxy
        exporting
          document_type  = 'Excel.Sheet'
          no_flush       = 'X'
        importing
          document_proxy = gr_document.
    
      call method gr_document->create_document
        exporting
          document_title = 'DOI test by Stone Wang '
          no_flush       = 'X '
          open_inplace   = 'X'.
    endform.                    "create_excel_document
    
    form main.
      skip 1.
    
      perform get_container.
      perform create_container_control.
      perform create_excel_document.
    endform.
    

    Excel 문서를 조작하고 템플릿 문서를 다음 절에 가져와서 학습과 이해의 어려움을 낮춥니다.

    좋은 웹페이지 즐겨찾기