快速掌握SAP BDC数据导入
对于有任何语言编程经验的人员来说,BDC 方式导入数据不失为一种不错的选择。BDC 可以将操作过程录制的记录自动生成 ABAP 代码,并且可以基于自动生成的代码进行优化,加上诸如数据校验,数据导入日志等功能。
本篇以创建固定资产 AS01 事务码为例,讲解如何有效利用 BDC 进行数据导入。
事务录制
使用 BDC 前,先使用事务码 SHDB 或者 SM35 将操作过程录制下来,这里以 SHDB 为例说明。在 SHDB 界面中,点击 New Recording 按钮开始一个新的录制:
在弹出对话框中,输入 recording 名称(ZAS01) 和事务码 (AS01),点击 Start recording 按钮开始录制。
录制的过程中,就是事务码 AS01 的操作过程。要点就是对每一个需要输入值的字段都手工输入,不要从历史记录中选择;完成录入后,点击保存按钮保存保存数据,保存动作也需要被记录下来;避免录入的时候在不同的屏幕中跳来跳去,因为 SAP 会记录屏幕和光标 (Cursor)的位置,反复跳转产生一些无关的脚本代码,增加了后续处理的难度。这里省略录制的过程。录制完成后,SHDB 的界面如下:
Field Name 字段有很多值,像 ANLA-ANLKL 这样的比较容易理解,表示 ANLA 表的 ANLKL 字段,BDC_SUBSCR 表示子屏幕,BDC_CURSOR 表示光标的位置。另外有多个 BDC_OKCODE,表示操作的动作。有些是标准的,比如 /00,表示回车,但 =BUCH 是什么意思呢?这些动作码对应程序对话屏幕 (dialog) 的 function code,因为这些功能码基于程序,并没有一个统一的规定,所以如果想知道的话,要到对应程序中去查看。比如本例中,我们输入 AS01,在初始界面中,通过菜单项:系统 -> 状态,进入下面的界面:
双击 GUI status NEU_FIRST,可以看到 BUCH 对应的功能是保存的意思。
我把需要填写值的字段都已经标注了出来。可以看到,SAP 记录了操作过程中的子屏幕 (BDC_SUBSCR),也记录了光标的位置 (BDC_CURSOR),我们可以基于对 AS01 界面,删除不影响功能的一些行次。比如 BDC_CURSOR,一般是可以删除的,BDC_SUBSCR 的屏幕,如果没有需要录入任何值,也是可以删除的。删除不相关字段后,屏幕录制的代码简化为:
在界面中,有一个 Process 按钮,可以在精简后点击此按钮进行测试,如果能创建新的固定资产,则表示没有问题,可以将录制进行保存。
生成程序
回到 SHDB 的 Overview 界面,在这个界面中,可以基于录制生成程序,或者函数。我们以生成程序为例进行讲解。
点击生成程序按钮,在对话框中,输入下面界面中的值:
当然,这个步骤的操作需要用户开发权限。点击确认按钮,即可生成程序,这是一个可以直接运行的程序,程序从应用程序服务器(Application server 上) 读取 AS01_Data 文件的数据,调用事务码 AS01,实现数据导入的功能。应用程序服务器 文件的路径为:DIR_SAPUSERS 文件夹。
可以用事务码 AL11 查看文件,通过事务码 CG3Y 下载到本地,通过事务码 CG3Z 从本地导入到应用程序服务器。看起来一切都很完美,我们只要将服务器上的文件作为模板下载下来,维护好数据再上传到服务器,不就全部搞定了吗?很可惜,SHDB 默认生成的文本文件,是基于每个字段的长度拼接来生成文件的每一行的,不像 LSMW 可以定义字段之间的分隔符,从这个方面来说,设计不如 LSMW.。如果用户要按这种格式来维护导入的数据,考虑每个字段的长度,这个困难太大了,所以我们需要修改 SAP 自动生成的程序,添加从 PC 导入数据的功能。
改写程序
为了改写和完善这支程序,我们需要熟悉自动生成程序的逻辑。这里我就不分析程序的细节了,直接说明方法。SAP 将 BDC 程序的通用功能写在 include 程序 BDCRECX1
中,我们将 BDCRECX1 拷贝为一个新的程序 ZBDCRECX,保留 BDC_DYNPRO
, BDC_FIELD
和 BDC_TRANSACTION
三个子程序,并且进行适当的改写。完成后代码如下:
然后新建一支程序,命名为 Z_BDC_AS01, 在程序中实现将 Excel 数据导入到内表:
然后从 ZSHDB_AS01 将导入的代码拷贝过来。完整代码如下:
源代码
源代码和 Excel 格式的导入文模板放在 github 上:BDC_AS01_Demo
快速掌握SAP BDC数据导入相关推荐
- SAP BDC 数据导入
BDC.CATT批量数据维护 BDC批量数据导入... 19 SM35(包含SHDB)录屏操作... 19 生成程序... 22 带服务器端测试数据文件... 22 编辑服务器端上生成的测试数据文件. ...
- 通过管道传输快速将MySQL的数据导入Redis(自己做过测试)
通过管道传输快速将MySQL的数据导入Redis 通过管道传输pipe将MySQL数据批量导入Redis 自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redi ...
- 通过管道传输快速将MySQL的数据导入Redis
通过管道传输pipe将MySQL数据批量导入Redis 自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redis Mass Insertion,即Pipe传输, ...
- SAP License:SAP 期初数据导入
期初数据一般包括SD.MM.PP.FI.CO的静态和动态数据. MM: 1.静态: (1) Material master data(因为牵涉多部门一般上线要建立主数据小组). (2) Vendor ...
- SAP BDC数据批量导入功能
事务代码:SHDB 主要分为以下5步: Step1:记录屏幕操作 Step2:产生相关程序和数据格式文件 Step3:调整数据文件 Step4:运行BDC产生的程序读取文件导入数据 Step5:源代码 ...
- 不用代码快速将Excel的数据导入SQL Server数据库中
主要通过SQL Server的导入功能 直接写流程 1.首先获取一份符合格式的Excel表(能导入数据库Excel的格式是97-2003) 字段名就是你要导入数据库表的字段名(导入后这个表只作为临时表 ...
- python 读取mysql大量数据处理_python使用多线程快速把大量mysql数据导入elasticsearch...
使用python多线程,运行时自定义线程数,自动计算每个线程处理的数据量,连接mysql读取数据,处理成需要的字段入到elasticsearch. 运行效果图: 10个线程 运行会在这里实时刷新,方便 ...
- SAP LSMW 因物料描述里有换行符或者引号导致数据导入失败
SAP LSMW 因物料描述里有换行符或者引号导致数据导入失败 近期,笔者所在的D项目进入第一轮主数据导入的阶段.导入物料主数据由笔者负责. 我的LSMW工具如下方式: 采用的是standard ba ...
- mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...
快速解决mysql导数据时,格式不对.导入慢.丢数据的问题 如果希望一劳永逸的解决慢的问题,不妨把你的mysql升级到mysql8.0吧,mysql8.0默认的字符集已经从latin1改为utf8mb ...
最新文章
- pandas使用groupby.first函数、groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异)
- SQL进阶随笔--case用法(一)
- 什么是VGA光纤收发器?
- ffmpeg create a video from 4th image and and slow down the play speed
- python实现编辑距离,最长公共子序列,最长公共子串
- c语言中按位取反 程序,C语言问题,if条件里面按位取反
- 清华同方台式计算机 U盘启动,清华同方台式电脑一键u盘启动bios设置教程
- 中国建设工程造价管理系统 http://zaojiasys.jianshe99.com/cecaopsys/
- 能不用事务就尽量别用
- 请教刷机教程9008线刷
- 哇哦!?固件裁剪到1.82K? 他们是怎么做到的?
- 201224-MacOS使用Mounty非安全退出NFTS后磁盘无法加载
- C# web 讯飞语音在线合成 错误10111
- 华为交换机端口配置流量统计
- 中文老师经常说的IB课程,到底是什么?
- 高考计算机会考等级划分标准,学考等级怎么划分2020最新标准
- Ubuntu安装企业微信解决中文字体乱码的问题
- QCustomPlot 示例实践--带填充的简单衰减正弦函数及其红色的指数包络
- Linux学习笔记(22.2)——基于IIC + Regmap + IIO的AP3216C的设备驱动
- 分享轨迹平滑算法之滑动平均平滑(Moving Average, MA)MATLAB代码