• 下载模板,上传EXCEL


    说道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.

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

  • 相关阅读:
    1111---9999的变换
    Mac命令行
    iOS 支付 [支付宝、银联、微信]
    ShareSDK适配iOS 9系统
    iOS中Size Classes的理解与使用
    iOS9网络请求升级 之前的不显示图片 破解方法
    iOS9中友盟分享不能使用 破解方法
    iOS9中错误信息信息是引入的一个第三方库不包含bitcode
    iOS 六大手势
    下拉刷新和上拉加载的原理
  • 原文地址:https://www.cnblogs.com/sapSB/p/5669221.html
Copyright © 2020-2023  润新知