메뉴 건너뛰기

SAP 한국 커뮤니티

>

오브젝트특성을 읽는 동안 오류가 발생했습니다


>메시지 번호 SOFFICEINTEGRATION205




>-------------------------------------


>위와 같이 메시지가 뜨면서 실행이 안되요.



>주인장님 소스를 그대로 붙여서 넣었는데, 안되서요..


>이거 어떻게 하면 실행 가능할가요? 엑셀을 ABAP에서 직접 불러서 작업하는거 만들면


>ALV EDIT를 대체해서 쓰기 편할 것 같아서요..



>답변 좀 부탁드려요!


 


제가 샘플링 해놓은 소스가 있는데 도움이 되실지 모르겠네요.


컨테이너에 엑셀 띄어놓고 셀단위 그룹으로 읽기/쓰기 다 가능할 거예요.


약간만 응용하시면 실무에 도움이 되실지도 모르겠네요.


테스트 하고 올려드리는 것이니 잘 될 거예요. ^^


 


전제 조건 : 화면 100


                pf-status '100' .


               


[flow-logic].


PROCESS BEFORE OUTPUT.
  MODULE status.


PROCESS AFTER INPUT.
  MODULE exit AT EXIT-COMMAND.
  MODULE user_command.


 


[소스코드]


TYPE-POOLS: soi.


DATA: ok_code     TYPE syucomm.


* SAP Desktop Office Integration Interfaces
DATA: control     TYPE REF TO i_oi_container_control,
      document    TYPE REF TO i_oi_document_proxy,
      spreadsheet TYPE REF TO i_oi_spreadsheet,
      error       TYPE REF TO i_oi_error,
      errors      TYPE REF TO i_oi_error OCCURS 0 WITH HEADER LINE.


* spreadsheet interface structures for Excel data input
DATA: cellitem       TYPE soi_generic_item.
DATA: rangeitem      TYPE soi_range_item.
DATA: ranges         TYPE soi_range_list.
DATA: excel_input    TYPE soi_generic_table.
DATA: excel_input_wa TYPE soi_generic_item.


DATA: columns_number TYPE i,
      rows_number    TYPE i.


START-OF-SELECTION.
  CALL SCREEN 100.


*&---------------------------------------------------------------------*
*&      Module  EXIT  INPUT
*&---------------------------------------------------------------------*
MODULE exit INPUT.
  LEAVE TO SCREEN 0.
ENDMODULE.                 " EXIT  INPUT
*&---------------------------------------------------------------------*
*&      Module  STATUS  OUTPUT
*&---------------------------------------------------------------------*
MODULE status OUTPUT.
  SET PF-STATUS '100'.


  IF control IS NOT BOUND.
*   first get the SAP DOI i_oi_container_control interface
    CALL METHOD c_oi_container_control_creator=>get_container_control
      IMPORTING
        control = control
        error   = error.


*   specified above and tell it to run Excel in-place
    CALL METHOD control->init_control
      EXPORTING
        r3_application_name      = 'R/3 Basis'              "#EC NOTEXT
        inplace_enabled          = 'X'
        inplace_scroll_documents = 'X'
        parent                   = cl_gui_container=>default_screen
        register_on_close_event  = 'X'
        register_on_custom_event = 'X'
        no_flush                 = 'X'
      IMPORTING
        error                    = errors.


*   ask the SAP DOI container for a i_oi_d0cument_proxy for Excel
    CALL METHOD control->get_document_proxy
      EXPORTING
        document_type  = 'Excel.Sheet'
        no_flush       = 'X'
      IMPORTING
        document_proxy = document
        error          = errors.


*   and then create a new Excel sheet
    CALL METHOD document->create_document
      EXPORTING
        open_inplace   = 'X'
        document_title = 'R/3 table contents in Excel'      "#EC NOTEXT
        no_flush       = 'X'
      IMPORTING
        error          = errors.


*   check if our d0cument proxy can serve a spreadsheet interface  data:
*     => SpreadSheet 에 대하여 interface 를 하겠습니다. ^^
    DATA: has TYPE i.
    CALL METHOD document->has_spreadsheet_interface
      EXPORTING
        no_flush     = 'X'
      IMPORTING
        is_available = has
        error        = errors.


    CALL METHOD document->get_spreadsheet_interface
      EXPORTING
        no_flush        = ' '
      IMPORTING
        sheet_interface = spreadsheet
        error           = errors.


  ENDIF.


ENDMODULE.                 " STATUS  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND  INPUT
*&---------------------------------------------------------------------*
MODULE user_command INPUT.


  CASE ok_code.
    WHEN 'GXLS'.  " Get excels
      REFRESH: excel_input, ranges.
      rangeitem-name = 'SAP_Table'.
      APPEND rangeitem TO ranges.
      CALL METHOD spreadsheet->get_ranges_data
        EXPORTING
          all      = ' '
          no_flush = ' '
        IMPORTING
          contents = excel_input
        CHANGING
          ranges   = ranges.


* check no errors occured
      CALL METHOD error->raise_message
        EXPORTING
          type = 'E'.
*      DESCRIBE TABLE excel_input LINES exceldata-lines.


    WHEN 'PXLS'.  " Put excels
      rows_number = columns_number = 2.


      REFRESH: ranges, excel_input.
      rangeitem-name = 'SAP_Table'.
      excel_input_wa-column = rangeitem-columns = 1.
      excel_input_wa-row    = rangeitem-rows = 1.
      DO rows_number TIMES.
        excel_input_wa-value = 'TEST'.
        APPEND rangeitem TO ranges.
        APPEND excel_input_wa TO excel_input.
        ADD 1 TO : excel_input_wa-column, rangeitem-columns,
                   excel_input_wa-row,    rangeitem-rows.
      ENDDO.


*     create an excel range for our data
      CALL METHOD spreadsheet->insert_range_dim
        EXPORTING
          name     = 'SAP_Table'
          top      = 3
          left     = 3
          rows     = rows_number
          columns  = columns_number
          no_flush = 'X'
        IMPORTING
          error    = errors.


      CALL METHOD spreadsheet->set_color
        EXPORTING
          rangename = 'SAP_Table'
          back      = '45'
          front     = '2'
          no_flush  = 'X'
        IMPORTING
          error     = errors.


      CALL METHOD spreadsheet->set_ranges_data
        EXPORTING
          ranges   = ranges
          contents = excel_input
          no_flush = 'X'
        IMPORTING
          error    = errors.
      APPEND errors.


      CALL METHOD spreadsheet->fit_widest
        EXPORTING
          name     = space
          no_flush = 'X'.


*     now flush automation queue
      CALL METHOD control->set_focus
        EXPORTING
          no_flush = ' '
        IMPORTING
          error    = errors.


  ENDCASE.


  CLEAR ok_code.


ENDMODULE.                 " USER_COMMAND  INPUT

번호 제목 글쓴이 날짜 조회 수
6506 <b>[완료]</b>external alias의 대해 알려주세요~ [1] abap퍼 2008.02.26 98036
6505 [요청]스크린페인터가 되질 않습니다.. alphanumeric editor가 나와요..ㅜㅜ [15] file 피크민 2007.12.06 71009
6504 [re] inner join 과 sub query 의 퍼포먼스... [2] file Risky 2009.09.11 59385
6503 Multi Selection 버튼 색상 문의..<-제목이 흠.. file 김지성 2007.08.01 50546
6502 [요청]소수점 데이터를 선언시 질문입니다. [2] kkk 2008.04.17 48238
6501 <img src=2.gif border=0>Smartform 출력옵션 &field<옵션>& 중 자릿수 제한 기능에 관하여. [2] JiruMi 2009.04.20 44578
6500 [요청]클래스를 이용한 ALV에서 선택 SEL MODE문의드립니다. [2] 노력&성장 2008.04.17 35434
6499 자재번호 자동 List up..? Search help..? 기능 문의 드립니다 [2] file 아좀더 2019.06.26 30810
6498 <b>[완료]</b>Sorting시 Internal Table 이름이 가변적일때 Field symbol 사용 방법좀 가르쳐 주세요. [4] SkyDream 2007.12.05 27247
6497 ALV 에서는 에디팅 기능을 사용 할 수 없나요? [5] file 댕댕 2007.04.03 27050
6496 <b>[완료]</b>메시지가 잘립니다. [3] 김지성 2007.12.05 24368
6495 <b>[완료]</b>Mark field달기 [6] SAP폐인 2007.12.04 20586
» [re] <img src=1.gif>DOI 예제 따라하고 있는데요, 안되네요.. [2] 요요 2010.03.02 20203
6493 FOR ALL ENTRIES IN 질문드립니다! [5] 아좀더 2019.04.19 17392
6492 <img src=3.gif>[BSP]원하는 페이지로 값넘기고 받기(get,post) [2] 끼야호 2010.05.14 17115
6491 [요청]소수이하 0부분을 떨어버리는 것에 대해 문의드립니다. [5] 풍뎅이 2008.04.23 16312
6490 [요청]구매요청(PR) 텍스트화면 크기를 조정하려면 어떻게 해야 하나요? file 노름마치 2007.12.07 15005
6489 <b>[완료]</b>ranges 구문에 대한 정확한 의미와 사용법 [7] BEST!! 2007.11.14 14912
6488 <b>[완료]</b>[질문] sap서버에 있는 shell script를 실행시키기.. [3] 해처리 2007.12.04 14574
6487 [요청]펑션 LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE의 용도가 궁금합니다. [2] 아밥맨 2008.06.10 14496