SAP BAPI-MM模块-采购货源清单创建-ME_DIRECT_INPUT_SOURCE_LIST-SE37函数测试(事务码ME01&后台表EORD)超级干货系列

目录

业务说明

1 BAPI注意事项

2 BAPI基础数据

3 BAPI数据结构

4 BAPI函数调用

5 BAPI必要数据

事务码:ME01进入界面

6 BAPI执行测试

7 BAPI测试序列

执行第1个BAPI

执行第2个BAPI

执行第3个BAPI

8 前台事务码ME03查看

9 后台表EORD


业务说明

在实战项目上,存在外部接口业务或批导或功能程序时,需要在开发程序中调用SAP标准业务应用程序接口,就是经常听到的BAPI。SAP给常用的业务都预定义了BAPI,所以有需要的时候,就要找到对应的BAPI。需要对BAPI的结构和字段非常熟悉,否则不能正确的使用BAPI,从而导致各种报错。为了降低测试过程中的报错,需要在写程序前,将需要调用的BAPI使用事务码SE37进行相关测试,以掌握具体的入参和出参等详细数据。

1 BAPI注意事项

采购货源清单如果通过BAPI创建,需要通过下面3个BAPI才可以实现。

货源清单创建-参数输入: ME_DIRECT_INPUT_SOURCE_LIST

货源清单创建-参数确认: ME_POST_SOURCE_LIST_NEW

货源清单创建-参数过账: BAPI_TRANSACTION_COMMIT

2 BAPI基础数据

BAPI功能:采购货源清单创建

BAPI:ME_DIRECT_INPUT_SOURCE_LIST

对应前台事务码:ME01-创建货源清单

采购信息记录后台表:EORD: 采购货源清单

3 BAPI数据结构

EXPORTING:程序将值传给函数模块的导入参数(入参)。
IMPORTING:实际参数会分配给函数模块的导出参数(出参)。
TABLE:函数模块中传递和处理多个记录的数据。
EXCEPTIONS:函数中定义的异常自动分配不同数值(异常)。

4 BAPI函数调用

采购货源清单创建BAPI: ME_DIRECT_INPUT_SOURCE_LIST

CALL FUNCTION 'ME_DIRECT_INPUT_SOURCE_LIST'
  EXPORTING
    i_matnr                  =
    i_werks                  =
*   I_MT06E                  =
*   I_NO_MATERIAL_READ       =
*   ACTIVITY                 = 'V'
*   I_VORGA                  =
*   I_LOGSY                  =
  TABLES
    t_eord                   =
* EXCEPTIONS
*   PLANT_MISSING            = 1
*   MATERIAL_MISSING         = 2
*   OTHERS                   = 3
          .
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.

5 BAPI必要数据

如何快速在BAPI中找到对应的BAPI组件并输入正确的值,就需要弄清楚每个组件的位置路径和名称 对应的前台字段或后台表字段 对应关系。

事务码:ME01进入界面

1处,输入物料号:6630000070

BAPI数据路径: I_MATNR->EORD-MATNR

后台表字段和BAPI组件对应关系: EORD-MATNR <=> BAPI组件-I_MATNR

2处,输入工厂代码:1087

BAPI数据路径: I_WERKS->EORD-WERKS

后台表字段和BAPI组件对应关系: EORD-MATNR <=> BAPI组件-I_WERKS

3处,输入 有效期从 20250108

BAPI数据路径: T_EORD->VDATU

后台表字段和BAPI组件对应关系: EORD-WERKS <=> BAPI组件-VDATU

4处,输入 有效期到 20251231

BAPI数据路径: T_EORD->BDATU

后台表字段和BAPI组件对应关系: EORD-WERKS <=> BAPI组件-BDATU

5处,输入 供应商 661000021

BAPI数据路径: T_EORD->LIFNR

后台表字段和BAPI组件对应关系: EORD-LIFNR<=> BAPI组件-LIFNR

6处,输入 采购组织 BN01

BAPI数据路径: T_EORD->EKORG

后台表字段和BAPI组件对应关系: EORD-EKORG<=> BAPI组件-EKORG

可以直接通过下面这段代码直接创建采购信息记录

*&---------------------------------------------------------------------*
*& Report ZMM_BOTECK_017
*&---------------------------------------------------------------------*
*& 采购货源清单BAPI调用测试
*&---------------------------------------------------------------------*
REPORT zmm_boteck_017.


*&---------------------------------------------------------------------*
*& 定义内表和工作区和变量
*&---------------------------------------------------------------------*

DATA:lt_eord  TYPE TABLE OF eordu,            "定义内表lt_eord
     ls_eord  TYPE eordu,                     "定义工作区ls_eord
     lv_matnr TYPE eord-matnr,                "定义物料编号变量
     lv_werks TYPE eord-werks.                "定义物料编号变量

DATA:e_return-message TYPE string.

*&---------------------------------------------------------------------*
*& 直接给变量赋值
*&---------------------------------------------------------------------*

lv_matnr = '000000006630000070'.              "物料编号变量赋值
lv_werks = '1087'.                            "工厂代码变量赋值

*&---------------------------------------------------------------------*
*& 给工作区直接赋值
*&---------------------------------------------------------------------*

CLEAR ls_eord.

ls_eord-matnr = '000000006630000070'.         "物料编号工作区赋值
ls_eord-werks = '1087'.                       "工厂代码工作区赋值
ls_eord-vdatu = '20250108'.                   "有效期从工作区赋值
ls_eord-bdatu = '20251221'.                   "有效期到工作区赋值
ls_eord-lifnr = '0661000021'.                  "供应商工作区赋值
ls_eord-ekorg = 'BN01'.                       "采购组织工作区赋值
ls_eord-eortp = '0'.                          "货源清单类别工作区赋值,0-标准 1-寄售
ls_eord-erdat = sy-datum.                     "创建日期工作区赋值,sy-datum=系统日期
ls_eord-ernam = sy-uname.                     "创建人工作区赋值,sy-uname=系统用户ID
ls_eord-kz    = 'I'.                          "I-新增 U-更新

*&---------------------------------------------------------------------*
*& 将工作区赋值给内表,使用APPEND语句
*&---------------------------------------------------------------------*

APPEND ls_eord TO lt_eord.                   "将上面工作区ls_eord内容赋值给内表lt_eord

*&---------------------------------------------------------------------*
*& 货源清单初始化
*&---------------------------------------------------------------------*

CALL FUNCTION 'ME_INITIALIZE_SOURCE_LIST'.   "货源清单初始化


*&---------------------------------------------------------------------*
*& 内表lt_eord赋值之后,就可以调用货源清单BAPI写入参数了(入参)
*&---------------------------------------------------------------------*      .

CALL FUNCTION 'ME_DIRECT_INPUT_SOURCE_LIST'
  EXPORTING
    i_matnr          = lv_matnr
    i_werks          = lv_werks
*   I_MT06E          =
*   I_NO_MATERIAL_READ       =
*   ACTIVITY         = 'V'
*   I_VORGA          =
*   I_LOGSY          =
  TABLES
    t_eord           = lt_eord
  EXCEPTIONS
    plant_missing    = 1
    material_missing = 2
    error_message    = 99
    OTHERS           = 3.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4 INTO e_return-message.
  RETURN.

ELSE.

*&---------------------------------------------------------------------*
*& 调用ME_POST_SOURCE_LIST_NEW
*&---------------------------------------------------------------------*
  CALL FUNCTION 'ME_POST_SOURCE_LIST_NEW'
    EXPORTING
      i_matnr = lv_matnr
*     O_MATNR =
    .

*&---------------------------------------------------------------------*
*& 调用BAPI_TRANSACTION_COMMIT
*&---------------------------------------------------------------------*

  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'
* IMPORTING
*     RETURN        =
    .

  MESSAGE '货源清单创建成功!' TYPE 'S'.
ENDIF.

注意:以上代码亲测有效, 可以直接粘贴作为测试之用。 

也可以SE37通过BAPI测试创建。

6 BAPI执行测试

入参输入:

T_EORD-KZ = ‘X'.

点击 执行 按钮,采购货源清单是不能直接被创建,需要使用到SE37的测试序列。

7 BAPI测试序列

关于SE37的测试序列,详见:SAP BAPI-SE37测试-执行-测试序列(BAPI执行完毕后数据并没有写入后台表,如何用COMMIT BAPI写入后台表?)-优快云博客

前提条件:提前把BAPI入参数据存入测试数据中,方便使用。

1处,点击 功能模块

2处,点击 执行 

3处,点击 测试序列 弹窗

4处,BAPI: ME_DIRECT_INPUT_SOURCE_LIST

5处,BAPI: ME_POST_SOURCE_LIST_NEW

6处,BAPI: BAPI_TRANSACTION_COMMIT

执行第1个BAPI

按 执行 按钮

按 返回 键,回到第2个BAPI继续执行

执行第2个BAPI

按 执行 按钮

按 返回 键,回到第3个BAPI继续执行

执行第3个BAPI

按 执行 按钮

8 前台事务码ME03查看

BAPI创建后的数据已经在前台正常显示。

9 后台表EORD

BAPI创建的采购货源清单已经存后台表。

Done.

Created on 9th January, 2024

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值