很多项目都有这种需求,虽然别人用的各有不同,不过闲来无事,还是自己搞了一个出来。基于EXCEL的导入。

*&---------------------------------------------------------------------*
*& Report ZLY_UPLOAD_TABLE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------* REPORT ZUPLOAD_TABLE.
TABLES:RSRD1.
TYPE-POOLS:ABAP. FIELD-SYMBOLS: <DYN_TABLE> TYPE STANDARD TABLE,
<DYN_WA>,
<DYN_FIELD>.
DATA: DY_TABLE TYPE REF TO DATA,
DY_LINE TYPE REF TO DATA,
XFC TYPE LVC_S_FCAT,
IFC TYPE LVC_T_FCAT. DATA : GT_EXCEL_T TYPE ALSMEX_TABLINE OCCURS WITH HEADER LINE,
GS_EXCEL_T LIKE LINE OF GT_EXCEL_T.
DATA: GC_FIELDVALUE TYPE FIELDVALUE, "字符值
GC_FLDNAME TYPE FIELDNAME. "字段名 SELECTION-SCREEN:BEGIN OF BLOCK BLK01 WITH FRAME TITLE TEXT-.
PARAMETERS:P_TBMA TYPE RSRD1-TBMA_VAL,
P_FILE LIKE RLGRAP-FILENAME.
SELECTION-SCREEN END OF BLOCK BLK01. AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM FRM_GET_FILEPATH. START-OF-SELECTION.
CHECK P_TBMA IS NOT INITIAL.
CHECK P_FILE IS NOT INITIAL.
PERFORM PRM_GET_TAB_STRC.
PERFORM PRM_GET_EXCEL.
PERFORM PRM_UPDATA_TAB.
*&---------------------------------------------------------------------*
*& Form FRM_GET_FILEPATH
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM FRM_GET_FILEPATH .
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
MASK = ',Excel(*.xls),*.XLS,*.XLSX,'
TITLE = '选择文件'()
IMPORTING
FILENAME = P_FILE
EXCEPTIONS
INV_WINSYS =
NO_BATCH =
SELECTION_CANCEL =
SELECTION_ERROR =
OTHERS = .
IF SY-SUBRC <> .
" MESSAGE e100(zdev) WITH '选择文件出错!'(007).
ENDIF.
ENDFORM. " FRM_GET_FILEPATH
*&---------------------------------------------------------------------*
*& Form PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_TAB_STRC .
DATA:GT_TABLE TYPE DDFIELDS,
GS_TABLE TYPE DFIES. CALL FUNCTION 'CATSXT_GET_DDIC_FIELDINFO'
EXPORTING
IM_STRUCTURE_NAME = P_TBMA
IMPORTING
EX_DDIC_INFO = GT_TABLE
EXCEPTIONS
FAILED =
OTHERS = .
IF SY-SUBRC <> .
ENDIF. LOOP AT GT_TABLE INTO GS_TABLE.
CLEAR XFC.
XFC-FIELDNAME = GS_TABLE-FIELDNAME .
XFC-INTTYPE = GS_TABLE-INTTYPE.
XFC-INTLEN = GS_TABLE-LENG.
XFC-DECIMALS = GS_TABLE-DECIMALS.
APPEND XFC TO IFC.
ENDLOOP. CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
EXPORTING
IT_FIELDCATALOG = IFC
IMPORTING
EP_TABLE = DY_TABLE.
ASSIGN DY_TABLE->* TO <DYN_TABLE>. CREATE DATA DY_LINE LIKE LINE OF <DYN_TABLE>.
ASSIGN DY_LINE->* TO <DYN_WA>.
ENDFORM. " PRM_GET_TAB_STRC
*&---------------------------------------------------------------------*
*& Form PRM_GET_EXCEL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_GET_EXCEL .
IF P_FILE IS NOT INITIAL.
*将excel数据传入内表
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_FILE
I_BEGIN_COL = ''
I_BEGIN_ROW = ''
I_END_COL = ''
I_END_ROW = ''
TABLES
INTERN = GT_EXCEL_T.
ENDIF. IF GT_EXCEL_T[] IS NOT INITIAL.
LOOP AT GT_EXCEL_T INTO GS_EXCEL_T.
AT NEW ROW.
CLEAR <DYN_WA>.
ENDAT.
IF <DYN_WA> IS INITIAL.
ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
IF SY-SUBRC = .
<DYN_FIELD> = SY-MANDT.
ENDIF.
ENDIF.
GS_EXCEL_T-COL = GS_EXCEL_T-COL + .
GC_FIELDVALUE = GS_EXCEL_T-VALUE.
CONDENSE GC_FIELDVALUE.
ASSIGN COMPONENT GS_EXCEL_T-COL OF STRUCTURE <DYN_WA> TO <DYN_FIELD>.
IF SY-SUBRC = .
<DYN_FIELD> = GC_FIELDVALUE.
ENDIF.
AT END OF ROW.
APPEND <DYN_WA> TO <DYN_TABLE>.
ENDAT.
ENDLOOP.
ENDIF.
ENDFORM. " PRM_GET_EXCEL
*&---------------------------------------------------------------------*
*& Form PRM_UPDATA_TAB
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM PRM_UPDATA_TAB .
MODIFY (P_TBMA) FROM TABLE <DYN_TABLE>.
IF SY-SUBRC = .
MESSAGE '导入成功' TYPE 'S'.
ELSE.
MESSAGE '导入失败' TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
ENDFORM. " PRM_UPDATA_TAB

最简单的一种方式,输入参数:表名,EXXCEL(EXCEL里数据按表的数据元素顺序,可不加客户端)

Z表数据EXCEL导入的更多相关文章

  1. .net开源工作流ccflow从表数据数据源导入设置

    第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow  .net开源工作流 第2节. 从表数据导入设置 1.1.1: 概要说明 在从表的使用中我一般都会用到从 ...

  2. mysql,oracle表数据相互导入

    mysql导入oracle: 例如mysql中有ts_user_info表,现在要导入到oracle中的user_info表 1:导出mysql表数据到data.txt文件 mysql> sel ...

  3. MySQL 表数据的导入导出

    数据导出 1.  使用 SELECT ...INTO OUTFILE ...命令来导出数据,具体语法如下. mysql> SELECT * FROM tablename INTO OUTFILE ...

  4. Hive创建表|数据的导入|数据导出的几种方式

    * Hive创建表的三种方式 1.使用create命令创建一个新表 例如:create table if not exists db_web_data.track_log(字段) partitione ...

  5. 将mysql表数据批量导入redis zset结构中

    工作中有这样一个需求,要将用户的魅力值数据做排行,生成榜单展示前40名,每隔5分钟刷新一次榜单.这样的需求用redis的zset是很方便实现的.但是数据存在mysql的表中,有400多万条,怎么将其快 ...

  6. IMPORT FROM 表数据导入

    Syntax IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_ ...

  7. SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」

    有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...

  8. Hive 数据的导入导出

    数据的导入: 通过文件导入,使用load命令 一.导入本地文件: load data local inpath '/home/hadoop/files/emp.txt' overwrite into ...

  9. 向MySql数据库导入excel表数据

    最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...

随机推荐

  1. sql的各种join连接

    SELECT * FROM TableA INNER JOIN TableB ON TableA.name = TableB.name id name id name -- ---- -- ---- ...

  2. Markdown使用指南(1)——基础语法

    [TOC] Markdown使用指南 标题 # 这是一级标题 ## 这是二级标题 ### 这是三级标题 ###### 这是六级标题 引用 > 这是一级引用 >> 这是二级引用 > ...

  3. Qt on Android 蓝牙开发

    版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...

  4. eclipse 4.5.2 源码修改 格式化Java代码

    注:本文代码基于eclipse4.5.2 1. 需求:在换电脑之后,如何不用配置eclipse就可以很快进入开发呢,并保持原来的编码规范. 2. 方法:修改eclipse源码 分别修改了两个jar包2 ...

  5. Linux系统结构

        Linux系统一般有4个主要部分: 内核.shell.文件系统和应用程序.内核.shell和文件系统一起形成了基本的操作系统结构,它们使得用户可以运行程序.管理文件并使用系统.部分层次结构如图 ...

  6. SQL Server 2008 中收缩数据库(DUMP,TRANSACTION,TRAN,无效,语法错误)

    从SQL SERVER 2008 开始,我们已经不能再用以前 DUMP TRAN 数据库名 WITH NO_LOG 的这种方式来收缩数据库,但是,可以用另外一种替代的方法,SQL语句如下: ALTER ...

  7. Jquery ajax提交表单几种方法

    在jquery中ajax提交表单有post与get方式,在使用get方式时我们可以直接使用ajax 序列化表单$('#表单ID').serialize();就行了,下面我来介绍两个提交表单数据的方法. ...

  8. treap 模版

    struct Treap { struct node { node *son[]; int key,siz,wei,cnt; node(int _key,node *f) { son[]=son[]= ...

  9. 解决httpServletRequest.getParameter获取不到参数

    用httpServletRequest.getParameter接收post请求参数,发送端content Type必须设置为application/x-www-form-urlencoded:否则会 ...

  10. CSS里width: auto\9 是什么意思

    color:red;//一般浏览器识别,字体颜色为红color:blue \9;//IE8,IE9及以上版本识别,字体颜色为蓝*color:orange;//IE7识别,字体颜色为橘色_color:b ...