WMS模块API 接口 DEBUG方式-Oracle EBS技术文档_第1页
WMS模块API 接口 DEBUG方式-Oracle EBS技术文档_第2页
WMS模块API 接口 DEBUG方式-Oracle EBS技术文档_第3页
WMS模块API 接口 DEBUG方式-Oracle EBS技术文档_第4页
WMS模块API 接口 DEBUG方式-Oracle EBS技术文档_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

DocRef:REFDocRefNumber<DocumentReferenceNumber>深入浅出丛书系列REFLastDateAugust28,2015STYLEREFHD2事务处理APIIfSection2>1“DateAuthorVersionChangeReferenceCREATEDATE\@"d-MMM-yy"28-Aug-15Yongxin,He1.0NoPreviousDocumentReviewersNamePositionDistributionCopyNo.NameLocationLibraryMasterProjectLibraryProjectManagerNoteToHolders:Ifyoureceiveanelectroniccopyofthisdocumentandprintitout,pleasewriteyournameontheequivalentofthecoverpage,fordocumentcontrolpurposes.Ifyoureceiveahardcopyofthisdocument,pleasewriteyournameonthefrontcover,fordocumentcontrolpurposes.ContentsTOC\o"2-3"DocumentControl ii1. 概述 21.1. WMS介绍 21.2. WMS基础 22.基础数据API 32.1. 基础数据之LPN 32.2. 基础数据之规则 32.3. 基础数据之区域 33.单据API 43.1. 单据API之SO 43.2. 单据API之MO 44.任务API 54.1. 单据API之SO 54.2. 挑库 54.3. 卸货 55.事务处理API 65.1. 杂项相关API 65.2. LPN相关API 65.3. 批次相关API 65.4. 生产相关API 66. 其它API 77.常见问题 88.OpenandClosedIssuesforthisDeliverable 9OpenIssues 9ClosedIssues 9PAGE10概述WMS介绍仓库管理系统(WarehouseManagementSystem)仓库管理系统是通过入库业务、出库业务、仓库调拨、库存调拨和虚仓管理等功能,综合批次管理、物料对应、库存盘点、质检管理、虚仓管理和即时库存管理等功能综合运用的管理系统,有效控制并跟踪仓库业务的物流和成本管理全过程,实现完善的企业仓储信息管理。企业仓库管理系统是一款标准化、智能化过程导向管理的仓库管理软件,它能够准确、高效地管理跟踪客户订单、采购订单、以及仓库的综合管理。使用后,仓库管理模式发生了彻底的转变。从传统的“结果导向”转变成“过程导向”;从“数据录入”转变成“数据采集”,同时兼容原有的“数据录入”方式;从“人工找货”转变成了“导向定位取货”;同时引入了“监控平台”让管理更加高效、快捷。条码管理实质是过程管理,过程精细可控,结果自然正确无误。给用户带来了巨大效益。主要表现在:1.数据采集及时、过程精准管理、全自动化智能导向,提高工作效率;2.库位精确定位管理、状态全面监控,充分利用有限仓库空间;3.货品上架和下架,全智能按先进先出自动分配上下架库位,避免人为错误;4.实时掌控库存情况,合理保持和控制企业库存;5.通过对批次信息的自动采集,实现了对产品生产或销售过程的可追溯性。更为重要的是,条码管理促进公司管理模式的转变,从传统的依靠经验管理转变为依靠精确的数字分析管理,从事后管理转变为事中管理、实时管理,加速了资金周转,提升供应链响应速度,这些必将增强公司的整体竞争能力。WMS的主要功能模块由计算机控制的仓库管理系统的目的是独立实现仓储管理各种功能:收货、在正确的地点存货、存货管理、定单处理、分拣和配送控制。WMS将关注的焦点集中于对仓储执行的优化和有效管理,同时延伸到运输配送计划、和上下游供应商客户的信息交互,从而有效提高仓储企业、配送中心和生产企业的仓库的执行效率和生产率,降低成本,提高企业客户的满意度,从而提升企业的核心竞争力。WMS一般具有以下几个功能模块:管理单独订单处理及库存控制、基本信息管理、货物流管理、信息报表、收货管理、拣选管理、盘点管理、移库管理、打印管理和后台服务系统。WMS系统可通过后台服务程序实现同一客户不同订单的合并和订单分配,并对纸箱标签方式的上架、拣选、补货、盘点、移库等操作进行统一调度和下达指令,并实时接收反馈数据。整个软件业务与企业仓库物流管理各环节吻合,实现了对库存商品管理实时有效的控制。下面针对WMS介绍几个基本功能:基本信息管理:系统不仅支持对包括品名、规格、生产厂家、产品批号、生产日期、有效期和箱包装等商品基本信息进行设置,而且货位管理功能对所有货位进行编码并存储在系统的数据库中,使系统能有效的追踪商品所处位置,也便于操作人员根据货位号迅速定位到目标货位在仓库中的物理位置。上架管理:系统在自动计算最佳上架货位的基础上,支持人工干预,提供已存放同品种的货位、剩余空间,并根据避免存储空间浪费的原则给出建议的上架货位并按优先度排序,操作人员可以直接确认或人工调整。库存管理:系统支持自动补货,通过自动补货算法,不仅确保了拣选面存货量,也能提高仓储空间利用率,降低货位蜂窝化现象出现的概率。系统能够对货位通过深度信息进行逻辑细分和动态设置,在不影响自动补货算法的同时,有效的提高了空间利用率和对控制精度。WMS基础1.2.1.WMS任务在WMS中,所有的出站、仓储、入站等操作,都是有对应的任务来进行流程的控制的,并可在任务控制台上查询,通常入站包括PO&RMA,出站包括SO,仓储包括MO。.WMS任务对应的后台表:Mtl_material_transactions_tempmmtt事务处理临时表mtl_transaction_lots_tempmtlt批次表Wms_dispatch_taskswdt任务临时表Mtl_material_transactionsmmt事务处理表Wms_dispatch_tasks_historywdth任务历史表Rcv_transactionsrt接收事务处理表(用于入库)对于不同类型的任务例如,出库、入库、仓储,以及对于不同状态的任务,以上5张表都有不同的关联关系。WMS任务的状态通常有三个阶段,如下图待定待定已装货已完成LOAD操作DROP操作.任务状态的取值逻辑为:decode(wdt.status,

NULL

,

nvl(mmtt.wms_task_status,

1),wdt.status)状态对应的快速编码为:WMS_TASK_STATUS待定状态的任务数据来源于mmtt表,已装货状态的数据由mmtt关联wdt表。已完成状态的数据由mmt关联wdth或rt关联wdth。.每个任务状态对应后台表的操作任务状态后台表操作待定Insertmmttmtlt已装货Insertwdtdeletemtlt已完成DeletemmttDeletewdtInsertmmt(对于入站有rt)Insertwdth1.2.2.托盘在WMS中,托盘是一个核心概念,将贯穿整个WMS模块。每个托盘都会有唯一的标识码,用于存放货物。在未启用WMS时,物料事务处理会精确到子库、货位,在启用WMS后,现有量、库存事务等都可以精确到托盘。主要有如下功能:查看托盘状态查看托盘所在子库、货位,及其内部包含的物品托盘关联任务.托盘状态托盘状态维护在快速编码中:WMS_LPN_CONTEXT可由如下SQL查询托盘的状态:--LPN状态SELECTlpn.license_plate_number,lpn.lpn_context,flv.meaning,flv.descriptionFROMwms_license_plate_numberslpn,fnd_lookup_valuesflvWHERE1=1ANDflv.lookup_type='WMS_LPN_CONTEXT'ANDflv.language='ZHS'ANDflv.lookup_code=lpn.lpn_context;.托盘库存位置及内容若托盘存在于库存中,则表wms_license_plate_numbers中记录子库和货位等信息。表wms_lpn_contents会记录LPN中有哪些内容。可由如下SQL查询:--查询LPN内容SELECTwlc.inventory_item_id,wlc.quantity,wlc.lot_numberFROMwms_license_plate_numberslpn,wms_lpn_contentswlcWHEREwlc.parent_lpn_id=lpn.lpn_id;托盘在被重新利用后,会将历史信息插入表wms_lpn_histories中。1.2.3.WMS规则规则是WMS模块的核心内容之一。在此将介绍规则相关的表,规则创建在后台的流程,以及规则指导WMS任务的原理。路径:数据仓库管理员->设置->配置仓库->规则->仓库执行创建规则创建规则可分为三步:选择规则类型,定义名称、分配模式(Pick)、数量函数(PutAway);“规则”对应视图:wms_rules_v分配模式LOV对应的sql如下:SELECTlookup_code, meaning, description FROMmfg_lookupsWHERElookup_type='WMS_RULE_ALLOCATION_MODE'ORDERBYlookup_code设置规则的限制等;规则中可以通过对“对象”、“参数”、“运算符”、“参数值”等的设置,来指导WMS任务。“限制条件”对应视图:wms_restrictions_v“对象”对应视图:wms_objects_rule_lov_v“参数”对应视图:wms_parameters_lov_v--排序标准SELECTwob.object_id,, , t.column_name, t.expression FROMwms_objects_tlwotl, wms_objects_bwob, wms_parameters_bt, wms_parameters_tlpWHEREwotl.object_id=wob.object_id ANDt.object_id=wob.object_id ANDt.parameter_id=p.parameter_id ANDwotl.language='ZHS' ANDp.language='ZHS' ANDt.expressionISNOTNULL AND(t.use_for_put_sort_flag='Y'ORt.use_for_pick_sort_flag='Y')ANDIN('目标货位','目标子库存','子库存/货位','LP')规则的参数有的会在后台对应procedure,可以在wms_parameter_pvt中找到启用规则;此步将在后台生成一个程序包,包名为:wms_rule_(rule_id)因此每一个规则都对应一个程序包。如果要修改规则,则选先取消启用,再次启用时,程序包也会随之更新。

创建规则的API:wms_rule_pvt.generaterulepackage.创建策略:策略可由一个or多个规则组成,如下图:规则工作台在创建完规则和策略之后,还需将其加入规则工作台,才可正真生效,并指导WMS任务。如下图:在规则工作台中,“序号”很重要,优先级较高的规则or策略对应较小的序号,并且只有启用了才能生效。此外,只有符合“组织”“事务处理类型”等限制的WMS任务才会走此规则or策略。规则工作台对应视图为:WMS_SELECTION_CRITERIA_TXN_V规则引擎原理以挑库规则为例:在对SO生成的MO进行挑库时,会首先判断MO所在库存组织是否启用WMS,若未启用WMS,则调用inv_autodetail.create_suggestions获取分配的出库信息;若启用WMS,则调用WMS_Engine_PVT.Create_Suggestions获取规则建议的出库信息。规则引擎会有如下步骤来指导MO的来源子库、货位、以及托盘:遍历规则工作台相关API:wms_rules_workbench_pvt.search根据物料搬运单的库存、子库、订单类型等信息从规则工作台中搜索符合条件的启用的策略和规则。遍历策略or规则相关API:wms_strategy_pvt.Applywms_rule_pvt.apply遍历时会按照规则工作台上,策略和规则对应的序号来依次遍历。首先判断MO库存组织子库等信息是否满足规则的“限制”,再根据“排序标准”,取符合序列的第一个记录。Wms_rule_pvt.apply中有如下流程:pick_open_rule调用规则程序包的open_cursorfetchcursor调用规则程序包的fetch_one_row获取一条记录后,check可用量等信息,若满足条件,则调用validate_and_insert生成一条任务(插入全局临时表wms_transaction_temp)则将信息放入一个数组g_consists(l_cur_consist_group)中,并累加数量,若数量满足,则close_pick_rule,反之继续fetchcursor.例外路径:数据仓库管理员设置事务处理设置库存事务处理事务处理原因在规则引擎指导了WMS任务后,任务临时表mmtt表中会记录规则建议的来源子库,来源货位,目标子库,目标货位,分配的LPN等建议信息。但在实际操作中,会出现一些例外,比如规则引擎指导挑库到子库A,但实际时,挑库到了子库B,那么此时的操作就是个“例外”,会需要选择一个“例外原因”。例外原因表:mtl_transaction_reasonsmtrmtr.reason_type:1=LOAD2=DROP例外历史记录表:wms_exceptionswe此表会记录任务对应的所有例外历史任务表:wms_dispatch_tasks_historywdthwe.task_id=wdth.transaction_temp_id=mmtt.transaction_temp_id例外对于出站和入站的任务,情况有所不同。出站的例外:对于出站or仓储的任务,LOAD操作和DROP操作都可以做例外,但是,最终生成的事务处理mtl_material_transactionsmmt表中的mmt.reason_id,仅存储DROP时产生的例外原因。入站的例外:对于入库任务,只在DROP的时候,会有例外,LOAD没有例外。基础数据API基础数据之LPNLPN的创建空托盘的创建空托盘的创建只需要传入参数p_lpn和p_organization_id就可以了,比较简单。DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_lpn_idNUMBER;BEGINl_api_version:=1;wms_container_pub.create_lpn(p_api_version=>l_api_version,x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_lpn=>'V56-0000107',p_organization_id=>81,x_lpn_id=>x_lpn_id);--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count,p_encoded=>'F');dbms_output.put_line(x_msg_data);ENDLOOP;ELSEdbms_output.put_line('x_lpn_id:'||x_lpn_id);dbms_output.put_line('x_return_status:'||x_return_status);dbms_output.put_line('x_msg_data:'||x_msg_data);--ENDIF;ENDIF;END;非空托盘的创建非空托盘的创建即为LPN分配子库存,货位,批次,物料,那么在调用API时对应的参数要传值进去,而传值必须要满足一定的条件。DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_lpn_idNUMBER;BEGINwms_container_pub.create_lpn(p_api_version=>1,x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_lpn=>'V56-0000107',p_organization_id=>81,p_container_item_id=>8669,p_lot_number=>'D01130A1C',p_revision=>1,p_subinventory=>25207,p_locator_id=>1653,--156,p_source=>1,x_lpn_id=>x_lpn_id);--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count,p_encoded=>'F');dbms_output.put_line(x_msg_data);ENDLOOP;ELSEdbms_output.put_line('x_lpn_id:'||x_lpn_id);dbms_output.put_line('x_return_status:'||x_return_status);dbms_output.put_line('x_msg_data:'||x_msg_data);--ENDIF;ENDIF;END;其中货位和子库存的取值来源于mtl_item_locations标准取值如下:SELECT*intop_locatorFROMmtl_item_locationsWHEREorganization_id=p_anization_idANDsubinventory_code=p_sub.secondary_inventory_nameANDinventory_location_id=p_locator.inventory_location_idANDNVL(disable_date,SYSDATE)>=SYSDATE;--货位,子库存如果只有子库存和货位而没有给p_source传值那么新创建的LPN中子库存和货位不会有值,原因就是在后台p_source默认的值为5而在插入数据前的判断中如果lpn_context(其值来自于p_source)的值为5,则把子库存和货位置为空,故要给p_source赋一个不是5的值。物料的取值来源于mtl_system_items如下(且字段container_item_flag为Y):select*intop_itemfromMTL_SYSTEM_ITEMSwhereorganization_id=p_anization_idandinventory_item_id=p_item.inventory_item_id如果mtl_system_items表中的lot_control_code等于2(启用了批次控制),批次的取值来源是mtl_lot_numbers如下:SELECTmln.*INTOp_lotFROMmtl_lot_numbersmlnWHEREmln.inventory_item_id=p_item.inventory_item_idANDanization_id=p_anization_idANDmln.lot_number=p_lot.lot_numberANDmln.lot_numberIN (SELECTlot_number FROMmtl_onhand_quantities_detailmoq WHEREmoq.inventory_item_id=p_item.inventory_item_id ANDanization_id=p_anization_id ANDmoq.lot_number=p_lot.lot_number ANDmoq.subinventory_code= nvl(p_from_sub.secondary_inventory_name,'##') ANDnvl(moq.revision,'##')=nvl(p_revision,'##') ANDnvl(moq.locator_id,-1)= nvl(p_loc.inventory_location_id,-1)ANDrownum<2);假如该批次不存在则可以创建一个新的批次。LPN的更新关于LPN的更新比较简单,只需要把要修改的那条记录和要修改的几个参数传入即可。DECLARE x_return_statusVARCHAR2(1); x_msg_countNUMBER; x_msg_dataVARCHAR2(2000); x_lpn_idNUMBER; l_lpn_tblwms_license_plate_number%ROWTYPE;BEGIN l_api_version:=1; SELECT* INTOl_lpn_tbl FROMwms_license_plate_numbers WHERElpn_id=58006;wms_container_pub.modify_lpn(p_api_version=>l_api_version,x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_lpn=>l_lpn_tbl,p_source_header_id=>567,p_source_name=>'TEST',x_lpn_id=>x_lpn_id);--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count,p_encoded=>'F');dbms_output.put_line(x_msg_data);ENDLOOP;ELSEdbms_output.put_line('x_lpn_id:'||x_lpn_id);dbms_output.put_line('x_return_status:'||x_return_status);dbms_output.put_line('x_msg_data:'||x_msg_data);--ENDIF;ENDIF;END;2.1.3.LPN的重用关于LPN的重用被重用的LPN的lpn_context字段必须为4,否则会报‘LPN不可用:上下文无效’的错误。DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_lpn_idNUMBER;BEGINl_api_version:=1;wms_container_pub.reuse_lpns(p_api_version=>l_api_version,x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_lpn_id=>58003,p_clear_attributes=>'Y'p_new_org_id=>81,p_unpack_inner_lpns=>'Y',p_clear_containter_item_id=>'Y',x_lpn_id=>x_lpn_id);--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count,p_encoded=>'F');dbms_output.put_line(x_msg_data);ENDLOOP;ELSEdbms_output.put_line('x_lpn_id:'||x_lpn_id);dbms_output.put_line('x_return_status:'||x_return_status);dbms_output.put_line('x_msg_data:'||x_msg_data);--ENDIF;ENDIF;END;p_lpn_id就是想要重用的lpn_id字段的值,如果想要重用原lpn的物料信息(原lpn的inventory_item_id不为空),那么就可以把参数p_cleare_containter_item_id传入N即可引用原lpn的物料信息。参数p_unpack_inner_lpns传入Y值即为卸下原来的lpn内容,传入N值即为不卸下原来lpn的内容。基础数据之规则对象的创建,更新,删除由于规则里关于对象的创建,更新和删除没有标准的API可供调用,故在此客户化一个API用以实现该功能。在这个过程中分别向表wms_object_b和wms_object_tl中插入,更新或者删除数据。对象的创建如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_rowidVARCHAR2(30);BEGINcux_wms_rules_pub.create_object(x_return_status=>x_return_status, x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,x_rowid=>x_rowid,p_user_defined_flag=>'N',p_name=>'区域名(测试)',p_description=>'区域名(测试)');IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);dbms_output.put_line('x_rowid:'||x_rowid);END; 对象的更新只需把要更新对象的object_id和要更改的字段作为参数传入,如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_rowidVARCHAR2(30);BEGINcux_wms_rules_pub.update_object(x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_object_id=>5016,p_user_defined_flag=>'Y',p_name=>'目标区域(测试)',p_description=>'目标区域(测试)');IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);END;对象的删除只要把object_id作为参数传进程序包,如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);x_rowidVARCHAR2(30);BEGINcux_wms_rules_pub.delete_object(x_return_status=>x_return_status, x_msg_count=>x_msg_count, x_msg_data=>x_msg_data, p_object_id=>5016);IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);END;参数的创建,更新,删除参数的创建,更新和删除也是客户化的API。这个过程就是在向表wms_parameters_b和表wms_parameters_tl中插入,更新和删除符合规则的数据,下图就是在’目标货位’这个对象上添加一个’目标货位行数’的参数,在传如参数时p_object_id取的是相应对象的object_id,如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);BEGINcux_wms_rules_pub.create_parameter(x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_object_id=>20,p_db_object_ref_type_code=>'2',p_parameter_type_code=>'2',p_data_type_code=>'1',p_expression=>'substr(base.segment1,9,3)',p_use_for_put_sort_flag=>'Y',p_use_for_put_rest_flag=>'Y',p_use_for_put_qtyf_flag=>'N',p_use_for_pick_sort_flag=>'N',p_use_for_pick_rest_flag=>'N',p_use_for_pick_qtyf_flag=>'N',p_use_for_tt_assn_flag=>'N',p_user_defined_flag=>'N',p_use_for_label_rest_flag=>'N',p_use_for_cg_rest_flag=>'N',p_use_for_pick_consist_flag=>'N',p_use_for_op_selection_flag=>'N',p_name=>'目标货位行数',p_description=>'目标货位行数');IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);END;由图可看出添加的参数的值来源是截取物料编码的9到11位.更新参数就需要把想要改变的值通过传参的形式更新到表中,如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);BEGINcux_wms_rules_pub.update_parameter(x_return_status=>x_return_status, x_msg_count=>x_msg_count, x_msg_data=>x_msg_data, p_parameter_id=>40400000081, p_expression=>'substr(base.segment1,12,2)', p_name=>'目标货位层数',p_description=>'目标货位层数');IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);END;删除规则中的参数时只需要把parameter_id作为参数传入,经过验证后,将其对应的数据删除。如下图:DECLAREx_return_statusVARCHAR2(1);x_msg_countNUMBER;x_msg_dataVARCHAR2(2000);BEGINcux_wms_rules_pub.delete_parameter(x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_parameter_id=>40400000081);IFx_return_status<>fnd_api.g_ret_sts_successTHENIFx_msg_count>0THENx_msg_data:=NULL;FORindIN1..x_msg_countLOOPx_msg_data:=fnd_msg_pub.get_detail(ind,'F');ENDLOOP;ENDIF;ENDIF;dbms_output.put_line('x_return_status:'||x_return_status);END;基础数据之区域2.3.1.区域的创建区域的创建很简单,就是经过一系列验证之后,向wms_zones_b和wms_zones_tl这两张表中插入我们想要创建的新区域的信息,其中区域类型x_zone_type只可以为’A’(ATF区域)或者’L’(人工计划区域),当x_attribute1为’横梁式货架’时,x_attribute2才可以为1或者2表示入库优先级,如下图:DECLARE x_return_statusVARCHAR2(1); x_msg_countNUMBER; x_msg_dataVARCHAR2(2000); x_rowidVARCHAR2(30);BEGINcux_wms_zones_pub.create_zones(x_return_status=>x_return_status,x_msg_count=>x_msg_count,x_msg_data=>x_msg_data,p_zone_type=>'A',p_organization_id=>81,p_enabled_flag=>'y',p_attribute1=>'横梁式货架(测试)',p_attribute2=>'2',p_zone_name=>'SD_LK_TEST',p_description=>'山东立库测试'); --返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count, p_encoded=>'F');dbms_output.put_line('l_return_status:'||l_return_status);dbms_output.put_line('l_msg_data:'||x_msg_data);ENDLOOP; ELSEdbms_output.put_line('x_return_status:'||l_return_status);ENDIF;END;2.3.2.区域的更新区域的更新,把需要更改的区域信息作为参数传入,如下图:DECLARE x_return_statusVARCHAR2(1); x_msg_countNUMBER; x_msg_dataVARCHAR2(2000); x_rowidVARCHAR2(30);BEGINcux_wms_zones_pub.update_zones(x_return_status=>x_return_status, x_msg_count=>x_msg_count, x_msg_data=>x_msg_data, p_zone_id=>131, p_zone_type=>'A', p_organization_id=>81, p_disable_date=>NULL, p_attribute_category=>NULL, p_attribute1=>'散货区(测试)', p_attribute2=>NULL, p_attribute3=>20, p_attribute4=>30, p_zone_name=>'SD_LK_TEST', p_description=>'山东立库测试');--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count, p_encoded=>'F');dbms_output.put_line('l_return_status:'||l_return_status);dbms_output.put_line('l_msg_data:'||x_msg_data);ENDLOOP; ELSEdbms_output.put_line('x_return_status:'||l_return_status);ENDIF;END;单据API单据API之SO3.1.1.SO的创建在WMS流程中只在ERP创建销售订单,在ERP创建完成之后同步到DWMS在做后续的发放,挑库,卸货等等。销售订单的创建有标准的API(OE_ORDER_PUB)可以调用,在调用API前会先向参考表oe_order_headers_all和oe_order_lines_all创建的记录组中插入我们需要的值,然后以记录组作为参数的形式传入API中。表oe_order_headers_all的一些关键字:字段说明org_idOUorder_number订单号,自动编号的,给空order_source_id订单来源,手工输入是0,即Onlineorig_sys_document_ref订单参考,和订单来源构成唯一性,一般用来标志源系统IDoperation_codeINSERT或者UPDATE,当订单来源和参考组合存在时用更新,当订单为Enter状态时,可以DELETEready_flagYordered_date订单日期order_type_id订单类型,来自oe_transaction_types_allprice_list_id价目表,来自QP_LIST_HEADERS_ALLconversion_type_code货币转换类型,可由订单类型默认transactional_curr_code货币单位tax_exempt_flagS,税务免除标志payment_term_id付款条件,也可以默认salesrep_id销售员ID,来自ra_salesreps(需先初始化)sold_from_org_id销售OUsold_to_org_id客户ID,来自hz_cust_accountsship_from_org_id发运库存ship_to_org_id发运地址,来自hz_cust_site_uses_all(收货方)invoice_to_org_id开票地址,来自hz_cust_site_uses_all(收单方)booked_flagY或者Nclosed_flagY或者N5个who字段习惯上都给BEGIN fnd_global.apps_initialize(13506,21676,385); mo_global.init('CUX'); mo_global.set_policy_context('S',707); oe_msg_pub.initialize; oe_debug_pub.initialize;--必须做的初始化 l_header_rec.order_source_id:=0;--订单来源,手工输入是0 l_header_rec.orig_sys_document_ref:='SHIPMENT_REQUEST:12345678';--订单参考,用来标志源系统ID l_header_rec.sold_to_org_id:=2695;--客户ID l_header_rec.ship_from_org_id:=707;--发运库存l_header_rec.ship_to_org_id:=109211;--发运地址 l_header_rec.invoice_to_org_id:=109210;--开票地址 l_header_rec.salesrep_id:=100411860;l_header_rec.version_number:=0;l_header_rec.booked_flag:='Y'; l_header_rec.open_flag:='Y'; l_header_rec.flow_status_code:='BOOKED';--订单状态 l_header_rec.operation:='CREATE';-—创建订单 l_header_rec.ordered_date:=SYSDATE; l_header_rec.order_type_id:=3626;--订单类型 l_header__id:=707; l_header_rec.price_list_id:=6007;--价目表 l_header_rec.payment_term_id:=5;--付款条件--订单行数据 l_line_tbl.delete; i:=1; l_line_tbl(i):=oe_order_pub.g_miss_line_rec; l_line_tbl(i).operation:=oe_globals.g_opr_create; l_line_tbl(i).booked_flag:='N'; l_line_tbl(i).orig_sys_document_ref:='SHIPMENT_REQUEST:12345678'; l_line_tbl(i).inventory_item_id:=8; l_line_tbl(i).ship_from_org_id:=81; l_line_tbl(i).last_updated_by:=fnd_global.user_id; l_line_tbl(i).last_update_date:=SYSDATE; l_line_tbl(i).last_update_login:=fnd_global.login_id; l_line_tbl(i).line_number:=i; l_line_tbl(i).ordered_quantity:=20; l_line_tbl(i).org_id:=707; l_line_tbl(i).schedule_arrival_date:=SYSDATE; l_line_tbl(i).calculate_price_flag:='Y'; l_line_tbl(i).subinventory:=NULL;--登记销售订单l_action_qeq_tbl(1).entity_code:=oe_globals.g_entity_header;l_action_qeq_tbl(1).request_type:=oe_globals.g_book_order;--调用api生成销售订单oe_order_cess_order(p_api_version_number=>1.0, x_return_status=>l_return_status, x_msg_count=>l_msg_count,x_msg_data=>x_msg_data,p_header_rec=>l_header_rec,p_line_tbl=>l_line_tbl,p_action_request_tbl=>l_action_qeq_tbl,x_header_rec=>o_header_rec,x_header_val_rec=>l_header_val_rec,x_header_adj_tbl=>l_header_adj_tbl,x_header_adj_val_tbl=>l_header_adj_val_tbl,x_header_price_att_tbl=>l_header_price_att_tbl,x_header_adj_att_tbl=>l_header_adj_att_tbl,x_header_adj_assoc_tbl=>l_header_adj_assoc_tbl,x_header_scredit_tbl=>l_header_scredit_tbl,x_header_scredit_val_tbl=>l_header_scredit_val_tbl,x_line_tbl=>o_line_tbl,x_line_val_tbl=>l_line_val_tbl,x_line_adj_tbl=>l_line_adj_tbl,x_line_adj_val_tbl=>l_line_adj_val_tbl,x_line_price_att_tbl=>l_line_price_att_tbl,x_line_adj_att_tbl=>l_line_adj_att_tbl,x_line_adj_assoc_tbl=>l_line_adj_assoc_tbl,x_line_scredit_tbl=>l_line_scredit_tbl,x_line_scredit_val_tbl=>l_line_scredit_val_tbl,x_lot_serial_tbl=>l_lot_serial_tbl,x_lot_serial_val_tbl=>l_lot_serial_val_tbl,x_action_request_tbl=>x_action_qeq_tbl);--返回错误信息IFl_return_status<>fnd_api.g_ret_sts_successTHENFORl_indexIN1..l_msg_countLOOPx_msg_data:=oe_msg_pub.get(p_msg_index=>l_msg_count,p_encoded=>'F');dbms_output.put_line(x_msg_data);ENDLOOP;ELSECOMMIT;Dbms_Output.Put_Line(x_action_qeq_tbl(1).return_status);Dbms_Output.Put_Line('订单导入成功!');Dbms_Output.Put_Line('订单编号:'||x_Header_Rec.order_number);ENDIF;END;字段ship_to_org_id,sold_to_org_id和invoice_to_org_id来源如下(找出同一个sold_to_org_id对应的ship_to_org_id和invoice_to_org_id)l_site_use_code:='SHIP_TO';SELECT'VALID'Intol_dummyFROMHZ_CUST_SITE_USES_ALLSITE, HZ_CUST_ACCT_SITESACCT_SITEWHERESITE.SITE_USE_ID=p_header_rec.ship_to_org_idANDSITE.SITE_USE_CODE=l_site_use_codeANDSITE.CUST_ACCT_SITE_ID=ACCT_SITE.CUST_ACCT_SITE_IDANDSITE.STATUS='A'ANDACCT_SITE.STATUS='A'AND--bug2752321ACCT_SITE.CUST_ACCOUNT_IDin(SELECTp_header_rec.sold_to_org_idFROMDUALUNIONSELECTCUST_ACCOUNT_IDFROMHZ_CUST_ACCT_RELATE_ALLhWHERERELATED_CUST_ACCOUNT_ID=p_header_rec.sold_to_org_id and_id=acct__id andship_to_flag='Y'andstatus='A') --bug4205113ANDEXISTS(SELECT1FROMHZ_CUST_ACCOUNTSWHERECUST_ACCOUNT_ID=ACCT_SITE.CUST_ACCOUNT_IDANDSTATUS='A')ANDROWNUM=1; l_site_use_code:='BILL_TO';SELECT'VALID'Intol_dummyFROMHZ_CUST_SITE_USES_ALLSITE, HZ_CUST_ACCT_SITESACCT_SITEWHERESITE.SITE_USE_ID=p_header_rec.invoice_to_org_idANDSITE.SITE_USE_CODE=l_site_use_codeANDSITE.CUST_ACCT_SITE_ID=ACCT_SITE.CUST_ACCT_SITE_IDANDSITE.STATUS='

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论