本文主要介绍A作者在各项目及业务支持过程中常用的函数等,汇总了一段时期所做开发文档,选择主要部分对函数的功能、使用方法等进行一个简单的说明。


( 一) 生产 BOM 相关

先介绍与生产 BOM 查询有关的函数,而查询主要分为正查和反查,正查 BOM 是模拟事务代码 CS12 那样的多层展开,而反查 BOM 则是模拟 CS15。


1 正查 BOM


函数:CS_BOM_EXPL_MAT_V2

功能:BOM 展开

关键参数说明:

IMPORT:

CAPID :Application ID(BOM 应用程序)

DATUV :Validity date(有效开始日)

EMENG :Required quantity(需求数量)

MEHRS :Multi-level explosion(X:BOM 多层展开;空:单层展开)

MTNRV :Material(物料专用号)

STLAN :BOM usage (BOM 用途)

STLAL :Alternative BOM(BOM 可选)

WERKS :Plant(工厂)

TOPMAT:

抬头明细

STB:

BOM 子件行项目明细,包含子件编码、子件描述、子件物料类型、需求数量等

MATCAT:

BOM 下挂 E 类型且带子件的半成品明细。

另一个函数“CS_BOM_EXPLOSION_MAT”,其功能及关键参数与上面介绍的函数

CS_BOM_EXPL_MAT_V2 差不多,在此就不展开介绍了。


2 反查 BOM


函数:CS_WHERE_USED_MAT

功能:单层反查物料 BOM

关键参数说明:

IMPORT:

DATUB :Date 'valid to'(有效日期至)

DATUV :Date 'valid from'(有效日期从)

MATNR :Material(物料专用号)

STLAN :BOM usage(BOM 用途)

WERKS :Plant(工厂)

TOPMAT:

抬头明细表

WULTB:

反查出的子件上层物料明细,包含上层编码、上层编码描述、上层需求数量(默认是 BOM抬头基本数量)、子件需求数量等。

MATCAT:

反查出的子件上层物料明细(按物料号汇总后的结果)


3 BOM 删除


函数:CSAP_MAT_BOM_DELETE

功能:物料 BOM 删除

关键参数说明:

IMPORT:

MATERIAL :Material(物料)

PLANT :Plant(工厂)

BOM_USAGE :BOM Usage(BOM 用途)

ALTERNATIVE :Alternative BOM(BOM 可选)

VALID_FROM :Valid-from date(有效起始日期)

CHANGE_NO :Change number(BOM 更改号)

注:上述函数功能强大,在没有启用 ECM 的情况下,需要慎用,在进行调用开发时,建议至少将 MATERIAL、PLANT、BOM_USAGE、ALTERNATIVE 这四个字段对应的输入项设置成必填。


( 二) 生产订单相关

本小节将挑选三个具有代表性的 BAPI 进行简要介绍,希望对读者起到抛砖引玉的作用。

4 生产订单查询

BAPI: BAPI_PRODORD_GET_LIST

功能:生产订单抬头信息查询

关键参数说明:

输入TABLE:ORDER_NUMBER_RANGE

SIGN:范围包含标识符,I(包含范围),E(排除范围)

OPTION:操作运算符

EQ:等于

NE:不等

GT:大于

GE:大于等于

LE:小于等于

LT:小于

BT:在…之间

NB:不在…之间

CP:包含

NP:不包含

LOW:下阶生产订单号

HIGH:上阶生产订单号

其他输入TABLE不做介绍,按实际查询需求选择输入TABLE即可。

输出TABLE:ORDER_HEADER

订单抬头信息基本都在此表中进行存放了,如:生产订单日期、生产版本、生产订单

状态等都在此输出表可获取到,科按实际业务需求挑选相关的字段应用即可,本文不再做详细介绍。


5 生产订单创建


BAPI:BAPI_PRODORD_CREATE

功能:生产订单创建

关键参数说明:

Import:在结构 ORDERDATA 中进行参数的输入

ORDER_NUMBER:生产订单号(可输入自定义的订单号,前提是配置订单编号为外部

输入;若订单号自动生成,则此参数为空即可)

MATERIAL:物料号

PLANT:工厂

PLANNING_PLANT:计划工厂

ORDER_TYPE:生产订单类型

BASIC_START_DATE:基本开始日期

BASIC_START_TIME:基本开始时间

BASIC_END_DATE:基本结束日期

BASIC_END_TIME:基本结束时间

QUANTITY:需求数量

PROD_VERSION:生产版本

SALES_ORDER:销售订单号

SALES_ORDER_IT:销售订单行项目

其他参数略

补充:当调试 BAPI 的时候,需要增加 COMMIT 操作,这样才能真正使 BAPI 在系统中创建数据。

SE37:

1. 输入 Function Module:BAPI_PRODORD_CREATE

2. 指定 Test Sequence

按正常的步骤测试后,在 BAPI_TRANSACTION_COMMIT 执行界面下对 WAIT 字段赋予X 值,即可完成数据的创建。



6 生产订单修改


BAPI:API_PRODORD_CHANGE

功能:生产订单修改

关键参数说明:

Import:

NUMBER:生产订单号

ORDERDATA:需要更改的订单抬头信息结构,有多个字段值可以填写

BASIC_START_DATE:基本开始日期

BASIC_END_DATE:基本结束日期

QUANTITY:数量

PROD_VERSION:生产版本

其他略……

ORDERDATAX:确认 ORDERDATA 中要更新的字段

BASIC_START_DATE:X 或空,如果选 X 则表示需要更新基本开始日期为

ORDERDATA- BASIC_START_DATE 的值

其他略……

Export:

RETURN:返回值信息

注:在生产订单更改的 BAPI 中增加了更新控制机制。此机制原则:并不是在 ORDERDATA

中的字段输入值就可以更新生产订单信息,而必须在 ORDERDATAX 中相对应的字段值输入 X 后,生产订单相对应的字段才真正地被更新。


( 三) 计划独立需求相关


计划独立需求(Planning Independent Requirements)是需求的一种体现形式,属于 PP 的需求管理的范畴,本段讲解 PIR 的查询、创建、修改等。


7 计划独立需求查询


BAPI:BAPI_REQUIREMENTS_GETDETAIL

功能:显示计划独立需求细节

关键参数说明:

Import

MATERIAL:物料专用号

PLANT:工厂

REQUIREMENTSTYPE:需求类型

VERSION:需求版本(可以用需求版本来区分不同的业务需求)

REQMTSPLANNUMBER:需求计划号(唯一区分一个 PIR 抬头)

MRP_AREA:MRP 区域

TABLE:REQUIREMENTS_OUT

此表按输入的 MRP 区域、 需求版本、 需求类型、 需求计划号等而输出一条 PIR 抬头信息所对应的所有的行项目。输出字段有:需求日期、需求数量、是否激活等。

注:唯一确定一条 PIR 抬头信息的主键应为:物料专用号+MRP 范围+ 需求版本+需求类型

需求类+ 需求计划号。PIR 可以存在多个抬头信息,但每个抬头之间是不能重复的。


8 计划独立需求创建


BAPI:BAPI_REQUIREMENTS_CREATE

功能:计划独立需求创建

关键参数介绍:

Import:在结构 REQUIREMENTS_ITEM 中进行 PIR 抬头参数的输入

MATERIAL:物料专用号

PLANT:工厂

REQU_TYPE:需求类型

VERSION:需求版本

VERS_ACTIV:版本是否激活(X:表示版本激活,空:表示版本不激活)

REQ_NUMBER:需求计划号

MRP_AREA:MRP 范围

输入 TABLE:在表 REQUIREMENTS_SCHEDULE_IN 中输入行项目信息

DATE_TYPE:日期类型(常用的日期类型值包括“1:日格式,2:周格式,3:月格式

“)

REQ_DATE:需求日期(输入的格式与用户维护的日期格式相关,本文作者使用的日期

格式为 YYYY.MM.DD。不管 DATE_TYPE 输入的是何种类型值,需求日期字段均按日期格

式进行输入,系统存入底表时会自动地解析成相对应的日格式或周格式或月格式)。

REQ_QTY:需求数量

UNIT:计量单位(若不填写按默认单位创建)

BOMEXPL:BOM 展开号

PROD_VES:生产版本

注:

① 如 果 要 在 已 经 存 在 的 抬 头 下 创 建 新 的 行 项 目 时 不 能 调 用

BAPI_REQUIREMENTS_CREATE 这个 BAPI,因为抬头已经存在,所以再创建相同的抬头

就会报错,此时应调用 BAPI_REQUIREMENTS_CHANGE 这个 BAPI 进行修改行项目。

②判断物料是否存在某 PIR 抬头的方法:

工厂级区域:到表 PBIM 中进行判断

MRP 区域级:到表 PBID 中进行判断


9 计划独立需求修改


BAPI:BAPI_REQUIREMENTS_CHANGE

功能:计划独立需求修改

关键参数介绍:

Import:

MATERIAL:物料号

PLANT:工厂

REQUIREMENTSTYPE:需求类型

VERSION:需求版本

REQMTSPLANNUMBER:需求计划号

VERS_ACTIV:版本是否激活

MRP_AREA:MRP 区域

输入 TABLE:在 REQUIREMENTS_SCHEDULE_IN 中进行行项目的输入

DATE_TYPE:日期类型

REQ_DATE:需求日期

REQ_QTY:需求数量

UNIT:计量单位

BOMEXPL:BOM 展开号

PROD_VES:生产版本

注 :系 统 以 抬 头 信 息 为 主 键 , 以 行 项 目 为 索 引 进 行 更 改 ;在

REQUIREMENTS_SCHEDULE_IN 中若存在相同日期的需求,则更新为新的条目信息;若

无相同日期的需求,则新增为新的条目信息。


( 四) 计划订单相关

10 计划订单查询


BAPI:BAPI_PLANNEDORDER_GET_DETAIL

功能:计划订单查询

关键参数介绍:

Import:

PLANNEDORDER:计划订单号

输出参数:

RETURN 结构:此结构输出了 BAPI 执行的状态;

HEADERDATA 结构:计划订单抬头信息


输出表:

COMPONENTSDATA 表:顾名思义,此表中存放的是计划订单组件信息。


11 计划订单创建


BAPI:BAPI_PLANNEDORDER_CREATE

功能:计划订单创建

关键参数介绍:

Import:结构 HEADERDATA,计划订单创建的抬头信息

PLANNEDORDER_NUM:计划订单号(非外部订单号留空即可)

PLDORD_PROFILE:计划参数文件

MATERIAL:物料

PLAN_PLANT:计划工厂

PROD_PLANT:生产工厂

TOTAL_PLORD_QTY:需求数量

ORDER_START_DATE:基本开始日期

ORDER_FIN_DATE:基本结束日期

VERSION:生产版本

MRP_AREA:MRP 范围

FIRMING_IND:计划订单的确定标示(X:标示固定计划订单标示;空:表示计划订单不固定)

输出参数:

RETURN:此表存放了 BAPI 执行状态;

PLANNEDORDER:BAPI 执行成功时创建的计划订单号;

CREATEDHEADERDATA:计划订单抬头信息

输出表:

CREATEDCOMPONENTSDATA:计划订单组件信息


12 计划订单修改


BAPI:BAPI_PLANNEDORDER_CHANGE

功能:计划订单修改

关键参数介绍:

Import:

PLANNEDORDER:计划订单号

HEADERDATA 结构:

PROD_PLANT:生产工厂

TOTAL_PLORD_QTY:需求数量

VERSION:生产版本等

其他略…

HEADERDATAX 结构:

确认 HEADERDATA 结构中要更新的字段,此结构中的字段要与 HEADERDATA 输入

的要更改的字段一一对应。

输出表:

COMPONENTSDATA:计划订单组件


( 五) 库存/ 需求清单相关


13 库存/ 需求清单查询


函数:MD_STOCK_REQUIREMENTS_LIST_API

功能:此函数功能可取出 MD04 查询出的所有 MRP 元素记录。强大的功能,特别推荐~~~

关键参数介绍:

Import:

MATNR:物料专用号

WERKS:工厂

BERID:MRP 范围

ERGBZ:选择规则(此值在 “定义选择规则”中定义)

AFIBZ:过滤器的名称(此值在“定义显示过滤器”中定义)

输出参数:

E_MT61D:物料 MRP 主记录表(包括:物料描述、物料类型、基本计量单位、MRP 类型等)

输出表:

MDPSX(MRP 凭证中的项目表,存放的是凭证的相关信息,数据与 MDEZX 中数据是按顺序是一条条对应的)

DELNR:相关需求号

DEL12:MRP 元素号(如果是生产订单预留,则显示为上层需求生产订单号)

其他字段略……

MDEZX(MRP 要素的行项目表,按 MRP 元素行项目进行数据存放)

DELB0:MRP 元素的缩写(如:OrdRes、PlnOrd、PrdOrd 等)

其他字段略……

注:①本段只做入门级介绍,让读者知道有这么一个函数及其所能实现的功能等。更详细的参数使用及数据输出只能是实践加实践。偶的几个项目就曾经多次使用这个函数来满足用户的报表需求。如取某物料的生产订单预留及上层需求等,就可以用此函数实现,且屡试不爽.