ABAP RFC接口程序设计(client) james_lx版

经过1年的实践,多次处理RFC接口相关程序后,我发现可以提出一个RFC标准设计模式(CLIENT方式),用于以后的接口程序设计。该模式主要运用于:外部数据传入SAP系统,SAP系统处理后返回结果,这样的场景。外部系统数据进入,是基于RFC函数的。数据通过RFC的参数传入SAP系统。

 

RFC函数的程序代码做如下事情:

 

  1. 数据变量定义
  2. RFC传入参数检查
  3. 传入的数据,系统时间,自动编号等数据组装到日志表前部分数据中
  4. 保存日志表前部分数据到日志表
  5. 调用SAP系统功能完成数据处理
  6. 第5步的结果保存到日志表的后部分字段中并写入RFC返回的参数中。

 

我们以一个实际的RFC程序例子来说明:

 

示例RFC程序:  ZSD_IF_FM020 销售订单数量修改及关闭

RFC业务背景: 在DMS销售系统,某销售订单数量被更改或打上关闭标识,这个数据需要从销售系统传到ERP系统中,使ERP系统中做相应的修改。

 

 

RFC函数涉及数据表:


中文名称



程序中名称



类型



RFC传入数据表



GT_ITEM



内表



RFC 返回数据表



GT_RETURN



内表



日志表



ZSD025



透明表


 

*该RFC函数涉及2个变量,都是内表格式。

 GT_ITEM放的是DMS向ERP修改销售订单的数据,

而GT_RETURN用于ERP接口做完事情后,返回给DMS的消息数据。

ZSD025日志表用来记录RFC工作的过程,用于用户以后随时监控该接口的工作情况。 

 

RFC函数ZSD025日志表字段:


客户端



日志表前部分



ID



创建记录的用户



创建记录的日期



创建记录的时间



销售和分销凭证号



物料号



数量



销售凭证项目



订单状态(N不变,U修改,D删除)



日志表后部分



处理标志



处理日期



处理时间



消息文本


 

*在日志表的前部分字段,用于记录DMS数据传入了ERP系统。

日志表的后部分字段,是等待RFC函数中主要的工作(修改了ERP系统中的销售订单数据)完成后,记录到日志表。

 

处理日志表的前部分代码,业务逻辑简单,代码也相应简单,几乎不会出错。

而RFC在修改ERP内的销售订单(或其它复杂的处理)时,会调用ERP系统功能,不排除有出错或系统DUMP的可能。如果出现任何问题或影响到后面的代码都不能执行,我们也可以清晰的从日志表前部分看到发生了什么。

 

因为这样设计,日志表的前部分和后部分夹作复杂的代码,复杂代码如果异常,可以从前部分看到RFC是要处理的记录。

 

ABAP 的OPENSQL,Modify命令非常有意思, 它会检查数据库表的数据,是否是已经有的(主键),如果有,接下来它会修改这一条数据。

 

这个Modify命令正好和我们的日志保存功能配合:

 

第一次我们对日志表写入了前部分数据。

ERP代码处理

第二次我们对日志表写入后半部分数据,使用Modify命令。