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.
相关推荐
刻BITTER12 小时前
用EXCEL 将单色屏幕的Bitmap 字模数据还原回图形
单片机·嵌入式硬件·excel·arduino
匿者 衍12 小时前
POI读取 excel 嵌入式图片(支持wps 和 office)
java·excel
天外天-亮12 小时前
Vue + excel下载 + 水印
前端·vue.js·excel
allbs1 天前
spring boot项目excel导出功能封装——2.高级导出
spring boot·后端·excel
睿思达DBA_WGX2 天前
使用 Python 的第三方库 xlrd 读取 Excel 文件
python·excel
JCGKS2 天前
Go| excelize的流式迭代器
后端·golang·excel·excelize·流式读取·文件解析
yesyesyoucan2 天前
文本与表格格式转换助手:轻松实现TXT/CSV互转及Excel转CSV的实用工具
科技·程序人生·excel·交互·媒体
我命由我123452 天前
Excel - Excel 找回意外关闭的未保存的文档
学习·职场和发展·excel·求职招聘·职场发展·运维开发·学习方法
罗政3 天前
WPS Excel快速插入一批图片
excel·wps
daols883 天前
vxe-table 如何实现跟 excel 一样的筛选框,支持字符串、数值、日期类型筛选
前端·javascript·excel·vxe-table