SAP工具箱 通用导入程序

2021-10-29 22:59发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

点击蓝字 关注我们

前言

数据导入,是一个简单的应用场景:

用户按规定格式准备好数据文件,批量导入系统创建主数据或者单据. 

开发框架系列中写了一篇文章介绍了一个数据导入框架.

详见链接
无峰,公众号:ABAP开发技巧SAP开发框架系列之 数据导入

基于这个框架开发了一系列的数据导入程序,用于满足项目上的数据导入需求.如图一 .

所有这些数据导入程序都使用了一个核心程序 ZUPLOAD_TABLE_CONTENT.

本文主要介绍这个通用导入程序 ZUPLOAD_TABLE_CONTENT


图一


执行过程

简单介绍一下通用导入程序的执行过程


01

执行程序


事务码SE38,程序名ZUPLOAD_TABLE_CONTENT

或者执行事务代码: ZUPLOAD_TABLE_CON

进入程序的选择屏幕

输入表名 ZTTS_H

输入模板文件名 D:\ZTTS_H.XLSX

如果直接点击下载模板,将会使用默认选项进入下载模板过程


02

选择模板类型


可以勾选复选框产生模板,展开模板的详细选项

  • 下载模板时优先获取用户通过SMW0上传的模板(同名TCODE): 用户可以使用SMW0上载一个预先定义好的EXCEL模板文件文件,然后直接下载该模板. 如果没有则进入选择字段界面. 文件后缀调整为 .xls

  • 下载复杂模板(附带码表字段值,附带模板的字段内容限制: 下载复杂模板,附带了码表及值限制,更多模板功能可以通过配置表配置(后续文章会介绍模板配置) .文件后缀调整为 .xlsx

  • 产生模板的时候,附带表的所有数据: 产生模板的时候,可以附带表中的所有数据(后续可以考虑通过动态选择限制附带的数据内容)


03

字段选择


点击下载模板或勾选产生模板点击执行, 进入一个字段清单. (前提条件是没有SMW0预先上载的模板).此时可以勾选需要进入模板的字段,产生EXCEL模板.


04

打开模板文件


点击确定后,自动打开模板文件.

复杂模板:

  • 模板文件中附加了一个码表内容标签 图二 ,

  • 该标签中主要附带这个表中存在码表的字段及码表内容 图三.

  • 同时会对字段添加下拉输入,并校验输入数据的正确性(通过#分割编码部分和描述部分) 图四

简单模板: 只有字段名和字段描述信息 图五


码表的概念详见链接
无峰,公众号:ABAP开发技巧SAP开发框架系列之 码表框架


图二

图三

图四

图五


05

添加数据


在模板中添加要导入的数据,对于有码表限制的字段,会有数据合法性校验, 此时可以通过选择输入(EXCEL的有效值选择有点麻烦),也可以在EXCEL无关字段中输入编码,粘贴过来. 导入程序会去掉#及以后的内容.


06

导入数据


去掉勾选产生模板复选框.点击执行按钮.

上传数据到内表并呈现数据. 这种导入数据的方式没有执行数据校验(数据校验依赖于配置的数据模板,后续文章会详细介绍, 检查数据复选框是数据校验的一个开关).


07

数据保存


点击保存,数据写入表ZTTS_H


导入文件格式

通用导入程序兼容 .txt .xls .xlsx 三种文件后缀. 

.txt 后缀

数据量较大的时候(一般情况下,超过10万条),推荐使用.txt后缀, 这样产生的模板文件实际上是制表符分割的文本文件,这种情况几乎没有记录数的限制. 

.xls 后缀

使用 .xls 依赖于函数

ALSM_EXCEL_TO_INTERNAL_TABLE. 原函数中限定了行,列长度为4位(图六),也就是说最大记录数限定为1万条. 

改写的函数

ZALSM_EXCEL_TO_INTERNAL_TABLE使用了新的定义(图七),理论上没有最大记录数的限定,但是因为这个函数的性能问题, 还是限制了最大访问5万条记录.

.xlsx后缀

使用了 开源项目 ABAP2XLSX 

详见链接

最大条目数依赖于xlsx文件的限制. 新版本的EXCEL允许的上限是 1048576 (数据来自百度). 

图六

图七


总结

通用导入程序是一个简单实用的程序.

  • 根据输入的表名及勾选的模板字段动态生成内表,并输出该内表到EXCEL显示. 再把EXCEL中的内容载入到内表中显示,最后保存到数据库表中.

  • 理论上只能处理单表. 适用于自定义配置表的导入或简单表的导入.

  • 同时它又是整个导入框架的核心程序. 所有的数据导入都是通过这个程序把数据载入到一个临时表,再调用处理程序执行生成主数据或者单据.

THE

END


约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)



公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077


请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 申请进入公众号讨论群

赞赏支持