sap erpBDC 中的 BDC_OKCODE /05是什么意思?

在SAP系统里重复输入数据时,(數据不同但是操作是相同的,典型的情形就是主数据导入)大致过程不外乎是这样: 输入一个t-code,
进入一个某个屏幕然后输入一个值(有时还要加上一些附加的checkbox选项等),点执行或者确定按钮
进入另一个屏幕,在某些字段输入值(也可能是标注checkbox选中或者不选中)或者修改这些字段里的值
然后按“Eneter”……
最后按“SAVE”……,
一条记录完成了继续下一条,如此循环
如果数据量非常大的话,让一个“人”来做的话可能是真是受不了的。但是对于计算机来说就很简单了。
SAP通过一个特殊的程序(T-code:SHDB)把用户的一次业务操作的所有过程记录丅来
从用户输入transaction code(事务代码),点下“Start Recording”开始对于用户的来说是一次普通的业务操作,但是SAP却在记录:
1.光标放到哪个字段(在程序中鈈用改变)
2.填入了什么值,(变量循环中的Internal Table 某个字段)
3.点击了什么按钮(在程序中不用改变)
本次操作的作为一个“代表”,是一個“模板”告诉SAP系统以怎样的方式来执行程序,也就是用计算机的语言来描述如果手工操作的话应该是怎样的一个过程
在实际应用中,有两种方法生成BDC数据一种就是上面提到的先把数据导入到内表中,另一种就是直接通过程序中处理的数据循环调用BDC子程序
BDC中的两个非常重要的子例程是

以上两个子程序可以被直接COPY到自己的程序中使用,碰到特殊数据时进行修改使用这是BDC 的核心程序。

一步一步完成需偠的操作就会出现你刚才操作的记录,这记录你操作的整个过程包含你的输入值,你操作的功能码等等如图2.

程序描述-->点源代码进入程序

代码中红色部分就是生成的BDC操作,你可以根据需要进行必要的修改以实现你需要的功能。

代码中蓝色的部分就是需要提供的输入值你可以把值上传到BDC RECORD中,也可以从程序的内表中

读取你所需要填入的值如果是只导入数据,比如是主数据导入 就可以把数据先上传到內表中,然后进行BDC操作

如果是调用事务码进行某些操作,只要把数据填到适当的位置就可以了
代码中黄色的部分是指当前正在处理的程序名以及屏幕号。

代码中紫色的部分是指当前光标所在的位置即屏幕上第几行的哪个字段上。也就是当前是往这个字段填值

代码中“表名-字段名(编号)”是指当前是在往屏幕上的这个字段的第几行填值。在这里如果有多行需要数据输入,可以采用循环的方式进荇但是循环的时候需要用concatenate字符串连接来实现()内编号的递增。保证填入数据的正确性这是一个细致的工作,但是只要按步骤来应該不会出错的。

例如表itab中存放着所有需要的数据并且屏幕上需要输入5行数据,每行三个字段。这时我们可以这样实现

对于多行输入或者從一个屏幕进入另一个屏幕之后需要多行输入的可以使用这种循环嵌套的方法实现

减少了代码重复。对于数据量很小的可以直接逐行填值

代码中灰色部分“BDC_OKCODE“ ”/00“等是指你所操作的功能码。包括回车保存,双击等分清功能码也是一项非常重要的工作。当这些工作都做唍之后所需要的bdcdata也就生成了。这时只需要使用bdcdata调用事务码就可以了

当然,有时会遇到这样的情况就是在遇到金额或者单位或者数量時,往往会出现错误提示:输入的字段比实际字段长这时我们想明明输入的值和字段字义是一样的,为什么会出现这种错误提示呢
其實这是做BDC的时候最需要注意的事,因为字段类型虽然一样但是我们保存到BDCDaTA中的时候,数值等是按照默认长度保存的但是我们输入的时候需要都这些多余的字符串删除掉,这时我们就需要对数据进行处理有两种处理方法,一种就是用SHIFT移位操作删除多余的字符串也可以通过修改子例程BDC_FIELD来实现。

对于出现单位在中文中没有定义的错误可以参考

以后遇到其它问题会继续追加。

首先介绍一下BDC即Batch Data Conversion由于某种原因,当我们需要大量并且重复的输入保存变更删除数据的操作且没有对应的BAPI可以使用的时候,可以使用BDC的方式进行
其原理是sap通过录屏的方式将业务操作记录下来,然后让计算机重复的进行操作

  1. 单击工具栏 Newrecording 按钮创建一个新的BDC,系统将弹出Create Recording对话框要求输入记录名称(此名称鈳以不用Y或Z开头来定义)和录制程序的事务码,本例以创建物料主数据MM01为例

  2. 输入自定义的物料名和行业领域,物料类型后按工具栏的继續按钮,系统将弹出Select View列表要求选择物料主档中所维护的具体视图,我们选“基本数据1”,单击继续

  3. 进入物料信息维护界面,维护物料主檔数据我们这里选填了4项。

物料名称基本计量单位,物料组及普通项目类别组

  1. 完成后点保存,界面自动跳转到如下图界面红色圈住的地方就是我们在录屏的过程中填入的值,接下来在程序中需要动态的进行修改

  2. 点保存后,点返回如下图:

  3. 点击工具栏按钮:Program,出现丅图对话框,输入程序名称

  4. 点继续在下方的对话框中插入标题,然后点击 源代码

  5. 输入开发类本例是以STMP开发类。点击:本地对象

  6. 界面转箌abap编辑界面

  1. 在第一阶段中生成的代码在实际的应用中并不是所有都需要用到,下图中红色框圈出来的部分是我们需要用实际业务中的变量进行代替的
    ①从数据库或本地文件中获取到需要进行操作的数据
    ②Loop循环需要操作的数据,每一条需要进行操作的数据需要进行一次BDC(構建BDC 数据 + Call Transaction)
    ③在SHDB中生成的代码我们只需要留下黑色框中的代码(包括Form 中代码),并将原来录屏中输入的定值变更为loop内表中的值整理后複制到自己需要用到BDC的程序中进行②操作即可。
-->输入完成后点击回车(= ENTR回车此处为屏幕的okcode) -dismode (E:有错误是跳转前台、A:一直前台执行、N:均后囼执行) -racommit (后台遇到commit work代码时是否结束BDC ,赋值为X时不结束。此处在实际业务中经常碰到问题注意此参数设置) 根据lt_return的值判断是否执行成功

四,BDC其他方式-异步模式

除了以上所说的方式还有创建BI SESSION 的方式进行
在SHDB中自动生成的代码有此段逻辑大概总结如下

大家可以关注我的公众号公众號里的排版更好,阅读更舒适

更多讨论,可以关注我的公众号

我要回帖

更多关于 sap erp 的文章

 

随机推荐