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.
相关推荐
ailitsoft1 天前
库存管理系统如何记录跨门店调拨后的收货差异?
excel·零售·软件需求
百事牛科技2 天前
Excel的三种密码:防看、防存、防乱改,各管各的
windows·excel
用户298698530142 天前
React 前端将 Excel 工作表导出为图片的技术实践
javascript·react.js·excel
用户0332126663673 天前
使用 Python 在 Excel 文档中添加水印
python·excel
科技新资讯5 天前
AI如何批量处理Excel文件? 从数据合并、清洗到自动生成报表,看看 AI Agent 怎么完成任务
大数据·人工智能·excel
用户0332126663675 天前
使用 Python 在 Excel 中添加与删除筛选器
python·excel
xurime5 天前
Excelize 开源基础库发布 2.11.1 版本更新
数据分析·excel·开源软件·excelize·gitcode
SAP_LO5 天前
STRUST导入证书
证书·sap·trust·imc
梦想出海-Phoebe5 天前
Gemini新增文件编辑功能:PDF、Word、Excel处理体验分享
pdf·word·excel
Data-Miner6 天前
AI和Excel怎么结合才能真提效
人工智能·excel