안녕!
이건 복잡버전보다 훨 간단함요.
왜냐!!!!!!!!!!
- 각 행을 한 줄의 문자열로 변환해서
- 클립보드를 사용해 엑셀에다 복붙할거기 때문!!!!
이전의 프로그램을 죅금 수정해봅시다.

여기선 string 타입 컴포넌트 하나만 갖고있는 인터널 테이블을 선언할 거심요.
데이터는 # 으로 구분할 것이요. 함 보시요


# 사이에 있는 애들이 각 셀에 들어갈 데이터다.
보여줄 데이터 취합 & 문자열로 형변환 및 조정 완료가 되었다면
인쟈 저번처럼 엑셀 창을 열어보자.
근데 이번에는 워크북 자체를 지정해준다고 해야하나... 활성화해준다고 해야하나.... 그 작업을 추가해야한다

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

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


여기까지 작성하면 ctrl + c 되었다고 여기면 됨
정상적으로 복사 되었으면 lv_rc에 0 값이 들어감!

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

자라란ㅠ
이렇게 복붙을 잘 사용하면 한꺼번에 빨리 내보낼 수 있지요!
끗
*&---------------------------------------------------------------------*
*& Report ZOLEEXCEL_2024
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zoleexcel_2024.
DATA: gt_spfli TYPE TABLE OF spfli,
gs_spfli TYPE spfli.
DATA: gt_fields TYPE TABLE OF dd03m,
gs_fields TYPE dd03m.
DATA: gv_txt TYPE string.
SELECT-OPTIONS: so_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 = |총 { lines( gt_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 .
***********************클립보드용 데이터 만들기 ***********************
DATA: ls_clip TYPE c LENGTH 1000,
lt_clip LIKE TABLE OF ls_clip.
DATA: deli 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.
DATA: lo_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'.
**********************************************************************
DATA: lv_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 OBJECT: lo_excel, lo_cell, lo_book, lo_books.
ENDFORM. " EXPORT_EXCEL_SIMPLE
'SAP > ABAP' 카테고리의 다른 글
| [BAPI][MM] 'BAPI_INCOMINGINVOICE_CREATE' - 송장 전기 수행 (0) | 2024.11.28 |
|---|---|
| [BAPI][MM] 'BAPI_PO_CREATE1' - PO 생성 (2) | 2024.11.28 |
| [ABAP] OLE 로 엑셀 다운로드 만들어보기(복잡 ver.) (4) | 2024.11.14 |
| [ABAP] OLE로 엑셀 업로드 기능 구현해보기 (0) | 2024.11.13 |
| [ABAP] 소수점 맨끝자리 0 안 보이게 만들기 (0) | 2024.11.12 |