一、基本业务流程
主数据->需求计划->可用性检查->订单创建->订单下达->车间文档打印->生产领料->确认->产成品入库->订单结算
工艺路线
- 定义:原材->成品需要哪些工序,每个工序的顺序,每个工序所需要的资源和工具及对应的工作中心信息的集合(描述了生产一种产品需要经过哪几道工序,每道工序需要消耗哪些料),包括工序,工序顺序,生产资源/工具
- 作用:1.用于能力需求计划 2.用于BOM物料的提前期计算 3.用于下达车间的作业计划4.用于加工成本的计算 5.用于生产状态的跟踪
PDM
- 定义:产品数据管理系统
BOM
- 定义:物料清单,描述组成一个产品或装配的完整、正式的零部件结构清单。该清单包括每个零部件的项目号、数量和计量单位。
工作中心
- 定义:工序实施的场所,可以是生产设备、班组、人员。工作中心同时是计划下达,能力核算,成本核算的基本单位。
MPS
- 定义:主生产计划,在对全部产品运行物料需求计划之前,对关键件单独运行生产计划,以确保关键件的产出期.
MRP
- 定义:物料需求计划,按照BOM、零部件采购或加工时间、及产品的最终产出期,计算出所有相关零部件的采购或加工的起始时间与数量,形成相应的计划订单的过程.
计划订单
- 定义:MRP/MPS运行以后产生的相关零部件的采购或加工的计划,包括物料号、数量、及日期等信息.
工序外协
- 定义:将某道工序转移到其它公司执行
SAP APO
- SAP APO 全称是SAP Advanced Planner and Optimizer(SAP 高级计划优化器)。SAP APO是供应链计划工具,帮助组织管理其供应链。主要有四个模块DP(Demand Planning需求计划),SNP(Supply Network Planning供应网络计划),GATP(Global Available to Promise全球可承诺),PPDS(Production Planning and Detail Scheduling生产计划和详细计划)
PPDS
- 定义:(Production Planning and Detail Scheduling)生产计划和详细计划。生成满足生产要求的采购建议,还可以计划关键产品,以缩短交货时间并提高交货时间。
- 作用:提高关键产品的准时交货性能、减少交货时间、改善资源与更好的采购流程之间的协调、降低库存成本。
启发式(heuristic):
定义:系统的生产计划的排定规则(排产规则)
二、常用Tcode
区域 Tcode 物料 物料创建:MM01
物料修改:MM02
物料显示:MM03
物料标记删除:MM06
物料清单查询:MM60
取消物料凭证:MBST
ECN ECN创建:CC01
ECN修改:CC02
ECN显示:CC03
ECN变更明细查询:CC07
BOM BOM创建:CS01
BOM修改:CS02
BOM显示:CS03
BOM逐层显示:CS11(一层层展开)
BOM多层显示:CS12(遇到半成品就往下展开)
BOM汇总显示:CS13(仅显示最终原材料,不显示半成品)
BOM对比:CS14
BOM使用查询(反向):CS15
BOM批量修改:CS20
BOM更改凭证查看:CS80
工作中心 工作中心创建:CR01
工作中心修改:CR02
工作中心显示:CR03
工作中心批量查询:CR05
工作中心信息系统:CR60
反向查询工作中心被使用的工艺路线:CA80
任务清单/订单标准文本:CA10
工艺路线 工艺路线创建:CA01
工艺路线修改:CA02
工艺路线显示:CA03
工艺路线批量替换工作中心:CA85
ECN变更管理:CC01
生产版本 生产版本创建、修改、显示:C223 独立需求 独立需求创建:MD61
独立需求修改:MD62
独立需求显示:MD63
独立需求删除:MD74
库存清单显示:MD04
MRP
(物料需求计划)
MRP创建:MD01
MRP修改:MD02
MRP显示:MD03
计划订单 计划订单创建:MD11
计划订单修改:MD12
计划订单查看:MD13
计划订单批量修改:MD19
计划订单批量显示:MD16
长期计划 长期计划创建:MS31
长期计划执行:MS02
库存需求清单检查:MS04
容量状况检查:MS38
容量负载检查:CM01
容量均衡:CM21
生产订单 生产订单货物移动:MIGO 收货:移动类型101 发货:移动类型:261
取消发货:移动类型:262(MB1A)
生产订单创建:CO01(有料)
生产订单修改:CO02(下达)
生产订单显示:CO03
生产订单返修:CO07
生产订单创建:CO10(带项目)
生产订单变更记录查询:ZPP005
生产订单批量操作:COHV
计划订单转生产订单:CO41,MD16
生产订单确认:CO15
采购申请 采购申请创建:ME51N
采购申请修改:ME52N
采购申请查看:ME53N
采购申请单个审批:ME54N
采购申请批量审批:ME55
采购申请清单:ME5A
APO 查询产线资源:/SAPAPO/RES01
.执行排序计划,下达整车计划:ZPDU0002
订单下达失败后重广播或者变更广播:ZPDU0006
生产订单详细情况查看:SAPAPO/POM1
报警监测:/SAPAPO/AMON1
PPDS 启发式配置 /n/sapapo/cdpsc11 SM30 维护表/SAPAPO/VHEURFNC
启发式执行 /N/SAPAPO/CDPSB0
产线视图 /N/SAPAPO/PPT1
设置矩阵 /N/SAPAPO/CDPSC7
生产清单查询 /N/SAPAPO/PPl1其他 库存查询(单个):MMBE
库存查询(批量):MB52
库存移动记录:MB51
库存期初与期末查询:MB5B
三、常用表
生产订单状态TJ02T
业务状态 订单状态 说明 创建生产订单 CRTD 建立 下达生产订单 REL(CRTD 消失) 已释放 生产订单投料 REL、GMPS 已释放、已过帐的货物移动 部分报工 REL、GMPS PCNF 已释放、已过帐的货物移动、部分确认 部分入库 REL、GMPS PCNF PDLV 已释放、已过帐的货物移动、部分确认 部分入库 完全报工 REL、GMPS、CNF PDLV 已释放、已过帐的货物移动、完全确认,部分入库 完全入库 REL、GMPS、CNF、DLV 已释放、已过帐的货物移动、完全确认、完全交货 技术关闭 TECO、GMPS、CNF、DLV (REL消失) 技术实现、已过帐的货物移动、完全确认、完全交货 财务结算 CLSD GMPS CNF DLV
(TECO消失)
工單关闭,已过帐的货物移动、完全确认、完全交货
区域 表名 计划订单 计划订单:PLAF 生产订单 生产订单表头:AFKO PP订单
生产订单行项目:AFPO
生产订单主数据:AUFK
生产订单工序:AFVC
工序中日期/数量值:AFVV
加工单顺序:AFFL
订单-流程指令:AFFT
订单-流程指令值:AFVV
生产订单确认后的数据:AFRU
预定/相关需求:RESB
采购 采购申请行项目:EBAN
采购凭证行项目:EKPO
物料 常规物料数据:MARA
物料工厂数据:MARC
物料描述:MAKT
物料的MRP范围:MDMA
MRP范围仓库:MDLG
工厂数据:T001W
物料独立需求表:PBIM
独立需求数据:PBED
无批次物料库存:MARD
批次库存:MCHB
供应商寄售特殊库存:MKOL
客户寄售库存:MSKU
工艺工序 任务清单 - 表头:PLKO
任务清单 - 工序/作业:PLPO
任务清单 - 工序/作业选择:PLAS
分配BOM项目到工序:PLMZ
分配任务清单到物料:MAPL
工序/作业选择:PLAS
IPQC检验计划特性:PLMK
工作中心 工作中心表头:CRHD
工作中心工具文本:CRTX
工作中心能力:CRCA
工作中心分配到成本中心:CRCO
生产版本 生产版本:MKAL
生产版本更改记录:MKAL_AEND
BOM BOM 表头:STKO
BOM 项目:STPO
BOM 链接物料:MAST
永久 BOM :STZU
BOM项目选择:STAS
永久BOM数据:STZU
PPDS 产线信息表 /SAPAPO/RESKEY
矩阵信息表 /SAPAPO/SET_MID物料凭证 订单确认:AFRU
过账的确认货物移动:AFWI
确认不正确的成本核算:AFRC
确认的错误的货物移动:AFFW
物料移动记录表头:MKPF
生产订单的物料移动:AUFM
物料移动MSEG
四、常用BAPI
区域 BAPI 生产订单 生产订单创建:BAPI_PRODORD_CREATE
生产订单修改:BAPI_PRODORD_CHANGE
生产订单详详情:BAPI_PRODORD_GET_DETAIL
生产订单下达(不缺料):BAPI_PRODORD_RELEASE
生产订单关闭:BAPI_PRODORD_CLOSE
删除计划订单:BAPI_PLANNEDORDER_DELETE
工艺工序 工艺工序创建:BAPI_ROUTING_CREATE
工艺工序修改:CPCC_S_TASK_LIST_MAINTAIN
工艺工序查询:CARO_ROUTING_READ
工作中心 工作中心表头:CRHD 其他 BAPI回滚:BAPI_TRANSACTION_ROLLBACK
BAPI提交:BAPI_TRANSACTION_COMMIT
五、常用函数
区域 函数 BOM相关 BOM创建:CSAP_MAT_BOM_CREATE
BOM修改:CSAP_MAT_BOM_MAINTAIN
BOM删除:CSAP_MAT_BOM_DELETE
BOM查询:CSAP_MAT_BOM_READ
BOM打开:CSAP_MAT_BOM_OPEN
BOM关闭:CSAP_MAT_BOM_CLOSE
BOM展开:CS_BOM_EXPL_MAT_V2
BOM反查:CS_WHERE_USED_MAT
生产订单 生产订单状态读取:STATUS_TEXT_EDIT PPDS /SAPAPO/RRP_PT_RESID_GET_PEGID
/SAPAPO/RRP_LC_ORDER_GET_DATA
/SAPAPO/RRP_PT_PRODUCTION_LIST物料 物料代码增加前导零:CONVERSION_EXIT_MATN1_INPUT 其他 将标准日期格式转换为数字格式:CONVERT_DATE_TO_INTERNAL
将数字日期格式转换为系统日期格式:CONVERT_DATE_TO_EXTERNAL上载Excel文件:ALSM_EXCEL_TO_INTERNAL_TABLE (每个CELL只能导入前50个字符,二是如果超过9999行,行号会初始化为从零开始)
日期有效性检查:DATE_CHECK_PLAUSIBILITY
工作遇到的问题
1.函数CSAP_MAT_BOM_MAINTAIN的不提交控制。
需求需要在BOM创建修改之前进行BOM递归校验,调用函数CSAP_MAT_BOM_MAINTAIN进行BOM的递归校验,但是此函数中已包含COMMIT语句,需求只需校验,但是不需要写到数据表中,调用此函数的话会写到表中,没有办法回滚,但是有一个办法可以满足上述需求,在函数调用的子程序
CSAP_MAIN_INIT
(包括LCSAPF01
)中,有句代码import flg_no_commit_work from memory id 'CS_CSAP'.
flg_no_commit_work的值在后面执行时会被传递到函数模块CS_DI_BOM_VB中调用,设置flg_no_commit_work为'X',即可实现不执行COMMINT WORK提交语句,数据便不会写到数据表中
如下,在调用函数之前,传值到flg_no_commit_work
lv_zid = 'X'. lv_flg_no_commit_work = 'X'. EXPORT flg_no_commit_work = lv_flg_no_commit_work TO MEMORY ID 'CS_CSAP'. EXPORT lv_zid TO MEMORY ID 'ZTC2SAPBOM_ERR'. EXPORT '' TO MEMORY ID 'data_reset_sign'. CALL FUNCTION 'CSAP_MAT_BOM_MAINTAIN' EXPORTING material = cs_zspp015-matnr plant = cs_zspp015-werks bom_usage = cs_zspp015-stlan alternative = cs_zspp015-stlal valid_from = lv_datuv_bi i_stko = ls_stkol fl_commit_and_wait = 'A' fl_bom_create = 'X' fl_default_values = '' change_no = lv_aennr TABLES t_stpo = lt_stpo EXCEPTIONS error_message = 99 error = 1 OTHERS = 2. IF sy-subrc NE 0 AND sy-msgid EQ '29' AND sy-msgno EQ '110' ."出现递归。返回报错信息 cs_bom_res-msgty = 'E'. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = sy-msgid msgnr = sy-msgno msgv1 = sy-msgv1 msgv2 = sy-msgv2 msgv3 = sy-msgv3 msgv4 = sy-msgv4 IMPORTING message_text_output = cs_bom_res-msgtx. ENDIF.
2.Memory id传值问题
上图 lv_flg_no_commit_work没有传递到值
改成如上则 lv_flg_no_commit_work能传递导致
总结:如果EXPORT/IMPORT两边定义的变量名不同,则需要中间辅助转换一下
备注:
- select取数时,动态取值可以使用动lv_where TYPE TABLE OF edpline.动态取表可以定义变量用()来取表名
- 去除小数后多余0
DATA lv_menge TYPE char18. "这变量需定义为字符类型,如果是String类型,会出现1,00.00被截为1,的情况 SHIFT lv_menge RIGHT DELETING TRAILING '0'. SHIFT lv_menge RIGHT DELETING TRAILING '.'. SHIFT lv_menge LEFT DELETING LEADING space.
- abap数据转JSON
"abap数据转json /ui2/cl_json=>serialize( EXPORTING data = ls_data pretty_name = 'X' "空大写,L小写,X驼峰,Y增强驼峰 RECEIVING r_json = lv_json ).
- 数据查询拼接处理
"查询 2023/01/28 08:40:00到 2023/02/20 17:02:00的数据 SELECT * FROM zt_student WHERE CAST( concat( createdate,createtime ) AS NUMC( 14 ) ) > '202301028084000' AND CAST( concat( createdate,createtime ) AS NUMC( 14 ) ) < '202320170200' INTO TABLE @lt_student. "截取字段 SELECT substring( schoolcode,5,8 ) AS name FROM zt_student WHERE name = '02' INTO TABLE @lt_student.