안녕!

이건 복잡버전보다 훨 간단함요.

왜냐!!!!!!!!!!

  1. 각 행을 한 줄의 문자열로 변환해서
  2. 클립보드를 사용해 엑셀에다 복붙할거기 때문!!!!

이전의 프로그램을 죅금 수정해봅시다.

오케이~ 레쓰고

여기선 string 타입 컴포넌트 하나만 갖고있는 인터널 테이블을 선언할 거심요.

데이터는 # 으로 구분할 것이요. 함 보시요

 

짜라란~

 

# 사이에 있는 애들이 각 셀에 들어갈 데이터다.

 

보여줄 데이터 취합 & 문자열로 형변환 및 조정 완료가 되었다면

인쟈 저번처럼 엑셀 창을 열어보자.

근데 이번에는 워크북 자체를 지정해준다고 해야하나... 활성화해준다고 해야하나.... 그 작업을 추가해야한다

그 후, 복사할 내역을 어디다가 붙여넣을 건지 셀을 선택해준당

그리고 아래와 같이 클립보드 메서드를 사용해서 인터널 테이블의 데이터를 클립보드에 복사할것이당

여기까지 작성하면 ctrl + c 되었다고 여기면 됨

정상적으로 복사 되었으면 lv_rc에 0 값이 들어감!

lv_rc 값을 기준으로 정상이라면 붙여넣기, 아니면 에러 메세지를 띄우게 했다.

자라란ㅠ

이렇게 복붙을 잘 사용하면 한꺼번에 빨리 내보낼 수 있지요! 

 

더보기

*&---------------------------------------------------------------------*
*& Report  ZOLEEXCEL_2024
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT zoleexcel_2024.

DATAgt_spfli TYPE TABLE OF spfli,
      gs_spfli TYPE spfli.

DATAgt_fields TYPE TABLE OF dd03m,
      gs_fields TYPE dd03m.

DATAgv_txt TYPE string.

SELECT-OPTIONSso_carr FOR gs_spfli-carrid.

INITIALIZATION.
  PERFORM get_fieldinfo.

START-OF-SELECTION.
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_spfli
    FROM spfli
    WHERE carrid IN so_carr.


  IF gt_spfli IS NOT INITIAL.
    gv_txt |총 { linesgt_spfli }건의 데이터를 내보냈습니다.|.
    PERFORM export_excel_simple" 간단!
    WRITE gv_txt.
  ENDIF.
*&---------------------------------------------------------------------*
*&      Form  ERROR_HANDLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_SY_SUBRC  text
*----------------------------------------------------------------------*
FORM error_handle USING pv_subrc TYPE sy-subrc.
  IF pv_subrc <> 0.
    MESSAGE 'OLE 자동화 에러' TYPE 'W'.
    STOP.
  ENDIF.
ENDFORM.                    " ERROR_HANDLE
*&---------------------------------------------------------------------*
*&      Form  GET_FIELDINFO
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM get_fieldinfo .
  SELECT *
    INTO CORRESPONDING FIELDS OF TABLE gt_fields
    FROM dd03m
    WHERE tabname 'SPFLI'
     AND ddlanguage 3.
ENDFORM.                    " GET_FIELDINFO
*&---------------------------------------------------------------------*
*&      Form  EXPORT_EXCEL_SIMPLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM export_excel_simple .
***********************클립보드용 데이터 만들기 ***********************
  DATAls_clip TYPE LENGTH 1000,
        lt_clip LIKE TABLE OF ls_clip.

  DATAdeli TYPE c.
  deli cl_abap_char_utilities=>horizontal_tab.

  FIELD-SYMBOLS<fs_field> .

* header
  LOOP AT gt_fields INTO gs_fields.
    IF gs_fields-fieldname 'MANDT'.
      CONTINUE.
    ENDIF.

    IF ls_clip IS INITIAL.
      ls_clip gs_fields-scrtext_l.
    ELSE.
      ls_clip ls_clip && deli && gs_fields-scrtext_l.
    ENDIF.
  ENDLOOP.
  APPEND ls_clip TO lt_clip.

  CLEAR ls_clip.
* Body
  LOOP AT gt_spfli INTO gs_spfli.
    LOOP AT gt_fields INTO gs_fields.
      IF gs_fields-fieldname 'MANDT'.
        CONTINUE.
      ENDIF.

      ASSIGN COMPONENT gs_fields-position OF STRUCTURE gs_spfli TO <fs_field>.
      IF ls_clip IS INITIAL.
        ls_clip <fs_field>.
      ELSE.
        ls_clip ls_clip && deli && <fs_field>.
      ENDIF.
    ENDLOOP.

    APPEND ls_clip TO lt_clip.
    CLEAR ls_clip.
  ENDLOOP.

  DATAlo_excel TYPE ole2_object,
        lo_cell TYPE ole2_object" 셀 객체 변수
        lo_books TYPE ole2_object,
        lo_book TYPE ole2_object.

* 엑셀 실행
  CREATE OBJECT lo_excel 'EXCEL.APPLICATION'.
  PERFORM error_handle USING sy-subrc.

  CALL METHOD OF
      lo_excel
      'WORKBOOKS' lo_books.
  PERFORM error_handle USING sy-subrc.

* add a new workbook
  CALL METHOD OF
      lo_books
      'ADD'    lo_books.
  PERFORM error_handle USING sy-subrc.

*  화면 DISPLAY 설정 (1을 설정하면 DISPLAY)
  SET PROPERTY OF lo_excel  'VISIBLE' 1.
  PERFORM error_handle USING sy-subrc.

  GET PROPERTY OF lo_excel 'ACTIVESHEET' lo_books.

*     엑셀 셀 선택
  CALL METHOD OF
      lo_books
      'CELLS'  lo_cell
    EXPORTING
      #1       1            " 행
      #2       1.           " 열

  CALL METHOD OF
      lo_cell
      'SELECT'.

**********************************************************************

  DATAlv_rc TYPE i.
* 테이블 내용 복사하기 - 클립보드
  CALL METHOD cl_gui_frontend_services=>clipboard_export
    EXPORTING
      no_auth_check        space
    IMPORTING
      data                 lt_clip
    CHANGING
      rc                   lv_rc
    EXCEPTIONS
      cntl_error           1
      error_no_gui         2
      not_supported_by_gui 3
      no_authority         4
      OTHERS               5.
  IF sy-subrc <> 0.
*   Implement suitable error handling here
  ENDIF.

**********************************************************************

 IF lv_rc 0.
  CALL METHOD OF
      lo_books
      'PASTE'.
 ELSE.
   MESSAGE 'ERROR' TYPE 'E'.
 ENDIF.


 FREE OBJECTlo_excello_celllo_booklo_books.


ENDFORM.                    " EXPORT_EXCEL_SIMPLE

 

+ Recent posts