SAP工具箱 自动生成发出接口程序(二 接口定义表)

2021-10-28 22:48发布


          点击此处--->   EasySAP.com 群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)

点击蓝字 关注我们

前言

前文介绍了发出接口程序的执行原理及怎么自动生成发出接口程序.

详见链接
无峰,公众号:ABAP 技巧与实战SAP工具箱 自动生成发出接口程序(一)

本文主要介绍生成发出接口程序时使用的基本配置表ZTIF002中的字段及用法


接口表定义表

接口定义表ZTIF002. 用来记录所有的接口信息,并通过特定的字段控制接口的行为.


01

JIEKNO


JIEKNO 接口编号


02

JIEKNM


JIEKNM 接口描述


03

01

请输入标题

EXSYS


EXSYS 外部系统

接口对应的外部系统.这里的接口不包含外部系统之间的接口. 只包含ECC/S4 和外部系统之间的接口.所以通过外部系统编码标识接口对应的外部系统(外部系统登记在表ZTIF001中)


04

JIEKNO_COMM


JIEKNO_COMM 通用接口编号

底层使用的接口编号. 比如外部系统传到ECC创建商品凭证接口,底层接口编号BC010, 该接口中也有个接口编号字段.用于区分不同业务:比如盘点接口使用MM120 报损业务 MM121 收货MM122 等.

这样可以通过接口编号区分不通的业务, 同时这些不同的业务实际上又使用了同一个底层接口传递商品凭证.

配置通用接口编号,以便ZIFLOG中能解析并查看消息内容


05

IFDIR


IFDIR 接口方向:I/O

I 入站 O 出站 该字段会影响通用编码转换逻辑:出站会使用字段域定义中的转换函数转出(比如去掉前置0),入站会使用字段域定义中的转换函数转入(比如添加前置0),接口方向一定不能定义错误.如果出现了不必要的转换, 可以使用一个不带域转换函数的域来定义数据,避免自动转换逻辑生效

自动转换逻辑调用了类方法 

ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT 和AUTO_CONVERSION_EXIT_OUTPUT

一般情况下,RFC函数创建的接口都是入站接口. 但是也可以把外部系统接口调用封装到一个RFC函数中给ECC系统调用, 此时该RFC函数是出站接口


06

IFTYP


IFTYP 接口类型(M 主数据 D 单据)

仅标记一下是主数据还是单据接口, 无实际控制作用. 主数据接口可能通过一个接口编号群发给多个系统. 单据接口不能群发,只会通过特定的接口编号发送或分发到一个系统


07

IFASY


IFASY 异步接口标记 标记接口是异步接口, 无标记则是同步接口. 一般同步接口无需通过PO. 异步接口必须通过PO.


08

MABIAO


MABIAO 是否码表接口(停用)


09

CHTAB


CHTAB 变化点记录的表(如果没有维护下传控制表,则按所有数据比较是否改变, 如果改变传输所有数据)

下传控制表的命名规则ZTIF<主表> .

比如商品主表 MARA 下传控制表 ZTIFMARA

采购订单主表EKKO  下传控制表 ZTIFEKKO


10

KEYFT


KEYFT 关键字过滤标记(停用)


11

MAXLN


MAXLN 每个消息最大传输的条目数

用于控制传出程序每个消息中的最大条目数,如果配置了该值并且选择屏幕中的最大条目数>该值,则替换成配置的最大条目数,如果没有配置,按程序选择屏幕中的设置


12

CONVERT_UNIT


CONVERT_UNIT 数量转换为基本单位数量(维护接口的商品/数量/单位的字段名, 用/分割).

在通用转换类方法

ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_OUTPUT中会使用这个逻辑,用来把数量转换成基本单位数量. 这里维护接口中商品/数量/单位的字段名

比如: MATNR/MENGE/MEINS

这个转换逻辑用处不太大,一般的单据都有单据数量和基本数量. 比如交货单 LIPS-LFIMG 是单据数量  LIPS-LGMNG 是基本数量. 接口中可以直接传输LIPS-LGMNG.表示传输的基本单位数量.如果单据没有基本单位数量. 则可以通过这个配置执行数量转换.


13

ACTIV


ACTIV 接口活动标记

用于标记接口活动,没有设置该标记的接口无法执行(传出接口会报错并中断执行,传入接口会在SXI_MONITOR中报错),可以通过设置该字段为空停止传出或传入接口的执行.




14

ZQKTZ


ZQKTZ 账期可调整标记

影响小票/商品凭证相关接口

特定接口中实现该逻辑:如果发现单据中账期已经关闭,则调整为当前月的第一天.这样避免账期关闭而报错(该逻辑个别项目使用)


15

NODUP


NODUP 不检查单据重复

上传接口默认都会检查单据是否重复.允许通过配置取消重复性检查.

上传接口在PROXY中调用对应函数产生IDOC ,比如商品凭证调用函数Z_CREATE_IDOC_OF_MB产生商品凭证的IDOC

产生IDOC时通过函数Z_CHECK_IDOC_DUPLICATE检查IDOC是否重复产生.如果重复,调整IDOC的消息类型(EDIDC-MESTYP)为ERROR_DUP 这样后续执行IDOC时报错.

通过如下字段检查重复性

  • EDIDC-REFINT  接口编号

  • EDIDC-RCVPRN  合作伙伴(客户或逻辑系统)

  • EDIDC-SNDLAD  外部单号

  • EDIDC-SNDSAD  地点

  • EDIDC-REFMES  外部单号对应多个IDOC时,添加识别序号


16

WDATA


WDATA 接口内容记录在表 ZTIF_LOG_DATA中

标记后的RFC函数的传入参数和传出参数内容会写入表ZTIF_LOG_DATA中. 后续可以通过ZIFLOG查询内容.对于使用PO的接口,该字段无意义.


17

WIFLOG


WIFLOG 写入接口控制日志表ZTIF_LOG标记.

通过程序ZIFLOG可以监控接口的执行情况及接口传输的数据内容


18

JKTYP


JKTYP 地点库位检查(单据类接口的地点库位检查逻辑)

单据类的接口有时需要按地点/库位识别该单据是否需要通过特定接口传输.

  • 空 地点/库位检查维护的服务器对应的系统ID与接口的系统ID一致. 如果地点/库位.在字段在单据记录下传控制表的保存函数中使用.

  • A 地点/库位检查T001L-ZWHSY 非空(WMS接口)

  • B 地点/库位检查t001l-ZZXS = 'A'(线上系统接口)

  • C 地点/库位检查T001L-ZZSX = 'Z'(中台系统接口)

  • D 不执行地点/库位检查


19

TZMSG


TZMSG 消息通知类接口标记

因为使用了接口体系在单据保存时记录了需要自动发送的邮件信息,所以需要标记一下该接口是消息通知类,这样在单据保存时,会写入表 ZTMSG_H/ZTMSG_I 后续通过程序ZREP_SEND_MAIL_1                 邮件发送程序 统一发送邮件

比如交货单过账后,邮件通知相应的人员给交货单已经过账(物流已经发出货物)


20

SYSCT


SYSCT 群发系统数(涉及外围系统的服务器个数)

当主数据群发的时候, 每个接收系统都需要有一个成功的反馈,为了确保所有系统都成功的收到.需要用成功反馈的个数和系统个数比较,如果成功反馈的个数>=系统个数,才会认为所有的系统都接收到了. 才能够标记数据发送成功(体现在下传控制表RSTATUS字段 比如ZTIFMARA-RSTATUS . 同时ZIFLOG在界面也会显示(消息成功响应标记 FLAG_ACK = 'X' )

如果未设置,视同为1处理

关于系统消息的反馈详见链接
无峰,公众号:ABAP 技巧与实战PO系列之 消息的确认反馈



21

SAVE_PROC_LOG


SAVE_PROC_LOG 写入下传控制表过程记录日志(单据)

对于单据类的接口, 单据在保存时根据过滤条件写入下传控制表. 这个标记用来控制是否把过滤的过程写入标准日志. 如果标记了. 可以使用TCODE SLG1 查询对象ZIF 获取日志信息,查看单据没有写入下传控制表的原因


22

FUNCNAME


FUNCNAME 函数名


如果是RFC函数定义的同步接口,可以在此维护一个函数名, 如果函数名为空, 默认会按照命名规则Z_IF_<接口编号> 生成一个函数名. 在监控程序ZIFLOG中使用. 通过函数名读取函数的参数信息,以便读取保存的参数值呈现出来


23

DPATH


DPATH 下载路径/发布的webservice

特殊情况下使用. 

对于传出接口,用于记录对方的服务调用路径. 

比如外围系统发布了一个服务 http://testwb.xx.cn/<动态部分> .PO调用对方服务的时候,需要通过接口传输的动态路径拼出最终调用的服务路径

对于传入接口, 则用于记录PO产生的webservice的wsdl定义地址或http调用地址


24

PREFIX


PREFIX 文件名前缀

对于文件类接口(不通过PO),记录该文件名的前缀.


25

MAILADD


MAILADD 邮箱地址(停用)


26

LIFNR_FLAG


LIFNR_FLAG 供应商转换标记

把对方传输的外部供应商编码转换成SAP供应商,外部供应商编号记录在but000-bpext中

转换逻辑写在底层转换方法

ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT中


27

WERKS_FLAG


WERKS_FLAG 地点转换标记

把对方传输的外部地点编码转换成SAP地点编码,外部地点编码记录在T001W-ZJMDH中

转换逻辑写在底层转换方法

ZCL_DATA_HELPER=>AUTO_CONVERSION_EXIT_INPUT中


28

DISP_METHOD


DISP_METHOD接口发送特性(停用)


29

CAN_COMPARE


CAN_COMPARE 接口可比较标记(单据类的可以通过ZIF_COMPARE比较单据的发出,收到情况)

单据类的接口在发出或者接收时会根据配置写入表 ZTIF_COMPARE中. 然后外部系统通过接口BC000传回单据的接收或发送信息. 这样表ZTIF_COMPARE中对于ECC发出的单据或者ECC接收的单据就会记录完整的发出,接收信息. 

通过报表ZIF_COMPARE可以监控单据的发出接口情况. 对于只有发出,没有接收的单据需要检查是否因为PO的原因或者其它原因没有传输到目标系统. 有利于快速发现传输失败的单据.


总结

自动生成发出接口程序和传入接口模板要求接口编号必须登记在接口定义表中. 这样就可以通过该表查看系统中的所有接口信息.

接口定义表对传出接口和传入接口都有控制作用.

接口定义表中整合了许多和接口相关的控制信息,这些控制方式在不同的项目中提出并整合到这个表中. 有些控制有通用价值,得以保留,有些没有通用价值,逐渐废弃.

THE

END


约定

如果你对这篇文章感兴趣,请帮忙点赞,在看,分享.       

    (如果你真的喜欢这篇文章,请记得回来打个赏,作为支持我继续下去的动力,这是一个正反馈过程. 越多的人打赏,作者越有动力分享,读者就能享受更多的福利.毕竟打赏的金额富不了我,穷不了你,却能支持这个公众号长久发文.)



公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077


请微信联系管理员: 

  • syjf1976 

  • sharry_xlp  

  • Yannick_Duan 

申请进入公众号讨论群提问或参与话题讨论

赞赏支持