SAP BAPI-MM模块-批次创建-BAPI_BATCH_CREATE-SE37函数测试(事务码MSC1N & 后台表MCH1 MCHA)超级干货系列

目录

业务说明

1 BAPI注意事项

2 BAPI基础数据

3 BAPI数据结构

4 BAPI函数调用

5 BAPI必要数据

事务码MSC1N进入界面

BAPI组件和后台表字段匹配表

SE38调用BAPI采购发票冲销

前台事务码MSC2N查看

6 BAPI执行测试

入参-MATERIAL-物料编号(18 个字符)

入参-BATCH-批次编号

入参-PLANT-工厂

入参-BATCHCONTROLFIELDS-CLASS_NUM-分类编号

入参-BATCHCONTROLFIELDS-DOCLASSIFY-分类对象

入参- BATCHSTORAGELOCATION-STGE_LOC-存储地点

BAPI执行

7 前台事务码MSC3N查看

8 后台表查看更新

后台表MCH1-批量(如果批次管理多工厂)

后台表MCHA-批次

后台表MCHB-批量库存


业务说明

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

1 BAPI注意事项

批次主数据如果通过BAPI创建,不需要COMMIT就可以直接创建。

批次主数据创建-输入: BAPI_BATCH_CREATE

2 BAPI基础数据

BAPI功能:批次主数据创建

BAPI_TRANSACTION_COMMIT

对应前台事务码:MSC1N-批次创建

批次主数据后台表:

MCH1 - 批量(如果批次管理多工厂)

MCHA - 批次

3 BAPI数据结构

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

4 BAPI函数调用

批次主数据创建BAPI: BAPI_BATCH_CREATE

CALL FUNCTION 'BAPI_BATCH_CREATE'
* EXPORTING
*   MATERIAL                   =
*   BATCH                      =
*   PLANT                      =
*   BATCHATTRIBUTES            =
*   BATCHCONTROLFIELDS         =
*   BATCHSTORAGELOCATION       =
*   INTERNALNUMBERCOM          =
*   EXTENSION1                 =
*   MATERIAL_EVG               =
*   MATERIAL_LONG              =
* IMPORTING
*   BATCH                      =
*   BATCHATTRIBUTES            =
* TABLES
*   RETURN                     =
          .

5 BAPI必要数据

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

事务码MSC1N进入界面

BAPI组件和后台表字段匹配表

参数BAPI参数BAPI组件字段描述后台表字段标记
入参MATERIALMATERIAL物料编号(18 个字符)MCH1/MCHA/MCHB-MATNR
入参BATCHBATCH批次编号MCH1/MCHA/MCHB-CHARG
入参PLANTPLANT工厂MCHA/MCHB-WERKS
入参BATCHCONTROLFIELDSCLASS_NUM分类编号(物料主数据批次分类代码,例如:BOTECK_RM)MCH1-CLASS
入参BATCHCONTROLFIELDSDOCLASSIFY分类对象(赋值参数'X')
入参BATCHSTORAGELOCATIONSTGE_LOC存储地点MCHB-LGORT

SE38调用BAPI采购发票冲销

*&---------------------------------------------------------------------*
*& Report ZMM_BOTECK_030
*&---------------------------------------------------------------------*
*& 命名规则:定义变量lv 和 定义工作区ls或gw 和 定义内表lt或gt
*&---------------------------------------------------------------------*
*& BOTECK物料凭证创建MIGO过账调用BAPI-创建批次主数据
*&---------------------------------------------------------------------*
REPORT zmm_boteck_030.

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

DATA:lv_material                    TYPE bapibatchkey-material.     "定义变量
DATA:lv_batch                       TYPE bapibatchkey-batch.        "定义变量
DATA:lv_plant                       TYPE bapibatchkey-plant.        "定义变量
DATA:lv_batchstoragelocation        TYPE bapibatchstoloc-stge_loc.  "定义变量
DATA:ls_batchcontrolfields          TYPE bapibatchctrl.             "定义工作区
DATA:lt_return                      TYPE TABLE OF bapiret2.         "定义内表

*&---------------------------------------------------------------------*
*& 给BAPI参数对应变量赋值
*&---------------------------------------------------------------------*

lv_material               = '000000006630000045'.   "直接给BAPI入参赋值-物料编号(18 个字符)
lv_batch                  = '2501180011'.           "直接给BAPI入参赋值-批次编号
lv_plant                  = '1087'.                 "直接给BAPI入参赋值-工厂
lv_batchstoragelocation   = '1001'.                 "直接给BAPI入参赋值-存储地点

*&---------------------------------------------------------------------*
*& 给BAPI参数对应工作区赋值
*&---------------------------------------------------------------------*

ls_batchcontrolfields-class_num  = 'BOTECK_RM'.    "直接给BAPI入参赋值-分类编号
ls_batchcontrolfields-doclassify = 'X'.            "直接给BAPI入参赋值-分类对象

*&---------------------------------------------------------------------*
*& 调用BAPI
*&---------------------------------------------------------------------*

CALL FUNCTION 'BAPI_BATCH_CREATE'
  EXPORTING
    material             = lv_material
    batch                = lv_batch
    plant                = lv_plant
    batchstoragelocation = lv_batchstoragelocation
    batchcontrolfields   = ls_batchcontrolfields
  IMPORTING
    batch                = lv_batch
  TABLES
    return               = lt_return.

*&---------------------------------------------------------------------*
*& 检查返回信息
*&---------------------------------------------------------------------*

DATA(lv_has_error) = abap_false.                                "初始化一个标志变量来跟踪是否有错误

IF lt_return IS NOT INITIAL.                                    "检查 BAPI 返回的消息
  LOOP AT lt_return INTO DATA(ls_return_msg).                   "如果有错误消息,则遍历并显示它们
    IF ls_return_msg-type ='E'.                                 "如果有错误消息,则显示它们并设置错误标志
      WRITE: / '报错信息如下:', ls_return_msg-type, ls_return_msg-id, ls_return_msg-number, ls_return_msg-message.
      lv_has_error = abap_true.
    ELSE.
      ls_return_msg-type ='S'.
      WRITE: / '成功信息如下:', ls_return_msg-type, ls_return_msg-id, ls_return_msg-number, ls_return_msg-message.
    ENDIF.
  ENDLOOP.
ENDIF.

IF lv_has_error = abap_true.
  WRITE: / '批次主数据创建失败!'.
ELSE.                                                            "如果没有错误消息,则表示发票过账成功
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
    EXPORTING
      wait = 'X'.
  WRITE: / '批次主数据创建成功!批次号:', lv_batch.               "如果没有错误消息,则表示物料凭证创建成功!
  WRITE: / '批次主数据创建成功!物料号:', lv_material.            "如果没有错误消息,则表示物料凭证创建成功!
  WRITE: / '批次主数据创建成功!工厂号:', lv_plant.               "如果没有错误消息,则表示物料凭证创建成功!
  WRITE: / '批次主数据创建成功!库位号:', lv_batchstoragelocation."如果没有错误消息,则表示物料凭证创建成功!
ENDIF.

备注:上面的代码亲测有效,可以直接粘贴测试使用(需要把相关参数更改为目标系统的测试数据即可,例如:采购发票号等)。

1处,点击 执行 按钮

批次主数据创建成功!批次号:2501180011
批次主数据创建成功!物料号:6630000045
批次主数据创建成功!工厂号:1087
批次主数据创建成功!库位号:1001

前台事务码MSC2N查看

6 BAPI执行测试

入参-MATERIAL-物料编号(18 个字符)

入参-BATCH-批次编号

入参-PLANT-工厂

入参-BATCHCONTROLFIELDS-CLASS_NUM-分类编号

入参-BATCHCONTROLFIELDS-DOCLASSIFY-分类对象

入参- BATCHSTORAGELOCATION-STGE_LOC-存储地点

BAPI执行

1处,点击 执行 按钮 

注意:BAPI: BAPI_BATCH_CREATE创建批次主数据后,不需要BAPI: BAPI_TRANSACTION_COMMIT再次确认,可以直接将批次主数据存表。

7 前台事务码MSC3N查看

批次主数据:2501180012

批次主数据已经创建完毕!

8 后台表查看更新

批次主数据:2501180012

后台表MCH1-批量(如果批次管理多工厂)

后台表MCHA-批次

​​​

后台表MCHB-批量库存

批次主数据已经存后台表。

Done.

Created on 19th January, 2024

<think>好的,用户问的是MSC3N如何创建批次。首先,我需要确定MSC3N是什么系统或工具。通常,像MSC3N这样的缩写可能与SAP系统相关,因为在SAP中,批次管理是一个常见的功能,事务MSC2N用于批次创建,而MSC3N用于批次查看。用户可能混淆了事务,或者他们使用的系统有自定义的事务MSC3N来创建批次。 接下来,我需要考虑标准的SAP批次创建流程。通常,在SAP创建批次是通过事务MSC1N或MSC2N。MSC3N通常是用来显示批次主数据的。所以用户可能在询问如何创建批次,但错误地引用了MSC3N。或者他们的系统可能对事务进行了定制,将批次创建功能分配给了MSC3N。 需要明确的是,用户是否确定事务正确。如果他们确实需要使用MSC3N来创建批次,可能需要检查系统配置,或者是否有特定的步骤或权限要求。此外,可能涉及物料主数据是否启用了批次管理,以及工厂和库存地点是否配置正确。 如果用户的环境确实使用MSC3N来创建批次,可能需要指导他们进入该事务,输入物料、工厂等信息,然后保存。但通常需要确认系统的自定义设置,因为标准SAPMSC3N不是用于创建的。 可能还需要考虑用户是否有权限问题,或者是否需要通过其他路径访问批次创建功能。例如,在某些情况下,可能需要通过物料主数据或生产订单触发批次的自动创建。 总结下来,回答应该先确认事务的正确性,然后分步骤说明标准流程,并建议用户检查系统定制或咨询管理员,以防他们的环境有特殊配置。同时提醒批次管理的前提条件,如物料主数据的批次视图维护等。</think>在SAP系统中,若需创建批次Batch),通常使用事务 **MSC1N** 或 **MSC2N**。但根据您提到的 **MSC3N**(通常用于显示批次主数据),可能存在以下两种可能性: --- ### 1. **确认事务用途** - **MSC3N** 在标准SAP中用于 **查看批次主数据**,而非创建批次- 若需创建批次,请尝试以下操作: - **事务 MSC1N**:手动创建批次- **事务 MSC2N**:通过物料凭证(如生产订单、采购订单)自动生成批次--- ### 2. **通过MSC1N手动创建批次的步骤** - **步骤1**:输入事务 **MSC1N**,按回车。 - **步骤2**:填写必填字段: - **物料号**:需启用批次管理的物料。 - **工厂**:关联的工厂代- **批次**:可手动输入批次号(若系统未自动生成)。 - **步骤3**:维护批次特性(如生产日期、有效期、供应商等)。 - **步骤4**:保存(按 **Ctrl+S** 或点击保存按钮),系统生成批次号。 --- ### 3. **通过MSC2N自动生成批次** - **适用场景**:通过采购订单、生产订单等自动触发批次创建- **步骤1**:执行事务 **MSC2N**。 - **步骤2**:输入物料凭证(如采购订单号)并回车。 - **步骤3**:系统自动分配批次号,补充批次特性后保存。 --- ### 4. **特殊情况说明** - 若您确认需通过 **MSC3N** 创建批次,可能是系统定制化配置导致: 1. 尝试在MSC3N界面查找“新建”或“创建”按钮。 2. 联系系统管理员确认权限及事务功能是否被修改。 --- ### 5. **前提条件** - 物料主数据的 **批次视图** 需已维护(事务 **MM02**)。 - 工厂层级的批次管理配置需启用(通过事务 **OMJJ**)。 --- ### 总结 建议优先使用 **MSC1N** 或 **MSC2N** 创建批次。若系统中 **MSC3N** 被定制为创建功能,需结合具体配置操作。如仍有疑问,可提供更多上下文进一步分析!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值