글..
원래 글을 많이 안 쓰고 사진이나 예제를 통해서 하는데 이번에는 어쩔 수 없이 많이 썼어요...
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이다.
참고자료.
# 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. 부가적인 기능 추가하기( 6가지만 예를 들겠다 )
# 엑셀 메모리 삭제
# FREE OBJECT을 통해서 점유하는 메모리를 삭제해 보자.
# 저장 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
참고문헌.
'.ABAP > ..Excel, EMail' 카테고리의 다른 글
SAP AbapGit 설치 (1) | 2024.09.03 |
---|---|
SAP Excel Upload( Web GUI ) 정리 (4) | 2024.08.13 |
SAP Excel Upload 정리 (2) | 2023.07.25 |
SAP Web Repository( 웹 저장소 ) 정리( 로직, 저장, 덮어쓰기 ) (0) | 2023.04.23 |
SAP E-Mail(이메일) 발송 (0) | 2023.04.14 |