SAP EXCEL模板下载导入
1、SMW0上载模板
(还可以实现excle合并操作(合并后使用的位置是合并的第一格的位置),字体大小,粗细,颜色等,需要自行探索)
*下载模板DATA: LO_OBJDATA LIKE WWWDATATAB,LO_MIME LIKE W3MIME,LC_FILENAME TYPE STRING VALUE '工业企业产值计算',LC_FULLPATH TYPE STRING VALUE 'D:\',LC_PATH TYPE STRING VALUE 'D:\',LS_DESTINATION LIKE RLGRAP-FILENAME,LS_OBJNAM TYPE STRING,LI_RC LIKE SY-SUBRC,LS_ERRTXT TYPE STRING.DATA: P_OBJID TYPE WWWDATATAB-OBJID,P_DEST LIKE SAPB-SAPPFAD.P_OBJID = 'ZSD126E'. "此处为EXCEL模板名称"写入时行列计数DATA:LV_COL TYPE I,LV_ROW TYPE I."EXCEL名称修改LC_FILENAME = P_GJAHR && '年' && P_MONAT && '月-' && LC_FILENAME && P_BUKRS.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG "调用保存对话框EXPORTINGDEFAULT_EXTENSION = 'XLS'DEFAULT_FILE_NAME = LC_FILENAMECHANGINGFILENAME = LC_FILENAMEPATH = LC_PATHFULLPATH = LC_FULLPATHEXCEPTIONSCNTL_ERROR = 1ERROR_NO_GUI = 2NOT_SUPPORTED_BY_GUI = 3OTHERS = 4.IF SY-SUBRC = 0.P_DEST = LC_FULLPATH.
* concatenate p_objid ".XLS" into ls_objnam.CONDENSE LS_OBJNAM NO-GAPS.SELECT SINGLE RELID OBJID FROM WWWDATA INTO CORRESPONDING FIELDS OF LO_OBJDATAWHERE SRTF2 = 0 AND RELID = 'MI' AND OBJID = P_OBJID.*检查表wwwdata中是否存在所指定的模板文件IF SY-SUBRC NE 0 OR LO_OBJDATA-OBJID EQ SPACE."如果不存在,则给出错误提示CONCATENATE '模板文件' LS_OBJNAM '不存在' INTO LS_ERRTXT.MESSAGE LS_ERRTXT TYPE 'I'.ENDIF.LS_DESTINATION = P_DEST. "保存路径
*如果存在,调用DOWNLOAD_WEB_OBJECT 函数下载模板到路径下CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY = LO_OBJDATADESTINATION = LS_DESTINATIONIMPORTINGRC = LI_RC.IF LI_RC NE 0.CONCATENATE '模板文件:' LS_OBJNAM '下载失败' INTO LS_ERRTXT.MESSAGE LS_ERRTXT TYPE 'E'.ENDIF.
* fname = ls_destination.ENDIF.CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.CALL METHOD OF EXCEL 'WORKBOOKS' = BOOKS.CALL METHOD OF BOOKS 'OPEN'EXPORTING#1 = LC_FULLPATH.CALL METHOD OF EXCEL 'WORKSHEETS' = SHEET EXPORTING #1 = 1.CALL METHOD OF SHEET 'ACTIVATE'.CALL METHOD OF EXCEL 'CELLS' = CELL EXPORTING #1 = 1 #2 = 1.DATA(LIT_DIS) = IT_ITAB.READ TABLE LIT_DIS INTO DATA(LW_HEAD) INDEX 1.SELECTSINGLEBUTXTFROM T001INTO @DATA(LV_BUTXT)WHERE BUKRS = @P_BUKRS.LV_BUTXT = '企业名称:' && LV_BUTXT.DATA LV_YEAR TYPE STRING."CONCATENATE P_GJAHR '年' P_MONAT '月' INTO LV_YEAR.LV_YEAR = P_GJAHR && '年' && P_MONAT && '月'."法人代码:144552023DATA LV_CODE TYPE STRING.CASE P_BUKRS.WHEN '1200'.LV_CODE = '法人代码:91330212786794630R'.WHEN '1100'.LV_CODE = '法人代码:913302001445520238'.WHEN '3000'.LV_CODE = '法人代码:91330212698210535Y'.ENDCASE."LV_CODE = '法人代码:144552023'.PERFORM FILL_CELL USING 2 1 LV_CODE ''."公司名称/年分写入PERFORM FILL_CELL USING 3 1 LV_BUTXT ''.PERFORM FILL_CELL USING 3 7 LV_YEAR ''."根据模板位置写入LV_COL = 8.LOOP AT IT_ITAB INTO IS_ITAB.PERFORM FILL_CELL USING LV_COL 1 IS_ITAB-ZCPDL 'X'.PERFORM FILL_CELL USING LV_COL 2 IS_ITAB-MEINS 'X'.IF IS_ITAB-MEINS IS NOT INITIAL.IF IS_ITAB-ZYNP = 'Y'.PERFORM FILL_CELL USING LV_COL 3 '是' 'X'.ELSE.PERFORM FILL_CELL USING LV_COL 3 '否' 'X'.ENDIF.ELSE.PERFORM FILL_CELL USING LV_COL 3 '' 'X'.ENDIF.PERFORM FILL_CELL USING LV_COL 4 IS_ITAB-ZDJ 'X'.PERFORM FILL_CELL USING LV_COL 5 IS_ITAB-ZCPCL 'X'.PERFORM FILL_CELL USING LV_COL 6 IS_ITAB-ZJE 'X'.PERFORM FILL_CELL USING LV_COL 7 IS_ITAB-ZCPCLY 'X'.PERFORM FILL_CELL USING LV_COL 8 IS_ITAB-ZJEY 'X'.PERFORM FILL_CELL USING LV_COL 9 IS_ITAB-ZCPSL 'X'.PERFORM FILL_CELL USING LV_COL 10 IS_ITAB-ZJEXS 'X'.PERFORM FILL_CELL USING LV_COL 11 IS_ITAB-ZCPSLY 'X'.PERFORM FILL_CELL USING LV_COL 12 IS_ITAB-ZJEXSY 'X'.LV_COL = LV_COL + 1.ENDLOOP."单位负责人/填表人PERFORM FILL_CELL USING LV_COL 1 TEXT-005 ''.PERFORM FILL_CELL USING LV_COL 4 TEXT-006 ''.SET PROPERTY OF EXCEL 'Visible' = 1.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILL_CELL
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> P_2
*& --> P_9
*& --> P_
*&---------------------------------------------------------------------*
FORM FILL_CELL USING P_IP_JP_VALP_BORD.CALL METHOD OF EXCEL 'CELLS' = CELLEXPORTING #1 = P_I #2 = P_J.SET PROPERTY OF CELL 'VALUE' = P_VAL..IF P_BORD = 'X'.GET PROPERTY OF CELL 'BORDERS' = RANGE.SET PROPERTY OF RANGE 'WEIGHT' = '2'.SET PROPERTY OF RANGE 'LINESTYLE' = '1'.FREE OBJECT RANGE.ENDIF.ENDFORM.