SAP BAPI 特殊字段(增强字段及标准结构中不存在的字段)传值常用方式

背景:在SAP 中通过开发程序创建业务单据算是很常见的一种开发方式,常见的为BDC以及标准功能函数/方法(含BAPI)。但是使用标准功能函数时会发些最终业务表的字段或者增强字段并不在传入参数中,这时候就需要想办法将这部分字段通过一些方法实现传入至最终的单据表中。这里大致总结了如下几种方法思路。

一、BAPI 增强传输参数extentionin 

属于最常用的一种方式,其中可以分为两类,第一类是增强结构SAP系统已经预留,只需要根据extentionin 字段的长文本描述按要求传参即可

比如采购订单创建 BAPI BAPI_PO_CREATE1,如下图长文本说明,只需要对应将要传输的字段填充到对应结构中并在extentionin 中传入

SAP BAPI 特殊字段(增强字段及标准结构中不存在的字段)传值常用方式_第1张图片

销售订单创建BAPI BAPI_SALESORDER_CREATEFROMDAT2 的EXTENSIONIN 参数长文本如下,清楚的说明了业务表和参数结构的关联,需要注意的是一些多表共存的字段,如PODKZ

SAP BAPI 特殊字段(增强字段及标准结构中不存在的字段)传值常用方式_第2张图片

第二类需要自己自定义增强结构,然后在BADI中处理增强字段,常见的为会计凭证创建的bapi BAPI_ACC_DOCUMENT_POST,其中长文本中也有做出说明,需要定义好结构,剩下的逻辑通过实施BADI ACC_DOCUMENT来实现

SAP BAPI 特殊字段(增强字段及标准结构中不存在的字段)传值常用方式_第3张图片

但是也有部分BAPI 的扩展字段找不到长文本,需要进一步判断,比如预留单创建BAPI_RESERVATION_CREATE1

详情见https://mp.csdn.net/editor/html/109382523

二、直接在传入结构中附加需要扩展传输的字段

该种方式比较局限,一般需要满足如下条件

1. 无通用增强扩展参数

2. BAPI参数名和最终业务字段名相同

例子为供应商/客户主数据维护的方法vmd_ei_api=>maintain_bapi/vmd_ei_api=>maintain_bapi

三、通过内存传值,在增强中写入最终结果

该种方式可以说是下下策,一般不建议使用,但是有部分BAPI 不能通过常规方式传输增强字段,

比如发票创建的BAPI BAPI_BILLINGDOC_CREATEMULTIPLE,需要在调用前抛出内存参数,在增强RV60AFZC=>FORM USEREXIT_FILL_VBRK_VBRP 中处理填充逻辑,来实现参数的传递。

 

 

 

你可能感兴趣的:(BAPI,ABAP,abap,sap)