SAP工具箱 自动生成发出接口程序(三 配置表)

2021-10-28 23:02发布


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

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

点击蓝字 关注我们


前言

前文讲了自动生成发出接口程序的基本操作及接口定义表的用处

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

本文主要介绍自动生成发出接口程序的几个配置表



相关配置表

  • 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 授权检查标记


24

SQL_EXPRESSION


SQL_EXPRESSION 字段的SQL表达式(配置字段的SQL表达式 :比如 a+b case  默认值等处理)


25

COMPUTE_FORMULA


COMPUTE_FORMULA 计算公式(合计后, 用于字段内容的计算,可以使用其它字段 比如 = F1 + F2 ),注意:字段必须时输出字段


26

COMPUTE_SORT


COMPUTE_SORT 计算公式的顺序

当多个字段存在计算公式,并且这些计算公式有依赖关系时, 需要给计算公式指定执行顺序,以便能够正确的执行出所需的数据内容.


27

CONV_RULE


CONV_RULE 字段的特殊转换规则(区分获取规则,转换规则)

转换规则可以给字段设置一个特定的内容转换方式. 转换规则代码写在类方法中.

ZCL_DATA_HELPER =>AUTO_CONVERSION_IF_OUTPUT

新增一个转换规则需要同时修改方法中的代码及修改域值定义

目前已经给出了一些常用的转换.

某些特定的转换需要使用辅助参数 RULE_PAR1  RULE_PAR2


28

RULE_PAR1


RULE_PAR1 规则的输入参数1-数字

在特定的转换规则中辅助计算转换结果


29

RULE_PAR2


RULE_PAR2 规则参数(字符)

在特定的转换规则中辅助计算转换结果


30

CONV_FUNC


CONV_FUNC 转换函数(暂无此功能)

总结

自动生成发出接口程序是项目中无代码的一种尝试.所有接口中执行中实际碰到的问题,都尝试通过配置解决. 因此配置表中有很多字段.对接口行为起到不同的作用. 

通过程序ZBC122_CONFIG整合了这些配置表的维护及程序的生成及传输过程. 

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

有些配置直接生效, 有些配置通过生成的代码生效. 为了避免错误,修改配置后最好重新生成一下程序. 

THE

END


约定

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

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



公众号 : syjf1976_abap

          ABAP开发技巧

微信号 : 392077


请微信联系管理员: 

syjf1976 

sharry_xlp  

Yannick_Duan 

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


赞赏支持