目录
BAPI结构1:T_EINAX (General Data标记)
BAPI结构2:T_EINE (Purchasing Org. Data)
BAPI结构2:T_EINEX (Purchasing Org. Data标记)
BAPI结构3:TXT_LINES (Info Memo and Purchase order text)
BAPI结构4:COND_VALIDITY (Condition validities)
BAPI结构5:CONDITION (Condition details)
BAPI结构6:COND_SCALE_VALUE (Value based Condition Scales=价值阶梯价)
BAPI结构7:COND_SCALE_QUAN (Quantity based Condition scales=数量阶梯价)
业务说明
在实战项目上,存在外部接口业务或批导或功能程序时,需要在开发程序中调用SAP标准业务应用程序接口,就是经常听到的BAPI。SAP给常用的业务都预定义了BAPI,所以有需要的时候,就要找到对应的BAPI。需要对BAPI的结构和字段非常熟悉,否则不能正确的使用BAPI,从而导致各种报错。为了降低测试过程中的报错,需要在写程序前,将需要调用的BAPI使用事务码SE37进行相关测试,以掌握具体的入参和出参等详细数据。
1 BAPI注意事项
采购信息记录创建BAPI有老版本和最新的版本,我们使用最近发布的BAPI版本最佳。
采购信息记录创建和修改: ME_INFORECORD_MAINTAIN_MULTI (RFC Function Module to Create and Change multiple Info Records)
一般新版本的BAPI都带有Testrun结构
主要作用就是给BAPI参数标记上Testrun后,系统就会知识模拟数据创建,不进行后续真实操作。
所以这个BAPI的入参数据都会从表结构中输入,BAPI需要进行数据标识的标记。
2 BAPI基础数据
BAPI功能:采购信息记录创建和修改
BAPI:ME_INFORECORD_MAINTAIN_MULTI
对应前台事务码:ME11-采购信息记录创建 和 ME12-采购信息记录修改
采购信息记录后台表:
EINA: 采购信息记录 - 一般数据
EINE: 采购信息记录 - 采购组织数据
3 BAPI数据结构
EXPORTING:程序将值传给函数模块的导入参数(入参)。
IMPORTING:实际参数会分配给函数模块的导出参数(出参)。
TABLE:函数模块中传递和处理多个记录的数据。
EXCEPTIONS:函数中定义的异常自动分配不同数值(异常)。
BAPI结构1:T_EINA (General Data)
关联类型-表类型:MEWIEINA_MIG_T
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->T_EINA->MEWIEINA_MIG(行类型)
BAPI结构1:T_EINAX (General Data标记)
关联类型-表类型:MEWIEINAX_T
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->T_EINA->MEWIEINAX_TY(行类型)
BAPI结构2:T_EINE (Purchasing Org. Data)
关联类型-表类型:MEWIEINE_T
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWIEINE_TY(行类型)
BAPI结构2:T_EINEX (Purchasing Org. Data标记)
关联类型-表类型:MEWIEINEX_T
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWIEINEX_TY(行类型)
BAPI结构3:TXT_LINES (Info Memo and Purchase order text)
关联类型-表类型:MEWIPIRTEXT_TT
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWIPIRTEXT_TY(行类型)
BAPI结构4:COND_VALIDITY (Condition validities)
关联类型-表类型:MEWIVALIDITY_TT
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWIVALIDITY_TY(行类型)
BAPI结构5:CONDITION (Condition details)
关联类型-表类型:MEWICONDITION_TT
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWICONDITION_TY(行类型)
BAPI结构6:COND_SCALE_VALUE (Value based Condition Scales=价值阶梯价)
关联类型-表类型:MEWISCALEVAL_TT
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWISCALEVAL_TY(行类型)
BAPI结构7:COND_SCALE_QUAN (Quantity based Condition scales=数量阶梯价)
关联类型-表类型:MEWISCALEQUAN_TT
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->MEWISCALEQUAN_TY(行类型)
BAPI结构8:RETURN (Messages)
关联类型-表类型:FS4MIG_T_BAPIRET2
BAPI路径:ME_INFORECORD_MAINTAIN_MULTI->表->FS4MIG_S_BAPIRET2(行类型)
4 BAPI函数调用
采购信息记录创建BAPI: ME_INFORECORD_MAINTAIN_MULTI
CALL FUNCTION 'ME_INFORECORD_MAINTAIN_MULTI'
EXPORTING
TESTRUN =
IMPORTING
ET_EINA =
ET_EINE =
TABLES
T_EINA =
T_EINAX =
T_EINE =
T_EINEX =
TXT_LINES =
COND_VALIDITY =
CONDITION =
COND_SCALE_VALUE =
COND_SCALE_QUAN =
RETURN =
.
CALL FUNCTION 'ME_INFORECORD_MAINTAIN_MULTI'
* EXPORTING
* TESTRUN =
IMPORTING
et_eina = lt_et_eina
et_eine = lt_et_eine
TABLES
t_eina = lt_eina
t_einax = lt_einax
t_eine = lt_eine
t_einex = lt_einex
* TXT_LINES =
cond_validity = lt_cond_validity
condition = lt_condition
* COND_SCALE_VALUE =
* COND_SCALE_QUAN =
return = lt_return.
5 BAPI必要数据
如何快速在BAPI中找到对应的BAPI组件并输入正确的值,就需要弄清楚每个组件的位置路径和名称 对应的前台字段或后台表字段 对应关系。
事务码:ME11进入界面
1处,供应商:661000021
BAPI数据路径: T_EINA->VENDOR
后台表字段和BAPI组件对应关系: EINA-LIRNR <=> BAPI组件-VENDOR
2处,物料号:6630000070
BAPI数据路径: T_EINA->MATERIAL
后台表字段和BAPI组件对应关系: EINA-MATNR <=> BAPI组件-MATERIAL
3处,采购组织:BN01
BAPI数据路径: T_EINE->PURCH_ORG
后台表字段和BAPI组件对应关系: EINE-EKORG <=> BAPI组件-PURCH_ORG
4处,工厂:1087
BAPI数据路径: T_EINE->PLANT
后台表字段和BAPI组件对应关系: EINE-WERKS <=> BAPI组件-PLANT
5处,采购信息记录类别:标准
BAPI数据路径: T_EINE->INFO_TYPE
后台表字段和BAPI组件对应关系: EINE-ESOKZ <=> BAPI组件-INFO_TYPE
EINA采购信息记录-一般数据
6处,采购信息记录类别:标准
BAPI数据路径: T_EINA->SALES_PERS
后台表字段和BAPI组件对应关系: EINA-VERKF <=> BAPI组件-SALES_PERS
7处,采购信息记录类别:标准
BAPI数据路径: T_EINA->TELEPHONE
后台表字段和BAPI组件对应关系: EINA-TELF1 <=> BAPI组件-TELEPHONE
EINE采购信息记录-采购组织数据
1处,计划交货时间:1 天
BAPI数据路径: T_EINE->PLND_DELRY
后台表字段和BAPI组件对应关系: EINE-APLFZ <=> BAPI组件-PLND_DELRY
2处,采购组:BN1
BAPI数据路径: T_EINE->PUR_GROUP
后台表字段和BAPI组件对应关系: EINE-EKGRP <=> BAPI组件-PUR_GROUP
3处,标准数量:1
BAPI数据路径: T_EINE->NRM_PO_QTY
后台表字段和BAPI组件对应关系: EINE-NORBM <=> BAPI组件-NRM_PO_QTY
4处,最小订单数量:1
BAPI数据路径: T_EINE->MIN_PO_QTY
后台表字段和BAPI组件对应关系: EINE-MINBM <=> BAPI组件-MIN_PO_QTY
5处,基于发票的收货验证:X
BAPI数据路径: T_EINE->GR_BASEDIV
后台表字段和BAPI组件对应关系: EINE-WEBRE <=> BAPI组件-GR_BASEDIV
6处,确认控制:0004
BAPI数据路径: T_EINE->CONF_CTRL
后台表字段和BAPI组件对应关系: EINE-BSTAE <=> BAPI组件-CONF_CTRL
7处,税码:J2(百分之13进项税)
BAPI数据路径: T_EINE->TAX_CODE
后台表字段和BAPI组件对应关系: EINE-TELF1 <=> BAPI组件-TAX_CODE
8处,采购信息记录价格:113
BAPI数据路径: T_EINE->NET_PRICE
后台表字段和BAPI组件对应关系: EINE-NETPR <=> BAPI组件-NET_PRICE
9处,货币单位:CNY
BAPI数据路径: T_EINE->CURRENCY
后台表字段和BAPI组件对应关系: EINE-WAERS <=> BAPI组件-CURRENCY
10处,价格单位:1
BAPI数据路径: T_EINE->PRICE_UNIT
后台表字段和BAPI组件对应关系: EINE-PEINH <=> BAPI组件-PRICE_UNIT
11处,订单价格单位:EA
BAPI数据路径: T_EINE->ORDERPR_UN
后台表字段和BAPI组件对应关系: EINE-BPRME <=> BAPI组件-ORDERPR_UN
A017采购信息记录-价格条件有效期
1处,采购信息记录价格条件有效期-起始日期:20250108
BAPI数据路径: COND_VALIDITY->VALID_FROM
后台表字段和BAPI组件对应关系: A017-DATAB <=> BAPI组件-VALID_FROM
2处,采购信息记录价格条件有效期-终止日期:20251231
BAPI数据路径: COND_VALIDITY->VALID_TO
后台表字段和BAPI组件对应关系: EINE-DATBI <=> BAPI组件-VALID_TO
KONP采购信息记录-价格条件类型
1处,采购信息记录价格条件类型更新模式:I 表示插入方式创建
BAPI数据路径: CONDITION->CHANGE_ID
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-CHANGE_ID
X处,采购信息记录价格条件类型顺序编号:01
BAPI数据路径: CONDITION->EINE_INDX
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-EINE_INDX
X处,采购信息记录价格条件类型条件的序列号:01
BAPI数据路径: CONDITION->COND_COUNT
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-COND_COUNT
2处,采购信息记录价格条件类型:BPB0
BAPI数据路径: CONDITION->COND_TYPE
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-COND_TYPE
3处,采购信息记录价格条件金额:113
BAPI数据路径: CONDITION->COND_VALUE
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-COND_VALUE
4处,采购信息记录货币:CNY
BAPI数据路径: CONDITION->CURRENCY
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-CURRENCY
5处,采购信息记录条件定价单位:1
BAPI数据路径: CONDITION->COND_P_UNT
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-COND_P_UNT
6处,采购信息记录条件单位:EA
BAPI数据路径: CONDITION->COND_UNIT
后台表字段和BAPI组件对应关系: ??? <=> BAPI组件-COND_UNIT
6 BAPI执行测试
1处,输入BAPI入参
2处,点击 执行 按钮 (这个BAPI执行完毕只会模拟创建采购信息记录不存表)
3处,点击 BAPI 回传信息
4处,显示 采购信息记录5300000963 建立,实际没有存后台表
SE16N查询后台表EINE如下:
要想在BAPI测试过程中直接创建采购信息记录并存表,就需要使用BAPI测试序列功能,详见:SAP BAPI-SE37测试-执行-测试序列(BAPI执行完毕后数据并没有写入后台表,如何用COMMIT BAPI写入后台表?)-CSDN博客
7 BAPI测试序列
前提条件:提前把BAPI入参数据存入测试数据中,方便使用。
设置测试序列BAPI执行顺序:
ME_INFORECORD_MAINTAIN_MULTI
BAPI_TRANSACTION_COMMIT
注意:需要点开返回信息,记录“显示 采购信息记录 5300000964 建立”,方便后续查询。
1处,第1个BAPI执行完毕后,点击 返回 按钮,直接跳转到第2个BAPI执行界面
2处,点击 执行 即可
再次SE16N查看后台表EINE如下:
BAPI创建采购信息记录已经存后台表。
Done.
Created on 8th January, 2024