Z表数据EXCEL导入
很多项目都有这种需求,虽然别人用的各有不同,不过闲来无事,还是自己搞了一个出来。基于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导入的更多相关文章
- .net开源工作流ccflow从表数据数据源导入设置
第1节. 关键字 驰骋工作流引擎 流程快速开发平台 workflow ccflow jflow .net开源工作流 第2节. 从表数据导入设置 1.1.1: 概要说明 在从表的使用中我一般都会用到从 ...
- mysql,oracle表数据相互导入
mysql导入oracle: 例如mysql中有ts_user_info表,现在要导入到oracle中的user_info表 1:导出mysql表数据到data.txt文件 mysql> sel ...
- MySQL 表数据的导入导出
数据导出 1. 使用 SELECT ...INTO OUTFILE ...命令来导出数据,具体语法如下. mysql> SELECT * FROM tablename INTO OUTFILE ...
- Hive创建表|数据的导入|数据导出的几种方式
* Hive创建表的三种方式 1.使用create命令创建一个新表 例如:create table if not exists db_web_data.track_log(字段) partitione ...
- 将mysql表数据批量导入redis zset结构中
工作中有这样一个需求,要将用户的魅力值数据做排行,生成榜单展示前40名,每隔5分钟刷新一次榜单.这样的需求用redis的zset是很方便实现的.但是数据存在mysql的表中,有400多万条,怎么将其快 ...
- IMPORT FROM 表数据导入
Syntax IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_ ...
- SpringBoot图文教程10—模板导出|百万数据Excel导出|图片导出「easypoi」
有天上飞的概念,就要有落地的实现 概念十遍不如代码一遍,朋友,希望你把文中所有的代码案例都敲一遍 先赞后看,养成习惯 SpringBoot 图文教程系列文章目录 SpringBoot图文教程1「概念+ ...
- Hive 数据的导入导出
数据的导入: 通过文件导入,使用load命令 一.导入本地文件: load data local inpath '/home/hadoop/files/emp.txt' overwrite into ...
- 向MySql数据库导入excel表数据
最近要开发一个小的答题系统,如果题目人工录入那确实很麻烦.所以想到是不是可以从用一些现有数据格式的文件导入数据.在网上查了一下,看到有关于将excel的数据导入到mysql的方法.所以将题库数据整理成 ...
随机推荐
- JAVA判断当前日期是节假日还是工作日
package com.buybal.bat.util; import java.io.File; import java.io.FileInputStream; import java.io.IOE ...
- ORACLE 11g安装
下载地址 win 32位操作系统 下载地址: http://download.oracle.com/otn/nt/oracle11g/112010/win32_11gR2_database_1of2. ...
- linux 脚本小试系列
实现100以内的奇数和和偶数和的脚本 1 #!/bin/bash 2 # #声明一个偶数变量和一个奇数变量 3 declare -i evensum=0 4 declare -i oddsum=0 # ...
- jquery ajax异步请求
得先知道后台接口给ajax访问(接口URl和传入接口的参数及参数类型),知道访问之后返回的数据类型,有哪些数据. 选择异步请求的方式,常用的有三种,如$.ajax().$.post().$.get ...
- slide效果
html和js部分 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://w ...
- node.js + expres 的安装
一 windows下安装 首先去官网下载msi安装包. 两篇很有参考价值的文章: http://cnodejs.org/topic/4fae80c02e8fb5bc650a8360 http://bl ...
- NE Upgrade python script. Need to write a Tkinter GUI for it
# -*- coding: utf-8 -*-#from ftplib import FTP __authour__='CC' import osimport telnetlibimport time ...
- Fiddler 4 抓包
Fiddler 4 Tools –> Fiddler Options HTTPS -> 勾选"CaptureHTTPS CONNECTs",同时勾选"Decr ...
- Javascript中的队列
队列遵循FIFO (First In First Out)原则. 普通队列 function Queue() { var items=[]; //向队列尾部添加一个或者多个元素 this.enqueu ...
- asp.net报错“尝试读取或写入受保护的内存。这通常指示其他内存已损坏”的解决办法
来源:http://ajxfxb.blog.163.com/blog/static/56675086201411634336878/ 作者是:没完没了的工作 asp.net报错“尝试读取或写入受保护的 ...