300x250
728x90

글..


원래 글을 많이 안 쓰고 사진이나 예제를 통해서 하는데 이번에는 어쩔 수 없이 많이 썼어요...
 
 

SAP OLE란 


OLE( Object Linking and Embedding )를 사용해서 응용 프로그램을 추가로 열지 않고 보고서 내에서 그래픽과 기타 개체를 편집하는 방법 

 

사용하는 이유?

# 엑셀을 사용하지 않는 회사가 없고, 사용자가 엑셀로 다운로드하고 분석을 할 수 있기 때문에 SAP 데이터를 엑셀로 보고 싶을 때 사용한다.

 

SAP -> Excel 

결국 Excel 매크로를 사용하는 것이기 때문에 Excel 매크로에 대해서 잘 알면 이해하기 쉽다. 
 

ALV -> EXCEL 옮기는 작업이라고 보면 된다.

 

OLE을 통해서 데이터를 넣는 2가지 방법이 있다. 

1. 하나하나 데이터 옮기기
2. 복사/붙여놓기로 옮기기 
3. Excel or Word에서 사용되는 Macro 사용하기( 추가 예정 )
 

여기서 하려고 하는 것은 1, 2번이다. 

많은 데이터를 다운로드할 경우에는 많은 시간이 걸리는데 복사/붙여놓기를 사용하면 시간이 상당히 많이 줄어든다. 
 

템플릿에 따라서 달라지겠지만 참고용으로 보면 좋을 것 같다.

 

 

# 시나리오는 SFLIGHT Table 사용해서 EXCEL 저장하는 것까지 하려고 한다.

 

# 전체적인 틀 잡기


1. Excel OLE 활성화
2. Excel에 Table 정보 입력하기
3. 클립보드에 복사/붙여놓기 하기 or 해당하는 Cell Value 값 넣기
4. 추가적인 기능
5. OLE 기능 사용하는 방법


또한 CELL에 대한  글꼴, 색상, 배경, 테두리,  크기 등등 설정할 수 있다.

설정을 하는 방식 크게 3가지로 나눠진다.

 

# 예를 들어 폰트에 대한 설정을 변경하고 싶을 때) 

1. Cell 선택 
2. 변경하고 싶은 "폰트"를 지정한다.
3. 크기, 글꼴, 색상 설정하고 변경해 준다.

예제를 보면서 천천히 이해해 보자.

 

# 여기서 사용되는 모든 TYPE은 OLE2_OBJECT이다.

 

참고자료.

https://blogs.sap.com/2012/03/29/using-ole2-objects-for-create-an-excel-file/

 
 

# 1. Excel OLE 활성화


1. OLE 객체 Workbook 생성을 해보자.

# 쉽게 생각하면 ALV 만들 때 생각해보면 OBJECT생성하고  CALL METHOD 하는 것 처럼 비슷한 흐름이고 단계라고 생각하면 이해가 잘 된다. 


# 또한 'EXCEL.APPLICATION' or 'WORKBOOKS' 이러한 변수?들은 마음대로 지정해주는 것아닌 Excel 매크로이기 때문에 마음대로 변경해서는 안된다.

이해가 안된다면 맨 밑에 있는 OLE 기능 사용하는 방법부터 읽어보자.


 

만약 기본 템플릿이 있다고 가정 하에 로직을 짜보면 다음과 같이 변경하면 된다.( 상황에 따라서 경로를 Parameter 값에 받으면 된다 ).

 

Workbook 빨간 상자 부분이라고 보면 된다.

 

더보기
      DATA:
        LV_APPLICATION TYPE OLE2_OBJECT,
        LV_WORKBOOK    TYPE OLE2_OBJECT.

      CREATE OBJECT LV_APPLICATION 'EXCEL.APPLICATION'.

      CALL METHOD OF LV_APPLICATION 'WORKBOOKS' = LV_WORKBOOK.
      CALL METHOD OF LV_WORKBOOK 'ADD' = LV_WORKBOOK.

      " 0 or 1 Excel을 화면에 띄울 것인지 안 띄울 것인지 정한다."
      SET PROPERTY OF LV_APPLICATION 'VISIBLE' = 1.

 

2. WorkSeet( 워크시트 )활성화시켜 보자.

 

다음과 같이 워크시트 활성화이름변경된 것을 볼 수가 있다. 

 


더보기
      GET PROPERTY OF LV_APPLICATION 'ACTIVESHEET' = LV_WORKBOOK.
      SET PROPERTY OF LV_WORKBOOK 'Name' = 'SFLIGHT'.

 

# 2. Excel에 Table 정보 입력하기


1. Excel Header Title 생성Internal Table 타입 -> CHAR 타입으로 변경하기. 

# 변경하는 이유클립보드에 복사/붙여놓기를 사용하려면 CHAR 타입으로 변경해야지만 사용 가능하다. 

# DELI#을 통해서 Excel Cell을 구별할 수 있다.

 
GT_EXCEL 디버깅을 보면 # 값이 들어간 걸 볼 수 있다. 

 


GT_EXCEL TYPE

TYPES : BEGIN OF TY_S_EXCEL,
          MANDT      TYPE S_MANDT,
          CARRID     TYPE S_CARR_ID,
          CARRNAME   TYPE S_CARRNAME,
          CONNID     TYPE S_CONN_ID,
          FLDATE     TYPE S_DATE,
          PRICE      TYPE S_PRICE,
          CURRENCY   TYPE S_CURRCODE,
          PLANETYPE  TYPE S_PLANETYE,
          SEATSMAX   TYPE S_SEATSMAX,
          SEATSOCC   TYPE S_SEATSOCC,
          PAYMENTSUM TYPE S_Sum,
          SEATSMAX_B TYPE S_SMAX_B,
          SEATSOCC_B TYPE S_SOCC_B,
          SEATSMAX_F TYPE S_SMAX_F,
          SEATSOCC_F TYPE S_SOCC_F,
        END OF TY_S_EXCEL.


DATA:GT_LIST01 TYPE TABLE OF TY_S_EXCEL.

더보기
 TYPES: t_C(1500) TYPE C,
             T_DATA    TYPE TABLE OF T_C.

      DATA:GT_EXCEL TYPE T_DATA,
           GS_EXCEL TYPE LINE OF T_DATA,
           DELI     TYPE C.

      DELI = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

      LOOP AT GT_LIST01 INTO DATA(LS_LIST).
        " Header Title 생성 "
        AT FIRST.
          GS_EXCEL = |항공사 코드 { DELI } 항공편 연결 번호 { DELI } 항공편 일자 { DELI } 항공 요금 { DELI } 항공사의 현지통화 { DELI } 항공기 유형 {
               DELI } 일반석의 최대 정원 { DELI } 일반석으로 예약된 좌석 { DELI } 현재 예약 총계 { DELI } 비즈니스석의 최대 정원 { DELI } 비즈니스석 점유 좌석 {
               DELI } 일등석의 최대 정원 { DELI } 일등석의 점유 좌석 |.

          APPEND GS_EXCEL TO GT_EXCEL.
          CLEAR
            GS_EXCEL.

        ENDAT.
        " Internal Table -> CHAR TYPE "
        GS_EXCEL = |{ LS_LIST-CARRID } { DELI } { LS_LIST-CONNID } { DELI } { LS_LIST-FLDATE } {
         DELI } { LS_LIST-PRICE } { DELI } { LS_LIST-CURRENCY } { DELI } { LS_LIST-PLANETYPE } {
         DELI } { LS_LIST-SEATSMAX } { DELI } { LS_LIST-SEATSOCC } { DELI } { LS_LIST-PAYMENTSUM } {
         DELI } { LS_LIST-SEATSMAX_B } { DELI } { LS_LIST-SEATSOCC_B } { DELI } { LS_LIST-SEATSMAX_F } {
         DELI } { LS_LIST-SEATSOCC_F } |.

        APPEND GS_EXCEL TO GT_EXCEL.
        CLEAR
          GS_EXCEL.
      ENDLOOP.


# 3. 해당하는 Cell의 Value 값 넣기


# 예시로 A = 1 위치에 "GAMJA" 값을 넣어보겠다.

1. 해당하는 Cell 선택한다.
2. Value 값 넣기 

 

결과화면

 

이 방법을 통해 LOOP문 안에 넣고 반복문을 돌면서 값을 하나하나 넣을 수 있게 된다.

 
 

# 3. 클립보드에 복사/붙여놓기 하기 


1. 우리는 클립보드를 통해서 데이터를 옮겨보자. ( GT_EXCEL -> 클립보드 )

클립보드를 통해서 하면 더욱 코드가 간결해진다. 

복사

 


더보기
      DATA: LV_RC TYPE I.
      
      CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
        EXPORTING
          NO_AUTH_CHECK        = SPACE            " Switch off Check for Access Rights "
        IMPORTING
          DATA                 = GT_EXCEL              " Data "
        CHANGING
          RC                   = LV_RC               " Return Code "
        EXCEPTIONS
          CNTL_ERROR           = 1                " Control error "
          ERROR_NO_GUI         = 2                " No GUI available "
          NOT_SUPPORTED_BY_GUI = 3                " GUI does not support this "
          NO_AUTHORITY         = 4                " Authorization check failed "
          OTHERS               = 5.

 

2. 해당하는 Cell커서를 찍어보자

# 예시로 Excel 2B 위치를 찍어보겠다.

1. 해당하는 Cell선택한다.
2. SELECT을 통해서 커서를 찍는다.

 

2-1. 만약 값의 자릿수가 넘어가면 Excel처럼 보이게 된다. 특정 열의 너비를 변경해 보자. 

1. 해당하는 Cell을 선택한다.
2. Columnwidth을 통해서 너비변경한다.

 

3. Excel에 붙여놓기를 해보자.

 


더보기
      DATA:
        W_CELL1 TYPE OLE2_OBJECT.
      
      " Cell 선택 "
      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
        EXPORTING
        #1 = 2 "Row
        #2 = 2. "Column


      CALL METHOD OF W_CELL1 'SELECT'.


      CALL METHOD OF LV_WORKBOOK 'PASTE'.

 
이런 식으로 해당하는 Cell 위치에 맞게 설정할  수 있다. 위에서 말했듯이 엑셀 템플릿마다 다른기 때문에 템플릿에 맞춰서 값 설정하고 기능을 추가해 주면 되는 것이다.

 

# 4. 부가적인 기능 추가하기( 5가지만 예를 들겠다 )

 

# 저장 or 나가기 


# PA_FILE은 해당 경로를 설정해 주면 된다. 
# File Format을 지정해주는 1이다. 

 

# 모든 테두리 그리기 


해당 데이터에 맞게 테두리를 추가 또는 라인 추가 하려면 CELL에 대한 하나하나씩 테두리를 그려야 한다. 

 

로직

더보기
      DATA:
        BORDERS TYPE OLE2_OBJECT,
        RANGE   TYPE OLE2_OBJECT.

      " ROW값에 따라서 변경하면 된다. "
      DATA(I) = 1.
      LOOP AT GT_EXCEL INTO GS_EXCEL.
        I = I + 1.
        DATA(FIRST) = |B{ I }|. " 컬럼 시작하는 부분 "
        DATA(SECOND) = |N{ I }|. " 컬럼 끝나는 부분 "

        CALL METHOD OF LV_WORKBOOK 'Range' = RANGE
          EXPORTING
          #1 = FIRST
          #2 = SECOND.

        " 왼쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
         EXPORTING #1  = 7. "7 for left side
        SET PROPERTY OF BORDERS 'LineStyle'= 1. " 라인 타입 "

        " 오른쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 8.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 위쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 9.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 아래쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 10.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 가운데 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 11.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.


      ENDLOOP.

 

# 셀의 크기 변경하기


1. 변경할 Cell을 선택한다.
2."폰트"를 지정한 후 변경을 해주어야 한다.
3. 해당하는 폰트 사이즈를 변경해 준다.
# 변경하고 싶은 Cell동적으로 선택한 후 변경 해주면 된다.

결과 화면

 

로직

더보기
     " Header 갯수만큼 DO문 돌린다. "
      DO 14 TIMES.
        " Cell 선택 "
        CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
          EXPORTING
          #1 = 2 "Row
          #2 = SY-INDEX.

        GET PROPERTY OF W_CELL1 'Font' = W_FONT.
        SET PROPERTY OF W_FONT 'SIZE' = 14.

      ENDDO.

 

Columns 자동맞춤 설정( AutoFit )


다음과 같이

1. Paste에 따른 데이터 컬럼을 잡는다.
2. Columns설정
2. AutoFit을 통해서 자동맞춤설정한다.

로직

더보기
        " Columns 자동맞춤 설정 "
        CALL METHOD OF LV_WORKBOOK 'Columns' = W_COLUMNS.
        CALL METHOD OF W_COLUMNS 'AutoFit' NO FLUSH.

 

 특정 Columns 자동맞춤 설정( AutoFit ) -- 추가 -- 


1. 시작하는 Column 위치 설정
2. 끝나는 Column 위치 설정
3. 시작하는 위치 끝나는 위치에 대한 Column 범위 설정
4. Column 병합

DATA: H_ENTIRECOL TYPE OLE2_OBJECT.

" autofit "
CALL METHOD OF
    LV_WORKBOOK
    'Columns'   = W_COLUMNS
  EXPORTING
    #1          = 'B:C'.

GET PROPERTY OF W_COLUMNS 'EntireColumn' = H_ENTIRECOL.
SET PROPERTY OF H_ENTIRECOL 'Autofit' = 1.

 

 

Cell(셀) 병합 설정


1. 시작하는 Cell 위치 설정
2. 끝나는 Cell 위치 설정
3. 시작하는 위치끝나는 위치에 대한 Cell 범위 설정
4. Cell 병합

더보기
      DATA
        RANGE   TYPE OLE2_OBJECT.


      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
        EXPORTING
        #1 = 1 "Row
        #2 = 1. "Column


      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL2
         EXPORTING
         #1 = 2 "Row
         #2 = 1. "Column

     " Cell 범위설정 "
      CALL METHOD OF LV_WORKBOOK 'Range' = RANGE
        EXPORTING
        #1 = W_CELL1
        #2 = W_CELL2.

      " Cell 병합 "
      CALL METHOD OF RANGE 'Merge' .

 

이런 식으로 설정하면 되는 것이다. 

 

중요한 것 

5. OLE 기능 사용하는 방법


 # Excel Macro(스크립트)을 통해서 실행이 되는 건 이해가 됐다고 생각하고 넘어가겠다.

#  Excel에 대한 기능들은 엄청 많아서 그것에 대해서 정리를 하진 못 할 것이다. 그러므로 우리가 어느 기능을 사용하고 싶을 어떻게 사용해야 하는지 방법을 알아야 한다. 

 

1. 예를 들어보면 Excel 기능 중에 가운데 맞춤이라는 기능을 OLE을 통해서 만들고 싶다 하면 우선 Excel Macro(스크립트)을 봐야 한다.

# TEST 텍스트가운데 맞춤 하려고 한다.

 

2. 상단에 [자동화] -> [작업 리코딩]을 클릭하자.

 

3. 녹음/녹화를 클릭한 후 TEST 선택 -> 가운데 맞춤을 눌러보자. 그다음 중지를 눌러보면 다음과 같은 화면이 나올 것이다.

 

4. 녹화가 되어서 해당 리코딩의 코드 편집기를 보게 되면 다음과 같이 스크립트가 따져있는 걸 볼 수 있다.

 

5. setHoriz... 커서를 올리면 다음과 같이 Quick Info (빨간 상자)를 보시면 HorizontalAlignmnet 메서드를 사용했다는 것을 볼 수 있다. 이것을 통해서 ABAP에서 기능을 사용하면 되는 것이다.

 

6. 가운데 맞춤사용하고 싶은 Cell선택한 후, 값을 설정해 주면 끝이 난다. 

 

참고

Columns인지 Cell인지 확인을 하고 값을 넣어줘야 덤프가 안 뜬다.

Excel 스크립트에서는 Center 되어있지만 ABAP에서는 3으로 되어있는 점,

이런 식으로 Excel에서는 True or False , ABAP에서는 1,2 이런 식으로 되어있을 수 있으니 참고해야 한다.

 

이런 식으로 내가 사용하고 싶은 기능을 OLE 짜고 싶을 때에는 Excel 스크립트를 보면서 로직을 짜면 되는 것이다. 

# 기능 넣어보면서 테스트하면서 하면 금방 이해 갈 것이다. 
 
 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

 
 
 

전체로직( ALV 화면은 없지만 Excel 화면까지 볼 수 있다 )


더보기
 DATA: 
   GT_LIST01 TYPE TABLE OF SFLIGHT.
 
 SELECT *
    FROM SFLIGHT
    INTO CORRESPONDING FIELDS OF TABLE GT_LIST01
    UP TO 50 ROWS.
    
    


TYPES: t_C(1500) TYPE C,
             T_DATA    TYPE TABLE OF T_C.

      DATA:GT_EXCEL TYPE T_DATA,
           GS_EXCEL TYPE LINE OF T_DATA,
           DELI     TYPE C.

      DATA:
        LV_APPLICATION TYPE OLE2_OBJECT,
        LV_WORKBOOK    TYPE OLE2_OBJECT,
        LV_RC          TYPE I,
        W_CELL1        TYPE OLE2_OBJECT,
        W_CELL2        TYPE OLE2_OBJECT,
        BORDERS        TYPE OLE2_OBJECT,
        RANGE          TYPE OLE2_OBJECT,
        W_FONT         TYPE OLE2_OBJECT,
        W_COLUMNS      TYPE OLE2_OBJECT.

      CREATE OBJECT LV_APPLICATION 'EXCEL.APPLICATION'.


      CALL METHOD OF LV_APPLICATION 'WORKBOOKS' = LV_WORKBOOK.
      CALL METHOD OF LV_WORKBOOK 'ADD' = LV_WORKBOOK.


      " 0 or 1 Excel을 화면에 띄울 것인지 안 띄울 것인지 정한다. "
      SET PROPERTY OF LV_APPLICATION 'VISIBLE' = 1.




      GET PROPERTY OF LV_APPLICATION 'ACTIVESHEET' = LV_WORKBOOK.
      SET PROPERTY OF LV_WORKBOOK 'Name' = 'SFLIGHT'.





      DELI = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.

      LOOP AT GT_LIST01 INTO DATA(LS_LIST).
        " Header Title 생성 "
        AT FIRST.
          GS_EXCEL = |항공사 코드 { DELI } 항공편 연결 번호 { DELI } 항공편 일자 { DELI } 항공 요금 { DELI } 항공사의 현지통화 { DELI } 항공기 유형 {
               DELI } 일반석의 최대 정원 { DELI } 일반석으로 예약된 좌석 { DELI } 현재 예약 총계 { DELI } 비즈니스석의 최대 정원 { DELI } 비즈니스석 점유 좌석 {
               DELI } 일등석의 최대 정원 { DELI } 일등석의 점유 좌석 |.

          APPEND GS_EXCEL TO GT_EXCEL.
          CLEAR
            GS_EXCEL.

        ENDAT.
        " Internal Table -> CHAR TYPE "
        GS_EXCEL = |{ LS_LIST-CARRID } { DELI } { LS_LIST-CONNID } { DELI } { LS_LIST-FLDATE } {
         DELI } { LS_LIST-PRICE } { DELI } { LS_LIST-CURRENCY } { DELI } { LS_LIST-PLANETYPE } {
         DELI } { LS_LIST-SEATSMAX } { DELI } { LS_LIST-SEATSOCC } { DELI } { LS_LIST-PAYMENTSUM } {
         DELI } { LS_LIST-SEATSMAX_B } { DELI } { LS_LIST-SEATSOCC_B } { DELI } { LS_LIST-SEATSMAX_F } {
         DELI } { LS_LIST-SEATSOCC_F } |.

        APPEND GS_EXCEL TO GT_EXCEL.
        CLEAR
          GS_EXCEL.
      ENDLOOP.



      CALL METHOD CL_GUI_FRONTEND_SERVICES=>CLIPBOARD_EXPORT
        EXPORTING
          NO_AUTH_CHECK        = SPACE            " Switch off Check for Access Rights "
        IMPORTING
          DATA                 = GT_EXCEL              " Data "
        CHANGING
          RC                   = LV_RC               " Return Code "
        EXCEPTIONS
          CNTL_ERROR           = 1                " Control error "
          ERROR_NO_GUI         = 2                " No GUI available "
          NOT_SUPPORTED_BY_GUI = 3                " GUI does not support this "
          NO_AUTHORITY         = 4                " Authorization check failed "
          OTHERS               = 5.


      " Cell 선택 "
      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
        EXPORTING
        #1 = 2 "Row
        #2 = 2. "Column


      CALL METHOD OF W_CELL1 'SELECT'.


      CALL METHOD OF LV_WORKBOOK 'PASTE'.



*      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
*        EXPORTING
*        #1 = 1 "Row
*        #2 = 1. "Column
*
*
*      CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL2
*         EXPORTING
*         #1 = 2 "Row
*         #2 = 1. "Column
*
*      " Cell 범위설정 "
*      CALL METHOD OF LV_WORKBOOK 'Range' = RANGE
*        EXPORTING
*        #1 = W_CELL1
*        #2 = W_CELL2.
*
*      " Cell 병합 "
*      CALL METHOD OF RANGE 'Merge' .


      " ROW값에 따라서 변경하면 된다. "
      DATA(I) = 1.
      LOOP AT GT_EXCEL INTO GS_EXCEL.
        I = I + 1.
        DATA(FIRST) = |B{ I }|. " 컬럼 시작하는 부분 "
        DATA(SECOND) = |N{ I }|. " 컬럼 끝나는 부분 "

        CALL METHOD OF LV_WORKBOOK 'Range' = RANGE
          EXPORTING
          #1 = FIRST
          #2 = SECOND.

        " 왼쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
         EXPORTING #1  = 7. "7 for left side
        SET PROPERTY OF BORDERS 'LineStyle'= 1. "type of line.

        " 오른쪽 테두리
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 8.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 위쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 9.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 아래쪽 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 10.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.

        " 가운데 테두리 "
        CALL METHOD OF RANGE 'Borders' = BORDERS    NO FLUSH
           EXPORTING #1  = 11.
        SET PROPERTY OF BORDERS 'LineStyle'= 1.


      ENDLOOP.

      " Header 갯수만큼 DO문 돌린다. "
      DO 14 TIMES.

        " Cell 선택 "
        CALL METHOD OF LV_WORKBOOK 'CELLS' = W_CELL1
          EXPORTING
          #1 = 2 "Row
          #2 = SY-INDEX.

        SET PROPERTY OF W_CELL1 'HorizontalAlignment' = 3.
        GET PROPERTY OF W_CELL1 'Font' = W_FONT.
        SET PROPERTY OF W_FONT 'SIZE' = 14.

                " Columns 자동맞춤 설정 "
        CALL METHOD OF LV_WORKBOOK 'Columns' = W_COLUMNS.
        CALL METHOD OF W_COLUMNS 'AutoFit' NO FLUSH.


        FREE OBJECT W_CELL1.
        FREE OBJECT W_FONT.

      ENDDO.

 


 

또한 엑셀로 받아온 값을 메일로 보낼 수 있기 때문에 메일에 대해서 궁금하다면

2023.04.14 - [.SAP/..ABAP] - SAP E-Mail(메일) 발송 , 첨부파일( EXCEL, PDF )

 

SAP E-Mail(메일) 발송 , 첨부파일( EXCEL, PDF )

SAP E-Mail(메일) 관련 T-CODE SICF - SMTP 호스트 설정 SCON - SMTP 발송 테스트/발송 정보/Job 스케쥴링 SBPW - 메일함 SOST - 발송 메일 확인 E-Mail(이메일)을 쓰기 전 메일을 보내는 로직 중에 Function Module도 있

potato98.tistory.com

 

파일 경로 or 파일 선택 하는 방법에 대해서 알고싶으면

2023.07.10 - [분류 전체보기] - SAP 파일 선택 or 파일 경로 알아보기

 

SAP 파일 선택 or 파일 경로 알아보기

... 프로그램을 만들면서 Excel 업로드 or Excel 다운로드 등등 컴퓨터 파일에 저장을 하는 경우도 있을 테고, 컴퓨터 파일을 선택할 때가 있을 것이다. 거기서 필요한 것을 알아볼 것이다. 알아보기

potato98.tistory.com

 

참고문헌.

https://sapyard.com/a-to-z-of-ole-excel-in-abap-7-4/
 

728x90