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.
相关推荐
SAP_奥维奥科技14 小时前
详解SAP Business One:采购费用的处理方式
sap
罗政17 小时前
一键对多个Excel文件进行差异内容提取分析+显示差值
excel
罗政1 天前
AI提取一批Excel单元格内容(快递信息)数据安全,支持断网提取
人工智能·excel
2501_930707781 天前
使用C#代码合并或取消合并 Excel 单元格
excel
罗政1 天前
面向提示词对多Excel,多表单进行“数据分组统计”,“条件合并”,“复杂查询”,“SQL执行”,本地操作,支持百万行表单数据
数据库·sql·excel
无穷小亮1 天前
Flutter框架跨平台鸿蒙开发——Excel函数教程APP的开发流程
flutter·华为·excel·harmonyos·鸿蒙
开开心心_Every2 天前
家长控制电脑软件:定时锁屏管理使用时长
网络协议·tcp/ip·游戏·微信·pdf·excel·语音识别
技小宝2 天前
Excel网页抓取:批量获取亚马逊商品主图
大数据·经验分享·职场和发展·excel
燕儿_飘飘2 天前
Excel单个表格占用大量空间的问题解决方案
excel·技巧
写代码的【黑咖啡】2 天前
Python中Excel文件的强大处理工具:OpenPyXL
开发语言·python·excel