对于有任何语言编程经验的人员来说,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_FIELDBDC_TRANSACTION 三个子程序,并且进行适当的改写。完成后代码如下:

然后新建一支程序,命名为 Z_BDC_AS01, 在程序中实现将 Excel 数据导入到内表:

然后从 ZSHDB_AS01 将导入的代码拷贝过来。完整代码如下:

源代码

源代码和 Excel 格式的导入文模板放在 github 上:BDC_AS01_Demo

快速掌握SAP BDC数据导入相关推荐

  1. SAP BDC 数据导入

    BDC.CATT批量数据维护 BDC批量数据导入... 19 SM35(包含SHDB)录屏操作... 19 生成程序... 22 带服务器端测试数据文件... 22 编辑服务器端上生成的测试数据文件. ...

  2. 通过管道传输快速将MySQL的数据导入Redis(自己做过测试)

    通过管道传输快速将MySQL的数据导入Redis 通过管道传输pipe将MySQL数据批量导入Redis       自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redi ...

  3. 通过管道传输快速将MySQL的数据导入Redis

    通过管道传输pipe将MySQL数据批量导入Redis       自Redis 2.6以上版本起,Redis支持快速大批量导入数据,即官网的Redis Mass Insertion,即Pipe传输, ...

  4. SAP License:SAP 期初数据导入

    期初数据一般包括SD.MM.PP.FI.CO的静态和动态数据. MM: 1.静态: (1) Material master data(因为牵涉多部门一般上线要建立主数据小组). (2) Vendor ...

  5. SAP BDC数据批量导入功能

    事务代码:SHDB 主要分为以下5步: Step1:记录屏幕操作 Step2:产生相关程序和数据格式文件 Step3:调整数据文件 Step4:运行BDC产生的程序读取文件导入数据 Step5:源代码 ...

  6. 不用代码快速将Excel的数据导入SQL Server数据库中

    主要通过SQL Server的导入功能 直接写流程 1.首先获取一份符合格式的Excel表(能导入数据库Excel的格式是97-2003) 字段名就是你要导入数据库表的字段名(导入后这个表只作为临时表 ...

  7. python 读取mysql大量数据处理_python使用多线程快速把大量mysql数据导入elasticsearch...

    使用python多线程,运行时自定义线程数,自动计算每个线程处理的数据量,连接mysql读取数据,处理成需要的字段入到elasticsearch. 运行效果图: 10个线程 运行会在这里实时刷新,方便 ...

  8. SAP LSMW 因物料描述里有换行符或者引号导致数据导入失败

    SAP LSMW 因物料描述里有换行符或者引号导致数据导入失败 近期,笔者所在的D项目进入第一轮主数据导入的阶段.导入物料主数据由笔者负责. 我的LSMW工具如下方式: 采用的是standard ba ...

  9. mysql导入数据表越来越慢,快速解决mysql导数据时,格式不对、导入慢、丢数据的问题...

    快速解决mysql导数据时,格式不对.导入慢.丢数据的问题 如果希望一劳永逸的解决慢的问题,不妨把你的mysql升级到mysql8.0吧,mysql8.0默认的字符集已经从latin1改为utf8mb ...

最新文章

  1. pandas使用groupby.first函数、groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异)
  2. SQL进阶随笔--case用法(一)
  3. 什么是VGA光纤收发器?
  4. ffmpeg create a video from 4th image and and slow down the play speed
  5. python实现编辑距离,最长公共子序列,最长公共子串
  6. c语言中按位取反 程序,C语言问题,if条件里面按位取反
  7. 清华同方台式计算机 U盘启动,清华同方台式电脑一键u盘启动bios设置教程
  8. 中国建设工程造价管理系统 http://zaojiasys.jianshe99.com/cecaopsys/
  9. 能不用事务就尽量别用
  10. 请教刷机教程9008线刷
  11. 哇哦!?固件裁剪到1.82K? 他们是怎么做到的?
  12. 201224-MacOS使用Mounty非安全退出NFTS后磁盘无法加载
  13. C# web 讯飞语音在线合成 错误10111
  14. 华为交换机端口配置流量统计
  15. 中文老师经常说的IB课程,到底是什么?
  16. 高考计算机会考等级划分标准,学考等级怎么划分2020最新标准
  17. Ubuntu安装企业微信解决中文字体乱码的问题
  18. QCustomPlot 示例实践--带填充的简单衰减正弦函数及其红色的指数包络
  19. Linux学习笔记(22.2)——基于IIC + Regmap + IIO的AP3216C的设备驱动
  20. 分享轨迹平滑算法之滑动平均平滑(Moving Average, MA)MATLAB代码

热门文章

  1. JavaSocket简单通信
  2. Java Socket 参数详解
  3. WordPress数据库连接错误解决方案!
  4. 三点水加一个必须的必
  5. KWP2000协议学习笔记(一)
  6. MySQL性能指标TPS+QPS+IOPS压测
  7. 5步搭建免费图床(CDN图床)再也不用担心网站网速与内存了
  8. DOS中del和rd的区别
  9. 如何用git命令生成Patch和打Patch(git format-Patch和git am)
  10. 数据分析-如何搭建业务指标体系