BDC程序需要注意的问题!(常见问题集合)

BDC在FICO模块是经常用到的,用于批量过账程序时使用的,但是稳定性不如使用BAPI的好,但是BDC可以有多种T-CODE进行过账,也有不同的模式,功能也不错,但是在写程序或者是出现问题的时候需要考虑下面几个问题:


1、可以在程序加入BDC的模式选择,默认为N模式,但是可以选择A模式,方便调试。当然这个也可以debug进去之后进行改值。


2、LOOP里面有call BDC的情况,在每一次call TRANSACTION 之后,可以适当延时几秒,可以防止在有些t-code过账的时候出现profit center被锁着的情况:

    CALL TRANSACTION 'F-30' USING BDCDATA
                            MODE  P_MODE
                            MESSAGES INTO L_BDCMSG.

    WAIT UP TO p_wait SECONDS.

    有时候,当你直接跑,过账失败,而你debug跑的话就成功,也可以看看是不是锁的问题,然后页可以考虑下对两次生成凭证进行延时。


3、可能会出现的A模式下过账成功,N模式过账不成功:

      原因是:有些事你的BDC在这一屏没有这个字段,然后会返回一个这个字段不存在的S类型的message,然后BDC退出了,就没有完全成功过账。

      同一个屏幕,不同的过账码+科目可能有不同的字段。所以录屏完写程序的时候,这个光标的问题,最好还是要有if判断或者是基本排除光标,这个基本没有用。在写BDC程序的时候,最好自己要对这个t-code的不同条件下会有不一样的屏幕显示有一定的了解,然后写程序的时候一定要注意使用if语句,去判断在这个公司代码下,这个屏幕有没有这个字段。


4、LOOP里面过账完,要记得清BDCDATA,和BDCMESSAGE(这个就是低级错误了)


5、过账完了,生产的message里面,提取凭证号:

       LOOP AT L_BDCMSG.
      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               L_BDCMSG-MSGID
          msgnr               L_BDCMSG-MSGNR
          msgv1               L_BDCMSG-MSGV1
          msgv2               L_BDCMSG-MSGV2
          msgv3               L_BDCMSG-MSGV3
          msgv4               L_BDCMSG-MSGV4
        IMPORTING
          message_text_output WA_LOG-MSG.


其中,L_BDCMSG-MSGV1就是返回的凭证号!

       

6、遇见BDC程序跑了,报错了,最好跑A模式去查看报错处在哪个环节了!


7、一个FB60的BDC程序,有些成功并返回了凭证号,有些成功生成了凭证号,但是没有返回message。

     reason:这种问题通常是一些增强导致。

     方法:在S   F5  312 message前面设断点,然后跑N模式,查看没有返回凭证号的情况,是在前面那里跳出了而没有跑这个312的message。通常都是增强导致。(遇到一个是增强里面的更新表,然后commit work的时候直接跳出了,但是实际表已经更新成功了。因为modify是不需要commit work的。因为通过call transaction FB60的话,里面有个选项opt,通过这个选项可以选择执行commit work是否跳出。这也就是为什么FB60直接跑这段,即使有commit work也没有问题,但是通过call transaction会有问题。)



8、





  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ABAP程序中的BDC(Batch Data Communication)代码开发主要是为了处理大批量数据的输入或修改。下面是BDC代码开发的全过程: 1. 定义BDC数据结构:首先需要定义一个数据结构,用于存储要导入或修改的数据。这个结构通常是一个内表,包含了程序需要处理的字段。 2. 读取数据源:接下来,从数据源中读取数据。数据源可以是数据库表、Excel文件或其他外部系统。 3. 编写转换逻辑:在BDC开发中,通常需要进行数据转换,将数据源中的数据映射到ABAP程序的数据结构中。这个过程中,需要根据业务需求对数据进行一些处理,比如日期格式转换、数值转换等。 4. 创建BDC会话:接下来,需要创建一个BDC会话。BDC会话是ABAP程序与事务处理之间的桥梁,用于处理事务数据的导入或修改。 5. 输入或修改数据:通过BDC会话,将转换后的数据导入到SAP系统中。如果是数据导入,可以使用BDC方法CALL TRANSACTION来执行事务代码。如果是数据修改,可以使用BDC方法CALL TRANSACTION USING来执行事务代码。 6. 错误处理:在BDC开发中,由于可能存在各种错误,如数据格式错误、字段缺失等,所以需要对错误进行处理。可以使用BDC方法SESSION_SET_BIG_INTERVAL来设置一个长时间间隔,然后检查和处理错误信息。 7. 提交和确认:在数据导入或修改完成后,需要使用BDC方法SESSION_CLOSE来提交事务,并通过BDC方法SESSION_PROCESSING提交数据更改。然后,可以检查和处理事务的结果。 8. 清除会话:在处理完BDC会话后,需要使用BDC方法SESSION_CLOSE来清除会话,以释放相关的资源。 以上是ABAP程序BDC代码开发的全过程。通过合理的数据结构定义、数据源读取、转换逻辑编写、BDC会话创建和数据处理,可以实现大批量数据的输入或修改。同时,错误处理和会话清除也是不可忽视的步骤,以确保数据的完整性和准确性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值