码迷,mamicode.com
首页 > Web开发 > 详细

下载魔板,上传EXCEL

时间:2016-07-14 10:17:00      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:

说道SAP里对EXCEL操作的大概就是上传,下载,显示了。。。

下载:(文档是通过SMW0上传的)注:如果下载的时候需要填充EXCEL的值,。。。请参考另一篇文档,OLE

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
    EXPORTING
      DEFAULT_EXTENSION    = xlsx
      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 LC_FULLPATH = ‘‘.
    MESSAGE  不能打开excel TYPE E.
  ENDIF.
  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.
    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.
    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.
  ENDIF.

 

 

上传:

选择屏上加个文件路径选择:

SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-001.
PARAMETERS:P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK01.

给文件搜索帮助:

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
  PERFORM FRM_GET_FILEPATH.
FORM FRM_GET_FILEPATH .
  CALL FUNCTION WS_FILENAME_GET
    EXPORTING
      MASK             = ,Excel(*.xls),*.XLS,*.XLSX,
      TITLE            = 选择文件(100)
    IMPORTING
      FILENAME         = P_FILE
    EXCEPTIONS
      INV_WINSYS       = 1
      NO_BATCH         = 2
      SELECTION_CANCEL = 3
      SELECTION_ERROR  = 4
      OTHERS           = 5.
  IF SY-SUBRC <> 0.
    MESSAGE E100(ZDEV) WITH 选择文件出错!(007).
  ENDIF.
ENDFORM.

然后就是或许EXCEL内容了

CALL FUNCTION ALSM_EXCEL_TO_INTERNAL_TABLE
      EXPORTING
        FILENAME    = P_FILE
        I_BEGIN_COL = 1
        I_BEGIN_ROW = 2
        I_END_COL   = 300
        I_END_ROW   = 50000
      TABLES
        INTERN      = GT_EXCEL_T.

这时候获取的EXCEL行,列,值

数据处理

LOOP AT GT_EXCEL_T INTO GS_EXCEL_T.
    AT NEW ROW.
      CLEAR:GW_EXCEL.
    ENDAT.
    CASE GS_EXCEL_T-COL.
      WHEN 1.
        GW_EXCEL-LIFNR = GS_EXCEL_T-VALUE.
        CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT
          EXPORTING
            INPUT  = GW_EXCEL-LIFNR
          IMPORTING
            OUTPUT = GW_EXCEL-LIFNR.
      WHEN 2.
        GW_EXCEL-MATNR = GS_EXCEL_T-VALUE.
        CALL FUNCTION CONVERSION_EXIT_ALPHA_INPUT
          EXPORTING
            INPUT  = GW_EXCEL-MATNR
          IMPORTING
            OUTPUT = GW_EXCEL-MATNR.
      WHEN 3.
        GW_EXCEL-EKORG = GS_EXCEL_T-VALUE.
      WHEN 4.
        GW_EXCEL-WERKS = GS_EXCEL_T-VALUE.
      WHEN 5.
        GW_EXCEL-NETPR = GS_EXCEL_T-VALUE.
      WHEN 6.
        GW_EXCEL-KPEIN = GS_EXCEL_T-VALUE.
      WHEN 7.
        GW_EXCEL-LIFAB = GS_EXCEL_T-VALUE.
      WHEN 8.
*        GW_EXCEL-NORBM = GS_EXCEL_T-VALUE.
        GW_EXCEL-LIFBI = GS_EXCEL_T-VALUE.
      WHEN 9.
        GW_EXCEL-MWSKZ = GS_EXCEL_T-VALUE.
      WHEN OTHERS.
    ENDCASE.

    AT END OF ROW.
      APPEND GW_EXCEL TO GT_EXCEL.
    ENDAT.
  ENDLOOP.

这块可以优化,按自己的实际情况来

 

下载魔板,上传EXCEL

标签:

原文地址:http://www.cnblogs.com/sapSB/p/5669221.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!