当前位置: 首页 > web >正文

ABAP 导入Excel形成内表

在这里插入图片描述

文章目录

  • 创建导入模板
  • 程序实现
  • 代码
  • 代码解析
  • 运行结果

创建导入模板

在这里插入图片描述

程序实现

在这里插入图片描述

代码

*&---------------------------------------------------------------------*
*& Report Z_EXCEL_UPLOAD_LHY
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT Z_EXCEL_UPLOAD_LHY.
TABLES SSCRFIELDS.DATA: LS_FUNCTXT TYPE SMP_DYNTXT.
CONSTANTS:COS_TEMPLATE TYPE W3OBJID VALUE 'ZFI001',COS_FILENAME TYPE STRING VALUE '财务导入模板.xlsx'.
TYPES: BEGIN OF T_MARC,MATNR TYPE MARC-MATNR, "物料编号WERKS TYPE MARC-WERKS, "工厂MAKTX TYPE MAKT-MAKTX,  "物料描述MATKL TYPE MARA-MATKL,  "物料组END   OF T_MARC.
DATA GT_DATA TYPE TABLE OF T_MARC.SELECTION-SCREEN BEGIN OF BLOCK BK1.PARAMETERS P_FILE TYPE RLGRAP-FILENAME  MODIF ID M1.
SELECTION-SCREEN END OF BLOCK BK1.
**--按钮定义
SELECTION-SCREEN FUNCTION KEY 1.AT SELECTION-SCREEN ON VALUE-REQUEST FOR  P_FILE. "按选择帮助<F4>键时触发该事件PERFORM FRM_GET_FILE_NAME CHANGING P_FILE.INITIALIZATION.
**--按钮定义-初始化CLEAR LS_FUNCTXT.LS_FUNCTXT-ICON_ID   = ICON_IMPORT. "图标,可以通过ICON查找LS_FUNCTXT-ICON_TEXT = '下载文件'."描述SSCRFIELDS-FUNCTXT_01 = LS_FUNCTXT.AT SELECTION-SCREEN.
**--按钮响应CASE SSCRFIELDS-UCOMM.WHEN 'FC01'.PERFORM FRM_DOWNLOAD_TEMPLATE USING COS_TEMPLATE COS_FILENAME.WHEN OTHERS.ENDCASE.START-OF-SELECTION."解析Excel文件到内表PERFORM FILE_DATA_INPUT.**&---------------------------------------------------------------------*
**& Module STATUS_9000 OUTPUT
**&---------------------------------------------------------------------*
**&
**&---------------------------------------------------------------------*
*MODULE STATUS_9000 OUTPUT.
*  SET PF-STATUS 'STANDARD'.
** SET TITLEBAR 'xxx'.
*ENDMODULE.
*&---------------------------------------------------------------------*
*& Form frm_get_file_name
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      <-- P_FILE
*&---------------------------------------------------------------------*
FORM FRM_GET_FILE_NAME  CHANGING CV_FILE.DATA: LT_FILETABLE TYPE FILETABLE,  "表类型LS_FILETABLE TYPE FILE_TABLE, "结构类型LV_RC        TYPE I.FREE LT_FILETABLE.CLEAR: LV_RC.CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOGEXPORTING
*     window_title            =DEFAULT_EXTENSION       = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     default_filename        =FILE_FILTER             = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL
*     with_encoding           =
*     initial_directory       =
*     multiselection          =CHANGINGFILE_TABLE              = LT_FILETABLERC                      = LV_RC
*     user_action             =
*     file_encoding           =EXCEPTIONSFILE_OPEN_DIALOG_FAILED = 1CNTL_ERROR              = 2ERROR_NO_GUI            = 3NOT_SUPPORTED_BY_GUI    = 4OTHERS                  = 5.READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1.IF SY-SUBRC <> 0.
*     Implement suitable error handling hereENDIF.IF SY-SUBRC EQ 0.CV_FILE = LS_FILETABLE-FILENAME.ENDIF.ENDFORM.
*&---------------------------------------------------------------------*
*& Form FRM_DOWNLOAD_TEMPLATE
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*&      --> COS_TEMPLATE
*&      --> COS_FILENAME
*&---------------------------------------------------------------------*
FORM FRM_DOWNLOAD_TEMPLATE  USING   U_OBJID TYPE W3OBJIDU_FILE_NAME TYPE STRING.DATA: LS_KEY      TYPE WWWDATATAB,LV_FILENAME TYPE STRING,LV_PATH     TYPE STRING,LV_FULLPATH TYPE STRING."判断模板是否存在SELECT SINGLE * FROM WWWDATAWHERE RELID EQ 'MI'AND OBJID EQ @U_OBJIDINTO CORRESPONDING FIELDS OF @LS_KEY.IF SY-SUBRC NE 0.
*   模板&1不存在MESSAGE 'ZFI001下载模板不存在' TYPE 'E'."ZFI001RETURN.ENDIF.
*   调用函数打开文件选择框CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOGEXPORTING
*     window_title              =DEFAULT_EXTENSION         = CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCELDEFAULT_FILE_NAME         = U_FILE_NAME
*     with_encoding             =
*     file_filter               =
*     initial_directory         =
*     prompt_on_overwrite       = 'X'CHANGINGFILENAME                  = LV_FILENAMEPATH                      = LV_PATHFULLPATH                  = LV_FULLPATH
*     user_action               =
*     file_encoding             =EXCEPTIONSCNTL_ERROR                = 1ERROR_NO_GUI              = 2NOT_SUPPORTED_BY_GUI      = 3INVALID_DEFAULT_FILE_NAME = 4OTHERS                    = 5.IF SY-SUBRC <> 0.
*   Implement suitable error handling hereENDIF.CHECK LV_FULLPATH NE ''.
*   下载SMW0模版CALL FUNCTION 'DOWNLOAD_WEB_OBJECT'EXPORTINGKEY         = LS_KEYDESTINATION = CONV LOCALFILE( LV_FULLPATH ).ENDFORM.
*&---------------------------------------------------------------------*
*& Form FILE_DATA_INPUT
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM FILE_DATA_INPUT .CLEAR GT_DATA. "清空内表DATA: LT_INTERN TYPE STANDARD TABLE OF ALSMEX_TABLINE.DATA: ERROR_STR TYPE STRING.FREE: LT_INTERN.CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'EXPORTINGFILENAME                = P_FILEI_BEGIN_COL             = 1I_BEGIN_ROW             = 2I_END_COL               = 99I_END_ROW               = 65536TABLESINTERN                  = LT_INTERNEXCEPTIONSINCONSISTENT_PARAMETERS = 1UPLOAD_OLE              = 2OTHERS                  = 3.IF SY-SUBRC NE 0.ENDIF.SORT LT_INTERN BY ROW COL.LOOP AT LT_INTERN INTO DATA(LS_INTERN).AT NEW ROW. "如果字段ROWROW的左侧全部字段的数据,与上一行数据不一致,则执行代码。APPEND INITIAL LINE TO GT_DATA ASSIGNING FIELD-SYMBOL(<FS_DATA>).ENDAT."按照现在的LS_INTERNCOL的值,分配结构<FS_DATA>的对应下标的地址给指针<FS_VAL>ASSIGN COMPONENT LS_INTERN-COL OF STRUCTURE <FS_DATA> TO FIELD-SYMBOL(<FS_VAL>).<FS_VAL> = LS_INTERN-VALUE.CLEAR LS_INTERN.ENDLOOP.CL_DEMO_OUTPUT=>DISPLAY( GT_DATA ).
ENDFORM.

代码解析

在这里插入图片描述

运行结果

在这里插入图片描述

http://www.xdnf.cn/news/4027.html

相关文章:

  • spring中的@ConfigurationProperties注解详解
  • 网星安全AWS攻防方案,重磅发布!
  • 机器学习模型训练模块技术文档
  • AVHRR中国积雪物候数据集(1980-2020年)
  • yolo 用roboflow标注的数据集本地训练 kaggle训练 comet使用 训练笔记5
  • FISCO BCOS【初体验笔记】
  • Python 闭包:函数式编程中的魔法变量容器
  • ciscn_2019_c_1
  • 普联的AC100+AP+易展路由组网方案的一些问题
  • docker介绍以及安装
  • sherpa-ncnn:Linux_x86交叉编译Linux_arm32上的sherpa-ncnn -- 语音转文本大模型
  • 蓝桥杯单片机备战笔记
  • 【中间件】brpc_基础_TimerThread
  • 五一假期作业
  • springboot单体项目的执行流程
  • LFU算法解析
  • 【PostgreSQL数据分析实战:从数据清洗到可视化全流程】4.5 清洗流程自动化(存储过程/定时任务)
  • 【中间件】brpc_基础_单例
  • FreeRTOS学习系列·二值信号量
  • Linux查询日志常用命令
  • 解锁现代健康密码:科学养生新主张
  • 基于PLC的换热器温度控制系统设计
  • 状态模式(State Pattern)
  • 电子商务商家后台运营专员模板
  • C++ 中二级指针的正确释放方法
  • 【KWDB 创作者计划】_Ubuntu 22.04系统KWDB数据库安装部署使用教程
  • Qt中的UIC
  • Amazon Bedrock Converse API:开启对话式AI新体验
  • Qt开发:容器组控件的介绍和使用
  • 20、数据可视化:魔镜报表——React 19 图表集成