关于 Function Module 这个技术点,在面试过程中一般会考察以下几个问题:
一般会问到异步和事务(逻辑单元 LUW),异步函数的调试方式、SM13监控更新函数的执行过程(V1 与 V2 模式 )。
传入对象参数时,方法体中不可以改,传入值时,方法体中可以改,远程和更新模式只能传输值。
同步RFC , 异步RFC , 事物RFC , 队列RFC , 并行RFC
同步RFC , synchronous RFC
异步RFC , asynchronous RFC , 多并发调用
事物RFC,transactional RFC,多并发调用,多个调用进行LUW分组处理
队列RFC,queue(d) RFC , 多并发调用,多个调用进行LUW分组处理,保证了所传输数据的处理次序
并行RFC ,Parallel RFC , 多并发调用,可以同事处理多个异步RFC
有些面试官会问,有没有处理大数据的经验,也就时说一次性从第三方系统中抛2W个订单,SAP RFC函数将如何处理?
使用并行RFC + 异步RFC , 所谓面试造火箭,入职后搬砖,不需要太纠结与实现细节,点到为止!
5.1 SAP Function Module ,有三种 处理类型 ,分别是:常规、远程和更新模式,常规更新模式最常使用,方法体中的代码逻辑一般是写查询逻辑,第二种是‘远程模式’,远程更新模式它的使用场景一般是给外部系统调用,通过 jco 包进行联接( 如:和WMS、MES系统的联接 );第三种是 ‘更新模式’ 。
5.2 SAP Function Module ,三种 处理类型的调试模式也是不一样的,‘ 常规模式 ’调试时,设置内部断点、‘远程模式’设置 远程断点,但需要指定调式账号,即第三系统对SAP系统连接池中的账号,更新模式调试时,要开启更新调试模式,利用SM13监控更新过程,如果更新失败在SM13中会留下记录,进去看日志排查问题。
5.3 通过一个真实案例说明Update Module模式的重要性,笔者当年在某电池厂搬砖时,他们用ABAP语言研发了一套WMS系统,当中设计了一些自定表,有主从关系、联接关系等等,在更新时很少使用更新模式的 事务来提交更新,而是用普通函数来处理更新,最后导致的问题是,有几张自定义表的数据被脏读了,时不时出错。做为新人这种锅理所应当被顶了上去,通过分析,在50多处的自定义表前、后打上Log,用json String 的方式存储下来,通过分析相近时间的日志排查可能发生脏读数据的位置,然后进行修改.
5.4 更新模式实验
5.4.1 Modify 1 ,Modify 2 执行完后,提交 LUW .
5.4.2 提交数据更新,底表产生数据
5.4.3 TEST函数 ,同步更新案例
5. 4.5 TEST函数,异步更新 添加 IN UPDATE TASK ,异步函数调试
5.4.7 实验结论:在一个事务中提交 的异步方式处理案例: