# SAP工具箱 自动生成发出接口程序(三 配置表)
原创 无峰 [ ABAP 技巧与实战 ](javascript:void\(0\);)
__ _ _ _ _
**点击蓝字** 关注我们
一
前言
前文讲了自动生成发出接口程序的基本操作及接口定义表的用处
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 自动生成发出接口程序(一)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486814&idx=1&sn=776ec5144823fd226b64caf7bad4b477&chksm=cf5dd068f82a597ee469a84d23b4c009720402203f05fe2b072e26496f6b699514e2f26404fb&token=1013717656&lang=zh_CN&scene=21#wechat_redirect)
> 详见链接 无峰,公众号:ABAP 技巧与实战 [ SAP工具箱 自动生成发出接口程序(二 接口定义表)
> ](https://mp.weixin.qq.com/s?__biz=Mzg4MjA1MjE4NQ==&mid=2247486828&idx=1&sn=6fac56b114fa061e86cca150508e0a7f&chksm=cf5dd05af82a594c7e16ebe585f5ccb146227c7fb0601bd2d3c9ea26a959b7c9071195bb2770&token=1013717656&lang=zh_CN#rd)
**本文主要介绍自动生成发出接口程序的几个配置表**
二
相关配置表
• ZTBC122C1 配置接口下传程序
• ZTBC122C2 配置接口下传程序:数据来源表
• ZTBC122C3 配置接口下传程序:对应的表的关联关系
• ZTBC122C4 配置接口下传程序对应的表字段
三
ZTBC122C1
配置接口下传程序
_**01** _
**JIEKNO**
JIEKNO 接口编号
_**02** _
**ZISED**
ZISED 接口的发送系统
_**03** _
**ZIRCV**
ZIRCV 接口的接收系统
_**04** _
**JIEK_TYPE**
JIEK_TYPE 下传接口的类型
• S单表结构类型 . 数据通过一个单表结构下传 图三
• M主从结构类型 . 对方是webservice 或http ,行项目是抬头中的一个节点与抬头字段并行 图四
• P主主结构类型(行项目和抬头并列,行项目中需包含抬头的单号,用于JDBC写入中间表) 图五
• Q主从->单表(接口程序配置中定义为主从表,但是PO定义为单表)(该模式不再需要,优化了下传控制表的主键识别)
_**05** _
**TCODE**
TCODE 事务代码
指定下传程序生成的事务代码,命名规则: Z<接口编号>
_**06** _
_**01** _
**请输入标题**
**TITLE**
TITLE 报表标题(中文)
_**07** _
**TITLE_E**
TITLE_E 报表标题(英文)
_**08** _
**FROM_TCODE**
FROM_TCODE 报表标题来自TCODE的文本(根据登陆语言获取不同语言的文本)
因为报表标题只有中文TITLE和英文 TITLE_E, 为了支持更多的语言, 允许翻译TCODE. 然后从TCODE获取特定语言的描述作为报表标题
_**09** _
**WRITE_COMPARE**
WRITE_COMPARE记录接口比较表(写入表ZTIF_COMPARE)
标记后,单据类的接口下传时可以把单号信息写入表ZTIF_COMPARE中的记录发出.
对方系统再通过BC000接口把所有接收到的单号传给ECC,记录在表ZTIF_COMPARE中的接收信息.
这样可以快速验证单据的传递(发出,接收都有则表示成功,否则表示有问题,需要考虑一个延迟时间).
**_10_ **
**CHTAB**
CHTAB 变化点记录的表(如果没有维护下传控制表,则按所有数据比较是否改变, 如果改变传输所有数据)
**_11_ **
**CHMETHOD**
CHMETHOD 无下传控制表的变化量下传方式(单表结构使用)
如果没有下传控制表(配置类的表,码表等).可以使用下面几种方式获取变化量.
获取变化量的基本逻辑:每次下传都记录该接口已经传输的数据, 本次获取的数据和历史已传输数据比较,获取变化的数据.
• 空 存在变化获取使用全部数据
• E 增强获取变化量(生成的SQL语句不执行. 在ZBC122_XXXXX_51中自定义代码获取变化量,不和历史记录比较)
• X 存在变化只获取变化部分的数据(如果想识别删除的部分,必须在添加删除标记字段DEL_FLAG)
• Z 联合下传控制表使用(从下传控制表获取的变化量,再次检查与上次下传数据是否一致)
**_12_ **
**DISTRIBUTE**
DISTRIBUTE 分发标记(接口涉及到分发到不同的系统,需设置该标记)
一般情况下, 对于单据可能使用分发, 对于主数据可能使用群发
分发: 按特征把数据发到特定的服务器
群发: 把数据发给多个服务器
**_13_ **
**DIST_FIELDNAME**
DIST_FIELDNAME 分发的系统识别字段名
分发系统识别的特征. 该特征字段最好放到单据的抬头. 值会在在PO中配置接收方时使用.
**_14_ **
**LOCK_FUNCTION**
LOCK_FUNCTION 加锁函数名
为了避免接口传出时,用户恰好在调整数据,从而导致调整的数据记录的变化被覆盖.导致改变的内容没有传出. 需要在数据下传时加锁,避免下传的同时修改数据
数据量较大时,加锁可能会导致锁空间溢出. 在选择屏幕上可以控制是否加锁
**_15_ **
**DYNAMIC_URL**
DYNAMIC_URL 动态URL(无控制作用,仅作说明用)
**_16_ **
**MD5_SIGN**
MD5_SIGN MD5签名
**_16_ **
**ORDFLG**
ORDFLG主数据下传标记(主从结构或分发的主数据设置该标记后, 限制每个消息中的行的个数)
**_17_ **
**JIEKNO_PO**
JIEKNO_POPO接口编号, 如果为空, 则取接口编号. 用于解决多个接口程序调用一个PO接口
如果多个下传程序需要调用同一个PO接口, 可以在这里定义PO的接口编号.
比如销售订单,
调拨单需要通过同一个接口传出到目标系统.因为销售订单,调拨单是不同的的表及下传控制表记录数据,所以必须配置生成两个程序,但是这两个程序可以使用同一个PO接口传输数据.
四
ZTBC122C2
配置接口下传程序:数据来源表
通过该配置,确定接口要发出的数据来源.
FTABALIAS 表的别名.如果关联中同一个表使用多次, 需要使用别名区分这个表的每次使用.
一般关联合作伙伴时会用到别名. 因为多个合作伙伴都保存在KNVP中,通过合作伙伴功能PARVW区分. 如果在单据抬头需要获取送达方/开票方,
需要多次关联KNVP . 每次关联限制不通的合作伙伴类型
五
ZTBC122C3
配置接口下传程序:对应的表的关联关系
• JOIN_GROUP 如果两个表存在多个连接条件, 需要配置成相同的分组.
• INNERJOIN 默认 INNER JOIN . 标记X 后表示LEFT JOIN .
• ADD_JOIN_COND 关联表的附加条件. 比如 MARA关联MAKT ,因为MAKT中有多个主键, MATNR SPRAS . 为了避免产生过多的数据, 需要限制SPRAS = '1' 只获取中文描述.
六
ZTBC122C4
配置接口下传程序对应的表字段
_**01** _
**JIEKNO**
JIEKNO 接口编号
_**02** _
**FTABL**
FTABL 表名或表的别名(如果在C2表中配置了表的别名, 则使用表的别名),如果表名为空, 则不从数据库获取
_**03** _
**FNAME**
FNAME 字段名称
_**04** _
**TOLEV**
TOLEV 字段在接口的层级(单表结构类型的默认位H)
一般情况下, 从抬头表获取的字段设置H . 从明细表获取的字段设置I . 但是有时接口文档中会把明细表的字段放到抬头, 比如 地点
放到抬头(需要限制单据只有一个地点). 此时需要设置字段为H 表名该字段需要放到抬头表中.
_**05** _
**FNAME_ALIAS**
FNAME_ALIAS 字段别名(允许为空)
如果多个表存在相同的字段名需要引入接口 或者接口中的字段名不同于表中的字段名,都需要给字段一个别名.
_**06** _
**SELNAME**
SELNAME 选择屏幕字段的名称(当字段名大于7个字符,需要命名一个选择字段的短名称)
选择字段长度不能超过9 去掉默认前缀 S_ 选择条件字段需要一个小于7位的短名称.
_**07** _
**SELPOS**
SELPOS 选择屏幕字段存在
设置字段为选择字段
一般需要把关键字设置成选择字段, 也可以根据情况把日期,类型,组织机构等设置为选择条件,用于手工下传时限定数据选择的范围.
_**08** _
**SEL_POS**
SEL_POS 选择字段的位置
用于设置选择字段在选择屏幕中的位置
KEYFLAG
KEYFLAG关键字
标记字段是关键字
_**09** _
**DUPKEY**
DUPKEY 重复项识别标记
大部分时候,重复项识别的字段等同于关键字, 可以不用设置, 特殊情况,重复项识别的字段不同于关键字, 此时可以设置重复项识别标记,让系统删除重复项.
**_10_ **
**NOT_NULL**
NOT_NULL 字段非空标记(用来标记不允许为空的字段)
有时候目标系统会限定字段非空才能传输. 可以按目标系统的非空标记配置.配置了非空的标记的字段,如果内容为空, 该数据会直接标记错误,
不会传出.如果接收方是JDBC写入数据库,表字段定义了NOT NULL . 则必须设置这个标记, 否则接口JDBC写入目标数据表时会报错
_**11** _
**STRING_LENGTH**
STRING_LENGTH 字段长度限制
目标系统中的字段可能和ECC系统不一致. 如果是JDBC写入目标表,超过长度会导致PO端口报错.此时可以配置一个最大长度,让程序截尾,避免PO报错.
**_12_ **
**FTEXT**
FTEXT 字段描述(中文)
**_13_ **
**FTEXT_E**
FTEXT_E 字段描述(英文)
FROM_DB
FROM_DB字段描述来自数据元素的文本(根据登陆语言获取不同语言的文本)
**_14_ **
**REF_TABLE**
REF_TABLE ALV 控制: 内部表字段的参考表名称
如果需要添加一个不在表中的字段,然后通过特定逻辑给该字段赋值,则需要设置参考表及参考字段,用来确定添加字段的类型信息. 一般会使用 ZSIF_REF
作为参考表.该结构中添加了很多常用的字段定义
**_15_ **
**REF_FIELD**
REF_FIELD ALV 控制: 内部表字段的参考字段名称
**_16_ **
**OBLIGATORY**
OBLIGATORY 必输标记
设置后,选择条件必须输入
**_17_ **
**NO_DISPLAY**
NO_DISPLAY 选择字段不显示
设置后,选择条件不显示
**_18_ **
**MEMORYID**
MEMORYID 设置/获取参数标识
选择条件的默认值来自参数ID
**_19_ **
**MATCHCODE**
MATCHCODE 选择字段的搜索帮助
设置选择条件的搜索帮助. 一般情况下,数据元素中会定义一个搜索帮助, 选择条件默认使用该搜索帮助, 如果需要给选择条件指定一个搜索帮助. 可以设置一下.
**_20_ **
**SEL_VALUE**
SEL_VALUE 默认选择内容: 仅支持单值或多个单值-通过/分割多个单值
设置选择条件的默认选择内容,与NO_DISPLAY 共同使用,可以给查询逻辑设置默认限制条件.
_**21** _
**SEL_VALUE_COMPLEX**
SEL_VALUE_COMPLEX 复杂选择内容设置标记(到通用配置表 ztbc_select_opt 中配置)
ZTBC_SELECT_OPT 是一个底层表,可以为所有通过ZBC121_CONFIG/ ZBC122_CONFIG 生成的程序设置默认选择条件.
**_22_ **
**SEL_AFTER**
SEL_AFTER 选择条件后置(选择条件放在获取数据之后执行)
**_23_ **
**AUTHCHK**
AUTHCHK 授权检查标记
.textContent = new Date().getFullYear();