SAP扩展仓库管理(EWM)
用于有效管理仓库中的库存以及支持货物移动处理.它允许公司控制仓库的入库和出库流程以及仓库中货物的移动.
仓库中的主要流程是收货和退货,收货和发货,履行客户订单和商品分销.当公司不存储任何货物时,则不需要仓库管理来管理货物.
入库流程涉及仓库中货物的存储及其位置,而出库流程涉及提货货物.每当材料存储在仓库中时,它都存储在存储仓中,您可以找到它的当前位置.
在SAP EWM的帮助下,所有货物移动都由仓库控制管理系统,为您提供监控仓库活动的工具.您还可以在仓库中管理其他功能,例如创建序列号,批次编号,供应商管理库存,资源优化和增值服务. SAP扩展仓库管理不仅可以监控仓库中的货物数量,还可以有效管理其他关键功能和货物交付.
SAP仓库管理与库存管理相反.库存管理告知存储位置中的货物计数及其物理位置未知.仓库管理处理货物移动并监控使用特定凭证记录的货物的实际位置.
SAP EWM与SAP仓库管理不同
SAP EWM是SAP供应链管理的一部分,如仓库管理系统,但提供了更强大和更先进的功能来管理仓库中的关键活动.
SAP扩展仓库管理类似于仓库管理但它提供更多功能,如拣货,存放,RF框架,仓库结构和更灵活的选项来管理仓库功能.
您可以创建新的元素,如活动区域,资源,劳动力管理和SAP EWM中的工作中心在WM中不可用.
SAP EWM提供了更强大的解决方案来管理组织中的仓库功能.它也是SAP供应链管理的一部分,也支持物流和供应链中的所有流程.
SAPEWM─主要特点
以下是SAP EWM中的主要功能 :
使用SAP EWM,您可以控制仓库活动,例如拣配,过帐
您可以在从EWM收货到ERP系统之前设置已更改数据的提醒,撤消或更正收货从EWM到ERP系统以及从EWM到ERP系统的内向交货.
您可以在放置包含不同产品的处理单元之前对其进行拆分离开不同的存储区.
您可以使用产品的插槽来确定存储概念,并自动优化货物仓库的安排.
它允许您执行工作包等可执行任务年龄,由仓库员工组成,仓库员工应作为仓库管理活动的一部分执行.
它允许您管理和跟踪车辆以及其他运输单位.院子里的办理登机手续办理登机手续,包括院内的搬运和其他任务.
SAP EWM还包括有害物质的存储和处理及其根据SAP Environmental Health& amp; amp;安全EHS.
在SAP EWM中,您还可以更有效地规划人工时间和资源,从而通过有效管理关键资源管理任务,您可以提高仓库效率.
在SAP EWM中,您可以使用仓库驾驶舱,它允许您以图形方式显示仓库关键值,并使用定义的图表类型评估或监控活动.
您可以使用跨站台,允许您在不同的配送中心或仓库中运输处理单元,直到它们到达仓库中的最终位置.
Storage type
storage section
storage bin
quant
因此,EWM的目的,就像它的前身SAP WM一样,是组织和优化仓库中的流程。这方面的基础是:
•仓库特定的组织和主数据,如存储箱和产品
•仓库特定文件,如仓库任务,将产品从a移动到B
与“旧的”SAP WM相比,EWM提供了非常灵活的仓库流程建模。例如,在入库时,货物接收可以分为尽可能多的流程步骤,这有助于优化货物在仓库中的流动。
有关EWM的详细信息,请参阅这里:
SAP Extended Warehouse Management (SAP EWM) | SAP Help Portal
这本书给出了一个非常详细和全面的概述(德语):
Warehouse Management mit SAP EWM,这里有一个阅读示例:
Warehouse Management mit SAP EWM
- EWM基本信息
EWM是SAP供应链管理(SAP SCM)的一个组件,可以作为一个分散的系统运行。这背后的想法是:
•高可用性,与ERP同步
•高性能
•可伸缩性
SAP-ERP-和ewm -系统之间的通信区分了主数据和文档数据。
使用qRfC技术交换文档数据。
所有基本的仓库流程都由ERP中的流程触发,如销售订单、采购或生产订单。这些ERP订单产生物流文件,即进站和出站交货。这些交付被复制到EWM,作为仓库请求。为了调度仓库中的工作,这些请求被转移到仓库任务和订单中。也就是说从warehouse tasks and orders 中可以看到这些操作 记录。主数据与CIF(核心接口)交换,这是SAP APO组件,也是基于qRfC。CIF提供了几个BAdIs增强(BAdIs SMOD_APOCF*):
•入站物料处理 • Inbound processing material
•入站位置处理 • Inbound processing location
•入站分类处理 • Inbound processing of classification
ERP和EWM之间的交互,例如:简单的收货
- 创建采购订单(ERP)
- 创建入站交付(ERP),它将被复制到EWM
- 收货(EWM),这可以在对话中完成,也可以通过执行PPF的操作自动完成(参见SAP EWM和post处理框架)。
- 收货自动抛送到ERP中,存储位置=“ROD”(received on dock)),库存尚未出售
- 创建存储仓库任务(EWM):这可以通过事务/SCWM/TODLV在对话中完成,也可以通过执行PPF的动作自动完成(参见SAP EWM和post处理框架)
- 仓库任务文件(EWM)自动打印
- 仓库任务确认(EWM)
- 物料和数量现在存储在storage bin存储仓中
- EWM仓库任务确认后触发MM在ERP中挂账:从存储位置(storage location )“ROD”到存储位置“AFS”(Available for Sales),即库存现在可以销售。
Deliveries and warehouse tasks
- deliveries 介绍
交付是EWM中的中心数据对象之一。一般来说,货物收货(goods receipts)和货物发货(goods issues )是由入库交货(inbound deliveries)和出库交货(outbound deliveries)引起的。
根据采购文件(purchase documents )或客户订单(customer orders),在ERP中开始创建交货文件。如果这些交付指的是EWM维护的工厂/存储位置(plant/storage location,),那么在第一步中,交付将被复制到SAP EWM。
EWM中的交付按文件类别(document category)进行区分。EWM区分通知(goods receipts)、请求(goods issues )和调度仓库流程的交付。
通知职责。请求由转换服务激活。这个转换服务是post处理框架(PPF)中的一个操作。因此,该操作将交付创建为通知/请求的后续文档。
因此,交付一方面充当EWM和ERP之间的通信媒介。另一方面,基于这些交付,SAP EWM中进一步的流程被安排。
下图显示了文档流程,在括号中您可以找到EWM交付的document categories。对于选择适当的ABAP OO类来处理交付,这些文档类别扮演着重要的角色。
- Warehouse tasks and warehouse orders
根据转换服务仓库创建的交付文档创建任务。
在仓库任务创建之前,可以对交付项进行排序并分组到waves中,这有助于优化仓库流程。
仓库任务调度仓库中的工作。它们是用于处理material movements, based on logical or physical movements or stock changes. 。因此,每个仓库任务都保存信息,即必须以多少数量将某种材料从哪个来源运输到哪个目的地。
EWM区分:
• Product warehouse tasks:在仓库中移动某一产品(物料)
•Handling Unit warehouse tasks:搬运仓库中的搬运单元。A handling unit is a combination of packing material(如托盘pallet)与被包装的物料的组合。
此外,为了优化仓库任务,可以将仓库任务捆绑到仓库订单中,例如具有相同目的地的所有仓库任务( for example all warehouse tasks with the same destination.)。
-
Storage control
这是在仓库中安排和优化流程步骤的进一步元素。EWM区分了面向流程的存储控制(process-oriented storage control )和面向布局的存储控制( layout-oriented storage control)。两者都可以相互结合。两者都在EWM自定义中定义。
See also: Storage Control | SAP Help Portal -
Process-oriented storage control
这用于将一般的仓库流程(例如出站)拆分为几个子步骤。例如,出站流程由流程步骤组成
- 挑选 Picking
- 包装 Packing
- 加载 Loading
对于每个子步骤,将自动创建一个特定的仓库任务。子步骤的状态显示出站流程的进度,可以将其写回出站交付中。
- Layout-oriented storage control
当由于仓库中的物理限制(即“布局”)导致无法直接从源箱到目的箱进行移动时,使用这种方法。
示例:托盘必须从存储仓(storage bin)A移动到存储仓B(warehouse task1)。但在放入仓B之前,必须在 i-point上检查托盘的重量。因此仓库任务1将被分成两个任务:
- 将托盘从仓A移动到i点 Move pallet from bin A to i-point
- 将托盘从i点移动到bin B Move pallet from i-point to bin B
EWM programming
- 有帮助的文档
在开始之前,这里有一个关于在EWM中编程的文档集合。
- Documents\Dokumente\EWM Projekt\2021-06-23_EWM_Workshop_for_Developers_Day_1_EN_V1.0.pptx
这个研讨会很好地介绍了EWM的开发。强烈建议在开始编程之前先阅读此演示文稿。
- 1414179 - Technical documents for software development in EWM - SAP ONE Support Launchpad
本说明包含三个附件,涉及以下主题:
•EWM中的事务处理
•使用配送服务提供商
•增强EWM交付对象
1064376 - Customer-specific determinations/validations of the delivery - SAP ONE Support Launchpad
此说明是关于客户特定的交付决定/验证。
-
SAP EWM, Architecture and Programming, ISBN 978-1-4932-1233-0
本书详细概述了架构和不同的EWM框架,例如RF框架或后处理框架(PPF),并包含针对特定客户的EWM开发的不同示例。
Here a reading example: SAP EWM Architecture and Programming -
Introduction into delivery processing
EWM开发项目中经常需要处理交付的选择,以获得用于显示或收集用于进一步处理的特定信息。为了读取交付,SAP提供了一个query -方法,该方法在几个类中实现。为了找到正确的ABAP OO类,考虑交付的不同文档类别是很重要的(参见:交付介绍):Doc.category ClassIDR /SCWM/CL_DLV_MANAGEMENT_DRODR /SCWM/CL_DLV_MANAGEMENT_DRPOR /SCWM/CL_DLV_MANAGEMENT_DREGR /SCWM/CL_DLV_MANAGEMENT_DRPDI /SCWM/CL_DLV_MANAGEMENT_PRDPDO /SCWM/CL_DLV_MANAGEMENT_PRDSPC /SCWM/CL_DLV_MANAGEMENT_PRDWMR /SCWM/CL_DLV_MANAGEMENT_PRDFDO /SCWM/CL_DLV_MANAGEMENT_FD
下面的代码示例显示了读取文档类别为“PDO”的交付的项目文档流:
REPORT zewm_delivery_read.DATA: gv_docno TYPE /scdl/dl_docno_int.
DATA: gv_status TYPE /scdl/dl_status_type.DATA: ls_docno_range TYPE /scwm/s_cap_docno_range.DATA: lo_delivery TYPE REF TO /scwm/cl_dlv_management_prd,lo_message TYPE REF TO /scwm/cl_dm_message_no,lt_message TYPE /scdl/dm_message_tab,lx_delivery TYPE REF TO /scdl/cx_delivery,lt_selection TYPE TABLE OF /scwm/dlv_selection_str,ls_selection TYPE /scwm/dlv_selection_str,ls_addmeas_detail TYPE /scdl/dl_addmeas_key_str,ls_include TYPE /scwm/dlv_query_incl_str_prd,lt_headers TYPE /scwm/dlv_header_out_prd_tab,lt_items TYPE /scwm/dlv_item_out_prd_tab.PARAMETERS:p_lgnum TYPE /scwm/lgnum OBLIGATORY DEFAULT '101'.SELECT-OPTIONS:s_docno FOR gv_docno,s_status FOR gv_status MATCHCODE OBJECT /scwm/sh_status_item.START-OF-SELECTION.* get instancelo_delivery = /scwm/cl_dlv_management_prd=>get_instance( ).* create selection rangeLOOP AT s_docno INTO ls_docno_range.MOVE-CORRESPONDING ls_docno_range TO ls_selection.
* ls_selection-fieldname = /scdl/if_dl_logfname_c=>sc_refdocno_erp_h.ls_selection-fieldname = /scdl/if_dl_logfname_c=>sc_docno_h.APPEND ls_selection TO lt_selection.CLEAR ls_selection.ENDLOOP.* set read options: we are only interested in item document flowls_include-item_docflow = abap_true.* call DLV-queryTRY.CALL METHOD lo_delivery->queryEXPORTINGiv_doccat = /scdl/if_dl_c=>sc_doccat_out_prdit_selection = lt_selectionis_include_data = ls_includeIMPORTING
* et_headers = lt_headerset_items = lt_itemseo_message = lo_message.IF lo_message IS BOUND.lt_message = lo_message->get_messages( ).ENDIF.IF lt_ITEMS[] IS NOT INITIAL.LOOP AT lt_items ASSIGNING FIELD-SYMBOL(<fs_item>).
* do further processing of items document flow …ENDLOOP.ENDIF.
* Error handlingCATCH /scdl/cx_delivery INTO lx_delivery.IF lx_delivery->mo_message IS BOUND.lo_message->add( lx_delivery->mo_message ).ENDIF.ENDTRY.
要了解更多信息,我强烈建议阅读事务SE24中QUERY方法的SAP文档,它包含了很多信息。
- Processing of warehouse tasks
SAP提供了以下功能模块:
Function module Used to:
/SCWM/TO_CREATE Create a product warehouse task
/SCWM/TO_CREATE_MOVE_HU Create a HU warehouse task
/SCWM/TO_CANCEL Cancels a warehouse task
/SCWM/TO_CONFIRM Confirms a warehouse task
下面的示例程序读取库存,然后根据用户的选择创建产品仓库任务或HU仓库任务。之后确认仓库任务。
REPORT zwt_creation_mz.TABLES: /scwm/lagp.PARAMETERS: p_lgnum TYPE /scwm/lgnum,p_vlpla TYPE /scwm/ltap_vlpla,p_nlpla TYPE /scwm/ltap_nlpla,p_anfme TYPE /scwm/rl03tanfme,p_hu_wt TYPE xfeld AS CHECKBOX.DATA: lT_HUITM TYPE /scwm/tt_stock_select,ls_huitm TYPE /scwm/s_stock_select,lT_HUHDR TYPE /scwm/tt_huhdr,ls_huhdr TYPE /scwm/huhdr,lrt_lgpla TYPE rseloption,ls_conf TYPE /scwm/to_conf,lt_conf TYPE /scwm/to_conf_tt,lT_CREATE_HU TYPE /scwm/tt_to_crea_hu,ls_create_hu TYPE /scwm/s_to_crea_hu,lt_create_prod TYPE /scwm/tt_to_create_int,ls_create_prod TYPE /scwm/s_to_create_int,lV_TANUM TYPE /scwm/tanum,lv_ser_error TYPE xfeld,ls_ltap_vb TYPE /scwm/ltap,lT_LTAP_VB TYPE /scwm/tt_ltap_vb,lT_BAPIRET TYPE bapirettab,lV_SEVERITY TYPE bapi_mtype." LGNNUM = 101START-OF-SELECTION./scwm/cl_tm=>set_lgnum( p_lgnum )." Start: Select Stocklrt_lgpla = VALUE #( ( sign = wmegc_sign_inclusiveoption = wmegc_option_eqlow = p_vlpla ) ).CALL FUNCTION '/SCWM/SELECT_STOCK'EXPORTINGiv_lgnum = p_lgnumir_lgpla = lrt_lgplaIMPORTINGet_huitm = lt_huitmet_huhdr = lt_huhdrEXCEPTIONSerror = 1OTHERS = 2.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF." End: Select StockIF lt_huitm IS NOT INITIAL." Start: Creation of WTIF p_hu_wt = abap_true." Start: Creation of HU-WTREAD TABLE lt_huhdr INTO ls_huhdr INDEX 1.IF ls_huhdr-huident IS NOT INITIAL ANDls_huhdr-vhi = wmegc_vhi_real."Prepare datals_create_hu-huident = ls_huhdr-huident.ls_create_hu-procty = '3030'.ls_create_hu-nlpla = p_nlpla.APPEND ls_create_hu TO lt_create_hu.CALL FUNCTION '/SCWM/TO_CREATE_MOVE_HU'EXPORTINGiv_lgnum = p_lgnum
* IV_UPDATE_TASK = ' '
* IV_COMMIT_WORK = 'X'it_create_hu = lt_create_hu
* IV_PROCESSOR_DET = ' 'IMPORTINGev_tanum = lv_tanumet_ltap_vb = lt_ltap_vbet_bapiret = lt_bapiretev_severity = lv_severity.IF lt_ltap_vb IS NOT INITIAL.COMMIT WORK AND WAIT./scwm/cl_tm=>cleanup( ).ENDIF.ENDIF." End: Creation of HU-WTELSE." Start: Creation of PROD-WTREAD TABLE lt_huitm INTO ls_huitm INDEX 1.IF sy-subrc = 0.MOVE-CORRESPONDING ls_huitm TO ls_create_prod.ls_create_prod-procty = '3030'.ls_create_prod-vlpla = p_vlpla.ls_create_prod-nlpla = p_nlpla.IF p_anfme IS NOT INITIAL.ls_create_prod-anfme = p_anfme.ELSE." Take the whole quantityls_create_prod-anfme = ls_huitm-quan.ENDIF.APPEND ls_create_prod TO lt_create_prod.CALL FUNCTION '/SCWM/TO_CREATE'EXPORTINGiv_lgnum = p_lgnum
* IV_UPDATE_TASK = 'X'
* IV_COMMIT_WORK = 'X'it_create = lt_create_prodIMPORTINGev_tanum = lv_tanumet_ltap_vb = lt_ltap_vbet_bapiret = lt_bapiretev_severity = lv_severity.ENDIF." End: Creation of PROD-WTENDIF.ENDIF." End: Creation of WTLOOP AT lt_ltap_vb INTO ls_ltap_vb.MOVE-CORRESPONDING ls_ltap_vb TO ls_conf.ls_conf-nista = ls_ltap_vb-vsola.APPEND ls_conf TO lt_conf.ENDLOOP." Start: Confirmation of WTCLEAR: lt_ltap_vb.CALL FUNCTION '/SCWM/TO_CONFIRM'EXPORTINGiv_lgnum = p_lgnumit_conf = lt_confIMPORTINGet_ltap_vb = lt_ltap_vbet_bapiret = lt_bapiretev_severity = lv_severityev_ser_err = lv_ser_error.IF lt_ltap_vb IS NOT INITIAL.COMMIT WORK./scwm/cl_tm=>cleanup( ).ENDIF.
这个例子还展示了两个非常重要的方法的用法,强烈建议在新的单独程序或新的RF事务中使用它们:
•/SCWM/CL_TM=>SET_LGNUM():事务管理器方法,用于设置EWM对象的仓库号,必须在程序开始时调用
•/SCWM/CL_TM=>CLEANUP():事务管理器方法,用于为EWM对象重置本地和全局内存并重置锁。在程序结束时调用。
但是注意:永远不要在badi实现中使用这些方法:您将初始化SAP标准流程的全局表!
- Integration EWM with ERP: delivery interface
交付接口是ERP最复杂和最广泛的接口。所有在ERP中计划的货物接收、货物发放和库存发布(goods receipts, goods issues and stock postings )都通过该接口进行通信。
ERP to EWM:
•与EWM集成的erp模块创建交付,通过class /SPE/CL_DLV_DISPATCH路由到EWM
•入站/出站发货数据可以通过BAdI SMOD_V50B0001的方法进行修改
•参见351303 - Transfer of additional deliv. data in decentralized scenario - SAP ONE Support Launchpa
•输入EWM的数据从ERP数据格式映射到EWM交付对象的数据格式:class /SCWM/CL_MAPIN开始
- 内向交货...IBDLV
- 外向交货..OBDLV方案 对象 处理类型 用户出口
SAVE_REPLICA IBDLV 外向处理 EXIT_SAPLV50K_005
SAVE_REPLICA OBDLV 外向处理 EXIT_SAPLV50K_007
SAVE_REPLICA IBDLV 入站处理 EXIT_SAPLV50I_001
SAVE_REPLICA OBDLV 内向处理 EXIT_SAPLV50I_003
CONFIRM_DECENTRAL IBDLV 外向Proc EXIT_SAPLV50K_006
CONFIRM_DECENTRAL OBDLV 外向Proc EXIT_SAPLV50K_008
CONFIRM_DECENTRAL IBDLV Inb.流程 EXIT_SAPLV50I_002
CONFIRM_DECENTRAL OBDLV Inb.Proc EXIT_SAPLV50I_004
使用事务 CMOD 激活相关用户出口。有关事务的详细信息,请参阅在线文档。对于版本 600,向分散式仓库管理系统的接口提供增强选项的客户出口 V50B0001 迁移到业务加载项 (BAdI)。以下是要使用事务 SE18 维护的 BAdI 定义 SMOD_V50B0001 方法的清单。
EXIT_SAPLV50I_001 内向交货的用户出口 BAPI 复制
EXIT_SAPLV50I_002 入库交货的用户出口 BAPI 验证
EXIT_SAPLV50I_003 外向交货的用户出口 BAPI 复制
EXIT_SAPLV50I_004 出库交货的用户出口 BAPI 验证
EXIT_SAPLV50I_009 更改内向交货的用户出口 BAPI
EXIT_SAPLV50I_010 外向交货更改的用户出口 BAPI
EXIT_SAPLV50K_012 外向交货更改的用户出口 BAPI(出口)
EXIT_SAPLV50K_005 内向交货的用户出口 BAPI 复制(出口)
EXIT_SAPLV50K_006 用户出口内向交货的 BAPI 验证(出口)
EXIT_SAPLV50K_007 用户出口 BAPI 外向交货复制(出口)
EXIT_SAPLV50K_008 出库交货的用户出口 BAPI 验证(出口)
EXIT_SAPLV50K_011 更改内向交货的用户出口 BAPI (退出)
EWM to ERP
•ewm出站处理的交付分割,-变更或-确认( splits, - changes or -confirmations)由PPF框架的行动安排
•如果动作在消息日志中发现条目,出站处理调用,映射成ERP数据格式后,按方法在ERP中对应功能模块
/ SCWM / CL_MAPOUT - > SEND_BAPI ()
•ERP中的入站处理执行交付功能,这里也有BAdI SMOD_V50B0001可用于处理或验证入站文档数据
ewm出站处理可以通过
badi更改映射o BAdI to change mapping
badi在消息日志中创建条目 BAdI to create entries into message log
- Mapping between EWM and ERP
与ERP相比,EWM有一个非常不同的数据模型。当EWM在一个单独的系统中运行时,在许多地方需要将ERP数据映射到EWM。
一个例子是材料编号:
在ERP材料编号(material number)长度为18个字符,在S/4下为40个字符。但是像SCM一样,EWM使用产品编号(product numbers)。对于这些产品编号,系统自动生成一个长度为22的产品ID(product ID)。在许多EWM表中,产品ID存储为RAW16。现在的问题是:如何获取ERP物料号的EWM产品信息?
ERP物料号必须映射到EWM产品号。为此,我们有一个映射表:/SAPAPO/MATMAP:
ERP material numbe <-> EWM product number
例如,从ERP中,你想在EWM中创建一个材料文档。你把ERP材料号发给EWM检查库存。在EWM中,可用库存保存在表/SAPAPO/AQUA中。但是这个表格需要RAW-16的 product ID来保证物料的唯一访问。
所以必要的编码应该是这样的:
- Further interfaces ERP - EWM
ERP和EWM之间还有另外三个接口,详情请查阅相关文档。
- Goods movement interface(MM-IM)
该接口用于将在EWM中创建的无交付参考的物料移动复制到ERP。EWM调用函数模块/SPE/GOODSMVT_CREATE。所有必要的开发对象都可以在package /SCWM/ERP_INTEGRATION中找到。如。
-
Shipment interface(LE-TRA)
-
QM Interface
ERP和EWM通过质量检查引擎(Quality Inspection Engine, QIE)进行通信。 -
erp集成的监控与调试(Monitoring and debugging of ERP-integration)
为了在ERP和EWM之间分发交付信息,使用qrfc。队列名包括:
•通信前缀:DVL (ERP -> EWM)或DLW (EWM -> ERP) Communication prefix: DVL (ERP -> EWM) or DLW (EWM -> ERP)
•m =有多个交付的大规模队列或S =单个队列 M = mass queue with more than one delivery or S = single queue
•发送方的逻辑系统名称,例如PXCQ43100 Logical system name of sender, e.g. PXCQ43100
•送货号码等。 Delivery number
示例:事务SMQ2显示ERP系统Q01中的入站队列:
An inbound queue “inside”:
注意:成功处理的队列在qRFC监视器事务中不可见。为了调试,你必须:
•在事务SMQR中注销单个队列
•停止队列处理可设置以下用户参数:
ewm: /SCWM/IF_DEBUG_QRFC
erp: /SPE/IF_DEBUG_QRFC
注意:在EWM中,也可以处理来自仓库监视器的队列。