Excel Ole Abap
Excel Ole Abap
DATA: application TYPE ole2_object, workbook TYPE ole2_object, sheet TYPE ole2_object, cells TYPE ole2_object, COLUMN TYPE ole2_object, range TYPE ole2_object. CONSTANTS: row_max TYPE i VALUE 256. DATA: row TYPE i, col TYPE i, t1_row_start(2) TYPE N, t1_row_end(2) TYPE N, t2_row_start(2) TYPE N, t2_row_end(2) TYPE N. DATA: adv_pymt_date(12), par_pymt_date(12), fin_pymt_date(12). DATA: SUR_CHG TYPE P DECIMALS 2, GST TYPE P DECIMALS 2, GST_PER TYPE P DECIMALS 2 VALUE '0.07', SCHARGE TYPE P DECIMALS 2, R_AMT TYPE P DECIMALS 2, DATE1(30), DATE2(30), FORMULA(100). CREATE OBJECT application 'excel.application'. SET PROPERTY OF application 'visible' = 1. CALL METHOD OF application 'Workbooks' = workbook. CALL METHOD OF workbook 'Add'. * Create first Excel Sheet CALL METHOD OF application 'Worksheets' = sheet EXPORTING #1 = 1. CALL METHOD OF sheet 'Activate'. SET PROPERTY OF sheet 'Name' = 'Sheet1'. PERFORM fill_cell USING 1 6 1 'SUMMARY REPORT' sheet. CALL METHOD OF sheet 'RANGE' = range EXPORTING #1 = 'A1' #2 = 'F1'. CALL METHOD OF range 'SELECT'. SET PROPERTY OF range 'MERGE' = 1. SET PROPERTY OF range 'Alignment' = '3'. PERFORM PERFORM PERFORM PERFORM fill_cell fill_cell fill_cell fill_cell USING USING USING USING 2 3 3 3 1 1 5 6 1 1 1 1 'Service Charge' sheet. 'INVOICE NO' sheet. 'SGD' sheet. 'SGD' sheet.
t1_row_start = 4.
LOOP AT WT_0510 WHERE CHK = WC_TRUE AND FINAL_PYMT_IND = WC_TRUE AND REQ_ADV_PYMT > 0. CLEAR WA_SUMM. WA_SUMM-INV_NO = WT_0510-INV_NO. WA_SUMM-SERV_CHARGE_RATE = WT_0510-SERV_CHARGE_RATE. WA_SUMM-INV_AMT = WT_0510-INV_AMT. WA_SUMM-SERV_CHARGE_AMT = WT_0510-SERV_CHARGE_AMT. WA_SUMM-ADV_PYMT_DATE = WT_0510-ADV_PYMT_DATE. WA_SUMM-PAR_PYMT_DATE = WT_0510-PAR_PYMT_DATE. WA_SUMM-FACT_DISC_RATE = WT_0510-FACT_DISC_RATE. WA_SUMM-PAR_PYMT_AMT = WT_0510-PAR_PYMT_AMT. WA_SUMM-P_FACT_DISC_AMT = WT_0510-P_FACT_DISC_AMT. WA_SUMM-FACT_DISC_AMT = WT_0510-FACT_DISC_AMT. WA_SUMM-FIN_PYMT_DATE = WT_0510-FIN_PYMT_DATE. WA_SUMM-REQ_ADV_PYMT = WT_0510-REQ_ADV_PYMT. APPEND WA_SUMM TO WT_SUMM. ENDLOOP. *col = 1. LOOP AT WT_0510 WHERE CHK = WC_TRUE AND FINAL_PYMT_IND = WC_TRUE AND REQ_ADV_PYMT > 0. IF WT_0510-INV_NO IS NOT INITIAL. row = sy-tabix + 3. col = 1. PERFORM fill_cell USING row col 0 WT_0510-INV_NO sheet. col = col + 2. PERFORM fill_cell USING row col 0 WT_0510-SERV_CHARGE_RATE sheet. col = col + 1. PERFORM fill_cell USING row col 0 'of' sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-INV_AMT sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-SERV_CHARGE_AMT sheet. SUR_CHG = SUR_CHG + WT_0510-SERV_CHARGE_AMT. ENDIF. ENDLOOP. row = row + 1. PERFORM fill_cell USING row col 1 SUR_CHG sheet. row = row + 1. PERFORM fill_cell USING row 2 0 'Add 7% GST' sheet. GST = SUR_CHG * GST_PER. PERFORM fill_cell USING row col 1 GST sheet. row = row + 1. SCHARGE = SUR_CHG + GST. PERFORM fill_cell USING row col 1 SCHARGE sheet. t1_row_end = row. row = row + 2. PERFORM fill_cell USING row 1 1 'Factoring Discount' sheet. t2_row_start = row + 1. LOOP AT WT_0510 WHERE CHK = WC_TRUE AND FINAL_PYMT_IND = WC_TRUE AND REQ_ADV_PYMT > 0.
concatenate WT_0510-ADV_PYMT_DATE+6(2) '/' WT_0510-ADV_PYMT_DATE+4(2)'/' WT_0 510-ADV_PYMT_DATE+2(2) into adv_pymt_date. concatenate WT_0510-PAR_PYMT_DATE+6(2) '/' WT_0510-PAR_PYMT_DATE+4(2)'/' WT_0 510-PAR_PYMT_DATE+2(2) into par_pymt_date. concatenate WT_0510-FIN_PYMT_DATE+6(2) '/' WT_0510-FIN_PYMT_DATE+4(2)'/' WT_0 510-FIN_PYMT_DATE+2(2) into fin_pymt_date. CONCATENATE '(' ADV_PYMT_DATE ' - ' PAR_PYMT_DATE ')' INTO DATE1. CONCATENATE '(' ADV_PYMT_DATE ' - ' FIN_PYMT_DATE ')' INTO DATE2. IF WT_0510-INV_NO IS NOT row = row + 1. col = 1. PERFORM fill_cell USING PERFORM fill_cell USING PERFORM fill_cell USING INITIAL. row col 0 WT_0510-INV_NO sheet. col = col + 1. row col 0 DATE1 sheet. col = col + 1. row col 0 WT_0510-FACT_DISC_RATE sheet. col = col + 1.
PERFORM fill_cell USING row col 0 'of' sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-PAR_PYMT_AMT sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-P_FACT_DISC_AMT sheet. row = row + 1. col = 1. PERFORM fill_cell USING row col 0 WT_0510-INV_NO sheet. col = col + 1. PERFORM fill_cell USING row col 0 DATE2 sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-FACT_DISC_RATE sheet. col = col + 1. PERFORM fill_cell USING row col 0 'of' sheet. col = col + 1. R_AMT = WT_0510-REQ_ADV_PYMT - WT_0510-PAR_PYMT_AMT. PERFORM fill_cell USING row col 0 R_AMT sheet. col = col + 1. PERFORM fill_cell USING row col 0 WT_0510-FACT_DISC_AMT sheet. ENDIF. ENDLOOP. t2_row_end = row. row = row + 1. CONCATENATE '=SUM(F' t2_row_start ':F' t2_row_end ')' INTO FORMULA. PERFORM fill_cell USING row col 1 formula sheet. col = col - 1. CLEAR FORMULA. CONCATENATE '=SUM(E' t2_row_start ':E' t2_row_end ')' INTO FORMULA. PERFORM fill_cell USING row col 1 formula sheet. row = row + 1. col = 2. PERFORM fill_cell USING row col 0 'Add GST-exempt' sheet. col = 6. PERFORM fill_cell USING row col 0 '0.00' sheet. t2_row_start = row. t2_row_end = t2_row_end + 1. CONCATENATE '=SUM(F' t2_row_start ',F' t2_row_end ')' INTO FORMULA. row = row + 1.
PERFORM fill_cell USING row col 1 formula sheet. row = row + 1. col = 2. CLEAR FORMULA. t2_row_end = t2_row_end + 2. CONCATENATE '=SUM(F' t1_row_end ',F' t2_row_end ')' INTO FORMULA. PERFORM fill_cell USING row col 1 'TOTAL PAYABLE' sheet. col = 6. PERFORM fill_cell USING row col 1 formula sheet. CALL METHOD OF application 'COLUMNS' = COLUMN. CALL METHOD OF COLUMN 'AUTOFIT'. * Save excel speadsheet to particular filename CALL METHOD OF sheet 'SaveAs' EXPORTING #1 = wf_filename #2 = 1. * Closes excel window, data is lost if not saved * SET PROPERTY OF application 'visible' = 0. ENDFORM.
"filename "fileFormat