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 "调用保存对话框
    EXPORTING
      DEFAULT_EXTENSION    = 'XLS'
      DEFAULT_FILE_NAME    = LC_FILENAME
    CHANGING
      FILENAME             = LC_FILENAME
      PATH                 = LC_PATH
      FULLPATH             = LC_FULLPATH
    EXCEPTIONS
      CNTL_ERROR           = 1
      ERROR_NO_GUI         = 2
      NOT_SUPPORTED_BY_GUI = 3
      OTHERS               = 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_OBJDATA
           WHERE 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'
      EXPORTING
        KEY         = LO_OBJDATA
        DESTINATION = LS_DESTINATION
      IMPORTING
        RC          = 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.

  SELECT
    SINGLE
    BUTXT
    FROM T001
    INTO @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 && '月'.

  "法人代码:144552023
  DATA 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_I
                        P_J
                        P_VAL
                        P_BORD.

  CALL METHOD OF EXCEL 'CELLS' = CELL
    EXPORTING #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.
相关推荐
向日葵同志443303 小时前
使用@univerjs纯前端渲染excel, 显示图片、链接、样式
前端·react.js·excel
Smile_2542204187 小时前
nodered 下载 excel 文件
node.js·excel
办公解码器7 小时前
Excel怎么检测录入身份信息的准确性?
excel
CodeCraft Studio9 小时前
国产化Excel处理控件Spire.XLS教程:如何使用 Java 将 TXT 文本转换为 Excel 表格
java·word·excel·spire·文档格式转换·txt转excel
测试老哥1 天前
python+requests+excel 接口测试
自动化测试·软件测试·python·测试工具·测试用例·excel·接口测试
屹奕1 天前
基于EasyExcel实现Excel导出功能
java·开发语言·spring boot·excel
我只会写Bug啊2 天前
Vue文件预览终极方案:PNG/EXCEL/PDF/DOCX/OFD等10+格式一键渲染,开源即用!
前端·vue.js·pdf·excel·预览
谅望者2 天前
Linux文件查看命令完全指南:cat、less、head、tail、grep使用详解
linux·excel·less·shell·文件操作·命令行·系统运维
众纳2 天前
SpringBoot + EasyExcel 实现导入Excel并支持Excel中图片也能导入
excel