发运确认后,订单行保持“已挑库”状态 Order Line Remains in Picked (Awaiting Shipping) Status After Ship Confirmation

发运确认后,订单行保持“已挑库”状态 Order Line Remains in Picked (Awaiting Shipping) Status After Ship Confirmation

这个问题困扰了项目组不少时间,最终在my oracle support 中找到了对应的方案。重新整理如下:
重要的内容摘录如下:

应用场景

Oracle 订单管理 -12.0.0 及后续版本 
本文档的信息适用任何平台。
表单:WSHFSTRX.FMB - 发运事务处理表单
表单:OEXOEMOE.FMB - 录入订单

症状:

登记订单的同时,WSH_DELIVERY_DETAILS表中创建状态为“等待发放”的配送详细信息。然而,OMI 标记为"X"。
配送详细信息可以被成功挑库发放和发运确认。
当“连接行程停靠站”运行时,它成功完成但是没有连接配送详细信息到销售订单,因此订单行并不会显示为“已发运”。它的状态仍然为“已挑库”(等待发运)。

OMI= Order Management Interface.
表wsh_delivery_details中,OMI的列是oe_interfaced_flag。
登记订单以后,系统在wsh_delivery_details中创建一个配送详细信息,并且oe_interfaced_flag=N。一旦发运完成,系统连接配送详细信息到订单管理,并且oe_interfaced_flag更改为"Y"。
当oe_interfaced_flag=X时,系统不能连接配送详细信息到订单管理。
代表这个OMI标记的方式有
  • OMI=X
  • OMI flag
  • OM flag
  • oe_interfaced_flag
查验任何打开的订单是否有oe_interfaced_flag=X的发运详细信息,可以运行:
select wdd.source_header_number "Order Number", wdd.source_line_id,
wdd.delivery_detail_id, wdd.released_status, wdd.oe_interfaced_flag,
wdd.creation_date, ol.flow_status_code,ol.open_flag
FROM wsh_delivery_details wdd,
oe_order_lines_all ol
WHERE wdd.source_line_id = ol.line_id
and wdd.source_code = 'OE'
and wdd.container_flag = 'N'
and wdd.oe_interfaced_flag = 'X'
and ol.open_flag = 'Y';

步骤

  1. 责任:订单管理超级用户
  2. 创建并登记订单
  3. 挑库发放
  4. 发运确认
  5. 订单管理行显示"已挑库",而不是"已发运"
  6. 在HTMomse12.sql中输出flow code = Awaiting Shipping(等待发运)。

原因

当配置文件选项"WMS:部署模式"被设置为"已分配模式"时,配送详细细节被创建时oe_interfaced_flag=X,并且登记订单的时候不是N。这个配置文件选项是R12新增的。

配置文件选项"WMS:部署模式"有三个值可供选择:
  • "集成模式"
  • "已分配模式"
  • "LSP模式"
三种模式的设置情形:
  • 集成模式:当WMS系统与ERP或者EBS集成时使用这个设置;
  • 已分配模式:当想要有一个断开的仓库业务----可以7天24小时起作用,而与ERP状态无关----时,选择这个设置。你可以再一个分布式仓库管理系统实例上拥有仓库或者每个仓库有一个分开的DWMS实例。这些DWMS实例将和host(ERP)系统沟通事务处理。
  • LSP模式:由物流服务提供商(提供物流服务却不拥有物料)选定此设置。LSP是一个单独的解决方案,作为LSP提供商,你需要定义客户并为物料接收、储存和发运向客户收费(开票)。LSP将需要与不同的客户系统沟通并支持"多租户"。
如果配置文件选项被设置为"已分配模式"或者"LSP模式",登记一个订单时,系统在wsh_delivery_details中创建配送详细信息,并且oe_interfaced_flag = X。

下面Bug中开发重审了这个问题:
Bug 12866774 - 发运确认后,订单行仍然是“已挑库”(等待发运)状态

解决方案

1、修改配置文件选项"WMS:部署模式"为"集成模式"。(系统管理员责任,导航到配置文件->系统)
2、退出应用,重新登录。
3、创建新的订单行,然后确认wsh_delivery_details上的oe_interfaced_flag不是"X"。你可以使用前面的查询语句。

由于配置文件选项"WMS:部署模式"职能在地点层设置,这意味着单一的EBS实例只能有"启用已分配模式WMS的组织"或者"启用WMS的组织",但不能同时选择。

PS:HTMomse12.sql文件内容
/* HTMomse not release dependant */
/* # $Header: HTMomse.sql 1.0                                    20160229    Support $

#+======================================================================================+
#|  Copyright (c) 2002 Oracle Corporation Redwood Shores, California, USA               |
#|   Oracle Support Services.  All rights reserved                                      |
#+======================================================================================+

#========================================================================================
#  PURPOSE:		This script will collect information related to a sales order 
#			transaction and it's Workflow processes. This script should be 
#			run whenever there are problems related to a sales order 
#			transaction, including processes like Pick Release, Shipping, 
#			Invoice interface.
#
#  FILE NAME:		HTMomse.sql
#  FILE VERSION:	1.0
#  PRODUCT: 		Oracle Order Management
#  PRODUCT VERSIONS: 	11i and 12
#  PLATFORM: 		Generic
#  PARAMETERS:		Order_Number, Header_Id (opt), Line_Id (opt)
#========================================================================================

#  USAGE: 	sqlplus apps/apps @HTMomse.sql
#
#  This script requires a header_id to be passed in as a parameter ONLY if there are 
#  multiple header_id's for the order requested.  If there is only one header_id returned 
#  after inputting the order number, simply hit enter and this header_id will be assumed.  
#
#  Entering a line_id is only required when you wish to have output for one order line.  
#  Otherwise, hit enter without entering a line_id and all lines will be output in the 
#  script.
#
#  The script writes to an output file named HTMomse_.html on DB Server
#  under 'utl_file_dir', this file may be viewed in any HTML browser.
#  
*/

/* Verify the instance is Release to set the environment later */

variable        apps_version         varchar2(100);


set serveroutput on

BEGIN
 SELECT max(release_name)
   INTO :apps_version
   FROM fnd_product_groups;
 dbms_output.put_line('Applications Version '||:apps_version);
END;
/

WHENEVER SQLERROR CONTINUE;

set term off;
/*
#=========================================================================================
# CHANGE HISTORY: 
  This script is based on HTMomse12 version 12.0.4.160122

 From HTMomse11i:
 31-MAR-00 Created                                                   rnmercer 
 12-DEC-00 Major modifications to the look of the report including   rnmercer
           abreviated column names for flags, etc.  A legend cross
           referencing the abreviations is included in the output.
           Got rid of the need to input the org_id. It is set via
           derived data from the header_id.  
 05-DEC-01 Changed format of output filename as part of the iTar
           automated scripting initiative.                           rodavid
 02-APR-04 Modified to create HTML output file and included basic
 14-APR-04 verifications to help the Analysis                        rijames
 For HTMomse12:
 09-JAN-08 Created as copy of HTMomse11i 7.5.1                       rijames
 11-JAN-08 Modified set environment using rodavid script             rijames
 ..
 22-JAN-16 Add validation for options case and size-1 capital char   rijames Ver. 12.0.4.160122
 08-FEB-16 Allow Header information (WF, Price, Holds) to print      rijames
           when  'Header Only' is enabled (no lines on Order). 
 08-FEB-16 Add Internal Activity Status on Work Flow outputs.        rijames
 23-FEB-16 Add field Batch_id on DELIVERY DETAILS.                   rijames
 23-FEB-16 Add field Reservable on ORDER LINES.                      rijames
 26-FEB-16 Add queries for Back to Back Orders on PO Requisitions    rijames
 
 For HTMomse
 01-MAR-16 Modify existing HTMomse12 to execute on Rel.11i also      rijames
           New fields for Rel.12 marked as comments on SQL's
 08-MAR-16 Add rownum = 1 on OE_LINES WF status to manage ORA-1422   rijames Ver. 1.0.160309
 16-MAR-16 Add OTM Installed, Enabled on Organizations query.        rijames
 16-MAR-16 Remove duplicate column Source_Line_Set_Id from WDD       rijames
 17-MAR-16 Add additional exeptions on OE Headers and OE Lines       rijames
 17-MAR-16 Add Mtl_Transactions_Enabled_Flag on WDD results          rijames Ver. 1.0.160317
 21-MAR-16 Modify SQLs on Receivables tables to include missing trx  rijames Ver. 1.0.160321
 24-MAR-16 Add Order Source on OE_Headers                            rijames 
 24-MAR-16 Add Service Details on OE_Lines                           rijames Ver. 1.0.160324
 25-MAR-16 Correct WMS default to 'N'                                rijames Ver. 1.0.160325
#
#========================================================================================

References
----------
The latest version of the script can be obtained from My Oracle Support
 Note 133464.1 - HTMOMSE Sales Order Diagnostic Script 

*/

variable        v_order_num         varchar2(100);
variable        v_error             number;
variable        v_line_tot          number;
variable        v_line_cnt          number;
variable        sales_ord_id        number;
variable        v_op_unit           number;
variable        v_head_cnt          number;
variable        v_header_id         number;
variable        v_head_only         varchar2(1);

variable        r_line_t            varchar2(100);
variable        r_res_q             number;
variable        r_wdd               number;
variable        r_flag              varchar2(100);
variable        r_pro_na            varchar2(100);
variable        r_act_na            varchar2(100);
variable        r_result            varchar2(100);
variable        r_act_s             varchar2(100);
variable        r_error             number;
variable        is_opm              varchar2(2);

variable        all_or_top10        varchar2(100);


set arraysize 4;
set pagesize 58; 
set term on;
set linesize 145;
set underline =; 
set verify off; 
set serveroutput on size 1000000;
set feedback off;
     
-- OE_ORDER_HEADERS 
column HEADER_ID               format 99999999;
column ORGANIZATION_NAME       format A30;
column TYPE_ID                 format 99999999;
column TYPE_NAME               format A15;
column ORD_DATE_TYPE           format a15;
column ORD_NUM                 format 999999999;
column VERS                    format 9999;
column ORD_TYPE_ID             format 999999999; 
column FLOW_CODE               format a22;
column CUST_NAME               format A20;
column CUST_ID                 format 999999999; 
column SHIP_TO_ID              format 999999999;
column SHIP_TO                 format A12;
column SOLD_TO_ID              format 999999999;
column PO_NUMBER               format A09;
column DATE_ORD                format A15;
column PL_ID                   format 99999;
column PRICE_LIST_NAME         format A15;
column PL_NAME                 format A15;
column SHIP_PART               format A09; 
column ORGANIZATION            format 9999999;
column WH_ID                   format 99999;
column DEMAND_CLASS            format A12;
column OP                      format A05;
column CN                      format A05;
column BK                      format A05;
column DRP_SHP                 format A07; 
column CYCLE_ID                format 99999999;
column ORD_SRC_ID              format 99999999;
column TRANS_TYPE              format A12;
column CATEGORY                format A08;
column SP                      format A05;
column CAT                     format A06;

-- WF_NOTIFICATIONS
column TO_USER        format a22;
column ORIG_RECIP     format a10;
column RECIP_ROLE     format a10;
column MAIL_STAT      format a9;
column MESSAGE_NAME   format a25;
column SUBJECT        format a45;

-- OE_TRANSACTION_TYPES_ALL
column ORDER_TYPE_NAME         format A25;
column TYPE_NAME               format A15;
column CONSTANTOE              format A15;
column SHIP_PRIORITY           format A13;
column SYS_REQD                format A08;

--  OE_ORDER_LINES_ALL

column LINE_ID                 format 99999999;
column LINE                    format A08;
column LINE_NUM                format A08;
column LINE_CTG                format A09;
column CONFIG_HDR_ID           format B99999999;                 
column SSCHED                  format B9999;
column PRT_LINE_ID             format B99999999;
column ATO_LINE_ID             format B99999999;
column LNK_LINE_ID             format B99999999;
column SHP_LINE_ID             format B99999999;
column SRC_LINE_ID             format B99999999;
column SRV_LINE_ID             format B99999999;
column ITEM_ID                 format 99999999;
column ITEM                    format A17;
column ORD_Q                   format 999999.99;
column ORG_Q                   format 999999.99;
column REQ_Q                   format 999999.99;
column PRICE                   format $999999999.99;
column SHP_Q                   format 999999.99;
column Q_INC                   format 999999.99;
column SHN_Q                   format 999999.99;
column SHP_Q                   format 999999.99;
column FUL_Q                   format 999999.99
column RES_Q                   format 999999.99;
column INC_Q                   format 999999.99;
column CAN_Q                   format 999999.99;
column LN_SET_TY             format A11;
column SH_SET_TY             format A11;
column AR_SET_TY             format A11;
column REQUEST_D               format A15;
column SCHEDUL_D               format A15;
column SOURCE_TYPE             format A11;
column DEM_CLASS               format A10;
column LINE_DETAIL_ID          format 9999999999; 
--column OPEN_FL                 format A07;
--column CANC_FL                 format A07;
--column BOOKED                  format A07;
column SH                      format A05;
column VD                      format A05;
column FF                      format A05;
column SUBINV                  format A10;
column SSC                     format A05;
column SI                      format A05;
column II                      format A05;
column INVC_INT_STAT           format A14;
column SHIPPABLE               format A08;
column TRANSACTABLE            format A08;
column RESERVABLE              format A08;
column RELEASED                format A08;
column FOR_REVENUE             format A08;
column DELIVERY                format 9999999999;

column SET_TYPE                format A15;
column SET_NAME                format A10;
column STATUS                  format A06;
column SCH_SHP_DT              format A10;
column SCH_ARV_DT              format A10;
column CARRIER                 format A15;
column SHIP_METHOD             format A15;

column wf_act_code             format a11;
column wf_result               format a9;
column hist_comments           format a45;
column hist_type               format a12;
-- column PRICE                   format $9999999999.99;


-- WORKFLOW TABLES
column ITEM_KEY                format A08;
column FLOW_PROCESS            format A22;
column RESULT_CODE             format A15;
column RESULT                  format A15;
column ASSIGNED_USER           format A10;
column ERROR_NAME              format A19;
column PROCESS_NAME            format A25;
column ACTIVITY_NAME           format A25;
column ERROR_ACTIVITY_NAME     format A31;
column ACT_STATUS              format A10;
column HEAD_ID                 format A08;
column LIN_ID                  format A08; 
column NOTIF_ID                format 99999999; 
column ERROR_NAME              format A14;
column ERR_RETRY_ROLE          format A14;
column ERR_RETRY_USER          format A14;
column BEGIN_DATE              format A18;
column END_DATE                format A18;

column ORD_TYPE_NAME           format A20;
column CONSTANTOE              format A12;
column DEMAND_ID               format 9999999999;
column PARDEM_ID               format 9999999999;
column DS_HEADER_ID            format 99999999;
column DS_LINE                 format A08;
column RSV_QTY                 format 9999999.99;
column SAT_QTY                 format 9999999.99;
column PND_QTY                 format 9999999.99;
column REQUIRD_D               format A15;
column TY                      format 99999;
column UP                      format 99999.99;
column MRP                     format 99999.99;
column ATP                     format 99999.99;
column PICKING_HEADER_ID       format 9999999999;
column PICK_SLIP               format 9999999999;
column BATCH_ID                format 99999999;
column STATUS_CODE             format A11;
column BATCH_NAME              format A30;
column PICKING_LINE_ID         format 9999999999;

column CONFIRMED               format A09;
column RA_INTERFACE            format A12;
column IN_INTERFACE            format A15;
column PICK_LN_DTL_ID          format 9999999999;
column SUBINVENTORY            format A12;
column REV                     format A05;
column LOT_NUMBER              format A15;
column SERIAL_NUMBER           format A20;
column LOCATION_ID             format 9999999999;
column ORG                     format A05;
column ATO                     format A05;
column OPT                     format A05;
column CFG                     format A05;
column SHIP_MC                 format A07;
column SHIP_SET                format 99999999;
column ITEM_TYPE               format A09;
column LINE_TYPE               format A09;
column ENTER                   format A10;
column CANCEL_ORD              format A10;
column CANCEL_LIN              format A10;
column CTG                     format A05;
column INCL                    format A05;
column CONF                    format A05;
column WIP_RSV                 format 9999999;
column WIP_COM                 format 9999999;
column COMP_CODE               format A10;
column SRC_TYP                 format 9999999;
column DEM_TYP                 format 9999999;
column WIP_ID                  format B99999999;
column JOB_NAME                format A15;
column JOB_STAT                format A12;
column UOM                     format A5;
column REL_FL                  format A06;
column SHIP_FL                 format A07;
column FOR_REV                 format A07;
column AUTOSCH                 format A06;
column DEP_NAME                format a10;
column ORG_ID                  format 99999;
column WSH_ID                  format 9999999;
column SOURCE_CD               format a12;
column STAT_CODE               format A11;
column CLOSED_DT               format A09;
column FREIGHT                 format A09;
column PLN_DEP_DT              format A10;
column ACT_DEP_DT              format A10;
column PLN_DEP_ID              format 9999999999;
column ACT_DEP_ID              format 9999999999;
column LOAD_ORD_FLG            format A12;
column DEL_SEL                 format A07;
column DEP_SEL                 format A07;
column REL_STAT                format A08;
column LIN_STAT                format A08;
column WIP_ENT_ID              format 9999999999;
column CONFIRM_D               format A09;
column INVC_STAT               format A10;
column INVC_INTF               format A10;
column SHIP_STAT               format A10;
column SHIP_INTF               format A10;
column LOT                     format A10;
column REV                     format A05;
column SERIAL_NUM              format A10;
column LOC_ID                  format 99999999;
column RESV_FL                 format A07;
column TRAN_FL                 format A07;
column SCHED_STAT                  format A10;
column INVOICE_TRIGGER             format A15;
column SOURCING_STATUS             format A15;
column INVOICING_STATUS            format A16; 
column CANCELLED_FLAG              format A14;
column OPEN_FLAG                   format A09;
column CONSOLIDATION_STATUS_CODE   format A25;
column CONSOLIDATION_PREF_FLAG     format A23; 
column PURCHASE_ORDER_NUM          format A18;

column DEL_ID                      format 9999999;
column DEL_NAME                    format A10;

-- PO_REQUISITION_INTERFACE_ALL
column AUTH_STATUS                 format A11;   
column DEST_TYPE                   format A10;   
column SRC_CODE                    format A11;   
column SRC_TYPE_CODE               format A13;   
  
-- PO_REQUISITION_HEADERS_ALL
column REQ_NUMBER                  format A10;
column SUMMARY                     format A07;
column XFR_OE_FLAG                 format A11;
column REQ_TYPE                    format A11;
column ENABLED                     format A07;

column ITEM_DESC                   format A40;
column CANC                        format A05;        
column ENC_FL                      format A06;               
column RFQ                         format A05;
column SRC_TYPE                    format a09;
column SRC_ORG                     format 9999999;

-- PO_HEADERS
column PO_NUM                      format A06;

-- MTL_SUPPLY         
column SUP_TYPE                    format a08;
-- MTL_RESERVATIONS
column SHIP_READY                  format A12;
column SS_TYPE_ID                  format A11;
-- WSH_TRIPS
column TRIP_ID                     format 9999999;
column TRIP_NAME                   format A10;
column PLND                        format A05;
column VEH_NUM                     format A10;
column CARR_ID                     format 9999999;
column DET_Q                       format 99999;
column DS_TYPE                     format 9999999;
column ROUTE_ID                    format 99999999;
column VEH_ORG_ID                  format 9999999999;

-- WSH_TRIP_STOPS
column STOP_ID                     format 99999999;
column SEQ_NUM                     format 9999999;
column STOP_LOC_ID                 format 99999999999;
column PLN_DEP_DATE                format A15;
column PLN_ARV_DATE                format A15;
column ACT_DEP_DATE                format A15;
column ACT_ARV_DATE                format A15;
column PEND_INTERF                 format A11;


-- WSH_DELIVERY_LEGS
column LEG_ID                      format 9999999;
column LOAD_TENDER_STAT            format A15;

-- WSH_NEW_DELIVERIES  DEL
column DEL_NAME                    format A12;
column BOOKING_NUM                 format A12;
column WAYBILL                     format A12;
column ACCEPTED                    format A15;
column PICKUP_DT                   format A15;
column DROPOFF_DT                  format A15;

-- WSH_DELIVERY_ASSIGNMENTS  ASG
column ACTIVE                      format A06;

-- WSH_DELIVERY_DETAILS
column REL_STATUS                  format A17;
column STA                         format 99999;
column STB                         format 99999;
column HOLD_CODE                   format A09;
column SMC                         format A05;
column SUB                         format A09;
column CUR_SUB                     format A09;
column ORG_SUB                     format A09;
column REV                         format A05;
column LOT                         format A05;
column SERIAL                      format A10;
column LOC_ID                      format 99999999;
column SHIP_METH                   format A10;
column OMI                         format A05;
column INI                         format A05;
column MVT_STATUS                  format A10;
column INV_INT                     format A07;
column CONT_NAME                   format A15;
column CONT_TYPE                   format A10;
column UNIT_NUM                    format A08; 
column CONTAINER                format A09;
column REQ_DATE                 format A15;
column MVT_STAT                 format A08;
column DEL_DET_ID               format 9999999999;
column RELEASE_STAT             format A15;
column REQ_Q                    format 999999.99;
column DLV_Q                    format 999999.99;
column SRQ_Q                    format 999999.99;
column BO_Q                     format 999999.99;
--column CAN_QTY                  format 9999999;
column SHIP_TO_ID               format 999999999;
column LINE_REQ_QTY             format 999999999999;
column TYPE                     format A05;
column MO_LINE_ID               format 9999999999;
column DELIV_ID                 format 999999999;
column SH_FROM_ID               format 999999999;
column SH_TO_ID                 format 99999999;

--WSH_PICK_SLIP_V
column LINE_STAT                format A11;
column FROM_SUB                 format A09;
column TO_SUB                   format A09;
column DETL_DATE                format A15;

column LINE_STATUS              format A11;

--MTL_TXN_REQUEST_LINES_V
column REQ_NUM                  format A10;
column MV_LINE_STAT             format A14;
column MO_NUMBER                format A09;
column MOVE_TYPE_NAME           format A14;
column TRNS_SRC_TYPE            format A13;
column TRNS_TYPE_NAME           format A30;
column TRNS_ACTION              format A15;
column LOT_NUM                  format A10;

--MTL_MATERIAL_TRANSACTIONS_TEMP
column ERROR_EXPL               format A10;
-- RA_CUSTOMER_TRX 
-- RA_CUSTOMER_TRX_LINES
column ORD_LINE_NUM             format 999999999999;
column TRX_NUMBER               format A10;
column CONTEXT                  format A12;
column Order_Num_1              format A11;
column Order_Type_2             format A12;
column Delivery_3               format A10;
column WayBill_4                format A09;
column Line_ID_6                format A09;
column Pick_Line_Id_7           format A14;
column Bill_Lading_8            format A13;
column Warehouse_10             format A12;
column SOURCE                   format A30;
column TAX_FL                   format A06;    

column QTY_ORD                  format 9999999.99;
column QTY                      format 9999999.99;
column ORD_LINE_NUM             format A12;
column HEAD_CAT                 format A8;
column CURR                     format A4;
column TAX_EX_FL                format A09;
column TERR_SEG1                format A09;
column TERR_SEG2                format A09;
column TERR_SEG3                format A09;

column MESSAGE_TEXT             format A145;
column INVALID_VALUE            format A30;

column STATUS                   format a8;

column   ERR_TYPE_KEY      format a14;
column   ASGND_USER        format a10;
column   ERR_PROCESS_NAME  format a18;
column   ERR_ACTIVITY_NAME format a22;

column hold_name format a22;
column hold_type format a12;
column WF_ACTIVITY format a15;
column ENTITY format a8;
column ENTITY2 format a8;
column HOLD_UNTIL format a18;
column RELEASE_REASON format a14;
column H_REL format a5;
column S_REL format a5;

column AF             format A5;
column LIST_TYPE_CODE format a14;
column UA             format A5;
column UF             format A5;
column AP             format A5;
column ARITH_OP       format a8;
column TAX_CODE       format a12;
column INF            format A5;
column EF             format A5;
column CHG_TY_CD      format a9;
column AC             format A5;
column PI             format A5;
column CD             format A5;
column LIST_LN_NO     format a10;
column LK             format 99999;
column PP             format 99999;
column MOD_LVL        format a7;
column PERC           format 9999;

column STATUS         format a6;

column msg_Source     format a14;  

column error          format a30;
column ITEM_DESC      format a25;
column PRICE          format $999999999.99

column REQ_NUM_IK     format A9;

column ACCEPT_REQD    format A10;
column CLS_STAT       format A08;
column CONF_ORD       format A08;
column CURR_CODE      format A05;
column ENABLED        format A07;
column FROZEN         format A06;
column SUMM           format A05;
column TYPE           format A10;
column ITEM_KEY       format A09;
column SHIP_TO        format 9999999;

column PO_LINE        format 9999;
column FIRM           format A05;
column ITEM_DESC      format A40;

column PO_NUM_IK      format A9;
column ERROR_N        format A7;

column SRC_DOC format a9;
column SHP_LINE_STATUS format a15;
column RCV_Q   format 99999;
column TRANS_TYPE              format A10;
column INSPECT_STAT            format A13;
column INTF_SRC                format A11;
column SRC_DOC_CODE            format A12;
column QTY                     format 9999;

column PROC_MODE format a10;
column DEST_TYPE format a9;
column INSP_STAT format a13;
column INSP_SRC  format a8;
column PROC_STAT format a9;
column RCPT_SRC  format a8;
column TRNS_STAT format a9;
column TRNS_TYPE format a9;

column error_wie format a100;

column status format a9;
column firm format 9999;
column WIP_SUP_TYPE format a13;
column JOB_NAME     format a8;
column TRANS_TYPE   format a19;

column SRC_CODE format a8;
column PHS format 99999;
column STAT_TY format 9999999;
column STAT format 9999;
column LOAD format 9999;

column status format a9;
column firm format 9999;
column WIP_SUP_TYPE format a13;
column JOB_NAME     format a8;
column TRANS_TYPE   format a19;

column SRC_CODE format a8;
column PHS format 99999;
column STAT_TY format 9999999;
column STAT format 9999;
column LOAD format 9999;

column STOP_DESCRIPTION   format A58;

column GRS_WT  format 999999;
column FL_PER  format 999.99;
column VOL     format 9999;
column VOL_UOM format a07;
column CF      format A05;
column WT_UOM  format a06;
column FOB_CODE format a11;
column FRT_TERMS format a9;

column LCK       format 99999;
column PROCESS   format 9999999;
column ERROR_CODE format A30;
column ERROR_EXPL format A60;

column FRT_NAME      format a30;
column FRT_TYPE      format a15;
column FRT_LEVEL     format a15;
column QTY           format 9999;

column PRM_Q    format 99999;          
column DLV_Q    format 99999;          
column DTL_Q    format 99999;          

column LCK       format A05;
column PROCESS   format A07;
column ERROR_CODE format A11;
column ERROR_EXPL format A30;

column TRANS_TYPE format A11;

column QTY          format 9999;
column LINE_NUM     format 99999999;
column BATCH_SOURCE format a20;
column SO_LIN       format a06;
column AR_ID        format 99999;
column IR_ID        format 99999;
column WH_ID_10     format a08;
column PA_ID_11     format a08;
column C_RATE       format 999999;
column TR           format 9999;
column EF           format A05;
column INTF_LINE_ID format 99999999999;
column CRD_Q        format 99999;
column PRICE        format $9999999.99;

column PO_NUMBER   format A09;
column COMP_FL     format a07;
column EXTD_AMT    format $999,999.99;
column REV_AMT     format $999,999.99;
column TF          format A05;
column SOURCE      format A11;
column INV_Q       format 99999;
column SHIP_VIA    format A12;

Set heading on

-- WHENEVER SQLERROR EXIT FAILURE ROLLBACK;


prompt 
accept order_number_selected prompt 'Please enter Sales Order number: ' 
prompt 

begin
  
  :v_error     := 0;
  :v_order_num := '&order_number_selected';
  
  select count(*) 
  into :v_head_cnt
  from oe_order_headers_all
  where 
  order_number = :v_order_num;
  
  if :v_head_cnt = 0 then
      RAISE no_data_found;
  end if;

  if :v_head_cnt = 1 then
     select header_id 
     into :v_header_id
     from oe_order_headers_all
     where order_number = :v_order_num;
  end if;


exception
   when no_data_found then
      dbms_output.put_line('ERROR - Invalid order number entered');
      dbms_output.put_line('ACTION - Script execution must be aborted');
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      :v_error := 1;
      raise;
   when others then
      dbms_output.put_line('ERROR - Unable to retrieve order due to error: '||SQLERRM);
      dbms_output.put_line('ACTION - Script execution must be aborted');
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      :v_error := 1;
      raise;

end;
/


-- spool &out_file;


/* Display list of header_ids matching the order number entered */
  select
       ORD.HEADER_ID                 HEADER_ID,
       TYP.NAME                      ORDER_TYPE_NAME,
       ORD.ORDER_CATEGORY_CODE       CATEGORY,
       ORD.ORG_ID                    ORG_ID,
       (select name
        from hr_operating_units
        where organization_id = nvl(ORD.ORG_ID,-99)) ORGANIZATION_NAME
  from
       OE_ORDER_HEADERS_ALL          ORD,
       OE_TRANSACTION_TYPES_TL       TYP,
       FND_LANGUAGES                 FLA
  where
       ORD.ORDER_NUMBER              = :v_order_num
  and  TYP.LANGUAGE                  = FLA.LANGUAGE_CODE 
  and  FLA.INSTALLED_FLAG            = 'B'
  and  ORD.ORDER_TYPE_ID             = TYP.TRANSACTION_TYPE_ID
  and :v_error                       = 0;


prompt 
accept header_id_selected prompt 'Please enter HEADER_ID from list above (optional): '
prompt 

/* Set client info context based on the org_id from sales order */
begin
  select org_id
    into :v_op_unit
  from   oe_order_headers_all ord
  where 
     ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id);

  if substr(:apps_version,1,2) = '11' then    -- Release 11i
    fnd_client_info.set_org_context(to_char(:v_op_unit));
   else -- Release 12
    mo_global.set_policy_context(p_access_mode => 'S',  p_org_id  => :v_op_unit); -- by rodavid
  end if;

exception
   when no_data_found then
      dbms_output.put_line('ERROR - Invalid order number entered');
      dbms_output.put_line('ACTION - Script execution must be aborted');
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      :v_error := 1;
      raise;
   when others then
      dbms_output.put_line('ERROR - Unable to retrieve order due to error: '||SQLERRM);
      dbms_output.put_line('ACTION - Script execution must be aborted');
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      :v_error := 1;
      raise;
end;
/

begin
  select count(*) 
    into :v_line_tot
    from oe_order_lines_all
   where header_id = nvl('&header_id_selected',:v_header_id);
  
  if :v_line_tot = 0 then
      dbms_output.put_line('WARNING - Order selected does not have any lines');
      dbms_output.put_line('WARNING - Please hit CTL-C to abort');
      dbms_output.put_line('WARNING - If you chose to continue only Header information will be printed,');
      dbms_output.put_line('WARNING - all additional entries will be ignored.');
      :v_head_only := 'Y';
    else
      :v_head_only := 'N';
      dbms_output.put_line(' ');
      dbms_output.put_line('Total number of Top lines on this Order '||to_char(:V_line_tot));
  end if;
end;
/

prompt
accept print_lines_summary prompt 'Do you want the Lines Summary to be printed? (Default Y): '


/* Display all line_ids associated with this order number */
select 
    substr(LIN.LINE_ID,1,15)      LINE_ID,
    substr(to_char(LIN.line_number) || 
          decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| 
          decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) ||
          decode(LIN.component_number, null, null, 
                 decode(LIN.option_number, null, '.',null)||
                 '.'||to_char(LIN.component_number))||
          decode(LIN.service_number,null,null,
                 decode(LIN.component_number, null, '.' , null) ||
                        decode(LIN.option_number, null, '.', null ) ||
                        '.'|| to_char(LIN.service_number)),1,10) LINE_NUM,
     ITM.SEGMENT1                  ITEM,
     substr(LIN.LINE_CATEGORY_CODE,1,10)  lin_cat,
     nvl(LIN.ORDERED_QUANTITY,0)   Order_QTY,
     LIN.ORDER_QUANTITY_UOM        uom,
     substr(LIN.FLOW_STATUS_CODE,1,20) Line_status,
     nvl(LIN.SHIPPED_QUANTITY,0)   shipped,
     nvl(LIN.FULFILLED_QUANTITY,0) fulfilled,                  
     nvl(LIN.INVOICED_QUANTITY,0)  invoiced,
     nvl(LIN.CANCELLED_QUANTITY,0) cancelled      
from
     OE_ORDER_LINES                LIN,
     MTL_SYSTEM_ITEMS              ITM 
where 
     LIN.HEADER_ID                  = nvl('&header_id_selected',:v_header_id)
and  LIN.SHIP_FROM_ORG_ID           = ITM.ORGANIZATION_ID(+)
and  LIN.INVENTORY_ITEM_ID          = ITM.INVENTORY_ITEM_ID(+)
and  LIN.OPTION_NUMBER              IS NULL
and  LIN.ITEM_TYPE_CODE             <> 'INCLUDED'
and  substr(UPPER(nvl('&print_lines_summary','Y')),1,1) = 'Y'
order by
     NVL(LIN.ATO_LINE_ID,               LIN.LINE_ID),
     NVL(LIN.SORT_ORDER,                '0000'),
     NVL(LIN.LINK_TO_LINE_ID,           LIN.LINE_ID),
     NVL(LIN.SOURCE_DOCUMENT_LINE_ID,   LIN.LINE_ID),
     NVL(LIN.SERVICE_REFERENCE_LINE_ID, LIN.LINE_ID),
     LIN.LINE_ID;

/* Display any header or line sets associated with this order */
PROMPT
PROMPT OE_SETS (SET)

select ST1.SET_ID                        SET_ID,                         
       ST1.SET_NAME                      SET_NAME,                       
       ST1.SET_TYPE                      SET_TYPE,                       
       ST1.HEADER_ID                     HEADER_ID,
       ST1.INVENTORY_ITEM_ID             ITEM_ID,              
       ST1.ORDERED_QUANTITY_UOM          UOM,           
       ST1.LINE_TYPE_ID                  LINE_TYPE_ID,
       nvl(LST.SYSTEM_REQUIRED_FLAG,'N') SYS_REQD,
       ST1.SET_STATUS                    STATUS,                                                              
       to_char(ST1.SCHEDULE_SHIP_DATE,'DD-MON-RR_HH24:MI:SS')  SCH_SHP_DT,             
       to_char(ST1.SCHEDULE_ARRIVAL_DATE,'DD-MON-RR_HH24:MI:SS')   SCH_ARV_DT,
       ST1.SHIP_FROM_ORG_ID              SHIP_FROM,      
       ST1.SHIP_TO_ORG_ID                SHIP_TO_ID,
       ST1.SHIPMENT_PRIORITY_CODE        SHIP_PRIORITY, 
       ST1.FREIGHT_CARRIER_CODE          CARRIER,
       ST1.SHIPPING_METHOD_CODE          SHIP_METHOD,
       ST1.SHIP_TOLERANCE_ABOVE          STA,           
       ST1.SHIP_TOLERANCE_BELOW          STB
from OE_SETS                       ST1,
     OE_LINE_SETS                  LST
where ST1.SET_ID              = LST.SET_ID(+)
and   ST1.HEADER_ID = nvl('&header_id_selected',:v_header_id)
and   substr(UPPER(nvl('&print_lines_summary','Y')),1,1) = 'Y';

prompt
accept line_id_selected prompt 'Please enter LINE_ID from list above(leave blank for all lines): '

begin
if :v_line_tot > 0 then   -- check for line_id
begin
  select count(*) 
    into :v_line_cnt
    from oe_order_lines_all
   where header_id = nvl('&header_id_selected',:v_header_id)
     and  nvl('&line_id_selected',0)  in (0,line_id);
  
  if :v_line_cnt = 0 then
      RAISE no_data_found;
  end if;

exception
   when no_data_found then
      dbms_output.put_line('ERROR - Invalid line_id entered');
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      dbms_output.put_line('.');
      :v_error := 1;
      raise;
   when others then
      dbms_output.put_line('ERROR - Unable to retrieve order line due to error: '||SQLERRM);
      dbms_output.put_line('ACTION - Please hit CTL-C to exit');
      dbms_output.put_line('.');
      :v_error := 1;
      raise;
end;
end if;
end;
/

WHENEVER SQLERROR CONTINUE;

prompt
accept do_analysis prompt 'Do you want validation performed on this order (Default=Y): '
prompt

prompt
accept prt_wf    prompt 'Do you want WorkFlow information printed? (Default=Y): '
accept prt_price prompt 'Do you want Pricing information printed? (Default=Y): '
accept prt_po    prompt 'Do you want Purchasing information printed? (Default=Y): '
accept prt_rec   prompt 'Do you want Receiving information printed? (Default=Y): '
accept prt_wip   prompt 'Do you want Work In Progress information printed? (Default=Y): '
accept prt_inv   prompt 'Do you want Inventory information printed? (Default=Y): '
accept prt_ar    prompt 'Do you want Receivables information printed? (Default=Y): '
prompt
prompt Listing of tables for WMS could be extense,  *** Note Default is No ***
accept prt_wms   prompt 'Do you want WMS information printed? (Default=N): '
prompt
prompt Listing of tables MTL_UNIT_TRANSACTIONS (MUT), WSH_SERIAL_NUMBERS (WSN)
prompt and MTL_SERIAL_NUMBERS could be extense.
accept det_cnt   prompt 'Do you want complete listing (Y-All records  N-only the first 10 records)? (Default=Y): '
prompt

set heading off

def version_code='1.0.160325'
def c1='_'
def pref='HTMomse'
def suff='.html'
def out_file='&pref&c1&order_number_selected&suff'

-- Printout the filename and location
column DUMMY  new_value out_dir noprint
column DUMMY2 new_value host_nam noprint
  select substr(value,1,instr(value||',',',')-1) DUMMY
    from v$parameter where name = 'utl_file_dir';

  select substr(machine,1,20) DUMMY2
    from v$session where upper(program) like '%SMON%';

Prompt Output file created on Database Server: "&host_nam"
Prompt Complete path and filename: "&out_dir/&out_file"


set define '!'
-- Tables
def std=''
def et=
-- headers def sh=' ' def dh=' ' def dhr=' ' def eh='' -- def sh='' -- def dh='' -- def eh='' -- lines def sld='' def d='' def el='' -- def sld='' -- def d='' -- def el='' -- otros def f=
-- eol def b= -- bold def eb= -- end bold def sp=' ' -- space set null ' ' set define '&' -- Start of printout DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is -- to print fields begin if v is null then return '&sp'; else return v; end if; end n; function n2(v varchar2,v2 varchar2) return varchar2 is -- to print parameters begin if v is null then return v2; else return v; end if; end n2; begin -- Creation of output file -- SQL fails when parameter is loo long -- select substr(value,1,instr(value||',',',')-1) into dirname -- from v$parameter where name = 'utl_file_dir'; select substr(value,1,decode(instr(value,','),0,length(value),instr(value,',')-1)) into dirname from v$parameter where name = 'utl_file_dir'; -- handle := UTL_FILE.FOPEN(dirname,dirname||'/&out_file','W',32000); handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','W',32000); /* HTML header information */ UTL_FILE.PUT_LINE(handle,''); UTL_FILE.PUT_LINE(handle,''); UTL_FILE.PUT_LINE(handle,' &out_file '); UTL_FILE.PUT_LINE(handle,''); UTL_FILE.PUT_LINE(handle,''); UTL_FILE.PUT_LINE(handle,' '); -- DataBase name, creation date -- User and time script execution UTL_FILE.PUT_LINE(handle,'&std &sh DATABASE IDENTIFICATION &dh SCRIPT EXECUTION (Ver. &version_code) &eh'); select '&sld &b DB Name: &eb '||name||' - &b Release: &eb '||substr(release_name,1,10)||' &d'|| '&b Script run at Date/Time: &eb'||to_char(sysdate,'DD-MON-RR_HH24:MI:SS')||'&el'|| '&sld &b Creation Date: &eb'||to_char(created,'DD-MON-RR_HH24:MI:SS')||'&d' into text from V$DATABASE, fnd_product_groups; UTL_FILE.PUT_LINE(handle,text); select '&b USER is: '||username into text from user_users; UTL_FILE.PUT_LINE(handle,text); UTL_FILE.PUT_LINE(handle,'&eb &el &et &f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh The test will be run with the following parameters &dh Sections being printed: &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld &b Order Number = &eb &order_number_selected &d WorkFlow = '||n2('&prt_wf','Y')||' &d Pricing = '||n2('&prt_price','Y')||' &el'); UTL_FILE.PUT_LINE(handle,'&sld &b Header Id = &eb '||n2('&header_id_selected',:v_header_id||' *')||' &d Purchasing = '||n2('&prt_po','Y')||' &d Receiving = '||n2('&prt_rec','Y')||' &el'); if :v_head_only = 'Y' then UTL_FILE.PUT_LINE(handle,'&sld &b Line Id = &eb '||n2('','Header Only')||' &d Work in Progress = '||n2('&prt_wip','Y')||' &d Inventory = '||n2('&prt_inv','Y')||' &el'); else UTL_FILE.PUT_LINE(handle,'&sld &b Line Id = &eb '||n2('&line_id_selected','All Lines')||' &d Work in Progress = '||n2('&prt_wip','Y')||' &d Inventory = '||n2('&prt_inv','Y')||' &el'); end if; UTL_FILE.PUT_LINE(handle,'&sld &b Validation = &eb '||n2('&do_analysis','Y')||' &d Receivables = '||n2('&prt_ar','Y')||' &d Serial Num. Details = '||n2('&det_cnt','Y')||' &el'); UTL_FILE.PUT_LINE(handle,'&sld &sp &d WMS info = '||n2('&prt_wms','N')||' &d Summary = '||n2('&print_lines_summary','Y')||' &el'); UTL_FILE.PUT_LINE(handle,'&et &f &f'); -- Index for Major tables direct access UTL_FILE.PUT_LINE(handle,'&std &sh INDEX FOR MAJOR TABLES DIRECT ACCESS &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld OE_SETS (SET) &d WSH_TRIPS (TRP) &el'); UTL_FILE.PUT_LINE(handle,'&sld OE_ORDER_HEADERS (ORD) &d WSH_TRIP_STOPS (STP) &el'); UTL_FILE.PUT_LINE(handle,'&sld OE_ORDER_LINES (LIN) &d WSH_NEW_DELIVERIES (DEL) &el'); UTL_FILE.PUT_LINE(handle,'&sld MTL_RESERVATIONS (RES) &d WSH_DELIVERY_DETAILS (DET) &el'); UTL_FILE.PUT_LINE(handle,'&sld MTL_TRANSACTIONS_INTERFACE (MTI) &d'); UTL_FILE.PUT_LINE(handle,'WMS_RULES &el'); UTL_FILE.PUT_LINE(handle,'&sld MTL_MATERIAL_TRANSACTIONS_TEMP (TMP) - UNPICKED LINES &d'); UTL_FILE.PUT_LINE(handle,'RA_INTERFACE_LINES (RAI) &el'); UTL_FILE.PUT_LINE(handle,'&sld MTL_MATERIAL_TRANSACTIONS (TRN) - PICKED LINES &d'); UTL_FILE.PUT_LINE(handle,'RA_CUSTOMER_TRX (RAH) - INVOICE HEADERS &el'); UTL_FILE.PUT_LINE(handle,'&sld MTL_TXN_REQUEST_LINES_V (MOV) &d '); UTL_FILE.PUT_LINE(handle,'RA_CUSTOMER_TRX_LINES (RAL) &el'); UTL_FILE.PUT_LINE(handle,'&et &f &f'); -- Parameters, initial listings from screen UTL_FILE.PUT_LINE(handle,'&std &sh HEADER_ID &dh ORDER_TYPE_NAME &dh CATEGORY &dh ORG_ID &dh ORGANIZATION_NAME &el'); Declare cursor l_orders is select ORD.HEADER_ID Hea_I, TYP.NAME OT_NAME, ORD.ORDER_CATEGORY_CODE CAT_co, ORD.ORG_ID ORG_I from OE_ORDER_HEADERS_ALL ORD, OE_TRANSACTION_TYPES_TL TYP, FND_LANGUAGES FLA where ORD.ORDER_NUMBER = :v_order_num and TYP.LANGUAGE = FLA.LANGUAGE_CODE and FLA.INSTALLED_FLAG = 'B' and ORD.ORDER_TYPE_ID = TYP.TRANSACTION_TYPE_ID and :v_error = 0; or_name varchar2(100); begin for lo in l_orders loop -- Organization Name select name into or_name from hr_operating_units where organization_id = nvl(lo.ORG_I,-99); -- Print line to Output file utl_file.put_line(handle,'&sld'||n(lo.hea_i)||'&d'||n(lo.ot_name)||'&d'); utl_file.put_line(handle,n(lo.Cat_co)||'&d'||n(lo.org_i)||'&d'||n(or_name)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); if substr(UPPER(nvl('&print_lines_summary','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f &b LINE_IDs ASSOCIATED WITH THIS ORDER NUMBER &f'); UTL_FILE.PUT_LINE(handle,'&std &sh LINE NUMBER &dh LINE_ID &dh ITEM &dh ORDER QTY &dh UOM &dh LINE STATUS &dh SHIP QTY &dh '); UTL_FILE.PUT_LINE(handle,'FULFILL QTY &dh INVOICE QTY &dh CANCEL QTY &dh OPEN &dh SHIP &dh CANC &dh SI &dh SHIP FROM &dh '); UTL_FILE.PUT_LINE(handle,'LINE TYPE &dh LINE CATEG &dh INVOICED &dh ARRIVAL SET_ID &dh SHIP SET_ID &dh LINE SET_ID &eh'); Declare cursor l_lines_ord is select to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE_NUM, LIN.LINE_ID LINE_ID, ITM.SEGMENT1 ITEM, nvl(LIN.ORDERED_QUANTITY,0) ORD_QTY, LIN.ORDER_QUANTITY_UOM Orduom, substr(LIN.FLOW_STATUS_CODE,1,22) Line_st, nvl(LIN.SHIPPED_QUANTITY,0) shpq, nvl(LIN.FULFILLED_QUANTITY,0) fulq, nvl(LIN.INVOICED_QUANTITY,0) invq, nvl(LIN.CANCELLED_QUANTITY,0) canq, nvl(LIN.OPEN_FLAG,'N') openf, nvl(LIN.SHIPPABLE_FLAG,'N') shipf, nvl(LIN.CANCELLED_FLAG,'N') canf, nvl(LIN.SHIPPING_INTERFACED_FLAG,'N') SI, LIN.SHIP_FROM_ORG_ID shipfrom, LIN.LINE_TYPE_ID LINE_TYPE_ID, LIN.LINE_CATEGORY_CODE lin_cat, nvl(LIN.INVOICE_INTERFACE_STATUS_CODE,'N') INV_INT_STAT, LIN.ARRIVAL_SET_ID ARRIV_SET_ID, LIN.SHIP_SET_ID SHIP_SET_ID, LIN.LINE_SET_ID LINE_SET_ID from OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and LIN.OPTION_NUMBER IS NULL and LIN.ITEM_TYPE_CODE <> 'INCLUDED' order by NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), NVL(LIN.SERVICE_REFERENCE_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for ll in l_lines_ord loop utl_file.put_line(handle,'&sld'||n(ll.LINE_NUM)||'&d'||n(ll.LINE_ID)||'&d'||n(ll.ITEM)||'&d'); utl_file.put_line(handle,n(ll.ORD_QTY)||'&d'||n(ll.Orduom)||'&d'); utl_file.put_line(handle,n(ll.Line_st)||'&d'||n(ll.shpq)||'&d'); utl_file.put_line(handle,n(ll.fulq)||'&d'||n(ll.invq)||'&d'); utl_file.put_line(handle,n(ll.canq)||'&d'||n(ll.openf)||'&d'); utl_file.put_line(handle,n(ll.shipf)||'&d'||n(ll.canf)||'&d'); utl_file.put_line(handle,n(ll.SI)||'&d'||n(ll.shipfrom)||'&d'); utl_file.put_line(handle,n(ll.LINE_TYPE_ID)||'&d'||n(ll.LIN_CAT)||'&d'); utl_file.put_line(handle,n(ll.INV_INT_STAT)||'&d'||n(ll.ARRIV_SET_ID)||'&d'); utl_file.put_line(handle,n(ll.SHIP_SET_ID)||'&d'||n(ll.LINE_SET_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); /* Display any header or line sets associated with this order */ UTL_FILE.PUT_LINE(handle,'&f &f OE_SETS (SET) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh SET_ID &dh SET_NAME &dh SET_TYPE &dh HEADER_ID &dh LINE_ID &dh ITEM_ID &dh UOM &dh LINE_TYPE_ID &dh SYS_REQD &dh '); UTL_FILE.PUT_LINE(handle,'STATUS &dh SCH_SHP_DT &dh SCH_ARV_DT &dh SHIP_FROM &dh SHIP_TO_ID &dh SHIP_PRIORITY &dh CARRIER &dh '); UTL_FILE.PUT_LINE(handle,'SHIP_METHOD &dh STA &dh STB &eh'); Declare cursor l_oe_sets is select ST1.SET_ID SET_ID, ST1.SET_NAME SET_NAME, ST1.SET_TYPE SET_TYPE, ST1.HEADER_ID HEADER_ID, LST.LINE_ID LINE_ID, ST1.INVENTORY_ITEM_ID ITEM_ID, ST1.ORDERED_QUANTITY_UOM UOM, ST1.LINE_TYPE_ID LINE_TYPE_ID, nvl(LST.SYSTEM_REQUIRED_FLAG,'N') SYS_REQD, ST1.SET_STATUS STATUS, to_char(ST1.SCHEDULE_SHIP_DATE,'DD-MON-RR_HH24:MI:SS') SCH_SHP_DT, to_char(ST1.SCHEDULE_ARRIVAL_DATE,'DD-MON-RR_HH24:MI:SS') SCH_ARV_DT, ST1.SHIP_FROM_ORG_ID SHIP_FROM, ST1.SHIP_TO_ORG_ID SHIP_TO_ID, ST1.SHIPMENT_PRIORITY_CODE SHIP_PRIORITY, ST1.FREIGHT_CARRIER_CODE CARRIER, ST1.SHIPPING_METHOD_CODE SHIP_METHOD, ST1.SHIP_TOLERANCE_ABOVE STA, ST1.SHIP_TOLERANCE_BELOW STB from OE_SETS ST1, OE_LINE_SETS LST where ST1.SET_ID = LST.SET_ID(+) and ST1.HEADER_ID = nvl('&header_id_selected',:v_header_id); begin for ll in l_oe_sets loop utl_file.put_line(handle,'&sld'||n(ll.SET_ID)||'&d'||n(ll.SET_NAME)||'&d'); utl_file.put_line(handle,n(ll.SET_TYPE)||'&d'||n(ll.HEADER_ID)||'&d'); utl_file.put_line(handle,n(ll.LINE_ID)||'&d'||n(ll.ITEM_ID)||'&d'); utl_file.put_line(handle,n(ll.UOM)||'&d'||n(ll.LINE_TYPE_ID)||'&d'); utl_file.put_line(handle,n(ll.SYS_REQD)||'&d'||n(ll.STATUS)||'&d'); utl_file.put_line(handle,n(ll.SCH_SHP_DT)||'&d'||n(ll.SCH_ARV_DT)||'&d'); utl_file.put_line(handle,n(ll.SHIP_FROM)||'&d'||n(ll.SHIP_TO_ID)||'&d'); utl_file.put_line(handle,n(ll.SHIP_PRIORITY)||'&d'||n(ll.CARRIER)||'&d'); utl_file.put_line(handle,n(ll.SHIP_METHOD)||'&d'||n(ll.STA)||'&d'); utl_file.put_line(handle,n(ll.STB)||'&el'); end loop; end; end if; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed UTL_FILE.PUT_LINE(handle,'&f &f OE_ORDER_HEADERS (ORD) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh HEADER_ID &dh ORD_NUM &dh TYPE_ID &dh TYPE_NAME &dh FLOW_PROCESS &dh FLOW_CODE &dh BK &dh OP &dh CN &dh SP &dh '); UTL_FILE.PUT_LINE(handle,'CUST_ID &dh CUST_NAME &dh CURR_CODE &dh SHIP_ID &dh SHIP_TO &dh BILL_ID &dh ORD_DATE &dh WH_ID &dh ORG &dh '); UTL_FILE.PUT_LINE(handle,'ORD_SOURCE &dh CAT &dh PL_ID &dh PL_NAME &dh PO_NUMBER &dh STA &dh STB &dh OPERATING_UNIT &dh ORIG_SYS_DOC_REF &eh'); declare cursor header1 is select distinct ORD.HEADER_ID head_id, ORD.ORDER_NUMBER ord_no, ORD.ORDER_TYPE_ID ord_t, TYP.NAME ord_tna, ORD.SOLD_TO_ORG_ID cus_id, substr(CUS.CUSTOMER_NAME,1,20) cus_na, ORD.SHIP_TO_ORG_ID ship_t, substr(SHP.NAME,1,12) ship_tn, ORD.INVOICE_TO_ORG_ID bill_t, to_char(ORD.ORDERED_DATE,'DD-MON-RR_HH24:MI:SS') ord_d, nvl(ORD.BOOKED_FLAG,'N') book_g, nvl(ORD.OPEN_FLAG,'N') open_f, nvl(ORD.CANCELLED_FLAG,'N') can_f, nvl(ORD.PARTIAL_SHIPMENTS_ALLOWED,'Y') spa, ORD.SHIP_FROM_ORG_ID or_id, PAR.ORGANIZATION_CODE or_co, ORD.FLOW_STATUS_CODE fl_co, ORD.ORDER_CATEGORY_CODE cat_co, ORD.PRICE_LIST_ID pr_id, PRC.NAME pr_na, ORD.CUST_PO_NUMBER po_no, ORD.SHIP_TOLERANCE_ABOVE shta, ORD.SHIP_TOLERANCE_BELOW shtb, HR.NAME oper_unit, ORD.ORIG_SYS_DOCUMENT_REF orig_sys_ref, ORD.TRANSACTIONAL_CURR_CODE curr_code, OS.NAME Ord_Src from OE_ORDER_HEADERS ORD, MTL_PARAMETERS PAR, OE_TRANSACTION_TYPES_V TYP, AR_CUSTOMERS CUS, OE_SHIP_TO_ORGS_V SHP, QP_LIST_HEADERS_V PRC, HR_OPERATING_UNITS HR, OE_ORDER_SOURCES OS where ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ORD.SHIP_FROM_ORG_ID = PAR.ORGANIZATION_ID(+) and ORD.ORDER_TYPE_ID = TYP.TRANSACTION_TYPE_ID(+) and ORD.SHIP_TO_ORG_ID = SHP.SITE_USE_ID(+) and ORD.SOLD_TO_ORG_ID = CUS.CUSTOMER_ID(+) and ORD.PRICE_LIST_ID = PRC.LIST_HEADER_ID(+) and ORD.ORG_ID = HR.ORGANIZATION_ID(+) and ORD.ORDER_SOURCE_ID = OS.ORDER_SOURCE_ID(+); r_ord_t varchar2(100); r_open_l number; r_canc_l number; r_canopen_l number; type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; begin dbms_output.enable(1000000); :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..99 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(10).descrip := ' 10. Order_Header has associated lines with OPEN and CANCELLED flags set to Y.'; msg(15).descrip := ' 15. Order_Header status is BOOKED but "Book" activity has not been completed.'; msg(20).descrip := ' 20. Order_Header status is CLOSED but "Close" activity has not been completed.'; msg(21).descrip := ' 21. Order_Header status is CLOSED but exist open lines associated to this header.'; msg(22).descrip := ' 22. All associated lines has been closed but Order_Header is not ready to CLOSE.'; msg(50).descrip := ' 50. No WorkFlow Process associated to this line.'; msg(51).descrip := ' 51. Incorrect WorkFlow Process associated to this Order Header.'; msg(52).descrip := ' 52. Incorrect WorkFlow Activity associated to this Order Header.'; msg(53).descrip := ' 53. Incorrect WorkFlow Activity Result for this Order Header.'; msg(54).descrip := ' 54. Incorrect WorkFlow Activity Status for this Order Header.'; msg(99).descrip := ' 99. An Error occurred on query: '; -- end if; for h in header1 loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- -- Gather general information -- begin -- get Order_Header Flow name select WFA1.DISPLAY_NAME into r_ord_t FROM WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1 where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = to_Char(h.head_id) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID(+) and WFP.PROCESS_NAME = 'ROOT' and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select nvl(max(VERSION),-1) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME); -- Select current activity select WFA.DISPLAY_NAME, WFA1.DISPLAY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE), LKP.MEANING into :r_pro_na, :r_act_na, :r_result, :r_act_s from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = To_Char(h.head_id) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and rownum = 1 -- to manage ORA-1422 and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and Execution_time = (Select Max(execution_time) from WF_ITEM_ACTIVITY_STATUSES where ITEM_TYPE = 'OEOH' and item_key = To_Char(h.head_id)); exception when no_data_found then :r_flag := :r_flag || '50 '; msg(50).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'WF current activity '; end; -- Check if order has open lines and count also cancelled lines begin select sum(decode(open_flag,'Y',1,0)),sum(decode(cancelled_flag,'Y',1,0)),sum(decode(cancelled_flag,'Y',decode(open_flag,'Y',1,0),0)) into r_open_l, r_canc_l, r_canopen_l from oe_order_lines_all where header_id = h.head_id group by header_id; exception when no_data_found then r_open_l := 0; r_canc_l := 0; r_canopen_l := 0; end; --- -- Basic Verifications -- -- Open lines have cancelled flag showing as open if r_canopen_l > 0 then :r_flag := :r_flag || '10 '; msg(10).flag := '1'; end if; -- All lines closed but Order Header status is not CLOSED and WF is NOT waiting to close. if r_open_l = 0 -- no open lines and h.fl_co <> 'CLOSED' then if :r_pro_na = 'Close - Order' -- check current status and :r_act_s = 'Deferred' then null; -- OK just waiting for month end else :r_flag := :r_flag || '22 '; msg(22).flag := '1'; end if; end if; --- -- Verifications for Order Header on ENTERED status --- If h.fl_co = 'ENTERED' then -- verify current WF status if :r_pro_na <> 'Book - Order, Manual' then :r_flag := :r_flag || '51 '; msg(51).flag := '1'; elsif :r_act_na <> 'Book - Eligible' then :r_flag := :r_flag || '52 '; msg(52).flag := '1'; elsif :r_result is not null then :r_flag := :r_flag || '53 '; msg(53).flag := '1'; elsif :r_act_s <> 'Notified' then :r_flag := :r_flag || '54 '; msg(54).flag := '1'; end if; end if; -- ENTERED --- -- Verifications for Order Header on BOOKED status --- If h.fl_co = 'BOOKED' then -- Check is Book activity has been completed begin select WFA.DISPLAY_NAME, WFA1.DISPLAY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE), LKP.MEANING into :r_pro_na, :r_act_na, :r_result, :r_act_s from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = to_char(h.head_id) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFA1.DISPLAY_NAME = 'Book'; exception when no_data_found then :r_flag := :r_flag || '15 '; msg(15).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'check BOOK activity '; end; if :r_act_na = 'Book' then if :r_result = 'Complete' and :r_act_s = 'Complete' then null; -- status is OK else :r_flag := :r_flag || '15 '; msg(15).flag := '1'; end if; end if; end if; -- BOOKED --- -- Verifications for Order Header on CLOSED status --- If h.fl_co = 'CLOSED' then -- verify current WF status if :r_pro_na <> r_ord_t then :r_flag := :r_flag || '51 '; msg(51).flag := '1'; elsif :r_act_na <> 'End' then :r_flag := :r_flag || '52 '; msg(52).flag := '1'; elsif :r_result <> 'Null' then :r_flag := :r_flag || '53 '; msg(53).flag := '1'; elsif :r_act_s <> 'Complete' then :r_flag := :r_flag || '54 '; msg(54).flag := '1'; end if; -- Get status for CLOSE activity begin select WFA.DISPLAY_NAME, WFA1.DISPLAY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE), LKP.MEANING into :r_pro_na, :r_act_na, :r_result, :r_act_s from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = To_Char(h.head_id) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFA1.DISPLAY_NAME = 'Close'; exception when no_data_found then :r_flag := :r_flag || '20 '; msg(20).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'Check CLOSE activity '; end; -- verify CLOSE activity completed if :r_act_na = 'Close' then if :r_result = 'Complete' and :r_act_s = 'Complete' then null; -- status is OK else :r_flag := :r_flag || '20 '; msg(20).flag := '1'; end if; end if; -- check for open lines if r_open_l > 0 then :r_flag := :r_flag || '21 '; msg(21).flag := '1'; end if; end if; -- CLOSED end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,n(h.head_id)||'&d'||n(h.ord_no)||'&d'); utl_file.put_line(handle,n(h.ord_t)||'&d'||n(h.ord_tna)||'&d'); utl_file.put_line(handle,n(r_ord_t)||'&d'||n(h.fl_co)||'&d'); utl_file.put_line(handle,n(h.book_g)||'&d'||n(h.open_f)||'&d'); utl_file.put_line(handle,n(h.can_f)||'&d'||n(h.spa)||'&d'); utl_file.put_line(handle,n(h.cus_id)||'&d'||n(h.cus_na)||'&d'); utl_file.put_line(handle,n(h.curr_code)||'&d'); utl_file.put_line(handle,n(h.ship_t)||'&d'||n(h.ship_tn)||'&d'); utl_file.put_line(handle,n(h.bill_t)||'&d'||n(h.ord_d)||'&d'); utl_file.put_line(handle,n(h.or_id)||'&d'||n(h.or_co)||'&d'); utl_file.put_line(handle,n(h.ord_src)||'&d'); utl_file.put_line(handle,n(h.cat_co)||'&d'||n(h.pr_id)||'&d'); utl_file.put_line(handle,n(h.pr_na)||'&d'||n(h.po_no)||'&d'); utl_file.put_line(handle,n(h.shta)||'&d'||n(h.shtb)||'&d'); utl_file.put_line(handle,n(h.oper_unit)||'&d'||n(h.orig_sys_ref)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..99 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed if substr(UPPER(nvl('&prt_wf','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ORDER STATUS &f'); UTL_FILE.PUT_LINE(handle,'&std'); UTL_FILE.PUT_LINE(handle,'&sh PROCESS_NAME &dh ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh NOTIF_ID &dh INT_PROCESS_NAME &dh '); UTL_FILE.PUT_LINE(handle,'INT_ACTIVITY_NAME &dh INT_RESULT_CODE &dh INT_ACTIVITY_STATUS &dh BEGIN_DATE &dh END_DATE &dh ERROR_NAME &eh'); Declare cursor l_wf_order is select WFA.DISPLAY_NAME Process, WFA1.DISPLAY_NAME Activity, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) Result, LKP.MEANING Act_status, WFS.NOTIFICATION_ID Notif, WFP.PROCESS_NAME I_process, WFP.ACTIVITY_NAME I_activity, WFS.ACTIVITY_STATUS I_status, WFS.ACTIVITY_RESULT_CODE I_Act_Res_code, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') Begin_d, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') End_d, WFS.ERROR_NAME error_name from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = nvl('&header_id_selected',to_char(:v_header_id)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_order loop utl_file.put_line(handle,'&sld'||n(ll.Process)||'&d'||n(ll.Activity)||'&d'); utl_file.put_line(handle,n(ll.Result)||'&d'||n(ll.Act_status)||'&d'); utl_file.put_line(handle,n(ll.Notif)||'&d'||n(ll.I_process)||'&d'); utl_file.put_line(handle,n(ll.I_activity)||'&d'||n(ll.I_Act_Res_code)||'&d'); utl_file.put_line(handle,n(ll.I_status)||'&d'||n(ll.Begin_d)||'&d'); utl_file.put_line(handle,n(ll.End_d)||'&d'||n(ll.Error_name)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ORDER NOTIFICATION INFORMATION (WFN)&f'); UTL_FILE.PUT_LINE(handle,'&std &sh NOTIF_ID &dh TO_USER &dh ORIG_RECIP &dh RECIP_ROLE &dh MAIL_STAT &dh MESSAGE_NAME &dh STATUS &dh SUBJECT &eh'); Declare cursor l_wf_ord_noti is select WFN.NOTIFICATION_ID NOTIF_ID, WFN.TO_USER TO_USER, WFN.ORIGINAL_RECIPIENT ORIG_RECIP, WFN.RECIPIENT_ROLE RECIP_ROLE, WFN.MAIL_STATUS MAIL_STAT, WFN.MESSAGE_NAME MESSAGE_NAME, WFN.STATUS STATUS, WFN.SUBJECT SUBJECT from WF_ITEM_ACTIVITY_STATUSES WFS, WF_NOTIFICATIONS WFN where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = nvl('&header_id_selected',to_char(:v_header_id)) and WFS.NOTIFICATION_ID is not null and WFN.NOTIFICATION_ID = WFS.NOTIFICATION_ID order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_ord_noti loop utl_file.put_line(handle,'&sld'||n(ll.NOTIF_ID)||'&d'||n(ll.TO_USER)||'&d'); utl_file.put_line(handle,n(ll.ORIG_RECIP)||'&d'||n(ll.RECIP_ROLE)||'&d'); utl_file.put_line(handle,n(ll.MAIL_STAT)||'&d'||n(ll.MESSAGE_NAME)||'&d'); utl_file.put_line(handle,n(ll.STATUS)||'&d'||n(ll.SUBJECT)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); /* UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ORDER SKIP INFORMATION (WFSKIP)&f'); UTL_FILE.PUT_LINE(handle,'&std &sh NOTIF_ID &dh TO_USER &dh ORIG_RECIP &dh RECIP_ROLE &dh MAIL_STAT &dh MESSAGE_NAME &dh STATUS &dh SUBJECT &eh'); Declare r_exist number; begin select count(*) into r_exist from all_tables where table_name = 'ONT_WF_SKIP_LOG'; if r_exist = 0 then utl_file.put_line(handle,'&et Table ONT_WF_SKIP_LOG is not present on this instance: &f'); end if; end; Declare cursor l_wf_ord_skip is select WFS.HEADER_ID HEADER_ID, WFA.DISPLAY_NAME DISPLAY_NAME, to_char(WFS.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CRE_DATE, WFS.USER_ID USER_ID, WFS.RESPONSIBILITY_ID RESPONSIBILITY_ID, WFS.APPLICATION_ID APPLICATION_ID from ONT_WF_SKIP_LOG WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA where WFS.LINE_ID is null and WFS.HEADER_ID = nvl('&header_id_selected',to_char(:v_header_id)) and WFS.ACTIVITY_ID = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION order by WFS.HEADER_ID, WFS.CREATION_DATE; begin for ll in l_wf_ord_skip loop utl_file.put_line(handle,'&sld'||n(ll.HEADER_ID)||'&d'||n(ll.DISPLAY_NAME)||'&d'); utl_file.put_line(handle,n(ll.CRE_DATE)||'&d'||n(ll.USER_ID)||'&d'); utl_file.put_line(handle,n(ll.RESPONSIBILITY_ID)||'&d'||n(ll.APPLICATION_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); */ UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ORDER LEVEL ERRORS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PROCESS_NAME &dh ERROR_ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh ERROR_NAME &dh ERROR_MESSAGE &dh ERROR_STACK &eh'); Declare cursor l_wf_ord_err is select WFA.DISPLAY_NAME Process, WFA1.DISPLAY_NAME Activity, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) result, LKP.MEANING status, WFS.ERROR_NAME err_name, WFS.ERROR_MESSAGE err_mess, WFS.ERROR_STACK err_stack from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOH' and WFS.item_key = nvl('&header_id_selected',to_char(:v_header_id)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFS.ACTIVITY_STATUS = 'ERROR' order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_ord_err loop utl_file.put_line(handle,'&sld'||n(ll.Process)||'&d'||n(ll.Activity)||'&d'); utl_file.put_line(handle,n(ll.result)||'&d'||n(ll.status)||'&d'); utl_file.put_line(handle,n(ll.err_name)||'&d'||n(ll.err_mess)||'&d'); utl_file.put_line(handle,n(ll.err_stack)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); -- break on ERR_TYPE_KEY skip 2; UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ACTIVITY STATUS FOR ORDER ERROR PROCESS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ERR_TYPE_KEY &dh ERR_PROCESS_NAME &dh ERR_ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh NOTIF_ID &dh '); UTL_FILE.PUT_LINE(handle,'ASGND_USER &dh BEGIN_DATE &dh END_DATE &eh'); Declare cursor l_wf_ord_erp is select WFS.ITEM_TYPE || '-' || WFS.ITEM_KEY ERR_TYPE_KEY, WFA.DISPLAY_NAME ERR_PROCESS_NAME, WFA1.DISPLAY_NAME ERR_ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.NOTIFICATION_ID NOTIF_ID, WFS.ASSIGNED_USER ASGND_USER, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') BEGIN_DATE, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') END_DATE from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP, WF_ITEMS WFI where WFS.ITEM_TYPE = WFI.ITEM_TYPE and WFS.item_key = WFI.ITEM_KEY and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFI.PARENT_ITEM_TYPE = 'OEOH' and WFI.PARENT_ITEM_KEY = nvl('&header_id_selected',to_char(:v_header_id)) and WFI.ITEM_TYPE in (select WFAE.ERROR_ITEM_TYPE from WF_ITEM_ACTIVITY_STATUSES WFSE, WF_PROCESS_ACTIVITIES WFPE, WF_ACTIVITIES_VL WFAE, WF_ACTIVITIES_VL WFA1E where WFSE.ITEM_TYPE = 'OEOH' and WFSE.ITEM_KEY = nvl('&header_id_selected',to_char(:v_header_id)) and WFSE.PROCESS_ACTIVITY = WFPE.INSTANCE_ID and WFPE.PROCESS_ITEM_TYPE = WFAE.ITEM_TYPE and WFPE.PROCESS_NAME = WFAE.NAME and WFPE.PROCESS_VERSION = WFAE.VERSION and WFPE.ACTIVITY_ITEM_TYPE = WFA1E.ITEM_TYPE and WFPE.ACTIVITY_NAME = WFA1E.NAME and WFA1E.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2E where WF2E.ITEM_TYPE = WFPE.ACTIVITY_ITEM_TYPE and WF2E.NAME = WFPE.ACTIVITY_NAME) and WFSE.ACTIVITY_STATUS = 'ERROR') order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_ord_erp loop utl_file.put_line(handle,'&sld'||n(ll.ERR_TYPE_KEY)||'&d'||n(ll.ERR_PROCESS_NAME)||'&d'); utl_file.put_line(handle,n(ll.ERR_ACTIVITY_NAME)||'&d'||n(ll.RESULT)||'&d'); utl_file.put_line(handle,n(ll.ACT_STATUS)||'&d'||n(ll.NOTIF_ID)||'&d'); utl_file.put_line(handle,n(ll.ASGND_USER)||'&d'||n(ll.BEGIN_DATE)||'&d'); utl_file.put_line(handle,n(ll.END_DATE)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_wf -- end if; -- v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed UTL_FILE.PUT_LINE(handle,'&f &f GENERIC HOLDS (ORDER AND/OR LINES) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh HOLD_ID &dh HOLD_NAME &dh HOLD_TYPE &dh WF_ITEM &dh WF_ACTIVITY &dh ORD_HOLD_ID &dh HLD_SRC_ID &dh HLD_REL_ID &dh '); UTL_FILE.PUT_LINE(handle,'HEADER_ID &dh H_REL &dh S_REL &dh RELEASE_REASON &dh ENTITY &dh ENTITY_ID &dh ENTITY2 &dh ENTITY_ID2 &dh HOLD_UNTIL &eh'); Declare cursor l_ord_hld is SELECT HDF.HOLD_ID , HDF.NAME , HDF.TYPE_CODE , HDF.ITEM_TYPE , HDF.ACTIVITY_NAME , HLD.ORDER_HOLD_ID , HLD.HOLD_SOURCE_ID , HLD.HOLD_RELEASE_ID , HLD.HEADER_ID , HLD.RELEASED_FLAG Rel_Flag1, HSR.RELEASED_FLAG Rel_Flag2, HRL.RELEASE_REASON_CODE Rel_code, decode(HSR.HOLD_ENTITY_CODE, 'B','Bill To', 'C','Customer', 'I','Item', 'O','Order', 'S','Ship To', 'W','Warehouse', HSR.HOLD_ENTITY_CODE) entity, HSR.HOLD_ENTITY_ID entity_id, decode(HSR.HOLD_ENTITY_CODE2, 'B','Bill To', 'C','Customer', 'I','Item', 'O','Order', 'S','Ship To', 'W','Warehouse', HSR.HOLD_ENTITY_CODE2) entity2, HSR.HOLD_ENTITY_ID2 entity_id2, to_char(HSR.HOLD_UNTIL_DATE,'DD-MON-RR_HH24:MI:SS') Hold_until from OE_ORDER_HOLDS_ALL HLD, OE_HOLD_SOURCES_ALL HSR, OE_HOLD_DEFINITIONS HDF, OE_HOLD_RELEASES HRL where HLD.HEADER_ID = nvl('&header_id_selected',:v_header_id) and HLD.HOLD_SOURCE_ID = HSR.HOLD_SOURCE_ID and HSR.HOLD_ID = HDF.HOLD_ID and HLD.HOLD_RELEASE_ID = HRL.HOLD_RELEASE_ID(+) and HLD.LINE_ID IS NULL; begin for ll in l_ord_hld loop utl_file.put_line(handle,'&sld'||n(ll.HOLD_ID)||'&d'||n(ll.NAME)||'&d'); utl_file.put_line(handle,n(ll.TYPE_CODE)||'&d'||n(ll.ITEM_TYPE)||'&d'); utl_file.put_line(handle,n(ll.ACTIVITY_NAME)||'&d'||n(ll.ORDER_HOLD_ID)||'&d'); utl_file.put_line(handle,n(ll.HOLD_SOURCE_ID)||'&d'||n(ll.HOLD_RELEASE_ID)||'&d'); utl_file.put_line(handle,n(ll.HEADER_ID)||'&d'||n(ll.Rel_Flag1)||'&d'); utl_file.put_line(handle,n(ll.Rel_Flag2)||'&d'||n(ll.Rel_code)||'&d'); utl_file.put_line(handle,n(ll.entity)||'&d'||n(ll.entity_id)||'&d'); utl_file.put_line(handle,n(ll.entity2)||'&d'||n(ll.entity_id2)||'&d'); utl_file.put_line(handle,n(ll.Hold_until)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); -- This section is commented out because it runs slowly without an index -- CREATE INDEX OE_PROCESSING_MSGS_777 -- ON ONT.OE_PROCESSING_MSGS -- (header_id, line_id); -- column ACTIVITY format a15; -- column msg_Source format a14; -- column DESCRIPTION format a30; -- PROMPT UTL_FILE.PUT_LINE(handle,'&f &f HEADER PROCESSING MESSAGES &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh HEADER_ID &dh MSG_SOURCE &dh ACTIVITY &dh REQUEST_ID &dh DESCRIPTION &dh MESSAGE_TEXT &eh'); declare cursor h_proc is select distinct MSG.header_id HEADER_ID, decode(MSG.MESSAGE_SOURCE_CODE, 'U','U=On-Line(UI)', 'C','C=Conc Process', 'W','W=Workflow', MSG.MESSAGE_SOURCE_CODE) MSG_SOURCE, MSG.PROCESS_ACTIVITY PROCESS_ACTIVITY, MSG.request_id REQUEST_ID, MST.message_text MESSAGE_TEXT from oe_processing_msgs_vl MSG, oe_processing_msgs_tl MST, fnd_languages FLA where MSG.header_id = nvl('&header_id_selected',:v_header_id) and msg.transaction_id = mst.transaction_id and MST.LANGUAGE = FLA.LANGUAGE_CODE and FLA.INSTALLED_FLAG = 'B' and decode(MSG.LINE_ID,9.99E+125,NULL,MSG.LINE_ID) is NULL; r_activity varchar2(100); r_descrip varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..10 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. Cannot find Activity name associated to HEADER PROCESSING MESSAGES.'; msg(2).descrip := ' 2. Cannot find Request Description.'; -- end if; for hp in h_proc loop :r_flag := ''; :r_error := 0; r_activity := ''; r_descrip := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- Get Activity name begin select WFA1.DISPLAY_NAME into r_activity from WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA1 where WFP.INSTANCE_ID = hp.PROCESS_ACTIVITY and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME); exception when no_data_found then :r_flag := :r_flag || '1 '; msg(1).flag := '1'; end; -- Get Request description begin select DESCRIPTION into r_descrip FROM FND_CONCURRENT_REQUESTS FCR where FCR.REQUEST_ID = hp.REQUEST_ID; exception when no_data_found then :r_flag := :r_flag || '2 '; msg(2).flag := '1'; end; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,n(hp.HEADER_ID)||'&d'||n(hp.MSG_SOURCE)||'&d'); utl_file.put_line(handle,n(r_activity)||'&d'||n(hp.REQUEST_ID)||'&d'); utl_file.put_line(handle,n(r_descrip)||'&d'||n(hp.MESSAGE_TEXT)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..10 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); -- end if; -- v_head_only UTL_FILE.FCLOSE(handle); end; / -- DROP INDEX OE_PROCESSING_MSGS_777 DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed if substr(UPPER(nvl('&prt_price','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f HEADER PRICE ADJUSTMENTS (ADJ) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh APPLIED &dh PRC_ADJ_ID &dh LST_HD_ID &dh LST_LN_ID &dh LIST_LN_NO &dh MOD_LVL &dh '); UTL_FILE.PUT_LINE(handle,'LIST_TYPE_CODE &dh CHG_TY_CD &dh ARITH_OP &dh OP_PER_QTY &dh ADJ_AMT_PQ &dh OPERAND &dh '); UTL_FILE.PUT_LINE(handle,'ADJ_AMT &dh CD &dh AF &dh PI &dh AC &dh IF &dh EF &dh UA &dh UF &dh AP &dh LK &dh '); UTL_FILE.PUT_LINE(handle,'PERC &dh COST_ID &dh TAX_CODE &dh PP &eh'); declare cursor h_prc_adj is select ADJ.PRICE_ADJUSTMENT_ID PRC_ADJ_ID, nvl(ADJ.APPLIED_FLAG,'N') APPLIED_FLAG, ADJ.LIST_HEADER_ID LST_HD_ID, ADJ.LIST_LINE_ID LST_LN_ID, ADJ.LIST_LINE_NO LIST_LN_NO, ADJ.MODIFIER_LEVEL_CODE MOD_LVL, ADJ.LIST_LINE_TYPE_CODE LIST_TYPE_CODE, ADJ.CHARGE_TYPE_CODE CHG_TY_CD, ADJ.ARITHMETIC_OPERATOR ARITH_OP, ADJ.OPERAND_PER_PQTY OP_PER_QTY, ADJ.ADJUSTED_AMOUNT_PER_PQTY ADJ_AMT_PQ, ADJ.OPERAND OPERAND, ADJ.ADJUSTED_AMOUNT ADJ_AMT, ADJ.CREDIT_OR_CHARGE_FLAG CD, ADJ.AUTOMATIC_FLAG AF, ADJ.PRINT_ON_INVOICE_FLAG PI, ADJ.ACCRUAL_FLAG AC, ADJ.INVOICED_FLAG INF, ADJ.ESTIMATED_FLAG EF, ADJ.UPDATE_ALLOWED UA, ADJ.UPDATED_FLAG UF, ADJ.APPLIED_FLAG AP, ADJ.LOCK_CONTROL LK, ADJ.PERCENT PERC, ADJ.COST_ID COST_ID, ADJ.TAX_CODE TAX_CODE, ADJ.PRICING_PHASE_ID PP from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ADJ.LINE_ID IS NULL -- and ADJ.APPLIED_FLAG = 'Y' order by ADJ.APPLIED_FLAG,LIST_TYPE_CODE; begin for hh in h_prc_adj loop utl_file.put_line(handle,'&sld'||n(hh.APPLIED_FLAG)||'&d'||n(hh.PRC_ADJ_ID)||'&d'||n(hh.LST_HD_ID)||'&d'); utl_file.put_line(handle,n(hh.LST_LN_ID)||'&d'||n(hh.LIST_LN_NO)||'&d'||n(hh.MOD_LVL)||'&d'); utl_file.put_line(handle,n(hh.LIST_TYPE_CODE)||'&d'||n(hh.CHG_TY_CD)||'&d'||n(hh.ARITH_OP)||'&d'); utl_file.put_line(handle,n(hh.OP_PER_QTY)||'&d'||n(hh.ADJ_AMT_PQ)||'&d'||n(hh.OPERAND)||'&d'); utl_file.put_line(handle,n(hh.ADJ_AMT)||'&d'||n(hh.CD)||'&d'||n(hh.AF)||'&d'); utl_file.put_line(handle,n(hh.PI)||'&d'||n(hh.AC)||'&d'||n(hh.INF)||'&d'); utl_file.put_line(handle,n(hh.EF)||'&d'||n(hh.UA)||'&d'||n(hh.UF)||'&d'); utl_file.put_line(handle,n(hh.AP)||'&d'||n(hh.LK)||'&d'||n(hh.PERC)||'&d'); utl_file.put_line(handle,n(hh.COST_ID)||'&d'||n(hh.TAX_CODE)||'&d'||n(hh.PP)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_price UTL_FILE.PUT_LINE(handle,'&f &f MTL_SALES_ORDERS (MSO) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh DS_HEADER_ID &dh HEADER_ID &dh ORDER_NUMBER &dh ORDER_TYPE_NAME &dh CONSTANTOE &eh'); declare cursor mtl_sal is select MSO.SALES_ORDER_ID , ORD.HEADER_ID , ORD.ORDER_NUMBER , TYP.NAME , MSO.SEGMENT3 from MTL_SALES_ORDERS MSO, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_VL TYP where ORD.ORDER_TYPE_ID = TYP.TRANSACTION_TYPE_ID and TO_CHAR(ORD.ORDER_NUMBER) = MSO.SEGMENT1 and TYP.NAME(+) = MSO.SEGMENT2 -- klr and MSO.SEGMENT1 = '&order_number_selected' and ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id) order by ORD.HEADER_ID; begin for ms in mtl_sal loop utl_file.put_line(handle,'&sld'||n(ms.SALES_ORDER_ID)||'&d'||n(ms.HEADER_ID)||'&d'); utl_file.put_line(handle,n(ms.ORDER_NUMBER)||'&d'||n(ms.NAME)||'&d'); utl_file.put_line(handle,n(ms.SEGMENT3)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); begin select distinct(MSO.SALES_ORDER_ID) into :sales_ord_id from MTL_SALES_ORDERS MSO, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_TL TYP, FND_LANGUAGES FLA where ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ORD.ORDER_TYPE_ID = TYP.TRANSACTION_TYPE_ID and TYP.LANGUAGE = FLA.LANGUAGE_CODE and FLA.INSTALLED_FLAG = 'B' -- klr and MSO.SEGMENT1 = '&order_number_selected' and TYP.NAME = MSO.SEGMENT2; end; -- end if; -- v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); c_lines number; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin c_lines := 0; If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed UTL_FILE.PUT_LINE(handle,'&f &f OE_ORDER_LINES (LIN) Column Definitions &f'); -- Titles will be printed later, titles repeat every 50 lines declare cursor line1 is select to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) line_n, LIN.LINE_ID Line_i, LIN.INVENTORY_ITEM_ID Item_i, lpad(' ',length(LIN.SORT_ORDER)/4,rpad('.',80,'....!'))||ITM.SEGMENT1 Item_na, substr(LIN.FLOW_STATUS_CODE,1,22) Line_st, nvl(LIN.ORDERED_QUANTITY,0) Ordq, LIN.ORDER_QUANTITY_UOM Orduom, nvl(LIN.ORDERED_QUANTITY2,0) Ordq2, LIN.ORDERED_QUANTITY_UOM2 Orduom2, LIN.UNIT_SELLING_PRICE sell, LIN.UNIT_LIST_PRICE lisl, nvl(LIN.SHIPPED_QUANTITY,0) shpq, nvl(LIN.SHIPPED_QUANTITY2,0) shpq2, nvl(LIN.SHIPPING_QUANTITY,0) SHN_Q, nvl(LIN.SHIPPING_QUANTITY2,0) SHN_Q2, nvl(LIN.SHIPPING_QUANTITY_UOM2,0) SHN_QUOM2, nvl(FULFILLED_QUANTITY,0) fulq, nvl(FULFILLED_QUANTITY2,0) fulq2, nvl(LIN.CANCELLED_QUANTITY,0) canq, nvl(LIN.CANCELLED_QUANTITY2,0) canq2, nvl(LIN.INVOICED_QUANTITY,0) invq, substr(LIN.SCHEDULE_STATUS_CODE,1,5) schc, nvl(LIN.OPEN_FLAG,'N') openf, nvl(LIN.BOOKED_FLAG,'N') bookf, nvl(LIN.SHIPPABLE_FLAG,'N') shipf, nvl(LIN.CANCELLED_FLAG,'N') canf, nvl(LIN.VISIBLE_DEMAND_FLAG,'N') vdem, nvl(LIN.FULFILLED_FLAG, 'N') fulf, nvl(LIN.SHIPPING_INTERFACED_FLAG,'N') SI, decode(nvl(LIN.ATO_LINE_ID,0),0,'N','Y') ato_i, nvl(LIN.SHIP_MODEL_COMPLETE_FLAG,'N') smcf, LIN.SHIP_FROM_ORG_ID shipfrom, -- PAR.ORGANIZATION_CODE org_i, to_char(LIN.REQUEST_DATE,'DD-MON-RR_HH24:MI:SS') reqd, to_char(LIN.SCHEDULE_SHIP_DATE,'DD-MON-RR_HH24:MI:SS') schd, -- TYP.NAME lin_ty, LIN.LINE_TYPE_ID LINE_TYPE_ID, LIN.LINE_CATEGORY_CODE lin_cat, LIN.ITEM_TYPE_CODE itm_tc, LIN.ORDERED_ITEM_ID ord_it, LIN.ORDERED_ITEM ord_it_name, LIN.SOURCE_TYPE_CODE Src_tc, LIN.PRICE_LIST_ID prlst, LIN.DEMAND_CLASS_CODE demc, nvl(LIN.OPTION_FLAG,'N') CFG, LIN.TOP_MODEL_LINE_ID PRT_LN_ID, LIN.ATO_LINE_ID ATO_LN_ID, LIN.LINK_TO_LINE_ID LNK_LN_ID, LIN.SPLIT_BY SPL_BY, LIN.SPLIT_FROM_LINE_ID SPL_LN_ID, LIN.CONFIG_HEADER_ID CFG_HD_ID, nvl(LIN.INVOICE_INTERFACE_STATUS_CODE,'N') INVC_INT_STAT, LIN.SHIP_TOLERANCE_ABOVE STA, LIN.SHIP_TOLERANCE_BELOW STB, LIN.SHIP_SET_ID SH_SET_ID, ST2.SET_TYPE SH_SET_TY, LIN.LINE_SET_ID LN_SET_ID, ST3.SET_TYPE LN_SET_TY, LIN.ARRIVAL_SET_ID AR_SET_ID, ST1.SET_TYPE AR_SET_TY, LIN.CALCULATE_PRICE_FLAG CAL_PR, to_char(LIN.ACTUAL_SHIPMENT_DATE,'DD-MON-RR_HH24:MI:SS') act_shp, to_char(LIN.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') cre_date, LIN.ordered_quantity2 ord_qty2, LIN.ordered_quantity_uom2 ord_uom2, to_char(LIN.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') upd_date, ITM.TRACKING_QUANTITY_IND trck_qty_ind, ITM.PRIMARY_UOM_CODE PRM_UOM, ITM.DUAL_UOM_CONTROL DUAL_UOM, ITM.SECONDARY_DEFAULT_IND SEC_DEF_IND, ITM.SECONDARY_UOM_CODE SEC_UOM, -- ITM.CHILD_LOT_FLAG CHLD_LOT, -- ITM.PARENT_CHILD_GENERATION_FLAG PAR_CHLD, -- ITM.LOT_DIVISIBLE_FLAG LOT_DIV, -- ITM.GRADE_CONTROL_FLAG GRAD_CTRL, Decode(ITM.ONT_PRICING_QTY_SOURCE, 'P','Primary', 'Secondary') ONT_PR_QTY, ITM.dual_uom_deviation_high DUAL_UOM_DEV_H, ITM.dual_uom_deviation_low DUAL_UOM_DEV_L, ITM.lot_control_code lot_ctl, ITM.location_control_code loct_ctl, ITM.lot_status_enabled status_ctl, Decode(ITM.RESERVABLE_TYPE,1,'Reserv', 2,'Non-Res', 'Val: '||to_char(ITM.RESERVABLE_TYPE)) RES_TYPE, LIN.source_document_id src_doc_id, LIN.source_document_line_id src_doc_lin_id, LIN.order_source_id ord_src_id, LIN.ORIG_SYS_DOCUMENT_REF o_sys_doc_r, LIN.ORIG_SYS_LINE_REF o_sys_lin_r, LIN.SERVICE_START_DATE srv_str_dt, LIN.SERVICE_DURATION srv_dur, LIN.SERVICE_PERIOD srv_per from OE_ORDER_LINES LIN, -- OE_TRANSACTION_TYPES TYP, MTL_SYSTEM_ITEMS ITM, -- MTL_PARAMETERS PAR, OE_SETS ST1, OE_SETS ST2, OE_SETS ST3 where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) -- and LIN.LINE_TYPE_ID = TYP.TRANSACTION_TYPE_ID -- and LIN.SHIP_FROM_ORG_ID = PAR.ORGANIZATION_ID(+) and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) -- and LIN.OPTION_NUMBER IS NULL -- and LIN.ITEM_TYPE_CODE <> 'INCLUDED' and LIN.ARRIVAL_SET_ID = ST1.SET_ID(+) and LIN.SHIP_SET_ID = ST2.SET_ID(+) and LIN.LINE_SET_ID = ST3.SET_ID(+) order by nvl(LIN.line_number,0), nvl(LIN.shipment_number,0), nvl(LIN.option_number,0), nvl(LIN.component_number,0), nvl(LIN.service_number,0); -- NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), -- NVL(LIN.SORT_ORDER, '0000'), -- NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), -- NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), -- NVL(LIN.SERVICE_REFERENCE_LINE_ID, LIN.LINE_ID), -- LIN.LINE_ID; cursor setl(lin number) is select os.set_id, os.set_type from oe_sets os, oe_line_sets ols where os.set_id = ols.set_id and line_id = lin; r_del_det varchar2(100); r_pro_nab varchar2(100); r_act_nab varchar2(100); r_resultb varchar2(100); r_act_sb varchar2(100); r_sets varchar2(100); r_omint varchar2(100); r_invint varchar2(100); org_i varchar2(100); lin_ty varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; c_lines number; begin :r_error := 0; c_lines := 51; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..99 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. Ordered Quantity is less than Shipped Quantity.'; msg(2).descrip := ' 2. Ordered Quantity is less than Fulfilled Quantity.'; msg(3).descrip := ' 3. Ordered Quantity is less than Invoiced Quantity.'; msg(4).descrip := ' 4. Interface to WSH set to "N" but exist Delivery Details associated to this Order_line.'; msg(5).descrip := ' 5. Associated Delivery Details has NOT been interface but Shipped, Fulfilled or Invoiced QTY are updated.'; msg(10).descrip := ' 10. Order_Line shows as OPEN but CANCELLED flag is set to Y.'; msg(11).descrip := ' 11. Order_Line status ENTERED but Shipped Qty is greater than zero.'; msg(12).descrip := ' 12. Order_Line status ENTERED but Fulfilled Qty is greater than zero.'; msg(15).descrip := ' 15. Order_Line status BOOKED but "Book" activity has not been completed.'; msg(16).descrip := ' 16. Order_Line status BOOKED but Shipped Qty is greater than zero.'; msg(17).descrip := ' 17. Order_Line status BOOKED but Fulfilled Qty is greater than zero.'; msg(20).descrip := ' 20. Order_Line status AWAITING SHIPPING but Item is set to Non-Shippable.'; msg(21).descrip := ' 21. Order_Line status AWAITING SHIPPING but Shipped Qty is greater than zero.'; msg(22).descrip := ' 22. Order_Line status AWAITING SHIPPING but Fulfilled Qty is greater than zero.'; msg(23).descrip := ' 23. No Delivery Details associated to this Order_line, Interface to WSH is set to "Y".'; msg(24).descrip := ' 24. Associated Delivery Details have invalid RELEASED status.'; msg(25).descrip := ' 25. Associated Delivery Details have invalid INTERFACE status (Not Shipped but Interfaced to OM or INV).'; msg(40).descrip := ' 40. Line status is CLOSED but associated Delivery Details still not interface to OM.'; msg(41).descrip := ' 41. Line status is CLOSED but associated Delivery Details still not interface to INVentory.'; msg(45).descrip := ' 45. Line status is CANCELLED but associated Delivery Details has been interfaced to OM.'; msg(46).descrip := ' 46. Line status is CANCELLED but associated Delivery Details has been interfaced to INVentory.'; msg(50).descrip := ' 50. No WorkFlow Process associated to this line.'; msg(51).descrip := ' 51. Incorrect WorkFlow Process associated to this line.'; msg(52).descrip := ' 52. Incorrect WorkFlow Activity associated to this line.'; msg(53).descrip := ' 53. Incorrect WorkFlow Activity Result for this line.'; msg(54).descrip := ' 54. Incorrect WorkFlow Activity Status for this line.'; msg(55).descrip := ' 55. Order Line status is BOOKED, WorkFlow Activities shows additional activities for this line.'; msg(60).descrip := ' 60. Organization_id is Null for this line.'; msg(61).descrip := ' 61. Transaction Type is Not Valid for this line.'; msg(99).descrip := ' 99. An Error occurred on query: '; -- end if; for i in line1 loop :r_flag := ''; r_del_det := ''; r_sets := ''; -- get Order_line WF name begin :r_line_t := ''; select WFA.DISPLAY_NAME into :r_line_t FROM WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA WHERE WFS.ITEM_TYPE = 'OEOL' -- klr and WFS.ITEM_KEY = to_char(I.LINE_I) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_NAME = 'ROOT' and WFP.ACTIVITY_ITEM_TYPE = WFA.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA.NAME and nvl(WFA.VERSION,-1) = (select nvl(max(VERSION),-1) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME); exception when no_data_found then :r_flag := :r_flag || '50 '; msg(50).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'Get WF name '; end; -- get organization code begin select ORGANIZATION_CODE into org_i from MTL_PARAMETERS where i.shipfrom = ORGANIZATION_ID(+); exception when no_data_found then org_i := 'Invalid Org_id: '||to_char(i.shipfrom); :r_flag := :r_flag || '60 '; msg(60).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'Get Org code '; end; -- get Transaction Type name begin select NAME into lin_ty from OE_TRANSACTION_TYPES where i.LINE_TYPE_ID = TRANSACTION_TYPE_ID; exception when no_data_found then lin_ty := 'Invalid Id: '||to_char(i.LINE_TYPE_ID); :r_flag := :r_flag || '61 '; msg(61).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'Transaction Type '; end; -- Check if exist associated Delivery Detail id regardles of line status and SI flag. begin select Delivery_detail_id into r_del_det from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE' and rownum = 1; exception when no_data_found then null; -- conditions will be evaluated later when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'associated WDD '; end; -- Get associated sets for sl in setl(i.line_i) loop r_sets := r_sets || to_char(sl.set_id)||'-'||sl.set_type || ' '; end loop; -- Reservations select sum(nvl(RESERVATION_QUANTITY,0)) into :r_res_q from MTL_RESERVATIONS RES where RES.DEMAND_SOURCE_HEADER_ID = :sales_ord_id and RES.DEMAND_SOURCE_TYPE_ID in (2,8,9,21,22) and RES.DEMAND_SOURCE_LINE_ID = i.LINE_I; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- current WF status begin :r_pro_na := ''; :r_act_na := ''; :r_result := ''; :r_act_s := ''; select WFA.DISPLAY_NAME, WFA1.DISPLAY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE), LKP.MEANING into :r_pro_na, :r_act_na, :r_result, :r_act_s from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOL' and WFS.item_key = To_Char(i.line_i) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and rownum = 1 -- to manage ORA-1422 and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and Execution_time = (Select Max(execution_time) from WF_ITEM_ACTIVITY_STATUSES where item_type = 'OEOL' and Item_key = To_Char(i.line_i)); exception when no_data_found then if msg(50).flag = '1' then null; -- problem already discovered else :r_flag := :r_flag || '50 '; msg(50).flag := '1'; end if; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'WF current status '; end; --- -- Basic Verification -- -- Ordered Qty less than Shipped (with Tolerance) If i.Ordq*(100+nvl(i.sta,0))/100 < i.shpq then :r_flag := :r_flag || '1 '; msg(1).flag := '1'; end if; -- Ordered Qty less than Fulfilled (with Tolerance) If i.Ordq*(100+nvl(i.sta,0))/100 < i.fulq then :r_flag := :r_flag || '2 '; msg(2).flag := '1'; end if; -- Ordered Qty less than Invoiced (with Tolerance) If i.Ordq*(100+nvl(i.sta,0))/100 < i.invq then :r_flag := :r_flag || '3 '; msg(3).flag := '1'; end if; If i.si = 'N' then -- Non interfaced to WSH select count(*) -- count total wdd for this line into :r_wdd from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE'; If :r_wdd > 0 then :r_flag := :r_flag || '4 '; msg(4).flag := '1'; end if; end if; -- If line is Shippable -- Check if shipped, fulfilled or invoiced quantities has been updated and associated Del.Details still not Interfaced to OM if i.shipf = 'Y' then -- Shippable line if i.shpq > 0 or i.fulq > 0 or i.invq > 0 then select count(*) -- count if any associated Delivery Detail has been OM interfaced into r_omint from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE' and OE_INTERFACED_FLAG = 'Y'; if r_omint = 0 then :r_flag := :r_flag || '5 '; msg(5).flag := '1'; end if; end if; end if; -- line open but Cancelled flag is Y if i.openf = 'Y' and i.canf = 'Y' then :r_flag := :r_flag || '10 '; msg(10).flag := '1'; end if; --- -- Verifications for Order_Lines on ENTERED status --- If i.line_st = 'ENTERED' then if i.shpq > 0 then -- Quantity Shipped :r_flag := :r_flag || '11 '; msg(11).flag := '1'; end if; if i.fulq > 0 then -- Quantity Fulfilled :r_flag := :r_flag || '12 '; msg(12).flag := '1'; end if; -- verify current WF status if :r_pro_na <> 'Enter - Line' then :r_flag := :r_flag || '51 '; msg(51).flag := '1'; elsif :r_act_na <> 'Wait for Booking' then :r_flag := :r_flag || '52 '; msg(52).flag := '1'; elsif :r_result is not null then :r_flag := :r_flag || '53 '; msg(53).flag := '1'; elsif :r_act_s <> 'Notified' then :r_flag := :r_flag || '54 '; msg(54).flag := '1'; end if; end if; -- ENTERED --- -- Verifications for Order_Lines on BOOKED status --- If i.line_st = 'BOOKED' then -- Check is Book activity has been completed begin select WFA.DISPLAY_NAME, WFA1.DISPLAY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE), LKP.MEANING into r_pro_nab, r_act_nab, r_resultb, r_act_sb from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOL' and WFS.item_key = To_Char(i.line_i) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFA1.DISPLAY_NAME = 'Wait for Booking'; exception when no_data_found then :r_flag := :r_flag || '15 '; msg(15).flag := '1'; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'Check BOOK activity '; end; if r_act_nab = 'Wait for Booking' then if r_resultb = 'Null' and r_act_sb = 'Complete' then null; -- status is OK else :r_flag := :r_flag || '15 '; msg(15).flag := '1'; end if; end if; if i.shpq > 0 then -- Quantity Shipped :r_flag := :r_flag || '16 '; msg(16).flag := '1'; end if; if i.fulq > 0 then -- Quantity Fulfilled :r_flag := :r_flag || '17 '; msg(17).flag := '1'; end if; -- Check if there are other activities after Booking. if :r_act_na = 'Wait for Booking' then null; -- OK last activity is Booking else :r_flag := :r_flag || '55 '; msg(55).flag := '1'; end if; end if; -- BOOKED --- -- Verifications for Order_Lines on AWAITING SHIPPING status --- If i.line_st = 'AWAITING_SHIPPING' then if i.shipf = 'N' then -- No shippable line :r_flag := :r_flag || '20 '; msg(20).flag := '1'; end if; if i.shpq > 0 then -- Quantity Shipped :r_flag := :r_flag || '21 '; msg(21).flag := '1'; end if; if i.fulq > 0 then -- Quantity Fulfilled :r_flag := :r_flag || '22 '; msg(22).flag := '1'; end if; select count(*) -- count total wdd for this line into :r_wdd from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE'; If :r_wdd = 0 and i.si = 'Y' then :r_flag := :r_flag || '23 '; msg(23).flag := '1'; else select count(*) -- Invalid Release flag status into :r_wdd from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE' and RELEASED_STATUS not in ('Y','R','S','B','P','C','N','D','X'); If :r_wdd > 0 then :r_flag := :r_flag || '24 '; msg(24).flag := '1'; end if; select count(*) -- count Released status 'R' but OM or INV interfaced into :r_wdd from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE' and RELEASED_STATUS <> 'C' and (nvl(INV_INTERFACED_FLAG,'N') not in ( 'N','X') or nvl(OE_INTERFACED_FLAG,'N') <> 'N'); If :r_wdd > 0 then :r_flag := :r_flag || '25 '; msg(25).flag := '1'; end if; end if; -- no wdd -- verify current WF status if :r_pro_na <> 'Ship - Line, Manual' then :r_flag := :r_flag || '51 '; msg(51).flag := '1'; elsif :r_act_na <> 'Ship' then :r_flag := :r_flag || '52 '; msg(52).flag := '1'; elsif :r_result is not null then :r_flag := :r_flag || '53 '; msg(53).flag := '1'; elsif :r_act_s <> 'Notified' then :r_flag := :r_flag || '54 '; msg(54).flag := '1'; end if; end if; -- AWAITING SHIPPING --- -- Verifications for Order_Lines on SHIPPED status --- If i.line_st = 'SHIPPED' then null; -- nothing yet -- :r_flag := :r_flag || ''; -- msg(30).flag := '1'; end if; -- SHIPPED --- -- Verifications for Order_Lines on FULFILLED status --- If i.line_st = 'FULFILLED' then null; -- nothing yet -- :r_flag := :r_flag || ''; -- msg(40).flag := '1'; end if; -- FULFILLED --- -- Verifications for Order_Lines on INVOICED status --- If i.line_st = 'INVOICED' then null; -- nothing yet -- :r_flag := :r_flag || ''; -- msg(40).flag := '1'; end if; -- INVOICED --- -- Verifications for Order_Lines on CLOSED status --- If i.line_st = 'CLOSED' then -- If line is Shippable check if associated Del.Details still not Interfaced to OM or INV if i.shipf = 'Y' then -- count if any associated Delivery Detail has NOT been OM or INV interfaced begin select sum(decode(nvl(OE_INTERFACED_FLAG,'N'),'N',1,0)), sum(decode(nvl(INV_INTERFACED_FLAG,'N'),'N',1,0)) into r_omint, r_invint from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and SOURCE_CODE = 'OE' and released_status <> 'D' group by SOURCE_LINE_ID; exception when no_data_found then r_omint := 0; r_invint := 0; when others then :r_flag := :r_flag || '99 '; msg(99).flag := '1'; msg(99).descrip := msg(99).descrip || 'count associated WDD '; end; if r_omint > 0 then :r_flag := :r_flag || '40 '; msg(40).flag := '1'; end if; if r_invint > 0 then :r_flag := :r_flag || '41 '; msg(41).flag := '1'; end if; end if; end if; -- CLOSED --- -- Verifications for Order_Lines on CANCELLED status --- If i.line_st = 'CANCELLED' then -- If line is Shippable check if associated Del.Details open Pending Interfaced to OM or INV if i.shipf = 'Y' then -- count if any associated Delivery Detail has been interfaced to OM or INV begin select sum(decode(nvl(OE_INTERFACED_FLAG,'N'),'Y',1,0)), sum(decode(nvl(INV_INTERFACED_FLAG,'N'),'Y',1,0)) into r_omint, r_invint from WSH_Delivery_Details where SOURCE_LINE_ID = I.LINE_I and source_code = 'OE' and RELEASED_STATUS <> 'D' group by SOURCE_LINE_ID; exception when no_data_found then r_omint := 0; r_invint := 0; end; if r_omint > 0 then :r_flag := :r_flag || '45 '; msg(45).flag := '1'; end if; if r_invint > 0 then :r_flag := :r_flag || '46 '; msg(46).flag := '1'; end if; end if; end if; -- CANCELLED end if; -- do_analysis if c_lines >= 50 then if c_lines = 51 then UTL_FILE.PUT_LINE(handle,'&std '); end if; c_lines := 1; UTL_FILE.PUT_LINE(handle,'&sh WARNING &dh LINE &dh LINE_ID &dh DELIVERY DETAIL &dh ITEM ID &dh ITEM &dh '); UTL_FILE.PUT_LINE(handle,'FLOW PROCESS &dh FLOW CODE &dh OP &dh BK &dh SH &dh CN &dh VD &dh SI &dh FF &dh ATO &dh '); UTL_FILE.PUT_LINE(handle,'SMC &dh ORDER QTY &dh UOM &dh SELL PRICE &dh LIST PRICE &dh '); UTL_FILE.PUT_LINE(handle,'CALC PRICE &dh RESERV QTY &dh SHIPNG QTY &dh SHIPPD QTY &dh FULFIL QTY &dh CANCEL QTY &dh '); UTL_FILE.PUT_LINE(handle,'INVOIC QTY &dh SCHD ST_CD &dh WH_ID &dh ORG &dh CREATE DATE &dh '); UTL_FILE.PUT_LINE(handle,'REQUEST DATE &dh SCHED DATE &dh ACTUAL SHIP_DATE &dh LINE TYPE &dh LINE CATEG &dh '); UTL_FILE.PUT_LINE(handle,'ITEM TYPE &dh ORDERED ITEM_ID &dh ORDERED ITEM &dh SOURCE TYPE &dh '); UTL_FILE.PUT_LINE(handle,'PRICE LIST_ID &dh DEMAND CLASS &dh CFG &dh PRT LN_ID &dh ATO LN_ID &dh LINK LN_ID &dh '); UTL_FILE.PUT_LINE(handle,'SPLIT BY &dh SPLIT LN_ID &dh CONFIG HD_ID &dh INVOIC INT_STAT &dh STA &dh STB &dh SHIP SET_ID &dh '); UTL_FILE.PUT_LINE(handle,'SHIP SET_TY &dh LINE SET_ID &dh LINE SET_TY &dh ARRIV SET_ID &dh ARRIV SET_TY &dh OTHER SETS &dh '); UTL_FILE.PUT_LINE(handle,'DISCRETE ORDER_QTY &dh DISCR UOM &dh DISCRETE SHPNG_QTY &dh DISCRETE SHPNG_UOM &dh '); UTL_FILE.PUT_LINE(handle,'DISCRETE SHIPPD_QTY &dh DISCRETE FULFLL_QTY &dh DISCRETE CANCEL_QTY &dh '); UTL_FILE.PUT_LINE(handle,'LAST UPD_DATE &dh'); UTL_FILE.PUT_LINE(handle,'TRACK QTY_IND &dh PRIMARY UOM_COD &dh DUAL_UOM CONTROL &dh SECONDARY DEFAULT_IND &dh '); UTL_FILE.PUT_LINE(handle,'SECONDARY UOM_COD &dh '); UTL_FILE.PUT_LINE(handle,'ONT_PRICING QTY_SOURCE &dh DUAL_UOM DEV_HGH &dh DUAL_UOM DEV_LOW &dh '); UTL_FILE.PUT_LINE(handle,'LOT CONTROL &dh LOCATION CTRL_CODE &dh STATUS CONTROL &dh RESERVABLE &dh '); UTL_FILE.PUT_LINE(handle,'SERVICE START_DATE &dh SERVICE DURATION &dh SERVICE PERIOD &dh '); UTL_FILE.PUT_LINE(handle,'SOURCE DOC_ID &dh SOURCE DOC_LIN_ID &dh ORDER SRC_ID &dh ORIG_SYS DOC_REF &dh ORIG_SYS LINE_REF &eh'); else c_lines := c_lines + 1; end if; -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'||n(i.line_n)||'&d'); utl_file.put_line(handle,''||n(i.Line_i)||''||'&d'||''||n(r_del_det)||''); utl_file.put_line(handle,'&d'||n(i.Item_i)||'&d'||n(i.Item_na)||'&d'); utl_file.put_line(handle,''||n(:r_line_t)||''||'&d'); utl_file.put_line(handle,n(i.Line_st)||'&d'||n(i.openf)||'&d'); utl_file.put_line(handle,n(i.bookf)||'&d'||n(i.shipf)||'&d'); utl_file.put_line(handle,n(i.canf)||'&d'||n(i.vdem)||'&d'); utl_file.put_line(handle,n(i.si)||'&d'||n(i.fulf)||'&d'); utl_file.put_line(handle,n(i.ato_i)||'&d'||n(i.smcf)||'&d'); utl_file.put_line(handle,n(i.Ordq)||'&d'||n(i.Orduom)||'&d'); utl_file.put_line(handle,n(i.sell)||'&d'); utl_file.put_line(handle,n(i.lisl)||'&d'||n(i.cal_pr)||'&d'); utl_file.put_line(handle,n(:r_res_q)||'&d'||n(i.shn_q)||'&d'); utl_file.put_line(handle,n(i.shpq)||'&d'||n(i.fulq)||'&d'); utl_file.put_line(handle,n(i.canq)||'&d'); utl_file.put_line(handle,n(i.invq)||'&d'||n(i.schc)||'&d'); utl_file.put_line(handle,n(i.shipfrom)||'&d'||n(org_i)||'&d'); utl_file.put_line(handle,n(i.cre_date)||'&d'); utl_file.put_line(handle,n(i.reqd)||'&d'||n(i.schd)||'&d'); utl_file.put_line(handle,n(i.act_shp)||'&d'); utl_file.put_line(handle,n(lin_ty)||'&d'||n(i.lin_cat)||'&d'); utl_file.put_line(handle,n(i.itm_tc)||'&d'||n(i.ord_it)||'&d'); utl_file.put_line(handle,n(i.ord_it_name)||'&d'||n(i.Src_tc)||'&d'); utl_file.put_line(handle,n(i.prlst)||'&d'||n(i.demc)||'&d'); utl_file.put_line(handle,n(i.CFG)||'&d'); utl_file.put_line(handle,n(i.PRT_LN_ID)||'&d'||n(i.ATO_LN_ID)||'&d'); utl_file.put_line(handle,n(i.LNK_LN_ID)||'&d'||n(i.SPL_BY)||'&d'); utl_file.put_line(handle,n(i.SPL_LN_ID)||'&d'); utl_file.put_line(handle,n(i.CFG_HD_ID)||'&d'||n(i.INVC_INT_STAT)||'&d'); utl_file.put_line(handle,n(i.STA)||'&d'); utl_file.put_line(handle,n(i.STB)||'&d'||n(i.SH_SET_ID)||'&d'); utl_file.put_line(handle,n(i.SH_SET_TY)||'&d'||n(i.LN_SET_ID)||'&d'); utl_file.put_line(handle,n(i.LN_SET_TY)||'&d'||n(i.AR_SET_ID)||'&d'); utl_file.put_line(handle,n(i.AR_SET_TY)||'&d'||n(r_sets)||'&d'); utl_file.put_line(handle,n(i.Ordq2)||'&d'||n(i.Orduom2)||'&d'); utl_file.put_line(handle,n(i.shn_q2)||'&d'||n(i.shn_quom2)||'&d'); utl_file.put_line(handle,n(i.shpq2)||'&d'||n(i.fulq2)||'&d'); utl_file.put_line(handle,n(i.canq2)||'&d'); utl_file.put_line(handle,n(i.upd_date)||'&d'); utl_file.put_line(handle,n(i.trck_qty_ind)||'&d'||n(i.PRM_UOM)||'&d'); utl_file.put_line(handle,n(i.DUAL_UOM)||'&d'||n(i.SEC_DEF_IND)||'&d'); utl_file.put_line(handle,n(i.SEC_UOM)||'&d'); --||n(i.CHLD_LOT)||'&d'); -- utl_file.put_line(handle,n(i.PAR_CHLD)||'&d'||n(i.LOT_DIV)||'&d'); -- utl_file.put_line(handle,n(i.GRAD_CTRL)||'&d'||n(i.ONT_PR_QTY)||'&d'); utl_file.put_line(handle,n(i.ONT_PR_QTY)||'&d'); utl_file.put_line(handle,n(i.DUAL_UOM_DEV_H)||'&d'||n(i.DUAL_UOM_DEV_L)||'&d'); utl_file.put_line(handle,n(i.LOT_CTL)||'&d'||n(i.LOCT_CTL)||'&d'); utl_file.put_line(handle,n(i.STATUS_CTL)||'&d'); utl_file.put_line(handle,n(i.RES_TYPE)||'&d'); utl_file.put_line(handle,n(i.srv_str_dt)||'&d'||n(i.srv_dur)||'&d'); utl_file.put_line(handle,n(i.srv_per)||'&d'); utl_file.put_line(handle,''||n(i.src_doc_id)||''||'&d'); utl_file.put_line(handle,''||n(i.src_doc_lin_id)||''||'&d'); utl_file.put_line(handle,n(i.ord_src_id)||'&d'); utl_file.put_line(handle,n(i.o_sys_doc_r)||'&d'||n(i.o_sys_lin_r)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..99 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed UTL_FILE.PUT_LINE(handle,'&f &f OE_ORDER_LINES_HISTORY (HIL) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh LINE_ID &dh LINE &dh ORD_Q &dh LCN_Q &dh SHN_Q &dh SHP_Q &dh FUL_Q &dh CAN_Q &dh INC_Q &dh UOM &dh SSC &dh OP &dh'); UTL_FILE.PUT_LINE(handle,'BK &dh SH &dh CN &dh VD &dh SI &dh FF &dh WF_ACT_CODE &dh WF_RESULT &dh HIST_TYPE &dh HIST_CREAT_DATE &dh FLOW_CODE &dh'); UTL_FILE.PUT_LINE(handle,'PRICE &dh REASON_CODE &dh HIST_COMMENTS &eh'); Declare cursor l_lin_his is select HIL.LINE_ID Line_id, to_char(HIL.line_number) || decode(HIL.shipment_number, null, null, '.' || to_char(HIL.shipment_number))|| decode(HIL.option_number, null, null, '.' || to_char(HIL.option_number)) || decode(HIL.component_number, null, null, decode(HIL.option_number, null, '.',null)|| '.'||to_char(HIL.component_number))|| decode(HIL.service_number,null,null, decode(HIL.component_number, null, '.' , null) || decode(HIL.option_number, null, '.', null ) || '.'|| to_char(HIL.service_number)) line_no, nvl(HIL.ORDERED_QUANTITY,0) Ord_q, nvl(HIL.LATEST_CANCELLED_QUANTITY,0) lCan_q, nvl(HIL.SHIPPING_QUANTITY,0) SHI_q, nvl(HIL.SHIPPED_QUANTITY,0) SHP_q, nvl(HIL.FULFILLED_QUANTITY,0) Ful_q, nvl(HIL.CANCELLED_QUANTITY,0) Can_q, nvl(HIL.INVOICED_QUANTITY,0) INV_q, HIL.ORDER_QUANTITY_UOM Ord_q_uom, substr(HIL.SCHEDULE_STATUS_CODE,1,5) Sch_code, nvl(HIL.OPEN_FLAG,'N') OP_f, nvl(HIL.BOOKED_FLAG,'N') BK_f, nvl(HIL.SHIPPABLE_FLAG,'N') SH_f, nvl(HIL.CANCELLED_FLAG,'N') CN_f, nvl(HIL.VISIBLE_DEMAND_FLAG,'N') VD_f, nvl(HIL.SHIPPING_INTERFACED_FLAG,'N') SI_f, nvl(HIL.FULFILLED_FLAG,'N') FL_f, HIL.WF_ACTIVITY_CODE Act_code, HIL.WF_RESULT_CODE Res_code, HIL.HIST_TYPE_CODE Typ_code, to_char(HIL.HIST_CREATION_DATE, 'DD-MON-RR_HH24:MI:SS') Hist_cre_date, HIL.FLOW_STATUS_CODE Sta_code, HIL.UNIT_SELLING_PRICE Sell_p, HIL.REASON_CODE Reason, HIL.HIST_COMMENTS comments from OE_ORDER_LINES_HISTORY HIL where HIL.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,HIL.LINE_ID, HIL.TOP_MODEL_LINE_ID, HIL.ATO_LINE_ID, HIL.LINK_TO_LINE_ID, HIL.SERVICE_REFERENCE_LINE_ID) order by NVL(HIL.ATO_LINE_ID, HIL.LINE_ID), NVL(HIL.SORT_ORDER, '0000'), NVL(HIL.LINK_TO_LINE_ID, HIL.LINE_ID), NVL(HIL.SOURCE_DOCUMENT_LINE_ID, HIL.LINE_ID), NVL(HIL.SERVICE_REFERENCE_LINE_ID, HIL.LINE_ID), HIL.LINE_ID; begin for ll in l_lin_his loop utl_file.put_line(handle,'&sld'||n(ll.Line_id)||'&d'||n(ll.line_no)||'&d'); utl_file.put_line(handle,n(ll.Ord_q)||'&d'||n(ll.lcan_q)||'&d'); utl_file.put_line(handle,n(ll.SHI_q)||'&d'||n(ll.SHP_q)||'&d'); utl_file.put_line(handle,n(ll.Ful_q)||'&d'||n(ll.CAN_q)||'&d'); utl_file.put_line(handle,n(ll.INV_q)||'&d'||n(ll.ord_q_uom)||'&d'); utl_file.put_line(handle,n(ll.Sch_code)||'&d'||n(ll.OP_f)||'&d'); utl_file.put_line(handle,n(ll.BK_f)||'&d'||n(ll.SH_f)||'&d'); utl_file.put_line(handle,n(ll.CN_f)||'&d'||n(ll.VD_f)||'&d'); utl_file.put_line(handle,n(ll.SI_f)||'&d'||n(ll.FL_f)||'&d'); utl_file.put_line(handle,n(ll.Act_code)||'&d'||n(ll.Res_code)||'&d'); utl_file.put_line(handle,n(ll.Typ_code)||'&d'||n(ll.Hist_cre_date)||'&d'); utl_file.put_line(handle,n(ll.Sta_code)||'&d'||n(ll.Sell_p)||'&d'); utl_file.put_line(handle,n(ll.Reason)||'&d'||n(ll.comments)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); if substr(UPPER(nvl('&prt_wf','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW LINE STATUS &f'); -- break on WFS.ITEM_KEY skip 2; declare cursor WF_LINE is select WFS.ITEM_KEY ITEM_KEY, WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT_CODE, LKP.MEANING MEANING, WFS.NOTIFICATION_ID NOTIFICATION_ID, WFP.PROCESS_NAME INT_Process_name, WFP.ACTIVITY_NAME INT_Activity_name, WFS.ACTIVITY_RESULT_CODE INT_Act_Res_code, WFS.ACTIVITY_STATUS INT_Act_Stat, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') B_Date, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') E_Date, WFS.ERROR_NAME Err_name, WFS.BEGIN_DATE BEGIN_DATE2, WFS.EXECUTION_TIME EXECUTION_TIME2 from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOL' and WFS.item_key in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS UNION ALL select WFS.ITEM_KEY ITEM_KEY, WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT_CODE, LKP.MEANING MEANING, WFS.NOTIFICATION_ID NOTIFICATION_ID, WFP.PROCESS_NAME INT_Process_name, WFP.ACTIVITY_NAME INT_Activity_name, WFS.ACTIVITY_RESULT_CODE INT_Act_Res_code, WFS.ACTIVITY_STATUS INT_Act_Stat, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') B_Date, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') E_Date, WFS.ERROR_NAME Err_name, WFS.BEGIN_DATE BEGIN_DATE2, WFS.EXECUTION_TIME EXECUTION_TIME2 from WF_ITEM_ACTIVITY_STATUSES_H WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOL' and WFS.item_key in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS order by ITEM_KEY,BEGIN_DATE2,EXECUTION_TIME2; -- order by 1, 14, 15; type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; current_key number; line_no varchar2(10); procedure prt_head(it_key varchar2) is begin utl_file.put_line(handle,'&std &sh WARNING &dh'); utl_file.put_line(handle,'LIN_NUM &dh LIN_ID &dh PROCESS_NAME &dh ACTIVITY_NAME &dh'); utl_file.put_line(handle,'RESULT &dh ACT_STATUS &dh NOTIF_ID &dh INT_PROCESS_NAME &dh'); utl_file.put_line(handle,'INT_ACTIVITY_NAME &dh INT_RESULT_CODE &dh INT_ACTIVITY_STATUS &dh'); utl_file.put_line(handle,'BEGIN_DATE &dh END_DATE &dh ERROR_NAME &eh'); end; begin current_key := ''; :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..60 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; -- end if; -- do_analysis -- cycle for table information for wf in wf_LINE loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; -- nothing yet end if; -- do_analysis -- Print line to Output file if wf.item_key <> nvl(current_key,0) then -- check if item key changed to place a division if current_key is not null then -- first pass don't need to close table utl_file.put_line(handle,'&et &f'); end if; prt_head(wf.ITEM_KEY); current_key := wf.item_key; select to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) into line_no from OE_ORDER_LINES LIN where LIN.Line_id = current_key; end if; utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'||n(line_no)||'&d'); utl_file.put_line(handle,n(wf.ITEM_KEY)||'&d'); utl_file.put_line(handle,n(wf.Process_name)||'&d'||n(wf.activity_name)||'&d'); utl_file.put_line(handle,n(wf.Result_code)||'&d'||n(wf.Meaning)||'&d'); utl_file.put_line(handle,n(wf.Notification_id)||'&d'||n(wf.INT_Process_name)||'&d'); utl_file.put_line(handle,n(wf.INT_activity_name)||'&d'||n(wf.INT_Act_Res_code)||'&d'); utl_file.put_line(handle,n(wf.INT_Act_Stat)||'&d'||n(wf.B_date)||'&d'); utl_file.put_line(handle,n(wf.E_date)||'&d'||n(wf.Err_name)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; if current_key is null then -- Print Titles when no rows were selected. prt_head(' '); end if; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..60 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); /* UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW LINE SKIP INFORMATION (WFSKIPL)&f'); UTL_FILE.PUT_LINE(handle,'&std &sh LINE_ID &dh HEADER_ID &dh DISPLAY_NAME &dh CREATION_DATE &dh USER_ID &dh RESPONSIBILITY_ID &dh APPLICATION_ID &eh'); declare r_exist number; begin select count(*) into r_exist from all_tables where table_name = 'ONT_WF_SKIP_LOG'; if r_exist = 0 then utl_file.put_line(handle,'&et Table ONT_WF_SKIP_LOG is not present on this instance: &f'); end if; end; select '&sld', WFS.LINE_ID, WFS.HEADER_ID, WFA.DISPLAY_NAME, to_char(WFS.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') cre_date, WFS.USER_ID, WFS.RESPONSIBILITY_ID, WFS.APPLICATION_ID,'&el' from ONT_WF_SKIP_LOG WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA where WFS.HEADER_ID = nvl('&header_id_selected',to_char(:v_header_id)) and WFS.ACTIVITY_ID = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and NVL('&line_id_selected',0) in (0,WFS.LINE_ID) order by WFS.HEADER_ID, WFS.LINE_ID, WFS.CREATION_DATE; UTL_FILE.PUT_LINE(handle,'&et'); */ UTL_FILE.PUT_LINE(handle,'&f &f &b WORKFLOW LINE STATUS ERRORS &f'); -- break on LIN_ID skip 2; UTL_FILE.PUT_LINE(handle,'&std &sh LIN_ID &dh PROCESS_NAME &dh ERROR_ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh ERR_RETRY_ROLE &dh ERR_RETRY_USER &dh '); UTL_FILE.PUT_LINE(handle,'ERROR_NAME &dh ERROR_MESSAGE &dh ERROR_STACK &eh'); Declare cursor l_wf_err is select WFS.ITEM_KEY LIN_ID, WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ERROR_ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.ERROR_NAME ERROR_NAME, WFS.ERROR_MESSAGE ERROR_MESSAGE, WFS.ERROR_STACK ERROR_STACK from WF_ITEM_ACTIVITY_STATUSES WFS, WF_ITEMS WFI, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'OEOL' and WFS.item_key in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFS.ERROR_NAME is not NULL and WFI.PARENT_ITEM_TYPE='OEOL' and WFI.PARENT_ITEM_KEY in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_err loop utl_file.put_line(handle,'&sld'||n(ll.LIN_ID)||'&d'||n(ll.PROCESS_NAME)||'&d'); utl_file.put_line(handle,n(ll.ERROR_ACTIVITY_NAME)||'&d'||n(ll.RESULT)||'&d'); utl_file.put_line(handle,n(ll.ACT_STATUS)||'&d'||n(ll.ERROR_NAME)||'&d'); utl_file.put_line(handle,n(ll.ERROR_MESSAGE)||'&d'||n(ll.ERROR_STACK)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); -- break on ERR_TYPE_KEY skip 2; UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW ACTIVITY STATUS FOR LINE ERROR PROCESS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ERR_TYPE_KEY &dh ERR_PROCESS_NAME &dh ERR_ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh NOTIF_ID &dh '); UTL_FILE.PUT_LINE(handle,'ASGND_USER &dh BEGIN_DATE &dh END_DATE &eh'); Declare cursor l_wf_proc_err is select WFS.ITEM_TYPE || '-' || WFS.ITEM_KEY ERR_TYPE_KEY, WFA.DISPLAY_NAME ERR_PROCESS_NAME, WFA1.DISPLAY_NAME ERR_ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.NOTIFICATION_ID NOTIF_ID, WFS.ASSIGNED_USER ASGND_USER, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') BEGIN_DATE, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') END_DATE from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP, WF_ITEMS WFI where WFS.ITEM_TYPE = WFI.ITEM_TYPE and WFS.item_key = WFI.ITEM_KEY and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFI.PARENT_ITEM_TYPE = 'OEOL' and WFI.PARENT_ITEM_KEY in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) and WFI.ITEM_TYPE in (select WFAE.ERROR_ITEM_TYPE from WF_ITEM_ACTIVITY_STATUSES WFSE, WF_PROCESS_ACTIVITIES WFPE, WF_ACTIVITIES_VL WFAE, WF_ACTIVITIES_VL WFA1E where WFSE.ITEM_TYPE = 'OEOL' and WFSE.ITEM_KEY in (select to_char(line_id) from OE_ORDER_LINES LIN where LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) and WFSE.PROCESS_ACTIVITY = WFPE.INSTANCE_ID and WFPE.PROCESS_ITEM_TYPE = WFAE.ITEM_TYPE and WFPE.PROCESS_NAME = WFAE.NAME and WFPE.PROCESS_VERSION = WFAE.VERSION and WFPE.ACTIVITY_ITEM_TYPE = WFA1E.ITEM_TYPE and WFPE.ACTIVITY_NAME = WFA1E.NAME and WFA1E.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2E where WF2E.ITEM_TYPE = WFPE.ACTIVITY_ITEM_TYPE and WF2E.NAME = WFPE.ACTIVITY_NAME) and WFSE.ACTIVITY_STATUS = 'ERROR') order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for ll in l_wf_proc_err loop utl_file.put_line(handle,'&sld'||n(ll.ERR_TYPE_KEY)||'&d'||n(ll.ERR_PROCESS_NAME)||'&d'); utl_file.put_line(handle,n(ll.ERR_ACTIVITY_NAME)||'&d'||n(ll.RESULT)||'&d'); utl_file.put_line(handle,n(ll.ACT_STATUS)||'&d'||n(ll.NOTIF_ID)||'&d'); utl_file.put_line(handle,n(ll.ASGND_USER)||'&d'||n(ll.BEGIN_DATE)||'&d'); utl_file.put_line(handle,n(ll.END_DATE)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_wf UTL_FILE.PUT_LINE(handle,'&f &f LINE SPECIFIC HOLDS (LINES ONLY)'); UTL_FILE.PUT_LINE(handle,'&std &sh LINE &dh HOLD_ID &dh HOLD_NAME &dh HOLD_TYPE &dh WF_ITEM &dh WF_ACTIVITY &dh ORD_HOLD_ID &dh HLD_SRC_ID &dh '); UTL_FILE.PUT_LINE(handle,'HLD_REL_ID &dh HEADER_ID &dh LINE_ID &dh H_REL &dh S_REL &dh RELEASE_REASON &dh ENTITY &dh ENTITY_ID &dh ENTITY2 &dh '); UTL_FILE.PUT_LINE(handle,'ENTITY_ID2 &dh HOLD_UNTIL &eh'); Declare cursor l_holds is SELECT to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, HDF.HOLD_ID HOLD_ID, HDF.NAME HOLD_NAME, HDF.TYPE_CODE HOLD_TYPE, HDF.ITEM_TYPE WF_ITEM, HDF.ACTIVITY_NAME WF_ACTIVITY, HLD.ORDER_HOLD_ID ORD_HOLD_ID, HLD.HOLD_SOURCE_ID HLD_SRC_ID, HLD.HOLD_RELEASE_ID HLD_REL_ID, HLD.HEADER_ID HEADER_ID, HLD.LINE_ID LINE_ID, HLD.RELEASED_FLAG H_REL, HSR.RELEASED_FLAG S_REL, HRL.RELEASE_REASON_CODE RELEASE_REASON, decode(HSR.HOLD_ENTITY_CODE, 'B','Bill To', 'C','Customer', 'I','Item', 'O','Order', 'S','Ship To', 'W','Warehouse', HSR.HOLD_ENTITY_CODE) ENTITY, HSR.HOLD_ENTITY_ID ENTITY_ID, decode(HSR.HOLD_ENTITY_CODE2, 'B','Bill To', 'C','Customer', 'I','Item', 'O','Order', 'S','Ship To', 'W','Warehouse', HSR.HOLD_ENTITY_CODE2) ENTITY2, HSR.HOLD_ENTITY_ID2 ENTITY_ID2, to_char(HSR.HOLD_UNTIL_DATE,'DD-MON-RR_HH24:MI:SS') HOLD_UNTIL from OE_ORDER_HOLDS_ALL HLD, OE_HOLD_SOURCES_ALL HSR, OE_HOLD_DEFINITIONS HDF, OE_HOLD_RELEASES HRL, OE_ORDER_LINES_ALL LIN where HLD.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and HLD.LINE_ID IS NOT NULL and HLD.LINE_ID = LIN.LINE_ID and NVL('&line_id_selected',0)in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and HLD.HOLD_SOURCE_ID = HSR.HOLD_SOURCE_ID and HSR.HOLD_ID = HDF.HOLD_ID and HLD.HOLD_RELEASE_ID = HRL.HOLD_RELEASE_ID(+); begin for ll in l_holds loop utl_file.put_line(handle,'&sld'||n(ll.LINE)||'&d'||n(ll.HOLD_ID)||'&d'); utl_file.put_line(handle,n(ll.HOLD_NAME)||'&d'||n(ll.HOLD_TYPE)||'&d'); utl_file.put_line(handle,n(ll.WF_ITEM)||'&d'||n(ll.WF_ACTIVITY)||'&d'); utl_file.put_line(handle,n(ll.ORD_HOLD_ID)||'&d'||n(ll.HLD_SRC_ID)||'&d'); utl_file.put_line(handle,n(ll.HLD_REL_ID)||'&d'||n(ll.HEADER_ID)||'&d'); utl_file.put_line(handle,n(ll.LINE_ID)||'&d'||n(ll.H_REL)||'&d'); utl_file.put_line(handle,n(ll.S_REL)||'&d'||n(ll.RELEASE_REASON)||'&d'); utl_file.put_line(handle,n(ll.ENTITY)||'&d'||n(ll.ENTITY_ID)||'&d'); utl_file.put_line(handle,n(ll.ENTITY2)||'&d'||n(ll.ENTITY_ID2)||'&d'); utl_file.put_line(handle,n(ll.HOLD_UNTIL)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); -- This is commented out because it runs slowly without an index -- CREATE INDEX OE_PROCESSING_MSGS_777 -- ON ONT.OE_PROCESSING_MSGS -- (header_id, line_id); UTL_FILE.PUT_LINE(handle,'&f &f LINE PROCESSING MESSAGES &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh LINE &dh HEADER_ID &dh LINE_ID &dh MSG_SOURCE &dh ACTIVITY &dh REQUEST_ID &dh DESCRIPTION &dh MESSAGE_TEXT &eh'); declare cursor l_proc is select distinct to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, MSG.header_id HEADER_ID, MSG.line_id LINE_ID, decode(MSG.MESSAGE_SOURCE_CODE, 'U','U=On-Line(UI)', 'C','C=Conc Process', 'W','W=Workflow', MSG.MESSAGE_SOURCE_CODE) MSG_SOURCE, MSG.PROCESS_ACTIVITY PROCESS_ACTIVITY, MSG.request_id REQUEST_ID, MST.message_text MESSAGE_TEXT from oe_processing_msgs_vl MSG, oe_processing_msgs_tl MST, oe_order_lines_all LIN, fnd_languages FLA where MSG.header_id = nvl('&header_id_selected',:v_header_id) and MSG.HEADER_ID = LIN.HEADER_ID and msg.transaction_id = mst.transaction_id and MST.LANGUAGE = FLA.LANGUAGE_CODE and FLA.INSTALLED_FLAG = 'B' and MSG.LINE_ID = LIN.LINE_ID and MSG.LINE_ID is not NULL and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); r_activity varchar2(100); r_descrip varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..10 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. Cannot find Activity name associated to LINE PROCESSING MESSAGES.'; msg(2).descrip := ' 2. Cannot find Request Description.'; -- end if; for lp in l_proc loop :r_flag := ''; :r_error := 0; r_activity := ''; r_descrip := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- Get Activity name begin select WFA1.DISPLAY_NAME into r_activity from WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA1 where WFP.INSTANCE_ID = lp.PROCESS_ACTIVITY and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME); exception when no_data_found then :r_flag := :r_flag || '1 '; msg(1).flag := '1'; end; -- Get Request description begin select DESCRIPTION into r_descrip FROM FND_CONCURRENT_REQUESTS FCR where FCR.REQUEST_ID = lp.REQUEST_ID; exception when no_data_found then :r_flag := :r_flag || '2 '; msg(2).flag := '1'; end; end if; -- do_analysis -- Print line to Output file -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,n(lp.LINE)||'&d'||n(lp.HEADER_ID)||'&d'); utl_file.put_line(handle,n(lp.LINE_ID)||'&d'||n(lp.MSG_SOURCE)||'&d'); utl_file.put_line(handle,n(r_activity)||'&d'||n(lp.REQUEST_ID)||'&d'); utl_file.put_line(handle,n(r_descrip)||'&d'||n(lp.MESSAGE_TEXT)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..10 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); -- DROP INDEX OE_PROCESSING_MSGS_777 if substr(UPPER(nvl('&prt_price','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f APPLIED LINE PRICE ADJUSTMENTS (ADJ) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PRC_ADJ_ID &dh LINE &dh LST_HD_ID &dh LST_LN_ID &dh LIST_LN_NO &dh MOD_LVL &dh LIST_TYPE_CODE &dh CHG_TY_CD &dh'); UTL_FILE.PUT_LINE(handle,'ARITH_OP &dh OP_PER_QTY &dh ADJ_AMT_PQ &dh OPERAND &dh ADJ_AMT &dh CD &dh AF &dh PI &dh AC &dh IF &dh EF &dh UA &dh UF &dh'); UTL_FILE.PUT_LINE(handle,'AP &dh LK &dh PERC &dh COST_ID &dh TAX_CODE &dh PP &eh'); Declare cursor l_prc_adj is select ADJ.PRICE_ADJUSTMENT_ID PRC_ADJ_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, ADJ.LIST_HEADER_ID LST_HD_ID, ADJ.LIST_LINE_ID LST_LN_ID, ADJ.LIST_LINE_NO LIST_LN_NO, ADJ.MODIFIER_LEVEL_CODE MOD_LVL, ADJ.LIST_LINE_TYPE_CODE LIST_TYPE_CODE, ADJ.CHARGE_TYPE_CODE CHG_TY_CD, ADJ.ARITHMETIC_OPERATOR ARITH_OP, ADJ.OPERAND_PER_PQTY OP_PER_QTY, ADJ.ADJUSTED_AMOUNT_PER_PQTY ADJ_AMT_PQ, ADJ.OPERAND OPERAND, ADJ.ADJUSTED_AMOUNT ADJ_AMT, ADJ.CREDIT_OR_CHARGE_FLAG CD, ADJ.AUTOMATIC_FLAG AF, ADJ.PRINT_ON_INVOICE_FLAG PI, ADJ.ACCRUAL_FLAG AC, ADJ.INVOICED_FLAG INF, ADJ.ESTIMATED_FLAG EF, ADJ.UPDATE_ALLOWED UA, ADJ.UPDATED_FLAG UF, ADJ.APPLIED_FLAG AP, ADJ.LOCK_CONTROL LK, ADJ.PERCENT PERC, ADJ.COST_ID COST_ID, ADJ.TAX_CODE TAX_CODE, ADJ.PRICING_PHASE_ID PP from OE_PRICE_ADJUSTMENTS ADJ, OE_ORDER_LINES_ALL LIN where ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ADJ.LINE_ID IS NOT NULL and ADJ.LINE_ID = LIN.LINE_ID and NVL('&line_id_selected',0)in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and ADJ.APPLIED_FLAG = 'Y' order by LINE, LIST_LINE_TYPE_CODE; begin for ll in l_prc_adj loop utl_file.put_line(handle,'&sld'||n(ll.PRC_ADJ_ID)||'&d'||n(ll.LINE)||'&d'); utl_file.put_line(handle,n(ll.LST_HD_ID)||'&d'||n(ll.LST_LN_ID)||'&d'); utl_file.put_line(handle,n(ll.LIST_LN_NO)||'&d'||n(ll.MOD_LVL)||'&d'); utl_file.put_line(handle,n(ll.LIST_TYPE_CODE)||'&d'||n(ll.CHG_TY_CD)||'&d'); utl_file.put_line(handle,n(ll.ARITH_OP)||'&d'||n(ll.OP_PER_QTY)||'&d'); utl_file.put_line(handle,n(ll.ADJ_AMT_PQ)||'&d'||n(ll.OPERAND)||'&d'); utl_file.put_line(handle,n(ll.ADJ_AMT)||'&d'||n(ll.CD)||'&d'); utl_file.put_line(handle,n(ll.AF)||'&d'||n(ll.PI)||'&d'); utl_file.put_line(handle,n(ll.AC)||'&d'||n(ll.INF)||'&d'); utl_file.put_line(handle,n(ll.EF)||'&d'||n(ll.UA)||'&d'); utl_file.put_line(handle,n(ll.UF)||'&d'||n(ll.AP)||'&d'); utl_file.put_line(handle,n(ll.LK)||'&d'||n(ll.PERC)||'&d'); utl_file.put_line(handle,n(ll.COST_ID)||'&d'||n(ll.TAX_CODE)||'&d'); utl_file.put_line(handle,n(ll.PP)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f UN-APPLIED LINE PRICE ADJUSTMENTS (ADJ) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PRC_ADJ_ID &dh LINE &dh LST_HD_ID &dh LST_LN_ID &dh LIST_LN_NO &dh MOD_LVL &dh LIST_TYPE_CODE &dh CHG_TY_CD &dh'); UTL_FILE.PUT_LINE(handle,'ARITH_OP &dh OP_PER_QTY &dh ADJ_AMT_PQ &dh OPERAND &dh ADJ_AMT &dh CD &dh AF &dh PI &dh AC &dh IF &dh EF &dh UA &dh UF &dh'); UTL_FILE.PUT_LINE(handle,'AP &dh LK &dh PERC &dh COST_ID &dh TAX_CODE &dh PP &eh'); Declare cursor l_prc_adj_un is select ADJ.PRICE_ADJUSTMENT_ID PRC_ADJ_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, ADJ.LIST_HEADER_ID LST_HD_ID, ADJ.LIST_LINE_ID LST_LN_ID, ADJ.LIST_LINE_NO LIST_LN_NO, ADJ.MODIFIER_LEVEL_CODE MOD_LVL, ADJ.LIST_LINE_TYPE_CODE LIST_TYPE_CODE, ADJ.CHARGE_TYPE_CODE CHG_TY_CD, ADJ.ARITHMETIC_OPERATOR ARITH_OP, ADJ.OPERAND_PER_PQTY OP_PER_QTY, ADJ.ADJUSTED_AMOUNT_PER_PQTY ADJ_AMT_PQ, ADJ.OPERAND OPERAND, ADJ.ADJUSTED_AMOUNT ADJ_AMT, ADJ.CREDIT_OR_CHARGE_FLAG CD, ADJ.AUTOMATIC_FLAG AF, ADJ.PRINT_ON_INVOICE_FLAG PI, ADJ.ACCRUAL_FLAG AC, ADJ.INVOICED_FLAG INF, ADJ.ESTIMATED_FLAG EF, ADJ.UPDATE_ALLOWED UA, ADJ.UPDATED_FLAG UF, ADJ.APPLIED_FLAG AP, ADJ.LOCK_CONTROL LK, ADJ.PERCENT PERC, ADJ.COST_ID COST_ID, ADJ.TAX_CODE TAX_CODE, ADJ.PRICING_PHASE_ID PP from OE_PRICE_ADJUSTMENTS ADJ, OE_ORDER_LINES_ALL LIN where ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ADJ.LINE_ID IS NOT NULL and ADJ.LINE_ID = LIN.LINE_ID and NVL('&line_id_selected',0)in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and nvl(ADJ.APPLIED_FLAG,'N') = 'N' order by LINE, LIST_LINE_TYPE_CODE; begin for ll in l_prc_adj_un loop utl_file.put_line(handle,'&sld'||n(ll.PRC_ADJ_ID)||'&d'||n(ll.LINE)||'&d'); utl_file.put_line(handle,n(ll.LST_HD_ID)||'&d'||n(ll.LST_LN_ID)||'&d'); utl_file.put_line(handle,n(ll.LIST_LN_NO)||'&d'||n(ll.MOD_LVL)||'&d'); utl_file.put_line(handle,n(ll.LIST_TYPE_CODE)||'&d'||n(ll.CHG_TY_CD)||'&d'); utl_file.put_line(handle,n(ll.ARITH_OP)||'&d'||n(ll.OP_PER_QTY)||'&d'); utl_file.put_line(handle,n(ll.ADJ_AMT_PQ)||'&d'||n(ll.OPERAND)||'&d'); utl_file.put_line(handle,n(ll.ADJ_AMT)||'&d'||n(ll.CD)||'&d'); utl_file.put_line(handle,n(ll.AF)||'&d'||n(ll.PI)||'&d'); utl_file.put_line(handle,n(ll.AC)||'&d'||n(ll.INF)||'&d'); utl_file.put_line(handle,n(ll.EF)||'&d'||n(ll.UA)||'&d'); utl_file.put_line(handle,n(ll.UF)||'&d'||n(ll.AP)||'&d'); utl_file.put_line(handle,n(ll.LK)||'&d'||n(ll.PERC)||'&d'); utl_file.put_line(handle,n(ll.COST_ID)||'&d'||n(ll.TAX_CODE)||'&d'); utl_file.put_line(handle,n(ll.PP)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_price if substr(UPPER(nvl('&prt_po','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f OE_DROP_SHIP_SOURCES (SRC) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh DROP_SHIP_ID &dh HEADER_ID &dh LINE_ID &dh LINE &dh ORG_ID &dh DEST_ID &dh DEST_ORG &dh REQ_HEADER_ID &dh '); UTL_FILE.PUT_LINE(handle,'REQ_LINE_ID &dh PO_HEAD_ID &dh PO_LINE_ID &dh LINE_LOC_ID &dh PO_RELEASE_ID &eh'); Declare cursor l_drop_ship is select SRC.DROP_SHIP_SOURCE_ID DROP_SHIP_ID, SRC.HEADER_ID HEADER_ID, SRC.LINE_ID LINE_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, SRC.ORG_ID ORG_ID, SRC.DESTINATION_ORGANIZATION_ID DEST_ID, PAR.ORGANIZATION_CODE DEST_ORG, SRC.REQUISITION_HEADER_ID REQ_HEADER_ID, SRC.REQUISITION_LINE_ID REQ_LINE_ID, SRC.PO_HEADER_ID PO_HEAD_ID, SRC.PO_LINE_ID PO_LINE_ID, SRC.LINE_LOCATION_ID LINE_LOC_ID, SRC.PO_RELEASE_ID PO_RELEASE_ID FROM OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN, MTL_PARAMETERS PAR WHERE SRC.LINE_ID = LIN.LINE_ID and SRC.DESTINATION_ORGANIZATION_ID = PAR.ORGANIZATION_ID(+) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for ll in l_drop_ship loop utl_file.put_line(handle,'&sld'||n(ll.DROP_SHIP_ID)||'&d'||n(ll.HEADER_ID)||'&d'); utl_file.put_line(handle,n(ll.LINE_ID)||'&d'||n(ll.LINE)||'&d'); utl_file.put_line(handle,n(ll.ORG_ID)||'&d'||n(ll.DEST_ID)||'&d'); utl_file.put_line(handle,n(ll.DEST_ORG)||'&d'||n(ll.REQ_HEADER_ID)||'&d'); utl_file.put_line(handle,n(ll.REQ_LINE_ID)||'&d'||n(ll.PO_HEAD_ID)||'&d'); utl_file.put_line(handle,n(ll.PO_LINE_ID)||'&d'||n(ll.LINE_LOC_ID)||'&d'); utl_file.put_line(handle,n(ll.PO_RELEASE_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_po end if; -- :v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin If :v_head_only = 'N' then -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed if substr(UPPER(nvl('&prt_po','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f PO_REQUISITIONS_INTERFACE_ALL (RQI) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh DROP_SHIP_ID &dh LINE &dh AUTH_STATUS &dh DELIV_LOC &dh PREPARER &dh DEST_ORG_ID &dh DEST_TYPE &dh '); UTL_FILE.PUT_LINE(handle,'SRC_CODE &dh SRC_TYPE_CODE &dh ITEM_ID &dh NEED_BY &dh QTY &dh PRICE &el'); Declare cursor po_req_int is Select /* DROP SHIP */ RQI.INTERFACE_SOURCE_LINE_ID DROP_SHIP_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RQI.AUTHORIZATION_STATUS AUTH_STATUS, RQI.DELIVER_TO_LOCATION_ID DELIV_LOC, RQI.PREPARER_ID PREPARER, RQI.DESTINATION_ORGANIZATION_ID DEST_ORG_ID, RQI.DESTINATION_TYPE_CODE DEST_TYPE, RQI.INTERFACE_SOURCE_CODE SRC_CODE, RQI.SOURCE_TYPE_CODE SRC_TYPE_CODE, RQI.ITEM_ID ITEM_ID, to_char(RQI.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY, RQI.QUANTITY QTY, RQI.UNIT_PRICE PRICE from PO_REQUISITIONS_INTERFACE_ALL RQI, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.DROP_SHIP_SOURCE_ID = RQI.INTERFACE_SOURCE_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_req_int loop utl_file.put_line(handle,'&sld'||n(po.DROP_SHIP_ID)||'&d'||n(po.LINE)||'&d'); utl_file.put_line(handle,n(po.AUTH_STATUS)||'&d'||n(po.DELIV_LOC)||'&d'); utl_file.put_line(handle,n(po.PREPARER)||'&d'||n(po.DEST_ORG_ID)||'&d'); utl_file.put_line(handle,n(po.DEST_TYPE)||'&d'||n(po.SRC_CODE)||'&d'); utl_file.put_line(handle,n(po.SRC_TYPE_CODE)||'&d'||n(po.ITEM_ID)||'&d'); utl_file.put_line(handle,n(po.NEED_BY)||'&d'||n(po.QTY)||'&d'); utl_file.put_line(handle,n(po.PRICE)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_INTERFACE_ERRORS_ALL (POE) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTF_TRANS_ID &dh LINE &dh COLUMN_NAME &dh ERROR &dh INTF_TYPE &dh REQUEST_ID &dh TABLE_NAME &eh'); Declare cursor po_int_err is select POE.INTERFACE_TRANSACTION_ID INTF_TRANS_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, POE.COLUMN_NAME COLUMN_NAME, POE.ERROR_MESSAGE ERRORM, POE.INTERFACE_TYPE INTF_TYPE, POE.REQUEST_ID REQUEST_ID, POE.TABLE_NAME TABLE_NAME from PO_INTERFACE_ERRORS POE, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN, PO_REQUISITIONS_INTERFACE_ALL RQI where SRC.LINE_ID = LIN.LINE_ID and SRC.DROP_SHIP_SOURCE_ID = RQI.INTERFACE_SOURCE_LINE_ID and RQI.TRANSACTION_ID = POE.INTERFACE_TRANSACTION_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_int_err loop utl_file.put_line(handle,'&sld'||n(po.INTF_TRANS_ID)||'&d'||n(po.LINE)||'&d'); utl_file.put_line(handle,n(po.COLUMN_NAME)||'&d'||n(po.ERRORM)||'&d'); utl_file.put_line(handle,n(po.INTF_TYPE)||'&d'||n(po.REQUEST_ID)||'&d'); utl_file.put_line(handle,n(po.TABLE_NAME)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_REQUISITION_HEADERS_ALL (RQH) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh REQ_HEADER_ID &dh REQ_NUMBER &dh DROP_SHIP_ID &dh AUTH_STATUS &dh ENABLED &dh SRC_CODE &dh SUMMARY &dh '); UTL_FILE.PUT_LINE(handle,'XFR_OE_FLAG &dh REQ_TYPE &dh ITEM_TYPE &dh ITEM_KEY &eh'); Declare cursor po_req_hdr is select distinct RQH.REQUISITION_HEADER_ID REQ_HEADER_ID , RQH.SEGMENT1 REQ_NUMBER, RQH.INTERFACE_SOURCE_LINE_ID DROP_SHIP_ID, RQH.AUTHORIZATION_STATUS AUTH_STATUS, RQH.ENABLED_FLAG ENABLED, RQH.INTERFACE_SOURCE_CODE SRC_CODE, RQH.SUMMARY_FLAG SUMMARY, RQH.TRANSFERRED_TO_OE_FLAG XFR_OE_FLAG, RQH.TYPE_LOOKUP_CODE REQ_TYPE, RQH.WF_ITEM_TYPE ITEM_TYPE, RQH.WF_ITEM_KEY ITEM_KEY from PO_REQUISITION_HEADERS_ALL RQH, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_HEADER_ID = RQH.REQUISITION_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select distinct /* INTERNAL REQ */ RQH.REQUISITION_HEADER_ID REQ_HEADER_ID , RQH.SEGMENT1 REQ_NUMBER, RQH.INTERFACE_SOURCE_LINE_ID DROP_SHIP_ID, RQH.AUTHORIZATION_STATUS AUTH_STATUS, RQH.ENABLED_FLAG ENABLED, RQH.INTERFACE_SOURCE_CODE SRC_CODE, RQH.SUMMARY_FLAG SUMMARY, RQH.TRANSFERRED_TO_OE_FLAG XFR_OE_FLAG, RQH.TYPE_LOOKUP_CODE REQ_TYPE, RQH.WF_ITEM_TYPE ITEM_TYPE, RQH.WF_ITEM_KEY ITEM_KEY from PO_REQUISITION_HEADERS_ALL RQH, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_ID = RQH.REQUISITION_HEADER_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 --INTERNAL REQUISITION and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select distinct /* ATO BUY ITEM */ RQH.REQUISITION_HEADER_ID REQ_HEADER_ID , RQH.SEGMENT1 REQ_NUMBER, RQH.INTERFACE_SOURCE_LINE_ID DROP_SHIP_ID, RQH.AUTHORIZATION_STATUS AUTH_STATUS, RQH.ENABLED_FLAG ENABLED, RQH.INTERFACE_SOURCE_CODE SRC_CODE, RQH.SUMMARY_FLAG SUMMARY, RQH.TRANSFERRED_TO_OE_FLAG XFR_OE_FLAG, RQH.TYPE_LOOKUP_CODE REQ_TYPE, RQH.WF_ITEM_TYPE ITEM_TYPE, RQH.WF_ITEM_KEY ITEM_KEY from PO_REQUISITION_HEADERS_ALL RQH, MTL_RESERVATIONS RES where :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_TYPE_ID = 2 -- SO and RES.SUPPLY_SOURCE_TYPE_ID = 17 -- Req and RES.SUPPLY_SOURCE_HEADER_ID = RQH.REQUISITION_HEADER_ID UNION ALL SELECT DISTINCT /* BACK TO BACK REQ */ RQH.REQUISITION_HEADER_ID REQ_HEADER_ID , RQH.SEGMENT1 REQ_NUMBER, RQH.INTERFACE_SOURCE_LINE_ID DROP_SHIP_ID, RQH.AUTHORIZATION_STATUS AUTH_STATUS, RQH.ENABLED_FLAG ENABLED, RQH.INTERFACE_SOURCE_CODE SRC_CODE, RQH.SUMMARY_FLAG SUMMARY, RQH.TRANSFERRED_TO_OE_FLAG XFR_OE_FLAG, RQH.TYPE_LOOKUP_CODE REQ_TYPE, RQH.WF_ITEM_TYPE ITEM_TYPE, RQH.WF_ITEM_KEY ITEM_KEY FROM PO_REQUISITION_HEADERS_ALL RQH, OE_ORDER_LINES_ALL LIN WHERE RQH.INTERFACE_SOURCE_LINE_ID = LIN.LINE_ID AND RQH.INTERFACE_SOURCE_CODE = 'CTO' and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id); begin for po in po_req_hdr loop utl_file.put_line(handle,'&sld'||''||n(po.REQ_HEADER_ID)||''||'&d'||n(po.REQ_NUMBER)||'&d'); utl_file.put_line(handle,n(po.DROP_SHIP_ID)||'&d'||n(po.AUTH_STATUS)||'&d'); utl_file.put_line(handle,n(po.ENABLED)||'&d'||n(po.SRC_CODE)||'&d'); utl_file.put_line(handle,n(po.SUMMARY)||'&d'||n(po.XFR_OE_FLAG)||'&d'); utl_file.put_line(handle,n(po.REQ_TYPE)||'&d'||n(po.ITEM_TYPE)||'&d'); utl_file.put_line(handle,n(po.ITEM_KEY)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_REQUISITION_LINES_ALL (RQL) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh REQ_HEAD_ID &dh REQ_LINE_ID &dh DOC_TYPE &dh REQ_LINE &dh LINE &dh ITEM_ID &dh ITEM_DESC &dh UOM &dh PRICE &dh '); UTL_FILE.PUT_LINE(handle,'QTY &dh QTY_CNC &dh QTY_DLV &dh CANC &dh SRC_TYPE &dh SRC_ORG &dh DEST_TYPE &dh DEST_ORG &dh ENC_FL &dh LINE_TYPE_ID &dh '); UTL_FILE.PUT_LINE(handle,'NEED_BY &dh RFQ &dh BUYER_ID &eh'); Declare cursor po_req_lin is select /* DROP SHIPMENT */ RQL.REQUISITION_HEADER_ID REQ_HEAD_ID, RQL.REQUISITION_LINE_ID REQ_LINE_ID, 'DROP SHIP' DOC_TYPE, RQL.LINE_NUM REQ_LINE, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RQL.ITEM_ID ITEM_ID, RQL.ITEM_DESCRIPTION ITEM_DESC, RQL.UNIT_MEAS_LOOKUP_CODE UOM, RQL.UNIT_PRICE PRICE, RQL.QUANTITY QTY, RQL.QUANTITY_CANCELLED QTY_CNC, RQL.QUANTITY_DELIVERED QTY_DLV, RQL.CANCEL_FLAG CANC, RQL.SOURCE_TYPE_CODE SRC_TYPE, RQL.SOURCE_ORGANIZATION_ID SRC_ORG, RQL.DESTINATION_CONTEXT DEST_TYPE, RQL.DESTINATION_ORGANIZATION_ID DEST_ORG, RQL.ENCUMBERED_FLAG ENC_FL, RQL.LINE_TYPE_ID LINE_TYPE_ID, to_char(RQL.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY, RQL.ON_RFQ_FLAG RFQ , RQL.SUGGESTED_BUYER_ID BUYER_ID from PO_REQUISITION_LINES_ALL RQL, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and RQL.REQUISITION_LINE_ID = SRC.REQUISITION_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* INTERNAL SALES ORDER */ RQL.REQUISITION_HEADER_ID REQ_HEAD_ID, RQL.REQUISITION_LINE_ID REQ_LINE_ID, 'INTERNAL SO' DOC_TYPE, RQL.LINE_NUM REQ_LINE, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RQL.ITEM_ID ITEM_ID, RQL.ITEM_DESCRIPTION ITEM_DESC, RQL.UNIT_MEAS_LOOKUP_CODE UOM, RQL.UNIT_PRICE PRICE, RQL.QUANTITY QTY, RQL.QUANTITY_CANCELLED QTY_CNC, RQL.QUANTITY_DELIVERED QTY_DLV, RQL.CANCEL_FLAG CANC, RQL.SOURCE_TYPE_CODE SRC_TYPE, RQL.SOURCE_ORGANIZATION_ID SRC_ORG, RQL.DESTINATION_CONTEXT DEST_TYPE, RQL.DESTINATION_ORGANIZATION_ID DEST_ORG, RQL.ENCUMBERED_FLAG ENC_FL , RQL.LINE_TYPE_ID LINE_TYPE_ID, to_char(RQL.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY, RQL.ON_RFQ_FLAG RFQ , RQL.SUGGESTED_BUYER_ID BUYER_ID from PO_REQUISITION_LINES_ALL RQL, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_LINE_ID = RQL.REQUISITION_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 --INTERNAL REQUISITION and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL SELECT DISTINCT /* BACK TO BACK REQ */ RQL.REQUISITION_HEADER_ID REQ_HEAD_ID, RQL.REQUISITION_LINE_ID REQ_LINE_ID, 'BACK TO BACK' DOC_TYPE, RQL.LINE_NUM REQ_LINE, TO_CHAR(LIN.line_number) || DECODE(LIN.shipment_number, NULL, NULL, '.' || TO_CHAR(LIN.shipment_number)) || DECODE(LIN.option_number, NULL, NULL, '.' || TO_CHAR(LIN.option_number)) || DECODE(LIN.component_number, NULL, NULL, DECODE(LIN.option_number, NULL, '.',NULL) || '.' ||TO_CHAR(LIN.component_number)) || DECODE(LIN.service_number,NULL,NULL, DECODE(LIN.component_number, NULL, '.' , NULL) || DECODE(LIN.option_number, NULL, '.', NULL ) || '.' || TO_CHAR(LIN.service_number)) LINE, RQL.ITEM_ID ITEM_ID, RQL.ITEM_DESCRIPTION ITEM_DESC, RQL.UNIT_MEAS_LOOKUP_CODE UOM, RQL.UNIT_PRICE PRICE, RQL.QUANTITY QTY, RQL.QUANTITY_CANCELLED QTY_CNC, RQL.QUANTITY_DELIVERED QTY_DLV, RQL.CANCEL_FLAG CANC, RQL.SOURCE_TYPE_CODE SRC_TYPE, RQL.SOURCE_ORGANIZATION_ID SRC_ORG, RQL.DESTINATION_CONTEXT DEST_TYPE, RQL.DESTINATION_ORGANIZATION_ID DEST_ORG, RQL.ENCUMBERED_FLAG ENC_FL , RQL.LINE_TYPE_ID LINE_TYPE_ID, TO_CHAR(RQL.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY, RQL.ON_RFQ_FLAG RFQ , RQL.SUGGESTED_BUYER_ID BUYER_ID FROM PO_REQUISITION_HEADERS_ALL RQH, PO_REQUISITION_LINES_ALL RQL, OE_ORDER_LINES_ALL LIN WHERE RQH.INTERFACE_SOURCE_LINE_ID = LIN.LINE_ID AND RQH.INTERFACE_SOURCE_CODE = 'CTO' AND RQH.REQUISITION_HEADER_ID = RQL.REQUISITION_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for po in po_req_lin loop utl_file.put_line(handle,'&sld'||n(po.REQ_HEAD_ID)||'&d'||''||n(po.REQ_LINE_ID)||''||'&d'); utl_file.put_line(handle,n(po.DOC_TYPE)||'&d'||n(po.REQ_LINE)||'&d'); utl_file.put_line(handle,n(po.LINE)||'&d'||n(po.ITEM_ID)||'&d'); utl_file.put_line(handle,n(po.ITEM_DESC)||'&d'||n(po.UOM)||'&d'); utl_file.put_line(handle,n(po.PRICE)||'&d'||n(po.QTY)||'&d'); utl_file.put_line(handle,n(po.QTY_CNC)||'&d'||n(po.QTY_DLV)||'&d'); utl_file.put_line(handle,n(po.CANC)||'&d'||n(po.SRC_TYPE)||'&d'); utl_file.put_line(handle,n(po.SRC_ORG)||'&d'||n(po.DEST_TYPE)||'&d'); utl_file.put_line(handle,n(po.DEST_ORG)||'&d'||n(po.ENC_FL)||'&d'); utl_file.put_line(handle,n(po.LINE_TYPE_ID)||'&d'||n(po.NEED_BY)||'&d'); utl_file.put_line(handle,n(po.RFQ)||'&d'||n(po.BUYER_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW REQUISITION APPROVAL STATUS &f'); -- break on REQ_NUM_IK skip 2; UTL_FILE.PUT_LINE(handle,'&std &sh REQ_NUM_IK &dh PROCESS_NAME &dh ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh NOTIF_ID &dh _BEGIN_DATE_ &dh '); UTL_FILE.PUT_LINE(handle,'_END_DATE_ &dh ERROR &eh'); Declare cursor po_req_apprv is select WFS.item_key REQ_NUM_IK, WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.NOTIFICATION_ID NOTIF_ID, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') BEGIN_DATE, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') END_DATE, WFS.ERROR_NAME ERROR_apprv from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'REQAPPRV' and WFS.item_key in (select wf_item_key /*DROP SHIPMENTS*/ from PO_REQUISITION_HEADERS REQ, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_HEADER_ID = REQ.REQUISITION_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select wf_item_key /* INTERNAL SALES ORDERSS */ from PO_REQUISITION_HEADERS REQ, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_ID = REQ.REQUISITION_HEADER_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_req_apprv loop utl_file.put_line(handle,'&sld'||n(po.REQ_NUM_IK)||'&d'||n(po.PROCESS_NAME)||'&d'); utl_file.put_line(handle,n(po.ACTIVITY_NAME)||'&d'||n(po.RESULT)||'&d'); utl_file.put_line(handle,n(po.ACT_STATUS)||'&d'||n(po.NOTIF_ID)||'&d'); utl_file.put_line(handle,n(po.BEGIN_DATE)||'&d'||n(po.END_DATE)||'&d'); utl_file.put_line(handle,n(po.ERROR_APPRV)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW REQUISITION APPROVAL NOTIFICATIONS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh NOTIF_ID &dh TO_USER &dh ORIG_RECIP &dh RECIP_ROLE &dh MAIL_STAT &dh MESSAGE_NAME &dh STATUS &dh SUBJECT &eh'); Declare cursor po_req_apprv_not is select WFN.NOTIFICATION_ID NOTIF_ID, WFN.TO_USER TO_USER, WFN.ORIGINAL_RECIPIENT ORIG_RECIP, WFN.RECIPIENT_ROLE RECIP_ROLE, WFN.MAIL_STATUS MAIL_STAT, WFN.MESSAGE_NAME MESSAGE_NAME, WFN.STATUS STATUS, WFN.SUBJECT SUBJECT from WF_ITEM_ACTIVITY_STATUSES WFS, WF_NOTIFICATIONS WFN where WFS.ITEM_TYPE = 'REQAPPRV' and WFS.item_key in (select wf_item_key /* DROP SHIPMENTS */ from PO_REQUISITION_HEADERS REQ, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_HEADER_ID = REQ.REQUISITION_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select wf_item_key /* INTERNAL SALES ORDERSS */ from PO_REQUISITION_HEADERS REQ, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_ID = REQ.REQUISITION_HEADER_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.NOTIFICATION_ID is not null and WFN.NOTIFICATION_ID = WFS.NOTIFICATION_ID order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_req_apprv_Not loop utl_file.put_line(handle,'&sld'||n(po.NOTIF_ID)||'&d'||n(po.To_USER)||'&d'); utl_file.put_line(handle,n(po.ORIG_RECIP)||'&d'||n(po.RECIP_ROLE)||'&d'); utl_file.put_line(handle,n(po.MAIL_STAT)||'&d'||n(po.MESSAGE_NAME)||'&d'); utl_file.put_line(handle,n(po.STATUS)||'&d'||n(po.SUBJECT)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW REQUISITION APPROVAL ERRORS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PROCESS_NAME &dh ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh ERROR_NAME &dh ERROR_MESSAGE &dh ERROR_STACK &eh'); Declare cursor po_req_apprv_err is select WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.ERROR_NAME ERROR_NAME, WFS.ERROR_MESSAGE ERROR_MESSAGE, WFS.ERROR_STACK ERROR_STACK from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'REQAPPRV' and WFS.item_key in (select wf_item_key /* DROP SHIPMENTS */ from PO_REQUISITION_HEADERS REQ, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_HEADER_ID = REQ.REQUISITION_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select wf_item_key /* INTERNAL SALES ORDERSS */ from PO_REQUISITION_HEADERS REQ, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_ID = REQ.REQUISITION_HEADER_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFS.ERROR_NAME is not NULL order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_req_apprv_err loop utl_file.put_line(handle,'&sld'||n(po.PROCESS_NAME)||'&d'||n(po.ACTIVITY_NAME)||'&d'); utl_file.put_line(handle,n(po.RESULT)||'&d'||n(po.ACT_STATUS)||'&d'); utl_file.put_line(handle,n(po.ERROR_NAME)||'&d'||n(po.ERROR_MESSAGE)||'&d'); utl_file.put_line(handle,n(po.ERROR_STACK)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_HEADERS_INTERFACE (PHI) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTF_HEAD_ID &dh BATCH_ID &dh INTF_SRC_CODE &dh PROCESS_CODE &dh ACTION &dh PO_HEADER_ID &dh REL_NUM &dh'); UTL_FILE.PUT_LINE(handle,'PO_RELEASE_ID &dh VENDOR_NAME &dh APPRV_STAT &dh FIRM &dh FROZEN &dh CLOSE_CODE &dh CLOSE_DATE &dh APPRV_REQD &dh'); UTL_FILE.PUT_LINE(handle,'REF_NUM &dh VEND_NUM &dh WF_GROUP_ID &eh'); Declare cursor po_hdr_int is select PHI.INTERFACE_HEADER_ID INTF_HEAD_ID, PHI.BATCH_ID BATCH_ID, PHI.INTERFACE_SOURCE_CODE INTF_SRC_CODE, PHI.PROCESS_CODE PROCESS_CODE, PHI.ACTION ACTION, PHI.PO_HEADER_ID PO_HEADER_ID, PHI.RELEASE_NUM REL_NUM, PHI.PO_RELEASE_ID PO_RELEASE_ID, PHI.VENDOR_NAME VENDOR_NAME, PHI.APPROVAL_STATUS APPRV_STAT, PHI.FIRM_FLAG FIRM, PHI.FROZEN_FLAG FROZEN, PHI.CLOSED_CODE CLOSE_CODE, to_char(PHI.CLOSED_DATE,'DD-MON-RR_HH24:MI:SS') CLOSE_DATE, PHI.APPROVAL_REQUIRED_FLAG APPRV_REQD, PHI.REFERENCE_NUM REF_NUM, PHI.VENDOR_NUM VEND_NUM, PHI.WF_GROUP_ID WF_GROUP_ID from PO_HEADERS_INTERFACE PHI, PO_LINES_INTERFACE PLI, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_LINE_ID = PLI.REQUISITION_LINE_ID and PHI.INTERFACE_HEADER_ID = PLI.INTERFACE_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_hdr_int loop utl_file.put_line(handle,'&sld'||n(po.INTF_HEAD_ID)||'&d'||n(po.BATCH_ID)||'&d'); utl_file.put_line(handle,n(po.INTF_SRC_CODE)||'&d'||n(po.PROCESS_CODE)||'&d'); utl_file.put_line(handle,n(po.ACTION)||'&d'||n(po.PO_HEADER_ID)||'&d'); utl_file.put_line(handle,n(po.REL_NUM)||'&d'||n(po.PO_RELEASE_ID)||'&d'); utl_file.put_line(handle,n(po.VENDOR_NAME)||'&d'||n(po.APPRV_STAT)||'&d'); utl_file.put_line(handle,n(po.FIRM)||'&d'||n(po.FROZEN)||'&d'); utl_file.put_line(handle,n(po.CLOSE_CODE)||'&d'||n(po.CLOSE_DATE)||'&d'); utl_file.put_line(handle,n(po.APPRV_REQD)||'&d'||n(po.REF_NUM)||'&d'); utl_file.put_line(handle,n(po.VEND_NUM)||'&d'||n(po.WF_GROUP_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_LINES_INTERFACE (PLI) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTF_LINE_ID &dh INTF_HEAD_ID &dh ACTION &dh PO_LINE &dh LINE &dh PO_LINE_ID &dh SHIP_NUM &dh SHIP_TYPE &dh '); UTL_FILE.PUT_LINE(handle,'REQ_LINE_ID &dh PO_HEADER_ID &dh LINE_TYPE &dh ITEM &dh UOM &dh QUANTITY &dh PRICE &dh FIRM &dh SHIP_ORG_CODE &dh '); UTL_FILE.PUT_LINE(handle,'SHIP_ORG_ID &dh SHIP_TO_LOC &dh SHIP_TO_LOC_ID &dh NEED_BY &dh PROMISE &dh WAREH_ID &eh'); Declare cursor po_lin_int is select PLI.INTERFACE_LINE_ID INTF_LINE_ID, PLI.INTERFACE_HEADER_ID INTF_HEAD_ID, PLI.ACTION ACTION, PLI.LINE_NUM PO_LINE, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, PLI.PO_LINE_ID PO_LINE_ID, PLI.SHIPMENT_NUM SHIP_NUM, PLI.SHIPMENT_TYPE SHIP_TYPE, PLI.REQUISITION_LINE_ID REQ_LINE_ID, PLI.PO_HEADER_ID PO_HEADER_ID, PLI.LINE_TYPE LINE_TYPE, PLI.ITEM ITEM, PLI.UNIT_OF_MEASURE UOM, PLI.QUANTITY QUANTITY, PLI.UNIT_PRICE PRICE, PLI.FIRM_FLAG FIRM, PLI.SHIP_TO_ORGANIZATION_CODE SHIP_ORG_CODE, PLI.SHIP_TO_ORGANIZATION_ID SHIP_ORG_ID, PLI.SHIP_TO_LOCATION SHIP_TO_LOC, PLI.SHIP_TO_LOCATION_ID SHIP_TO_LOC_ID, to_char(PLI.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY, to_char(PLI.PROMISED_DATE,'DD-MON-RR_HH24:MI:SS') PROMISE, PLI.ORGANIZATION_ID WAREH_ID from PO_LINES_INTERFACE PLI, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_LINE_ID = PLI.REQUISITION_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_lin_int loop utl_file.put_line(handle,'&sld'||n(po.INTF_LINE_ID)||'&d'||n(po.INTF_HEAD_ID)||'&d'); utl_file.put_line(handle,n(po.ACTION)||'&d'||n(po.PO_LINE)||'&d'); utl_file.put_line(handle,n(po.LINE)||'&d'||n(po.PO_LINE_ID)||'&d'); utl_file.put_line(handle,n(po.SHIP_NUM)||'&d'||n(po.SHIP_TYPE)||'&d'); utl_file.put_line(handle,n(po.REQ_LINE_ID)||'&d'||n(po.PO_HEADER_ID)||'&d'); utl_file.put_line(handle,n(po.LINE_TYPE)||'&d'||n(po.ITEM)||'&d'); utl_file.put_line(handle,n(po.UOM)||'&d'||n(po.QUANTITY)||'&d'); utl_file.put_line(handle,n(po.PRICE)||'&d'||n(po.FIRM)||'&d'); utl_file.put_line(handle,n(po.SHIP_ORG_CODE)||'&d'||n(po.SHIP_ORG_ID)||'&d'); utl_file.put_line(handle,n(po.SHIP_TO_LOC)||'&d'||n(po.SHIP_TO_LOC_ID)||'&d'); utl_file.put_line(handle,n(po.NEED_BY)||'&d'||n(po.PROMISE)||'&d'); utl_file.put_line(handle,n(po.WAREH_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_INTERFACE_ERRORS_ALL (POE) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INF_TRANS_ID &dh COLUMN_NAME &dh ERROR &dh INF_TYPE &dh REQUEST_ID &dh TABLE_NAME &eh'); Declare cursor po_int_err is select POE.INTERFACE_TRANSACTION_ID INF_TRANS_ID, POE.COLUMN_NAME COLUMN_NAME, POE.ERROR_MESSAGE ERROR_M, POE.INTERFACE_TYPE INF_TYPE, POE.REQUEST_ID REQUEST_ID, POE.TABLE_NAME TABLE_N from PO_INTERFACE_ERRORS POE, PO_HEADERS_INTERFACE PHI, PO_LINES_INTERFACE PLI, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.REQUISITION_LINE_ID = PLI.REQUISITION_LINE_ID and PHI.INTERFACE_HEADER_ID = PLI.INTERFACE_HEADER_ID and (POE.INTERFACE_TRANSACTION_ID = PLI.INTERFACE_LINE_ID or POE.INTERFACE_TRANSACTION_ID = PHI.INTERFACE_HEADER_ID) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_int_err loop utl_file.put_line(handle,'&sld'||n(po.INF_TRANS_ID)||'&d'||n(po.COLUMN_NAME)||'&d'); utl_file.put_line(handle,n(po.ERROR_M)||'&d'||n(po.INF_TYPE)||'&d'); utl_file.put_line(handle,n(po.REQUEST_ID)||'&d'||n(po.TABLE_N)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_HEADERS_ALL (POH) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PO_HEADER_ID &dh PO_NUM &dh ACCEPT_REQD &dh BILL_TO &dh SHIP_TO &dh CLS_STAT &dh CONF_ORD &dh CURR &dh '); UTL_FILE.PUT_LINE(handle,'ENABLED &dh FROZEN &dh SUMM &dh TYPE &dh VEND_CNCACT &dh VEND_ID &dh VEND_SITE &dh ITEM_TYPE &dh ITEM_KEY &eh'); Declare cursor po_hdr is select POH.PO_HEADER_ID PO_HEADER_ID, POH.SEGMENT1 PO_NUM, POH.ACCEPTANCE_REQUIRED_FLAG ACCEPT_REQD, POH.BILL_TO_LOCATION_ID BILL_TO, POH.SHIP_TO_LOCATION_ID SHIP_TO, POH.CLOSED_CODE CLS_STAT, POH.CONFIRMING_ORDER_FLAG CONF_ORD, POH.CURRENCY_CODE CURR, POH.ENABLED_FLAG ENABLED, POH.FROZEN_FLAG FROZEN, POH.SUMMARY_FLAG SUMM, POH.TYPE_LOOKUP_CODE TYPE, POH.VENDOR_CONTACT_ID VEND_CONT, POH.VENDOR_ID VEND_ID, POH.VENDOR_SITE_ID VEND_SITE, POH.WF_ITEM_TYPE ITEM_TYPE, POH.WF_ITEM_KEY ITEM_KEY from PO_HEADERS POH, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_HEADER_ID = POH.PO_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select distinct /* ATO BUY ITEM */ POH.PO_HEADER_ID PO_HEADER_ID, POH.SEGMENT1 PO_NUM, POH.ACCEPTANCE_REQUIRED_FLAG ACCEPT_REQD, POH.BILL_TO_LOCATION_ID BILL_TO, POH.SHIP_TO_LOCATION_ID SHIP_TO, POH.CLOSED_CODE CLS_STAT, POH.CONFIRMING_ORDER_FLAG CONF_ORD, POH.CURRENCY_CODE CURR, POH.ENABLED_FLAG ENABLED, POH.FROZEN_FLAG FROZEN, POH.SUMMARY_FLAG SUMM, POH.TYPE_LOOKUP_CODE TYPE, POH.VENDOR_CONTACT_ID VEND_CONT, POH.VENDOR_ID VEND_ID, POH.VENDOR_SITE_ID VEND_SITE, POH.WF_ITEM_TYPE ITEM_TYPE, POH.WF_ITEM_KEY ITEM_KEY from PO_HEADERS POH, MTL_RESERVATIONS RES where :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_TYPE_ID = 2 -- SO and RES.SUPPLY_SOURCE_TYPE_ID in (1,13) -- PO or INV and RES.SUPPLY_SOURCE_HEADER_ID = POH.PO_HEADER_ID; begin for po in po_hdr loop utl_file.put_line(handle,'&sld'||n(po.PO_HEADER_ID)||'&d'||n(po.PO_NUM)||'&d'); utl_file.put_line(handle,n(po.ACCEPT_REQD)||'&d'||n(po.BILL_TO)||'&d'); utl_file.put_line(handle,n(po.SHIP_TO)||'&d'||n(po.CLS_STAT)||'&d'); utl_file.put_line(handle,n(po.CONF_ORD)||'&d'||n(po.CURR)||'&d'); utl_file.put_line(handle,n(po.ENABLED)||'&d'||n(po.FROZEN)||'&d'); utl_file.put_line(handle,n(po.SUMM)||'&d'||n(po.TYPE)||'&d'); utl_file.put_line(handle,n(po.VEND_CONT)||'&d'||n(po.VEND_ID)||'&d'); utl_file.put_line(handle,n(po.VEND_SITE)||'&d'||n(po.ITEM_TYPE)||'&d'); utl_file.put_line(handle,n(po.ITEM_KEY)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f PO_LINES (POL) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PO_HEADER_ID &dh PO_LINE_ID &dh PO_LINE &dh LINE &dh CATEGORY_ID &dh CLS_STAT &dh FIRM &dh ITEM_DESC &dh '); UTL_FILE.PUT_LINE(handle,'ITEM_ID &dh LINE_TYPE_ID &dh QTY &dh PRICE &eh'); Declare cursor po_lines is select POL.PO_HEADER_ID PO_HEADER_ID, POL.PO_LINE_ID PO_LINE_ID, POL.LINE_NUM PO_LINE, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, POL.CATEGORY_ID CATEGORY_ID, POL.CLOSED_CODE CLS_STAT, POL.FIRM_STATUS_LOOKUP_CODE FIRM, POL.ITEM_DESCRIPTION ITEM_DESC, POL.ITEM_ID ITEM_ID, POL.LINE_TYPE_ID LINE_TYPE_ID, POL.QUANTITY QTY, POL.UNIT_PRICE PRICE from PO_LINES POL, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_LINE_ID = POL.PO_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID; begin for po in po_lines loop utl_file.put_line(handle,'&sld'||n(po.PO_HEADER_ID)||'&d'||n(po.PO_LINE_ID)||'&d'); utl_file.put_line(handle,n(po.PO_LINE)||'&d'||n(po.LINE)||'&d'); utl_file.put_line(handle,n(po.CATEGORY_ID)||'&d'||n(po.CLS_STAT)||'&d'); utl_file.put_line(handle,n(po.FIRM)||'&d'||n(po.ITEM_DESC)||'&d'); utl_file.put_line(handle,n(po.ITEM_ID)||'&d'||n(po.LINE_TYPE_ID)||'&d'); utl_file.put_line(handle,n(po.QTY)||'&d'||n(po.PRICE)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW PURCHASE ORDER APPROVAL STATUS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PO_NUM_IK &dh PROCESS_NAME &dh ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh NOTIF_ID &dh '); UTL_FILE.PUT_LINE(handle,'BEGIN_DATE &dh END_DATE &dh ERROR &eh'); Declare cursor po_wf_po_apr is select WFS.item_key PO_NUM_IK, WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.NOTIFICATION_ID NOTIF_ID, to_char(WFS.BEGIN_DATE,'DD-MON-RR_HH24:MI:SS') BEGIN_DATE, to_char(WFS.END_DATE,'DD-MON-RR_HH24:MI:SS') END_DATE, WFS.ERROR_NAME ERROR_N from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'POAPPRV' and WFS.item_key in (select wf_item_key from PO_HEADERS POH, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_HEADER_ID = POH.PO_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_wf_po_apr loop utl_file.put_line(handle,'&sld'||n(po.PO_NUM_IK)||'&d'||n(po.PROCESS_NAME)||'&d'); utl_file.put_line(handle,n(po.ACTIVITY_NAME)||'&d'||n(po.RESULT)||'&d'); utl_file.put_line(handle,n(po.ACT_STATUS)||'&d'||n(po.NOTIF_ID)||'&d'); utl_file.put_line(handle,n(po.BEGIN_DATE)||'&d'||n(po.END_DATE)||'&d'); utl_file.put_line(handle,n(po.ERROR_N)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW PURCHASE APPROVAL NOTIFICATIONS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh NOTIF_ID &dh TO_USER &dh ORIG_RECIP &dh RECIP_ROLE &dh MAIL_STAT &dh MESSAGE_NAME &dh STATUS &dh SUBJECT &eh'); Declare cursor po_wf_not is select WFN.NOTIFICATION_ID NOTIF_ID, WFN.TO_USER TO_USER, WFN.ORIGINAL_RECIPIENT ORIG_RECIP, WFN.RECIPIENT_ROLE RECIP_ROLE, WFN.MAIL_STATUS MAIL_STAT, WFN.MESSAGE_NAME MESSAGE_NAME, WFN.STATUS STATUS, WFN.SUBJECT SUBJECT from WF_ITEM_ACTIVITY_STATUSES WFS, WF_NOTIFICATIONS WFN where WFS.ITEM_TYPE = 'POAPPRV' and WFS.item_key in (select wf_item_key from PO_HEADERS POH, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_HEADER_ID = POH.PO_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.NOTIFICATION_ID is not null and WFN.NOTIFICATION_ID = WFS.NOTIFICATION_ID order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_wf_not loop utl_file.put_line(handle,'&sld'||n(po.NOTIF_ID)||'&d'||n(po.TO_USER)||'&d'); utl_file.put_line(handle,n(po.ORIG_RECIP)||'&d'||n(po.RECIP_ROLE)||'&d'); utl_file.put_line(handle,n(po.MAIL_STAT)||'&d'||n(po.MESSAGE_NAME)||'&d'); utl_file.put_line(handle,n(po.STATUS)||'&d'||n(po.SUBJECT)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WORKFLOW PURCHASE APPROVAL ERRORS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh PROCESS_NAME &dh ACTIVITY_NAME &dh RESULT &dh ACT_STATUS &dh ERROR_NAME &dh ERROR_MESSAGE &dh ERROR_STACK &eh'); Declare cursor po_hdr_int is select WFA.DISPLAY_NAME PROCESS_NAME, WFA1.DISPLAY_NAME ACTIVITY_NAME, WF_CORE.ACTIVITY_RESULT(WFA1.RESULT_TYPE,WFS.ACTIVITY_RESULT_CODE) RESULT, LKP.MEANING ACT_STATUS, WFS.ERROR_NAME ERROR_NAME, WFS.ERROR_MESSAGE ERROR_MESSAGE, WFS.ERROR_STACK ERROR_STACK from WF_ITEM_ACTIVITY_STATUSES WFS, WF_PROCESS_ACTIVITIES WFP, WF_ACTIVITIES_VL WFA, WF_ACTIVITIES_VL WFA1, WF_LOOKUPS LKP where WFS.ITEM_TYPE = 'POAPPRV' and WFS.item_key in (select wf_item_key from PO_HEADERS POH, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_HEADER_ID = POH.PO_HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID)) and WFS.PROCESS_ACTIVITY = WFP.INSTANCE_ID and WFP.PROCESS_ITEM_TYPE = WFA.ITEM_TYPE and WFP.PROCESS_NAME = WFA.NAME and WFP.PROCESS_VERSION = WFA.VERSION and WFP.ACTIVITY_ITEM_TYPE = WFA1.ITEM_TYPE and WFP.ACTIVITY_NAME = WFA1.NAME and WFA1.VERSION = (select max(VERSION) from WF_ACTIVITIES WF2 where WF2.ITEM_TYPE = WFP.ACTIVITY_ITEM_TYPE and WF2.NAME = WFP.ACTIVITY_NAME) and LKP.LOOKUP_TYPE = 'WFENG_STATUS' and LKP.LOOKUP_CODE = WFS.ACTIVITY_STATUS and WFS.ERROR_NAME is not NULL order by WFS.ITEM_KEY, WFS.BEGIN_DATE, EXECUTION_TIME; begin for po in po_hdr_int loop utl_file.put_line(handle,'&sld'||n(po.PROCESS_NAME)||'&d'||n(po.ACTIVITY_NAME)||'&d'); utl_file.put_line(handle,n(po.RESULT)||'&d'||n(po.ACT_STATUS)||'&d'); utl_file.put_line(handle,n(po.ERROR_NAME)||'&d'||n(po.ERROR_MESSAGE)||'&d'); utl_file.put_line(handle,n(po.ERROR_STACK)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_po if substr(UPPER(nvl('&prt_rec','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f RCV_SHIPMENT_LINES (SHL) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh SHP_LN_ID &dh SHP_HD_ID &dh SHP_LINE_STATUS &dh RCV_Q &dh SHP_Q &dh DEST_TYPE &dh OE_HD_ID &dh OE_LN_ID &dh '); UTL_FILE.PUT_LINE(handle,'ITEM_ID &dh TO_ORG &dh SRC_DOC &dh REQUEST_ID &eh'); Declare cursor rcv_shp_lin is select /* DROP SHIPMENTS */ SHL.SHIPMENT_LINE_ID SHP_LN_ID, SHL.SHIPMENT_HEADER_ID SHP_HD_ID, SHL.SHIPMENT_LINE_STATUS_CODE SHP_LINE_STATUS, SHL.QUANTITY_RECEIVED RCV_Q, SHL.QUANTITY_SHIPPED SHP_Q, SHL.DESTINATION_TYPE_CODE DEST_TYPE, SHL.OE_ORDER_HEADER_ID OE_HD_ID, SHL.OE_ORDER_LINE_ID OE_LN_ID, SHL.ITEM_ID ITEM_ID, SHL.SHIP_TO_LOCATION_ID TO_ORG, SHL.SOURCE_DOCUMENT_CODE SRC_DOC, SHL.REQUEST_ID REQUEST_ID from RCV_SHIPMENT_LINES SHL, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_LINE_ID = SHL.PO_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* RETURNS */ SHL.SHIPMENT_LINE_ID SHP_LN_ID, SHL.SHIPMENT_HEADER_ID SHP_HD_ID, SHL.SHIPMENT_LINE_STATUS_CODE SHP_LINE_STATUS, SHL.QUANTITY_RECEIVED RCV_Q, SHL.QUANTITY_SHIPPED SHP_Q, SHL.DESTINATION_TYPE_CODE DEST_TYPE, SHL.OE_ORDER_HEADER_ID OE_HD_ID, SHL.OE_ORDER_LINE_ID OE_LN_ID, SHL.ITEM_ID ITEM_ID, SHL.SHIP_TO_LOCATION_ID TO_ORG, SHL.SOURCE_DOCUMENT_CODE SRC_DOC, SHL.REQUEST_ID REQUEST_ID from RCV_SHIPMENT_LINES SHL, OE_ORDER_LINES LIN where SHL.OE_ORDER_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* INTERNAL SALES ORDER */ SHL.SHIPMENT_LINE_ID SHP_LN_ID, SHL.SHIPMENT_HEADER_ID SHP_HD_ID, SHL.SHIPMENT_LINE_STATUS_CODE SHP_LINE_STATUS, SHL.QUANTITY_RECEIVED RCV_Q, SHL.QUANTITY_SHIPPED SHP_Q, SHL.DESTINATION_TYPE_CODE DEST_TYPE, SHL.OE_ORDER_HEADER_ID OE_HD_ID, SHL.OE_ORDER_LINE_ID OE_LN_ID, SHL.ITEM_ID ITEM_ID, SHL.SHIP_TO_LOCATION_ID TO_ORG, SHL.SOURCE_DOCUMENT_CODE SRC_DOC, SHL.REQUEST_ID REQUEST_ID from RCV_SHIPMENT_LINES SHL, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_LINE_ID = SHL.REQUISITION_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* ATO BUY ITEM */ SHL.SHIPMENT_LINE_ID SHP_LN_ID, SHL.SHIPMENT_HEADER_ID SHP_HD_ID, SHL.SHIPMENT_LINE_STATUS_CODE SHP_LINE_STATUS, SHL.QUANTITY_RECEIVED RCV_Q, SHL.QUANTITY_SHIPPED SHP_Q, SHL.DESTINATION_TYPE_CODE DEST_TYPE, SHL.OE_ORDER_HEADER_ID OE_HD_ID, SHL.OE_ORDER_LINE_ID OE_LN_ID, SHL.ITEM_ID ITEM_ID, SHL.SHIP_TO_LOCATION_ID TO_ORG, SHL.SOURCE_DOCUMENT_CODE SRC_DOC, SHL.REQUEST_ID REQUEST_ID from RCV_SHIPMENT_LINES SHL, MTL_RESERVATIONS RES, PO_HEADERS_ALL POH where :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_LINE_ID = NVL('&line_id_selected',RES.DEMAND_SOURCE_LINE_ID) and RES.DEMAND_SOURCE_TYPE_ID = 2 -- SO and RES.SUPPLY_SOURCE_TYPE_ID in (1,13) -- PO or INV and RES.SUPPLY_SOURCE_HEADER_ID = POH.PO_HEADER_ID -- and POH.PO_HEADER_ID = SHL.PO_HEADER_ID; begin for rcv in rcv_shp_lin loop utl_file.put_line(handle,'&sld'||n(rcv.SHP_LN_ID)||'&d'||n(rcv.SHP_HD_ID)||'&d'); utl_file.put_line(handle,n(rcv.SHP_LINE_STATUS)||'&d'||n(rcv.RCV_Q)||'&d'); utl_file.put_line(handle,n(rcv.SHP_Q)||'&d'||n(rcv.DEST_TYPE)||'&d'); utl_file.put_line(handle,n(rcv.OE_HD_ID)||'&d'||n(rcv.OE_LN_ID)||'&d'); utl_file.put_line(handle,n(rcv.ITEM_ID)||'&d'||n(rcv.TO_ORG)||'&d'); utl_file.put_line(handle,n(rcv.SRC_DOC)||'&d'||n(rcv.REQUEST_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f RCV_TRANSACTIONS (RCV) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh TRANS_ID &dh PRNT_TRANS_ID &dh LINE &dh TRANS_TYPE &dh TRANS_DATE &dh DEST_TYPE &dh INSPECT_STAT &dh '); UTL_FILE.PUT_LINE(handle,'INTF_SRC &dh INTF_TRANS_ID &dh LOC_ID &dh MVT_STAT &dh ORG_ID &dh OE_HEAD_ID &dh OE_LINE_ID &dh PO_HEAD_ID &dh '); UTL_FILE.PUT_LINE(handle,'PO_LINE_ID &dh LINE_LOC_ID &dh UNIT_PRICE &dh UOM &dh QTY &dh REQUEST_ID &dh SHIP_HEAD_ID &dh SHIP_LINE_ID &dh '); UTL_FILE.PUT_LINE(handle,'SRC_DOC_CODE &dh VEND_ID &dh VEND_SITE_ID &eh'); Declare cursor rcv_trx is select /* DROP SHIPMENTS */ RCV.TRANSACTION_ID TRANS_ID, RCV.PARENT_TRANSACTION_ID PRNT_TRANS_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RCV.TRANSACTION_TYPE TRANS_TYPE, to_char(RCV.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRANS_DATE, RCV.DESTINATION_TYPE_CODE DEST_TYPE, RCV.INSPECTION_STATUS_CODE INSPECT_STAT, RCV.INTERFACE_SOURCE_CODE INTF_SRC, RCV.INTERFACE_TRANSACTION_ID INTF_TRANS_ID, RCV.LOCATION_ID LOC_ID, RCV.MVT_STAT_STATUS MVT_STAT, RCV.ORGANIZATION_ID ORG_ID, RCV.OE_ORDER_HEADER_ID OE_HEAD_ID, RCV.OE_ORDER_LINE_ID OE_LINE_ID, RCV.PO_HEADER_ID PO_HEAD_ID, RCV.PO_LINE_ID PO_LINE_ID, RCV.PO_LINE_LOCATION_ID LINE_LOC_ID, RCV.PO_UNIT_PRICE UNIT_PRICE, RCV.PRIMARY_UNIT_OF_MEASURE UOM, RCV.QUANTITY QTY, RCV.REQUEST_ID REQUEST_ID, RCV.SHIPMENT_HEADER_ID SHIP_HEAD_ID, RCV.SHIPMENT_LINE_ID SHIP_LINE_ID, RCV.SOURCE_DOCUMENT_CODE SRC_DOC_CODE, RCV.VENDOR_ID VEND_ID, RCV.VENDOR_SITE_ID VEND_SITE_ID from RCV_TRANSACTIONS RCV, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_LINE_ID = RCV.PO_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* RETURNS */ RCV.TRANSACTION_ID TRANS_ID, RCV.PARENT_TRANSACTION_ID PRNT_TRANS_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RCV.TRANSACTION_TYPE TRANS_TYPE, to_char(RCV.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRANS_DATE, RCV.DESTINATION_TYPE_CODE DEST_TYPE, RCV.INSPECTION_STATUS_CODE INSPECT_STAT, RCV.INTERFACE_SOURCE_CODE INTF_SRC_CODE, RCV.INTERFACE_TRANSACTION_ID INTF_TRANS_ID, RCV.LOCATION_ID LOC_ID, RCV.MVT_STAT_STATUS MVT_STAT, RCV.ORGANIZATION_ID ORG_ID, RCV.OE_ORDER_HEADER_ID OE_HEAD_ID, RCV.OE_ORDER_LINE_ID OE_LINE_ID, RCV.PO_HEADER_ID PO_HEAD_ID, RCV.PO_LINE_ID PO_LINE_ID, RCV.PO_LINE_LOCATION_ID LINE_LOC_ID, RCV.PO_UNIT_PRICE UNIT_PRICE, RCV.PRIMARY_UNIT_OF_MEASURE UOM, RCV.QUANTITY QTY, RCV.REQUEST_ID REQUEST_ID, RCV.SHIPMENT_HEADER_ID SHIP_HEAD_ID, RCV.SHIPMENT_LINE_ID SHIP_LINE_ID, RCV.SOURCE_DOCUMENT_CODE SRC_DOC_CODE, RCV.VENDOR_ID VEND_ID, RCV.VENDOR_SITE_ID VEND_SITE_ID from RCV_TRANSACTIONS RCV, OE_ORDER_LINES LIN where RCV.OE_ORDER_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* INTERNAL SALES ORDERS */ RCV.TRANSACTION_ID TRANS_ID, RCV.PARENT_TRANSACTION_ID PRNT_TRANS_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RCV.TRANSACTION_TYPE TRANS_TYPE, to_char(RCV.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRANS_DATE, RCV.DESTINATION_TYPE_CODE DEST_TYPE, RCV.INSPECTION_STATUS_CODE INSPECT_STAT, RCV.INTERFACE_SOURCE_CODE INTF_SRC_CODE, RCV.INTERFACE_TRANSACTION_ID INTF_TRANS_ID, RCV.LOCATION_ID LOC_ID, RCV.MVT_STAT_STATUS MVT_STAT, RCV.ORGANIZATION_ID ORG_ID, RCV.OE_ORDER_HEADER_ID OE_HEAD_ID, RCV.OE_ORDER_LINE_ID OE_LINE_ID, RCV.PO_HEADER_ID PO_HEAD_ID, RCV.PO_LINE_ID PO_LINE_ID, RCV.PO_LINE_LOCATION_ID LINE_LOC_ID, RCV.PO_UNIT_PRICE UNIT_PRICE, RCV.PRIMARY_UNIT_OF_MEASURE UOM, RCV.QUANTITY QTY, RCV.REQUEST_ID REQUEST_ID, RCV.SHIPMENT_HEADER_ID SHIP_HEAD_ID, RCV.SHIPMENT_LINE_ID SHIP_LINE_ID, RCV.SOURCE_DOCUMENT_CODE SRC_DOC_CODE, RCV.VENDOR_ID VEND_ID, RCV.VENDOR_SITE_ID VEND_SITE_ID from RCV_TRANSACTIONS RCV, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_LINE_ID = RCV.REQUISITION_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* ATO BUY ITEM */ RCV.TRANSACTION_ID TRANS_ID, RCV.PARENT_TRANSACTION_ID PRNT_TRANS_ID, to_char(RES.DEMAND_SOURCE_LINE_ID) LINE, RCV.TRANSACTION_TYPE TRANS_TYPE, to_char(RCV.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRANS_DATE, RCV.DESTINATION_TYPE_CODE DEST_TYPE, RCV.INSPECTION_STATUS_CODE INSPECT_STAT, RCV.INTERFACE_SOURCE_CODE INTF_SRC_CODE, RCV.INTERFACE_TRANSACTION_ID INTF_TRANS_ID, RCV.LOCATION_ID LOC_ID, RCV.MVT_STAT_STATUS MVT_STAT, RCV.ORGANIZATION_ID ORG_ID, RCV.OE_ORDER_HEADER_ID OE_HEAD_ID, RCV.OE_ORDER_LINE_ID OE_LINE_ID, RCV.PO_HEADER_ID PO_HEAD_ID, RCV.PO_LINE_ID PO_LINE_ID, RCV.PO_LINE_LOCATION_ID LINE_LOC_ID, RCV.PO_UNIT_PRICE UNIT_PRICE, RCV.PRIMARY_UNIT_OF_MEASURE UOM, RCV.QUANTITY QTY, RCV.REQUEST_ID REQUEST_ID, RCV.SHIPMENT_HEADER_ID SHIP_HEAD_ID, RCV.SHIPMENT_LINE_ID SHIP_LINE_ID, RCV.SOURCE_DOCUMENT_CODE SRC_DOC_CODE, RCV.VENDOR_ID VEND_ID, RCV.VENDOR_SITE_ID VEND_SITE_ID from RCV_TRANSACTIONS RCV, MTL_RESERVATIONS RES, PO_HEADERS_ALL POH where :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_LINE_ID = NVL('&line_id_selected',RES.DEMAND_SOURCE_LINE_ID) and RES.DEMAND_SOURCE_TYPE_ID = 2 -- SO and RES.SUPPLY_SOURCE_TYPE_ID in (1,13) -- PO or INV and RES.SUPPLY_SOURCE_HEADER_ID = POH.PO_HEADER_ID -- and POH.PO_HEADER_ID = RCV.PO_HEADER_ID; begin for rcv in rcv_trx loop utl_file.put_line(handle,'&sld'||n(rcv.TRANS_ID)||'&d'||n(rcv.PRNT_TRANS_ID)||'&d'); utl_file.put_line(handle,n(rcv.LINE)||'&d'||n(rcv.TRANS_TYPE)||'&d'); utl_file.put_line(handle,n(rcv.TRANS_DATE)||'&d'||n(rcv.DEST_TYPE)||'&d'); utl_file.put_line(handle,n(rcv.INSPECT_STAT)||'&d'||n(rcv.INTF_SRC)||'&d'); utl_file.put_line(handle,n(rcv.INTF_TRANS_ID)||'&d'||n(rcv.LOC_ID)||'&d'); utl_file.put_line(handle,n(rcv.MVT_STAT)||'&d'||n(rcv.ORG_ID)||'&d'); utl_file.put_line(handle,n(rcv.OE_HEAD_ID)||'&d'||n(rcv.OE_LINE_ID)||'&d'); utl_file.put_line(handle,n(rcv.PO_HEAD_ID)||'&d'||n(rcv.PO_LINE_ID)||'&d'); utl_file.put_line(handle,n(rcv.LINE_LOC_ID)||'&d'||n(rcv.UNIT_PRICE)||'&d'); utl_file.put_line(handle,n(rcv.UOM)||'&d'||n(rcv.QTY)||'&d'); utl_file.put_line(handle,n(rcv.REQUEST_ID)||'&d'||n(rcv.SHIP_HEAD_ID)||'&d'); utl_file.put_line(handle,n(rcv.SHIP_LINE_ID)||'&d'||n(rcv.SRC_DOC_CODE)||'&d'); utl_file.put_line(handle,n(rcv.VEND_ID)||'&d'||n(rcv.VEND_SITE_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f RCV_TRANSACTIONS_INTERFACE (RTI) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTF_TRNS_ID &dh PROC_MODE &dh PROC_STAT &dh TRNS_STAT &dh TRNS_DATE &dh TRNS_TYPE &dh DEST_TYPE &dh INSP_STAT &dh'); UTL_FILE.PUT_LINE(handle,'INSP_SRC &dh OE_HEAD_ID &dh OE_LINE_ID &dh ITEM_ID &dh QTY &dh PRY_Q &dh PO_UNIT_PRC &dh SUB &dh TO_ORG_ID &dh RCPT_SRC &dh'); UTL_FILE.PUT_LINE(handle,'PRNT_TRN_ID &dh SHP_HEAD_ID &dh SHP_LINE_ID &dh SRC_DOC &dh REQUEST_ID &eh'); Declare cursor rcv_trx_int is select /* DROP SHIPMENTS */ RTI.INTERFACE_TRANSACTION_ID INTF_TRNS_ID, RTI.PROCESSING_MODE_CODE PROC_MODE, RTI.PROCESSING_STATUS_CODE PROC_STAT, RTI.TRANSACTION_STATUS_CODE TRNS_STAT, to_char(RTI.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRNS_DATE, RTI.TRANSACTION_TYPE TRNS_TYPE, RTI.DESTINATION_TYPE_CODE DEST_TYPE, RTI.INSPECTION_STATUS_CODE INSP_STAT, RTI.INTERFACE_SOURCE_CODE INSP_SRC, RTI.OE_ORDER_HEADER_ID OE_HEAD_ID, RTI.OE_ORDER_LINE_ID OE_LINE_ID, RTI.ITEM_ID ITEM_ID, RTI.QUANTITY QTY, RTI.PRIMARY_QUANTITY PRY_Q, RTI.PO_UNIT_PRICE PO_UNIT_PRC, RTI.SUBINVENTORY SUB, RTI.TO_ORGANIZATION_ID TO_ORG_ID, RTI.RECEIPT_SOURCE_CODE RCPT_SRC, RTI.PARENT_TRANSACTION_ID PRNT_TRN_ID, RTI.SHIPMENT_HEADER_ID SHP_HEAD_ID, RTI.SHIPMENT_LINE_ID SHP_LINE_ID, RTI.SOURCE_DOCUMENT_CODE SRC_DOC, RTI.PROCESSING_REQUEST_ID REQUEST_ID from RCV_TRANSACTIONS_INTERFACE RTI, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_LINE_ID = RTI.PO_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* RETURNS */ RTI.INTERFACE_TRANSACTION_ID INTF_TRNS_ID, RTI.PROCESSING_MODE_CODE PROC_MODE, RTI.PROCESSING_STATUS_CODE PROC_STAT, RTI.TRANSACTION_STATUS_CODE TRNS_STAT, to_char(RTI.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRNS_DATE, RTI.TRANSACTION_TYPE TRNS_TYPE, RTI.DESTINATION_TYPE_CODE DEST_TYPE, RTI.INSPECTION_STATUS_CODE INSP_STAT, RTI.INTERFACE_SOURCE_CODE INSP_SRC, RTI.OE_ORDER_HEADER_ID OE_HEAD_ID, RTI.OE_ORDER_LINE_ID OE_LINE_ID, RTI.ITEM_ID ITEM_ID, RTI.QUANTITY QTY, RTI.PRIMARY_QUANTITY PRY_Q, RTI.PO_UNIT_PRICE PO_UNIT_PRC, RTI.SUBINVENTORY SUB, RTI.TO_ORGANIZATION_ID TO_ORG_ID, RTI.RECEIPT_SOURCE_CODE RCPT_SRC, RTI.PARENT_TRANSACTION_ID PRNT_TRN_ID, RTI.SHIPMENT_HEADER_ID SHP_HEAD_ID, RTI.SHIPMENT_LINE_ID SHP_LINE_ID, RTI.SOURCE_DOCUMENT_CODE SRC_DOC, RTI.PROCESSING_REQUEST_ID REQUEST_ID from RCV_TRANSACTIONS_INTERFACE RTI, OE_ORDER_LINES LIN where RTI.OE_ORDER_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* INTERNAL SALES ORDER */ RTI.INTERFACE_TRANSACTION_ID INTF_TRNS_ID, RTI.PROCESSING_MODE_CODE PROC_MODE, RTI.PROCESSING_STATUS_CODE PROC_STAT, RTI.TRANSACTION_STATUS_CODE TRNS_STAT, to_char(RTI.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRNS_DATE, RTI.TRANSACTION_TYPE TRNS_TYPE, RTI.DESTINATION_TYPE_CODE DEST_TYPE, RTI.INSPECTION_STATUS_CODE INSP_STAT, RTI.INTERFACE_SOURCE_CODE INSP_SRC, RTI.OE_ORDER_HEADER_ID OE_HEAD_ID, RTI.OE_ORDER_LINE_ID OE_LINE_ID, RTI.ITEM_ID ITEM_ID, RTI.QUANTITY QTY, RTI.PRIMARY_QUANTITY PRY_Q, RTI.PO_UNIT_PRICE PO_UNIT_PRC, RTI.SUBINVENTORY SUB, RTI.TO_ORGANIZATION_ID TO_ORG_ID, RTI.RECEIPT_SOURCE_CODE RCPT_SRC, RTI.PARENT_TRANSACTION_ID PRNT_TRN_ID, RTI.SHIPMENT_HEADER_ID SHP_HEAD_ID, RTI.SHIPMENT_LINE_ID SHP_LINE_ID, RTI.SOURCE_DOCUMENT_CODE SRC_DOC, RTI.PROCESSING_REQUEST_ID REQUEST_ID from RCV_TRANSACTIONS_INTERFACE RTI, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_LINE_ID = RTI.REQUISITION_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for rcv in rcv_trx_int loop utl_file.put_line(handle,'&sld'||n(rcv.INTF_TRNS_ID)||'&d'||n(rcv.PROC_MODE)||'&d'||n(rcv.PROC_STAT)||'&d'); utl_file.put_line(handle,n(rcv.TRNS_STAT)||'&d'||n(rcv.TRNS_DATE)||'&d'||n(rcv.TRNS_TYPE)||'&d'); utl_file.put_line(handle,n(rcv.DEST_TYPE)||'&d'||n(rcv.INSP_STAT)||'&d'||n(rcv.INSP_SRC)||'&d'); utl_file.put_line(handle,n(rcv.OE_HEAD_ID)||'&d'||n(rcv.OE_LINE_ID)||'&d'||n(rcv.ITEM_ID)||'&d'); utl_file.put_line(handle,n(rcv.QTY)||'&d'||n(rcv.PRY_Q)||'&d'||n(rcv.PO_UNIT_PRC)||'&d'); utl_file.put_line(handle,n(rcv.SUB)||'&d'||n(rcv.TO_ORG_ID)||'&d'||n(rcv.RCPT_SRC)||'&d'); utl_file.put_line(handle,n(rcv.PRNT_TRN_ID)||'&d'||n(rcv.SHP_HEAD_ID)||'&d'||n(rcv.SHP_LINE_ID)||'&d'); utl_file.put_line(handle,n(rcv.SRC_DOC)||'&d'||n(rcv.REQUEST_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_rec if substr(UPPER(nvl('&prt_po','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f MTL_SUPPLY (SUP) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh SUP_TYPE &dh REQ_HEAD_ID &dh REQ_LINE_ID &dh PO_HEAD_ID &dh PO_REL_ID &dh PO_LINE_ID &dh PO_LINE_LOC_ID &dh '); UTL_FILE.PUT_LINE(handle,'PO_DIST_ID &dh SHP_HEAD_ID &dh SHP_LINE_ID &dh RCV_TRANS_ID &dh ITEM_ID &dh QTY &dh RECPT_DT &dh NEED_BY_DT &dh '); UTL_FILE.PUT_LINE(handle,'DEST_TYPE &dh FROM_ORG &dh FROM_SUB &dh TO_ORG &dh TO_SUB &dh INTRNS_OWN_ORG &eh'); Declare cursor mtl_supply is select /* DROP SHIPMENTS */ SUP.SUPPLY_TYPE_CODE SUP_TYPE, SUP.REQ_HEADER_ID REQ_HEAD_ID, SUP.REQ_LINE_ID REQ_LINE_ID, SUP.PO_HEADER_ID PO_HEAD_ID, SUP.PO_RELEASE_ID PO_REL_ID, SUP.PO_LINE_ID PO_LINE_ID, SUP.PO_LINE_LOCATION_ID PO_LINE_LOC_ID, SUP.PO_DISTRIBUTION_ID PO_DIST_ID, SUP.SHIPMENT_HEADER_ID SHP_HEAD_ID, SUP.SHIPMENT_LINE_ID SHP_LINE_ID, SUP.RCV_TRANSACTION_ID RCV_TRANS_ID, SUP.ITEM_ID ITEM_ID, SUP.QUANTITY QTY, to_char(SUP.RECEIPT_DATE,'DD-MON-RR_HH24:MI:SS') RECPT_DT, to_char(SUP.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY_DT, SUP.DESTINATION_TYPE_CODE DEST_TYPE, SUP.FROM_ORGANIZATION_ID FROM_ORG, SUP.FROM_SUBINVENTORY FROM_SUB, SUP.TO_ORGANIZATION_ID TO_ORG, SUP.TO_SUBINVENTORY TO_SUB, SUP.INTRANSIT_OWNING_ORG_ID INTRNS_OWN_ORG from MTL_SUPPLY SUP, OE_DROP_SHIP_SOURCES SRC, OE_ORDER_LINES LIN where SRC.LINE_ID = LIN.LINE_ID and SRC.PO_LINE_ID = SUP.PO_LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL select /* INTERNAL SALES ORDER */ SUP.SUPPLY_TYPE_CODE SUP_TYPE, --SUP.SUPPLY_SOURCE_ID SUP_SRC, SUP.REQ_HEADER_ID REQ_HEAD_ID, SUP.REQ_LINE_ID REQ_LINE_ID, SUP.PO_HEADER_ID PO_HEAD_ID, SUP.PO_RELEASE_ID PO_REL_ID, SUP.PO_LINE_ID PO_LINE_ID, SUP.PO_LINE_LOCATION_ID PO_LINE_LOC_ID, SUP.PO_DISTRIBUTION_ID PO_DIST_ID, SUP.SHIPMENT_HEADER_ID SHP_HEAD_ID, SUP.SHIPMENT_LINE_ID SHP_LINE_ID, SUP.RCV_TRANSACTION_ID RCV_TRANS_ID, SUP.ITEM_ID ITEM_ID, SUP.QUANTITY QTY, to_char(SUP.RECEIPT_DATE,'DD-MON-RR_HH24:MI:SS') RECPT_DT, to_char(SUP.NEED_BY_DATE,'DD-MON-RR_HH24:MI:SS') NEED_BY_DT, SUP.DESTINATION_TYPE_CODE DEST_TYPE, SUP.FROM_ORGANIZATION_ID FROM_ORG, SUP.FROM_SUBINVENTORY FROM_SUB, SUP.TO_ORGANIZATION_ID TO_ORG, SUP.TO_SUBINVENTORY TO_SUB, SUP.INTRANSIT_OWNING_ORG_ID INTRNS_OWN_ORG from MTL_SUPPLY SUP, OE_ORDER_LINES LIN where LIN.SOURCE_DOCUMENT_LINE_ID = SUP.REQ_LINE_ID and LIN.SOURCE_DOCUMENT_TYPE_ID = 10 and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for mtl in mtl_supply loop utl_file.put_line(handle,'&sld'||n(mtl.SUP_TYPE)||'&d'||n(mtl.REQ_HEAD_ID)||'&d'||n(mtl.REQ_LINE_ID)||'&d'); utl_file.put_line(handle,n(mtl.PO_HEAD_ID)||'&d'||n(mtl.PO_REL_ID)||'&d'||n(mtl.PO_LINE_ID)||'&d'); utl_file.put_line(handle,n(mtl.PO_LINE_LOC_ID)||'&d'||n(mtl.PO_DIST_ID)||'&d'||n(mtl.SHP_HEAD_ID)||'&d'); utl_file.put_line(handle,n(mtl.SHP_LINE_ID)||'&d'||n(mtl.RCV_TRANS_ID)||'&d'||n(mtl.ITEM_ID)||'&d'); utl_file.put_line(handle,n(mtl.QTY)||'&d'||n(mtl.RECPT_DT)||'&d'||n(mtl.NEED_BY_DT)||'&d'); utl_file.put_line(handle,n(mtl.DEST_TYPE)||'&d'||n(mtl.FROM_ORG)||'&d'||n(mtl.FROM_SUB)||'&d'); utl_file.put_line(handle,n(mtl.TO_ORG)||'&d'||n(mtl.TO_SUB)||'&d'||n(mtl.INTRNS_OWN_ORG)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_po if substr(UPPER(nvl('&prt_inv','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f MTL_RESERVATIONS (RES) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RESERV_ID &dh SHIP_READY &dh DS_HEAD_ID &dh DS_LINE_ID &dh DS_DELIV &dh LINE &dh ITEM_ID &dh ITEM &dh '); UTL_FILE.PUT_LINE(handle,'RES_Q &dh DET_Q &dh UOM &dh REQUIRD_D &dh DS_TYPE &dh WH_ID &dh SUBINV &dh LOT &dh REV &dh LOC_ID &dh SERIAL_NUM &dh '); UTL_FILE.PUT_LINE(handle,'SS_TYPE_ID &dh WIP_ID &dh JOB_NAME &dh JOB_STAT &dh SS_HEADER_ID &dh SS_SOURCE_LINE_DET &dh SS_SOURCE_LINE &eh '); --UTL_FILE.PUT_LINE(handle,'SECONDARY RES_QTY &dh CALC_SEC RES_QTY &dh SECONDARY UOM &dh SECONDARY DET_QTY &eh'); Declare cursor mtl_res is select RES.RESERVATION_ID RESERV_ID, decode(RES.SHIP_READY_FLAG, 1,'1=Released', 2,'2=Submitted', to_char(RES.SHIP_READY_FLAG)) SHIP_READY, RES.DEMAND_SOURCE_HEADER_ID DS_HEAD_ID, RES.DEMAND_SOURCE_LINE_ID DS_LINE_ID, RES.DEMAND_SOURCE_DELIVERY DS_DELIV, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, RES.INVENTORY_ITEM_ID ITEM_ID, ITM.SEGMENT1 ITEM, RES.PRIMARY_RESERVATION_QUANTITY RES_Q, RES.DETAILED_QUANTITY DET_Q, RES.PRIMARY_UOM_CODE UOM, To_char(RES.REQUIREMENT_DATE,'DD-MON-RR_HH24:MI:SS') REQUIRD_D, RES.DEMAND_SOURCE_TYPE_ID DS_TYPE, RES.ORGANIZATION_ID WH_ID, RES.SUBINVENTORY_CODE SUBINV, RES.LOT_NUMBER LOT, RES.REVISION REV, RES.LOCATOR_ID LOC_ID, RES.SERIAL_NUMBER SERIAL_NUM, decode(RES.SUPPLY_SOURCE_TYPE_ID, 5,'5=WIP DJ', RES.SUPPLY_SOURCE_TYPE_ID) SS_TYPE_ID, WIP.WIP_ENTITY_ID WIP_ID, WIP.WIP_ENTITY_NAME JOB_NAME, JOB.STATUS_TYPE_DISP JOB_STAT, RES.SUPPLY_SOURCE_HEADER_ID SS_HEADER_ID, RES.SUPPLY_SOURCE_LINE_DETAIL SS_SOURCE_LINE_DET, RES.SUPPLY_SOURCE_LINE_ID SS_SOURCE_LINE -- res.secondary_reservation_quantity sec_res_q, -- inv_convert.inv_um_convert( -- res.inventory_item_id, -- res.lot_number, -- res.organization_id, -- 5, -- res.primary_reservation_quantity, -- res.primary_uom_code, -- res.secondary_uom_code, -- null, -- null) calc_sec_res_q, -- res.secondary_uom_code uom2, -- res.secondary_detailed_quantity sec_dtl_q from MTL_RESERVATIONS RES, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM, WIP_ENTITIES WIP, WIP_DISCRETE_JOBS_V JOB where :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_TYPE_ID in (2,8,9,21,22) and RES.DEMAND_SOURCE_LINE_ID = LIN.LINE_ID(+) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and RES.ORGANIZATION_ID = ITM.ORGANIZATION_ID(+) and RES.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and RES.SUPPLY_SOURCE_HEADER_ID = WIP.WIP_ENTITY_ID(+) and WIP.WIP_ENTITY_ID = JOB.WIP_ENTITY_ID(+) order by NVL(LIN.TOP_MODEL_LINE_ID, LIN.LINE_ID), NVL(LIN.ATO_LINE_ID, LIN.LINE_ID), NVL(LIN.SORT_ORDER, '0000'), NVL(LIN.LINK_TO_LINE_ID, LIN.LINE_ID), NVL(LIN.SOURCE_DOCUMENT_LINE_ID, LIN.LINE_ID), LIN.LINE_ID, RES.RESERVATION_ID; begin for mtl in mtl_res loop utl_file.put_line(handle,'&sld'||n(mtl.RESERV_ID)||'&d'||n(mtl.SHIP_READY)||'&d'||n(mtl.DS_HEAD_ID)||'&d'); utl_file.put_line(handle,n(mtl.DS_LINE_ID)||'&d'||n(mtl.DS_DELIV)||'&d'||n(mtl.LINE)||'&d'); utl_file.put_line(handle,n(mtl.ITEM_ID)||'&d'||n(mtl.ITEM)||'&d'||n(mtl.RES_Q)||'&d'); utl_file.put_line(handle,n(mtl.DET_Q)||'&d'||n(mtl.UOM)||'&d'||n(mtl.REQUIRD_D)||'&d'); utl_file.put_line(handle,n(mtl.DS_TYPE)||'&d'||n(mtl.WH_ID)||'&d'||n(mtl.SUBINV)||'&d'); utl_file.put_line(handle,n(mtl.LOT)||'&d'||n(mtl.REV)||'&d'||n(mtl.LOC_ID)||'&d'); utl_file.put_line(handle,n(mtl.SERIAL_NUM)||'&d'||n(mtl.SS_TYPE_ID)||'&d'||n(mtl.WIP_ID)||'&d'); utl_file.put_line(handle,n(mtl.JOB_NAME)||'&d'||n(mtl.JOB_STAT)||'&d'||n(mtl.SS_HEADER_ID)||'&d'); utl_file.put_line(handle,n(mtl.SS_SOURCE_LINE_DET)||'&d'||n(mtl.SS_SOURCE_LINE)||'&el'); -- utl_file.put_line(handle,n(mtl.sec_res_q)||'&d'||n(mtl.calc_sec_res_q)||'&d'); -- utl_file.put_line(handle,n(mtl.uom2)||'&d'||n(mtl.sec_dtl_q)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_inv if substr(UPPER(nvl('&prt_wip','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f WIP_JOB_SCHEDULE_INTERFACE (WJS) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTERF_ID &dh SRC_LINE_ID &dh LINE &dh REQUEST_ID &dh GROUP_ID &dh SRC_CODE &dh PHS &dh STAT_TY &dh '); UTL_FILE.PUT_LINE(handle,'STAT &dh ORG &dh LOAD &dh ITEM_ID &dh WIP_SUP_TY &dh START_QTY &eh'); Declare cursor wip_sch_int is select WJS.INTERFACE_ID INTERF_ID, WJS.SOURCE_LINE_ID SRC_LINE_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, WJS.REQUEST_ID REQUEST_ID, WJS.GROUP_ID GROUP_ID, WJS.SOURCE_CODE SRC_CODE, WJS.PROCESS_PHASE PHS, WJS.STATUS_TYPE STAT_TY, WJS.PROCESS_STATUS STAT, WJS.ORGANIZATION_CODE ORG, WJS.LOAD_TYPE LOAD, WJS.PRIMARY_ITEM_ID ITEM_ID, WJS.WIP_SUPPLY_TYPE WIP_SUP_TY, WJS.START_QUANTITY START_QTY from WIP_JOB_SCHEDULE_INTERFACE WJS, OE_ORDER_LINES_ALL LIN where WJS.SOURCE_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for wip in wip_sch_int loop utl_file.put_line(handle,'&sld'||n(wip.INTERF_ID)||'&d'||n(wip.SRC_LINE_ID)||'&d'||n(wip.LINE)||'&d'); utl_file.put_line(handle,n(wip.REQUEST_ID)||'&d'||n(wip.GROUP_ID)||'&d'||n(wip.SRC_CODE)||'&d'); utl_file.put_line(handle,n(wip.PHS)||'&d'||n(wip.STAT_TY)||'&d'||n(wip.STAT)||'&d'); utl_file.put_line(handle,n(wip.ORG)||'&d'||n(wip.LOAD)||'&d'||n(wip.ITEM_ID)||'&d'); utl_file.put_line(handle,n(wip.WIP_SUP_TY)||'&d'||n(wip.START_QTY)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WIP_INTERFACE_ERRORS (WIE) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTERF_ID &dh LINE &dh ERROR_TYPE &dh ERROR &eh'); Declare cursor wip_int_err is select WIE.INTERFACE_ID INTERF_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, WIE.ERROR_TYPE ERROR_TYPE, WIE.ERROR ERROR_WIE from WIP_INTERFACE_ERRORS WIE, WIP_JOB_SCHEDULE_INTERFACE WJS, OE_ORDER_LINES_ALL LIN where WIE.INTERFACE_ID = WJS.INTERFACE_ID and WJS.SOURCE_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for wip in wip_int_err loop utl_file.put_line(handle,'&sld'||n(wip.INTERF_ID)||'&d'||n(wip.LINE)||'&d'); utl_file.put_line(handle,n(wip.ERROR_TYPE)||'&d'||n(wip.ERROR_WIE)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WIP_DISCRETE_JOBS (WIP) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WIP_ENT_ID &dh JOB_NAME &dh WH_ID &dh REQUEST_ID &dh LINE_ID &dh LINE &dh STATUS &dh PRY_ITEM_ID &dh '); UTL_FILE.PUT_LINE(handle,'ITEM &dh FIRM &dh JOB_TY &dh WIP_SUP_TYPE &dh SCH_STRT &dh SCH_CMPL &dh RLS_DATE &dh DUE_DATE &dh COMPL_DT &dh '); UTL_FILE.PUT_LINE(handle,'CLSD_DT &dh STRT_Q &dh COMP_Q &dh SCRP_Q &dh NET_Q &dh LINE_ID &eh'); Declare cursor wip_d_jobs is select WIP.WIP_ENTITY_ID WIP_ENT_ID, WIV.WIP_ENTITY_NAME JOB_NAME, WIP.ORGANIZATION_ID WH_ID, WIP.REQUEST_ID REQUEST_ID, WIP.SOURCE_LINE_ID LINE_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, WIV.STATUS_TYPE_DISP STATUS, WIP.PRIMARY_ITEM_ID PRY_ITEM_ID, ITM.SEGMENT1 ITEM, WIP.FIRM_PLANNED_FLAG FIRM, WIP.JOB_TYPE JOB_TY, WIV.WIP_SUPPLY_TYPE_DISP WIP_SUP_TYPE, WIP.SCHEDULED_START_DATE SCH_STRT, WIP.SCHEDULED_COMPLETION_DATE SCH_CMPL, WIP.DATE_RELEASED RLS_DATE, WIP.DUE_DATE DUE_DATE, WIP.DATE_COMPLETED COMPL_DT, WIP.DATE_CLOSED CLSD_DT, WIP.START_QUANTITY STRT_Q, WIP.QUANTITY_COMPLETED COMP_Q, WIP.QUANTITY_SCRAPPED SCRP_Q, WIP.NET_QUANTITY NET_Q, WIP.LINE_ID WIP_LINE_ID from WIP_DISCRETE_JOBS WIP, WIP_DISCRETE_JOBS_V WIV, MTL_SYSTEM_ITEMS_B ITM, OE_ORDER_LINES_ALL LIN where WIP.WIP_ENTITY_ID = WIV.WIP_ENTITY_ID and WIP.PRIMARY_ITEM_ID = ITM.INVENTORY_ITEM_ID and WIP.ORGANIZATION_ID = ITM.ORGANIZATION_ID and WIP.SOURCE_LINE_ID = LIN.LINE_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for wip in wip_d_jobs loop utl_file.put_line(handle,'&sld'||n(wip.WIP_ENT_ID)||'&d'||n(wip.JOB_NAME)||'&d'); utl_file.put_line(handle,n(wip.WH_ID)||'&d'||n(wip.REQUEST_ID)||'&d'); utl_file.put_line(handle,n(wip.LINE_ID)||'&d'||n(wip.LINE)||'&d'); utl_file.put_line(handle,n(wip.STATUS)||'&d'||n(wip.PRY_ITEM_ID)||'&d'); utl_file.put_line(handle,n(wip.ITEM)||'&d'||n(wip.FIRM)||'&d'); utl_file.put_line(handle,n(wip.JOB_TY)||'&d'||n(wip.WIP_SUP_TYPE)||'&d'); utl_file.put_line(handle,n(wip.SCH_STRT)||'&d'||n(wip.SCH_CMPL)||'&d'); utl_file.put_line(handle,n(wip.RLS_DATE)||'&d'||n(wip.DUE_DATE)||'&d'); utl_file.put_line(handle,n(wip.COMPL_DT)||'&d'||n(wip.CLSD_DT)||'&d'); utl_file.put_line(handle,n(wip.STRT_Q)||'&d'||n(wip.COMP_Q)||'&d'); utl_file.put_line(handle,n(wip.SCRP_Q)||'&d'||n(wip.NET_Q)||'&d'); utl_file.put_line(handle,n(wip.WIP_LINE_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f DISCRETE JOB TRANSACTIONS (DJT) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh JOB_NAME &dh LINE &dh ITEM_ID &dh ITEM &dh QTY &dh MTL_TRNS_ID &dh TRANS_TYPE &dh OP_SEQ &dh SERIAL &eh'); Declare cursor wip_job_trx is select WIE.wip_entity_name JOB_NAME, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, TRN.inventory_item_id ITEM_ID, ITM.segment1 ITEM, TRN.TRANSACTION_QUANTITY QTY, TRN.TRANSACTION_ID MTL_TRNS_ID, decode(TRN.TRANSACTION_TYPE_ID, 35, 'WIP Component Issue', 44, 'WIP Assy Completion', TRN.TRANSACTION_TYPE_ID) TRANS_TYPE, TRN.OPERATION_SEQ_NUM OP_SEQ, UNT.serial_number SERIAL from wip_discrete_jobs WIP, OE_ORDER_LINES_ALL LIN, wip_entities WIE, mtl_material_transactions TRN, mtl_system_items_b ITM, mtl_unit_transactions UNT where WIE.wip_entity_id = WIP.wip_entity_id and LIN.LINE_ID = WIP.source_line_id and TRN.transaction_source_id = WIP.wip_entity_id and TRN.transaction_source_type_id = 5 and TRN.inventory_item_id = ITM.inventory_item_id and TRN.organization_id = ITM.organization_id and TRN.transaction_id = UNT.transaction_id(+) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for wip in wip_job_trx loop utl_file.put_line(handle,'&sld'||n(wip.JOB_NAME)||'&d'||n(wip.LINE)||'&d'); utl_file.put_line(handle,n(wip.ITEM_ID)||'&d'||n(wip.ITEM)||'&d'); utl_file.put_line(handle,n(wip.QTY)||'&d'||n(wip.MTL_TRNS_ID)||'&d'); utl_file.put_line(handle,n(wip.TRANS_TYPE)||'&d'||n(wip.OP_SEQ)||'&d'); utl_file.put_line(handle,n(wip.SERIAL)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; -- prt_wip end if; -- :v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed If :v_head_only = 'N' then UTL_FILE.PUT_LINE(handle,'&f &f WSH_TRIPS (TRP) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh TRIP_ID &dh NAME &dh PLND &dh STATUS_CODE &dh VEH_NUM &dh CARR_ID &dh SHIP_METH &dh ROUTE_ID &dh VEH_ORG_ID &eh'); Declare cursor w_trips is select distinct TRP.TRIP_ID TRIP_ID, TRP.NAME NAME, TRP.PLANNED_FLAG PLND, TRP.STATUS_CODE STATUS_CODE, TRP.VEHICLE_NUMBER VEH_NUM, TRP.CARRIER_ID CARR_ID, TRP.SHIP_METHOD_CODE SHIP_METH, TRP.ROUTE_ID ROUTE_ID, TRP.VEHICLE_ORGANIZATION_ID VEH_ORG_ID FROM WSH_TRIPS TRP where TRIP_ID in (select distinct(STP.TRIP_ID) FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG WHERE DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID = LEG.PICK_UP_STOP_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) order by TRP.TRIP_ID; type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..30 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. XX.'; -- end if; for tt in w_trips loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,''||n(tt.TRIP_ID)||''||'&d'||n(tt.NAME)||'&d'); utl_file.put_line(handle,n(tt.PLND)||'&d'||n(tt.STATUS_CODE)||'&d'||n(tt.VEH_NUM)||'&d'||n(tt.CARR_ID)||'&d'); utl_file.put_line(handle,n(tt.SHIP_METH)||'&d'||n(tt.ROUTE_ID)||'&d'||n(tt.VEH_ORG_ID)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..30 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WSH_TRIP_STOPS (STP) &f '); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh STOP_ID &dh STOP_DESCRIPTION &dh TRIP_ID &dh TRIP_NAME &dh STOP_LOC_ID &dh STATUS &dh LOCK_ST_ID &dh '); UTL_FILE.PUT_LINE(handle,'PEND_INTERF &dh PLN_DEP_DATE &dh ACT_DEP_DATE &eh'); Declare cursor w_trip_stops is select distinct STP.STOP_ID STOP_ID, STP1.STOP_DESCRIPTION STOP_DESCRIPTION, STP.TRIP_ID TRIP_ID, TRP.NAME TRIP_NAME, STP.STOP_LOCATION_ID STOP_LOC_ID, STP.STATUS_CODE STATUS, STP.LOCK_STOP_ID LOCK_ST_ID, STP.PENDING_INTERFACE_FLAG PEND_INTERF, to_char(STP.PLANNED_DEPARTURE_DATE,'DD-MON-RR_HH24:MI:SS') PLN_DEP_DATE, to_char(STP.ACTUAL_DEPARTURE_DATE,'DD-MON-RR_HH24:MI:SS') ACT_DEP_DATE FROM WSH_TRIP_STOPS STP, WSH_SRS_TRIP_STOPS_V STP1, WSH_TRIPS TRP where STP.TRIP_ID = TRP.TRIP_ID(+) AND STP1.STOP_ID = STP.STOP_ID AND STP.STOP_ID in ( (select distinct(LEG.PICK_UP_STOP_ID) from OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_DELIVERY_ASSIGNMENTS ASG where DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) UNION (select distinct(LEG.DROP_OFF_STOP_ID) from OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_DELIVERY_ASSIGNMENTS ASG where DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) ) ); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..30 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. XX.'; -- end if; for ts in w_trip_stops loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,''||n(ts.STOP_ID)||''||'&d'||n(ts.STOP_DESCRIPTION)||'&d'); utl_file.put_line(handle,''||n(ts.TRIP_ID)||''||'&d'); utl_file.put_line(handle,n(ts.TRIP_NAME)||'&d'||''||n(ts.STOP_LOC_ID)||''||'&d'); utl_file.put_line(handle,n(ts.STATUS)||'&d'||n(ts.LOCK_ST_ID)||'&d'); utl_file.put_line(handle,n(ts.PEND_INTERF)||'&d'||n(ts.PLN_DEP_DATE)||'&d'||n(ts.ACT_DEP_DATE)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..30 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WSH_DELIVERY_LEGS (LEG) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh LEG_ID &dh SEQ_NUM &dh DELIVERY_ID &dh PICKUP_STOP_ID &dh DROPOFF_STOP_ID &eh'); Declare cursor w_del_leg is select distinct LEG.DELIVERY_LEG_ID LEG_ID, LEG.SEQUENCE_NUMBER SEQ_NUM, LEG.DELIVERY_ID DELIVERY_ID, LEG.PICK_UP_STOP_ID PICKUP_STOP_ID, LEG.DROP_OFF_STOP_ID DROPOFF_STOP_ID --LEG.LOAD_TENDER_STATUS LOAD_TENDER_STAT --ENABLE_TIMESTAMP ,to_char(LEG.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(LEG.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,LEG.REQUEST_ID REQUEST_ID FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, WSH_TRIPS TRP where DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID(+) = LEG.PICK_UP_STOP_ID AND STP.TRIP_ID = TRP.TRIP_ID AND LEG.DELIVERY_ID(+) = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by LEG.DELIVERY_LEG_ID; begin for wdl in w_del_leg loop utl_file.put_line(handle,'&sld'||n(wdl.LEG_ID)||'&d'||n(wdl.SEQ_NUM)||'&d'); utl_file.put_line(handle,n(wdl.DELIVERY_ID)||'&d'||n(wdl.PICKUP_STOP_ID)||'&d'); utl_file.put_line(handle,n(wdl.DROPOFF_STOP_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WSH_NEW_DELIVERIES (DEL) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh DELIVERY_ID &dh DEL_NAME &dh STATUS_CODE &dh WAYBILL &dh PLND &dh PICKUP_DT &dh PICKUP_LOC &dh'); UTL_FILE.PUT_LINE(handle,'DROPOFF_DT &dh DROPOFF_LOC &dh SHIP_METHOD_CODE &dh CONFIRM_DATE &eh'); Declare cursor w_deliveries is select distinct DEL.DELIVERY_ID DELIVERY_ID, DEL.NAME DEL_NAME, DEL.STATUS_CODE STATUS_CODE, DEL.WAYBILL WAYBILL, DEL.PLANNED_FLAG PLND, to_char(DEL.INITIAL_PICKUP_DATE,'DD-MON-RR_HH24:MI:SS') PICKUP_DT, DEL.INITIAL_PICKUP_LOCATION_ID PICKUP_LOC, to_char(DEL.ULTIMATE_DROPOFF_DATE,'DD-MON-RR_HH24:MI:SS') DROPOFF_DT, DEL.ULTIMATE_DROPOFF_LOCATION_ID DROPOFF_LOC, DEL.SHIP_METHOD_CODE SHP_METH, to_char(DEL.CONFIRM_DATE,'DD-MON-RR_HH24:MI:SS') CONF_DATE --DEL.BOOKING_NUMBER BOOKING_NUM, --DEL.ACCEPTANCE_FLAG ACCEPTED --ENABLE_TIMESTAMP ,to_char(DEL.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(DEL.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,DEL.REQUEST_ID REQUEST_ID FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_ASSIGNMENTS ASG where DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) order by Del.DELIVERY_ID; type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..30 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. XX.'; -- end if; for nd in w_deliveries loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,''||n(nd.DELIVERY_ID)||''||'&d'||n(nd.DEL_NAME)||'&d'); utl_file.put_line(handle,n(nd.STATUS_CODE)||'&d'||n(nd.WAYBILL)||'&d'||n(nd.PLND)||'&d'||n(nd.PICKUP_DT)||'&d'); utl_file.put_line(handle,''||n(nd.PICKUP_LOC)||''||'&d'); utl_file.put_line(handle,n(nd.DROPOFF_DT)||'&d'||n(nd.DROPOFF_LOC)||'&d'); utl_file.put_line(handle,n(nd.SHP_METH)||'&d'||n(nd.CONF_DATE)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..30 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WSH_DELIVERY_ASSIGNMENTS (ASG) &f '); UTL_FILE.PUT_LINE(handle,'&std &sh DEL_ASGN_ID &dh DELIVERY_ID &dh DEL_DETAIL_ID &dh PAR_DEL_ID &dh PAR_DETAIL_ID &eh '); Declare cursor w_del_asig is select distinct ASG.DELIVERY_ASSIGNMENT_ID DEL_ASGN_ID, ASG.DELIVERY_ID DELIVERY_ID, ASG.DELIVERY_DETAIL_ID DEL_DETAIL_ID, ASG.PARENT_DELIVERY_ID PAR_DEL_ID, ASG.PARENT_DELIVERY_DETAIL_ID PAR_DETAIL_ID -- ASG.ACTIVE_FLAG ACTIVE --ENABLE_TIMESTAMP ,to_char(ASG.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(ASG.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,ASG.REQUEST_ID REQUEST_ID FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_DELIVERY_ASSIGNMENTS ASG where ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for wda in w_del_asig loop utl_file.put_line(handle,'&sld'||n(wda.DEL_ASGN_ID)||'&d'||n(wda.DELIVERY_ID)||'&d'); utl_file.put_line(handle,n(wda.DEL_DETAIL_ID)||'&d'||n(wda.PAR_DEL_ID)||'&d'); utl_file.put_line(handle,n(wda.PAR_DETAIL_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f ORGANIZATIONS (ORG) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ORG_ID &dh ORGANIZATION CODE &dh WMS_ENABLED &dh OPM_ENABLED &dh NEGATIVE BAL_ALLOW '); UTL_FILE.PUT_LINE(handle,'&dh OTM INSTALLED &dh OTM ENABLED '); UTL_FILE.PUT_LINE(handle,'&dh PRIMARY COST_METH &dh COST ORG_ID &dh MASTER ORG_ID &dh DEFAULT COST_GRP &dh PROJECT REF_ENABLED '); UTL_FILE.PUT_LINE(handle,'&dh COST CUT_DATE &dh EAM ENABLED &dh ENCUMBR REVERSAL &eh '); Declare cursor l_orgs is SELECT distinct mp.organization_id org_id, mp.organization_code org, decode(mp.primary_cost_method, 1, 'Standard', 2, 'Average', 5, 'FIFO', 6, 'LIFO') PCM, decode(mp.wms_enabled_flag, 'Y', 'Yes', 'N', 'No') WMS, decode(mp.NEGATIVE_INV_RECEIPT_CODE, 1, 'Yes', 2, 'No') neg_bal, mp.cost_organization_id c_org, mp.master_organization_id m_org, mp.default_cost_group_id dcg, decode(mp.project_reference_enabled, 1, 'Yes', 2, 'No') PRE, to_char(mp.cost_cutoff_date,'dd-mon-rrrr') ccd, decode(mp.eam_enabled_flag, 'Y','Yes', 'N','No') EAM, decode (mp.encumbrance_reversal_flag, 1, 'Yes', 2, 'No') ENC, decode(NVL(FND_PROFILE.VALUE('WSH_OTM_INSTALLED'), 'N'), 'Y', 'Yes', 'N', 'No') OTM_INST, decode(NVL(wsp.otm_enabled,'N'), 'Y', 'Yes', 'N', 'No') OTM_ENAB FROM MTL_PARAMETERS MP, WSH_DELIVERY_DETAILS DET, WSH_SHIPPING_PARAMETERS WSP where DET.SOURCE_CODE = 'OE' and MP.ORGANIZATION_ID = DET.ORGANIZATION_ID and WSP.ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin for orgi in l_orgs loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(orgi.org_id)||' &d '); utl_file.put_line(handle,n(orgi.org)||' &d '||n(orgi.WMS)||' &d '); if INV_GMI_RSV_BRANCH.PROCESS_BRANCH(orgi.org_id) then utl_file.put_line(handle,'Yes '); :is_opm := 'Y'; else utl_file.put_line(handle,'No '); :is_opm := 'N'; end if; utl_file.put_line(handle,' &d '||n(orgi.neg_bal)||' &d '); utl_file.put_line(handle,n(orgi.OTM_INST)||' &d '||n(orgi.OTM_ENAB)||' &d '); utl_file.put_line(handle,n(orgi.PCM)||' &d '); utl_file.put_line(handle,n(orgi.c_org)||' &d '||n(orgi.m_org)||' &d '); utl_file.put_line(handle,n(orgi.dcg)||' &d '||n(orgi.PRE)||' &d '); utl_file.put_line(handle,n(orgi.ccd)||' &d '||n(orgi.EAM)||' &d '); utl_file.put_line(handle,n(orgi.ENC)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f ACCOUNTING PERIODS (ACC) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ORG_ID &dh ORGANIZATION CODE &dh PLANNED_DEPART_DT (Shipped Line) &dh '); UTL_FILE.PUT_LINE(handle,'SCHEDULE_SHIP_DT (Not Shipped Line) &dh ACCOUNT PERIOD_ID &dh PERIOD NAME '); UTL_FILE.PUT_LINE(handle,'&dh OPEN FLAG &dh PERIOD START_DT &dh PERIOD CLOSE_DT &dh SCHEDULE CLOSE_DT &eh '); Declare cursor l_orgs is SELECT distinct mp.organization_id org_id, mp.organization_code org, to_char(STP.PLANNED_DEPARTURE_DATE,'DD-MON-RR_HH24:MI:SS') plan_dep_date, '' schdate, oac.acct_period_id acc_per_id, oac.period_name per_name, oac.open_flag open_fl, to_char(oac.period_start_date,'DD-MON-RR_HH24:MI:SS') per_sd, to_char(oac.period_close_date,'DD-MON-RR_HH24:MI:SS') per_cd, to_char(oac.schedule_close_date,'DD-MON-RR_HH24:MI:SS') sch_cd FROM MTL_PARAMETERS MP, ORG_ACCT_PERIODS OAC, WSH_DELIVERY_DETAILS DET, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, WSH_TRIPS TRP where DET.RELEASED_STATUS = 'C' and ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID and STP.STOP_ID(+) = LEG.PICK_UP_STOP_ID and STP.TRIP_ID = TRP.TRIP_ID(+) and LEG.DELIVERY_ID(+) = ASG.DELIVERY_ID and DET.SOURCE_CODE = 'OE' and MP.ORGANIZATION_ID = OAC.ORGANIZATION_ID and MP.ORGANIZATION_ID = DET.ORGANIZATION_ID and STP.PLANNED_DEPARTURE_DATE BETWEEN OAC.PERIOD_START_DATE and NVL(OAC.PERIOD_CLOSE_DATE,OAC.SCHEDULE_CLOSE_DATE) and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id) union SELECT distinct mp.organization_id org_id, mp.organization_code org, '' plan_dep_date, to_char(LIN.SCHEDULE_SHIP_DATE,'DD-MON-RR_HH24:MI:SS') schdate, oac.acct_period_id acc_per_id, oac.period_name per_name, oac.open_flag open_fl, to_char(oac.period_start_date,'DD-MON-RR_HH24:MI:SS') per_sd, to_char(oac.period_close_date,'DD-MON-RR_HH24:MI:SS') per_cd, to_char(oac.schedule_close_date,'DD-MON-RR_HH24:MI:SS') sch_cd FROM MTL_PARAMETERS MP, ORG_ACCT_PERIODS OAC, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN where DET.RELEASED_STATUS <> 'C' and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and MP.ORGANIZATION_ID = OAC.ORGANIZATION_ID and MP.ORGANIZATION_ID = DET.ORGANIZATION_ID and LIN.SCHEDULE_SHIP_DATE BETWEEN OAC.PERIOD_START_DATE and NVL(OAC.PERIOD_CLOSE_DATE,OAC.SCHEDULE_CLOSE_DATE) and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin for orgi in l_orgs loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(orgi.org_id)||' &d '); utl_file.put_line(handle,n(orgi.org)||' &d '||n(orgi.plan_dep_date)||' &d '); utl_file.put_line(handle,n(orgi.schdate)||' &d '||n(orgi.acc_per_id)||' &d '); utl_file.put_line(handle,n(orgi.per_name)||' &d '||n(orgi.open_fl)||' &d '); utl_file.put_line(handle,n(orgi.per_sd)||' &d '||n(orgi.per_cd)||' &d '); utl_file.put_line(handle,n(orgi.sch_cd)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WSH_DELIVERY_DETAILS (DET) Column Definitions &f'); Declare cursor w_del_details is select distinct DET.DELIVERY_DETAIL_ID DEL_DET_ID, DET.RELEASED_STATUS REL_STATUS_C, decode(DET.RELEASED_STATUS, 'Y','Y=Staged', 'R','R=Ready to Release', 'S','S=Rel to Warhouse', 'B','B=Backorder', 'P','P=Pending Inv', 'C','C=Shipped', 'N','N=Not Ready', 'D','D=Cancelled', 'X','X=Not Applicable','Unknown: '||DET.RELEASED_STATUS) REL_STATUS, DET.MOVE_ORDER_LINE_ID MO_LINE_ID, ASG.DELIVERY_ID DELIV_ID, TRP.TRIP_ID TRIP_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, DET.SOURCE_LINE_ID LINE_ID, DET.INVENTORY_ITEM_ID ITEM_ID, ITM.SEGMENT1 ITEM, nvl(DET.SRC_REQUESTED_QUANTITY,0) SRQ_Q, DET.SRC_REQUESTED_QUANTITY_UOM SRQ_U, nvl(DET.SRC_REQUESTED_QUANTITY2,0) SRQ_Q2, DET.SRC_REQUESTED_QUANTITY_UOM2 SRQ_U2, nvl(DET.REQUESTED_QUANTITY,0) REQ_Q, DET.REQUESTED_QUANTITY_UOM REQ_U, nvl(DET.REQUESTED_QUANTITY2,0) REQ_Q2, DET.REQUESTED_QUANTITY_UOM2 REQ_U2, nvl(DET.SHIPPED_QUANTITY,0) SHP_Q, nvl(DET.SHIPPED_QUANTITY2,0) SHP_Q2, nvl(DET.DELIVERED_QUANTITY,0) DLV_Q, nvl(DET.DELIVERED_QUANTITY2,0) DLV_Q2, nvl(DET.CANCELLED_QUANTITY,0) CAN_Q, nvl(DET.CANCELLED_QUANTITY2,0) CAN_Q2, nvl(DET.INV_INTERFACED_FLAG,'N') INI, nvl(DET.OE_INTERFACED_FLAG,'N') OMI, DET.SHIP_TOLERANCE_ABOVE STA, DET.SHIP_TOLERANCE_BELOW STB, DET.SHIP_FROM_LOCATION_ID SH_FROM_ID, DET.SHIP_TO_LOCATION_ID SH_TO_ID, -- DET.MVT_STAT_STATUS MVT_STATUS, DET.ORGANIZATION_ID WH_ID, DET.SUBINVENTORY CUR_SUB, DET.ATTRIBUTE15 ORG_SUB, DET.REVISION REV, DET.LOT_NUMBER LOT, DET.SERIAL_NUMBER SERIAL, DET.LOCATOR_ID LOC_ID, DET.SHIP_METHOD_CODE SHIP_METH, -- DET.MOVEMENT_ID MVMT_ID, DET.SPLIT_FROM_DELIVERY_DETAIL_ID SPL_DEL_DET_ID, DET.PICKABLE_FLAG PICKABLE_FLAG, nvl(DET.PICKED_QUANTITY,0) PICKED_QUANTITY, nvl(DET.PICKED_QUANTITY2,0) PICKED_QUANTITY2, DET.SHIP_SET_ID SHIP_SET_ID, DET.SHIP_MODEL_COMPLETE_FLAG SHIP_MODEL_COMPLETE_FLAG, DET.TRANSACTION_TEMP_ID TRX_TEMP_ID, DET.TOP_MODEL_LINE_ID TOP_MO_LIN, DET.SOURCE_LINE_SET_ID SRC_LIN_SET, to_char(DET.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') cre_date, DET.sublot_number slotno, DET.CYCLE_COUNT_QUANTITY2 cycle_qty, DET.QUALITY_CONTROL_QUANTITY QC_qty, DET.QUALITY_CONTROL_QUANTITY2 QC_qty2, DET.SCHEDULED_QUANTITY2 sch_qty2, to_char(DET.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') upd_date, DET.BATCH_ID BATCH FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, MTL_SYSTEM_ITEMS ITM, WSH_DELIVERY_ASSIGNMENTS ASG, WSH_TRIPS TRP where DEL.DELIVERY_ID(+) = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID(+) = LEG.PICK_UP_STOP_ID AND STP.TRIP_ID = TRP.TRIP_ID(+) AND LEG.DELIVERY_ID(+) = DEL.DELIVERY_ID AND LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) AND LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) AND DET.SOURCE_CODE = 'OE' AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) Order by DET.SOURCE_LINE_ID, DET.DELIVERY_DETAIL_ID; r_uom_lin varchar2(10); r_qshp_lin number; r_sta_lin varchar2(100); r_mtl_trn varchar2(100); r_mtl_res number; c_lines number; type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; procedure prt_head is begin UTL_FILE.PUT_LINE(handle,'&sh WARNING &dh DELIVERY DETAIL_ID &dh RELEASE STATUS &dh INI &dh OMI &dh MOVE_ORDER LINE_ID &dh '); UTL_FILE.PUT_LINE(handle,'DELIVERY ID &dh TRIP_ID &dh LINE &dh LINE_ID &dh ITEM_ID &dh ITEM &dh SOURCE REQ_QTY &dh '); UTL_FILE.PUT_LINE(handle,'SOURCE REQ_UOM &dh REQUEST QTY &dh REQUEST UOM &dh PICKED QTY &dh SHIPPED QTY &dh '); UTL_FILE.PUT_LINE(handle,'DELIVER QTY &dh CANCEL QTY &dh PICKABLE FLAG &dh MTL_TRANS ENABLED &dh STA &dh STB &dh BATCH_ID &dh SHIP FROM_ID &dh '); UTL_FILE.PUT_LINE(handle,'SHIP TO_ID &dh WH_ID &dh CURRENT SUBINV &dh ORG SUBINV &dh REV &dh LOT &dh SERIAL &dh '); UTL_FILE.PUT_LINE(handle,'TRANSAC TEMP_ID &dh LOCATOR ID &dh SHIP METHOD &dh CREATE DATE &dh SPLIT_FROM DEL_DET_ID &dh '); UTL_FILE.PUT_LINE(handle,'SHIP SET &dh SHIP MOD_CMP &dh TOP_MODEL LINE_ID &dh SOURCE LINE_SET &dh DISCRETE SRC_REQ_QTY &dh '); UTL_FILE.PUT_LINE(handle,'DISCRETE SRC_REQ_UOM &dh DISCRETE REQ_QTY &dh DISCRETE REQ_UOM &dh DISCRETE PICK_QTY &dh '); UTL_FILE.PUT_LINE(handle,'DISCRETE SHP_QTY &dh DISCRETE DEL_QTY &dh DISCRETE CANC_QTY &dh '); UTL_FILE.PUT_LINE(handle,'CYCLE COUNT_QTY &dh QUALITY CTRL_QTY &dh '); UTL_FILE.PUT_LINE(handle,'QUALITY CTRL_QTY2 &dh DISCRETE SCHD_QTY &dh SUBLOT NUMBER &dh LAST UPDATE_DATE &eh'); end; begin :r_error := 0; c_lines := 51; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..35 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. Source Requested Quantity is less than Shipped Quantity.'; msg(10).descrip := ' 10. Pickable_Flag on Delivery Detail does Not Match with Mtl_Transactions_Enabled_Flag on Mtl_System_Items.'; msg(20).descrip := ' 20. Delivery Detail have no Order Lines Associated.'; msg(21).descrip := ' 21. Order Line associated to this Delivery Detail have INVALID status.'; msg(24).descrip := ' 24. Delivery Detail have invalid RELEASED status.'; msg(25).descrip := ' 25. Delivery Detail has NOT been Shipped but has been INTERFACED to OM or INV.'; msg(26).descrip := ' 26. Delivery Detail has NOT been Shipped but associated Order Line shows Shipped Quantity.'; msg(27).descrip := ' 27. Delivery Detail has NOT been Shipped but associated Order Line is Not on AWAITING SHIPPING status.'; msg(28).descrip := ' 28. Delivery Detail has been Shipped, NOT OM Interfaced but associated Order Line Shipped Qty has been updated.'; msg(29).descrip := ' 29. Delivery Detail has been Shipped, NOT OM Interfaced but associated Order Line is Not on AWAITING SHIPPING status.'; msg(30).descrip := ' 30. Delivery Detail has been Shipped and OM Interfaced but associated Order Line Shipped Qty has NOT been updated.'; msg(31).descrip := ' 31. Delivery Detail has been Shipped and OM Interfaced but associated Order Line still on AWAITING SHIPPING status.'; msg(32).descrip := ' 32. Delivery Detail has been Shipped and OM interfaced, Shipped Qty on order_line does not match Delivery Detail Shp Qty (maybe a Split line).'; msg(33).descrip := ' 33. Delivery Detail is Cancelled but has been INTERFACED to OM or INV.'; -- end if; for dd in w_del_details loop :r_flag := ''; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- Check Pickable_flag against mtl_system_items.mtl_transactions_enabled_flag Select nvl(mtl_transactions_enabled_flag,'N') into r_mtl_trn from Mtl_System_items where Inventory_item_Id = dd.ITEM_ID and Organization_Id = dd.WH_ID; if dd.PICKABLE_FLAG <> r_mtl_trn then :r_flag := :r_flag || '10 '; msg(10).flag := '1'; end if; begin select ORDER_QUANTITY_UOM, nvl(SHIPPED_QUANTITY,0), substr(FLOW_STATUS_CODE,1,22) into r_uom_lin, r_qshp_lin, r_sta_lin from oe_order_lines_all where line_id = dd.LINE_ID; exception when no_data_found then :r_flag := :r_flag || '20 '; msg(20).flag := '1'; end; --- -- Basic Verification -- If (dd.SRQ_Q*(100+nvl(dd.STA,0))/100 < dd.SHP_Q) AND (dd.SRQ_U = dd.REQ_U) then :r_flag := :r_flag || '1 '; msg(1).flag := '1'; end if; if dd.REL_STATUS_C not in ('Y','R','S','B','P','C','N','D','X') then -- invalid Released status :r_flag := :r_flag || '24 '; msg(24).flag := '1'; end if; if dd.REL_STATUS_C not in ('C','D') -- not shipped or cancelled and (dd.INI not in ( 'N','X') or dd.OMI <> 'N') then -- but interfaced INV or OM :r_flag := :r_flag || '25 '; msg(25).flag := '1'; end if; if dd.REL_STATUS_C not in ('C','D') -- not shipped nor cancelled and dd.OMI = 'N' and r_qshp_lin > 0 then -- not OM interfaced but Shipped qty on order line has been updated :r_flag := :r_flag || '26 '; msg(26).flag := '1'; end if; if dd.REL_STATUS_C not in ('C','D') -- not shipped nor cancelled and dd.OMI = 'N' and r_sta_lin <> 'AWAITING_SHIPPING' then -- not OM interfaced but order line is not Awaiting Shipping :r_flag := :r_flag || '27 '; msg(27).flag := '1'; end if; -- Verifications for Shipped Delivery Details if dd.REL_STATUS_C = 'C' then if dd.OMI = 'N' and r_qshp_lin > 0 then -- Shipped, not OM interfaced but order lines Qty has been updated :r_flag := :r_flag || '28 '; msg(28).flag := '1'; end if; if dd.OMI = 'N' and r_sta_lin <> 'AWAITING_SHIPPING' then -- Shipped, not OM interfaced but order line not on Awaiting Shipping :r_flag := :r_flag || '29 '; msg(29).flag := '1'; end if; if dd.OMI = 'Y' and r_qshp_lin = 0 then -- Shipped and OM interfaced, order_line shipped Qty not updated :r_flag := :r_flag || '30 '; msg(30).flag := '1'; end if; if dd.OMI = 'Y' and r_sta_lin = 'AWAITING_SHIPPING' then -- Shipped and OM interfaced, order_line status not updated :r_flag := :r_flag || '31 '; msg(31).flag := '1'; end if; if dd.OMI = 'Y' and r_uom_lin = dd.REQ_U -- same UOM, no conversion and r_qshp_lin <> dd.SHP_Q then -- Shipped and OM interfaced, Shipped Qty on order_line does not match Delivery Detail Shp Qty :r_flag := :r_flag || '32 '; msg(32).flag := '1'; end if; end if; -- Shipped Del.Detail -- Verifications for Cancelled Delivery Details if dd.REL_STATUS_C = 'D' then if (dd.INI = 'Y' or dd.OMI = 'Y') then -- Delivery Detail has been cancelled but INV or OM flags are set to Y :r_flag := :r_flag || '33 '; msg(33).flag := '1'; end if; end if; -- Cancelled Del.Detail end if; -- do_analysis --- if c_lines >= 35 then if c_lines = 51 then UTL_FILE.PUT_LINE(handle,'&std '); end if; c_lines := 1; prt_head; else c_lines := c_lines + 1; end if; -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,''||n(dd.DEL_DET_ID)||' &d'); utl_file.put_line(handle,n(dd.REL_STATUS)||'&d'); utl_file.put_line(handle,n(dd.INI)||'&d'||n(dd.OMI)||'&d'); utl_file.put_line(handle,''||n(dd.MO_LINE_ID)||''||'&d'); utl_file.put_line(handle,''||n(dd.DELIV_ID)||''||'&d'); utl_file.put_line(handle,''||n(dd.TRIP_ID)||''||'&d'||n(dd.LINE)||'&d'); utl_file.put_line(handle,''||n(dd.LINE_ID)||' &d'); utl_file.put_line(handle,n(dd.ITEM_ID)||'&d'||n(dd.ITEM)||'&d'); utl_file.put_line(handle,n(dd.SRQ_Q)||'&d'||n(dd.SRQ_U)||'&d'); utl_file.put_line(handle,n(dd.REQ_Q)||'&d'||n(dd.REQ_U)||'&d'); utl_file.put_line(handle,n(dd.PICKED_QUANTITY)||'&d'||n(dd.SHP_Q)||'&d'); utl_file.put_line(handle,n(dd.DLV_Q)||'&d'||n(dd.CAN_Q)||'&d'); utl_file.put_line(handle,n(dd.PICKABLE_FLAG)||'&d'||n(r_mtl_trn)||'&d'); utl_file.put_line(handle,n(dd.STA)||'&d'||n(dd.STB)||'&d'); utl_file.put_line(handle,n(dd.BATCH)||'&d'); utl_file.put_line(handle,n(dd.SH_FROM_ID)||'&d'||n(dd.SH_TO_ID)||'&d'); utl_file.put_line(handle,n(dd.WH_ID)||'&d'||n(dd.CUR_SUB)||'&d'); utl_file.put_line(handle,n(dd.ORG_SUB)||'&d'||n(dd.REV)||'&d'); utl_file.put_line(handle,n(dd.LOT)||'&d'||n(dd.SERIAL)||'&d'); utl_file.put_line(handle,n(dd.TRX_TEMP_ID)||'&d'); utl_file.put_line(handle,n(dd.LOC_ID)||'&d'||n(dd.SHIP_METH)||'&d'); utl_file.put_line(handle,n(dd.CRE_DATE)||'&d'); utl_file.put_line(handle,n(dd.SPL_DEL_DET_ID)||'&d'); utl_file.put_line(handle,n(dd.SHIP_SET_ID)||'&d'||n(dd.SHIP_MODEL_COMPLETE_FLAG)||'&d'); utl_file.put_line(handle,n(dd.TOP_MO_LIN)||'&d'||n(dd.SRC_LIN_SET)||'&d'); utl_file.put_line(handle,n(dd.SRQ_Q2)||'&d'||n(dd.SRQ_U2)||'&d'); utl_file.put_line(handle,n(dd.REQ_Q2)||'&d'||n(dd.REQ_U2)||'&d'); utl_file.put_line(handle,n(dd.PICKED_QUANTITY2)||'&d'||n(dd.SHP_Q2)||'&d'); utl_file.put_line(handle,n(dd.DLV_Q2)||'&d'||n(dd.CAN_Q2)||'&d'); utl_file.put_line(handle,n(dd.cycle_qty)||'&d'); utl_file.put_line(handle,n(dd.QC_qty)||'&d'||n(dd.QC_qty2)||'&d'); utl_file.put_line(handle,n(dd.sch_qty2)||'&d'); utl_file.put_line(handle,n(dd.slotno)||'&d'||n(dd.upd_date)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; if c_lines = 51 then -- no records selected UTL_FILE.PUT_LINE(handle,'&std '); prt_head; end if; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warnings List: &eb &f'); for i in 1..35 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WSH_DELIVERY_DETAILS (CONTAINERS) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh DEL_DET_ID &dh REL_STATUS &dh DELIV_ID &dh TRIP_ID &dh ITEM_ID &dh ITEM &dh CF &dh CONT_NAME &dh CONT_TYPE &dh '); UTL_FILE.PUT_LINE(handle,'FL_PER &dh GRS_WT &dh NET_WT &dh WT_UOM &dh VOL &dh VOL_UOM &dh SRQ_Q &dh REQ_Q &dh SHP_Q &dh DLV_Q &dh CAN_Q &dh '); UTL_FILE.PUT_LINE(handle,'INI &dh OMI &dh SH_FROM_ID &dh SH_TO_ID &dh WH_ID &dh SHIP_METH &dh CREATE_D &dh FOB_CODE &dh FRT_TERMS &dh'); UTL_FILE.PUT_LINE(handle,'SPL_DEL_DET_ID &dh LPN_ID &eh'); Declare cursor w_del_det_c is select distinct DET.DELIVERY_DETAIL_ID DEL_DET_ID, decode(DET.RELEASED_STATUS, 'Y','Y=Staged', 'R','R=Ready to Relese', 'S','S=Rel to Warhouse', 'B','B=Backorder', 'P','P=Pending Inv', 'C','C=Shipped', 'N','N=Not Ready', 'D','D=Cancelled', 'X','X=Not Applicable','Unknown: '||DET.RELEASED_STATUS) REL_STATUS, ASG.DELIVERY_ID DELIV_ID, TRP.TRIP_ID TRIP_ID, DET.INVENTORY_ITEM_ID ITEM_ID, ITM.SEGMENT1 ITEM, DET.CONTAINER_FLAG CF, DET.CONTAINER_NAME CONT_NAME, DET.CONTAINER_TYPE_CODE CONT_TYPE, DET.FILL_PERCENT FL_PER, DET.GROSS_WEIGHT GRS_WT, DET.NET_WEIGHT NET_WT, DET.WEIGHT_UOM_CODE WT_UOM, DET.VOLUME VOL, DET.VOLUME_UOM_CODE VOL_UOM, nvl(DET.SRC_REQUESTED_QUANTITY,0) SRQ_Q, nvl(DET.REQUESTED_QUANTITY,0) REQ_Q, nvl(DET.SHIPPED_QUANTITY,0) SHP_Q, nvl(DET.DELIVERED_QUANTITY,0) DLV_Q, nvl(DET.CANCELLED_QUANTITY,0) CAN_Q, nvl(DET.INV_INTERFACED_FLAG,'N') INI, nvl(DET.OE_INTERFACED_FLAG,'N') OMI, DET.SHIP_FROM_LOCATION_ID SH_FROM_ID, DET.SHIP_TO_LOCATION_ID SH_TO_ID, DET.ORGANIZATION_ID WH_ID, DET.SHIP_METHOD_CODE SHIP_METH, to_char(DET.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CRE_DT, DET.FOB_CODE FOB_CODE, DET.FREIGHT_TERMS_CODE FRT_TERMS, --DET.MOVEMENT_ID MVMT_ID, DET.SPLIT_FROM_DELIVERY_DETAIL_ID SPL_DEL_DET_ID, DET.LPN_ID LPN_ID --ENABLE_TIMESTAMP ,DET.ORG_ID DEL_ORG_ID --ENABLE_TIMESTAMP ,to_char(DET.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(DET.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,DET.REQUEST_ID REQUEST_ID FROM --OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, --WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, MTL_SYSTEM_ITEMS ITM, WSH_DELIVERY_ASSIGNMENTS ASG, WSH_TRIPS TRP where --DEL.DELIVERY_ID(+) = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.ORGANIZATION_ID = ITM.ORGANIZATION_ID(+) AND DET.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) AND --DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID(+) = LEG.PICK_UP_STOP_ID AND STP.TRIP_ID = TRP.TRIP_ID(+) AND LEG.DELIVERY_ID(+) = ASG.DELIVERY_ID AND --LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) AND --LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) AND DET.SOURCE_CODE = 'WSH' AND ASG.DELIVERY_ID IN (select ASG1.DELIVERY_ID from WSH_DELIVERY_ASSIGNMENTS ASG1, WSH_DELIVERY_DETAILS DET1, OE_ORDER_LINES_ALL LIN1 where DET1.SOURCE_LINE_ID = LIN1.LINE_ID AND DET1.DELIVERY_DETAIL_ID = ASG1.DELIVERY_DETAIL_ID AND DET1.SOURCE_CODE = 'OE' AND LIN1.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN1.LINE_ID, LIN1.TOP_MODEL_LINE_ID, LIN1.ATO_LINE_ID, LIN1.LINK_TO_LINE_ID, LIN1.REFERENCE_LINE_ID, LIN1.SERVICE_REFERENCE_LINE_ID)); begin for wddc in w_del_det_c loop utl_file.put_line(handle,'&sld'||n(wddc.DEL_DET_ID)||'&d'||n(wddc.REL_STATUS)||'&d'); utl_file.put_line(handle,n(wddc.DELIV_ID)||'&d'||n(wddc.TRIP_ID)||'&d'); utl_file.put_line(handle,n(wddc.ITEM_ID)||'&d'||n(wddc.ITEM)||'&d'); utl_file.put_line(handle,n(wddc.CF)||'&d'||n(wddc.CONT_NAME)||'&d'); utl_file.put_line(handle,n(wddc.CONT_TYPE)||'&d'||n(wddc.FL_PER)||'&d'); utl_file.put_line(handle,n(wddc.GRS_WT)||'&d'||n(wddc.NET_WT)||'&d'); utl_file.put_line(handle,n(wddc.WT_UOM)||'&d'||n(wddc.VOL)||'&d'); utl_file.put_line(handle,n(wddc.VOL_UOM)||'&d'||n(wddc.SRQ_Q)||'&d'); utl_file.put_line(handle,n(wddc.REQ_Q)||'&d'||n(wddc.SHP_Q)||'&d'); utl_file.put_line(handle,n(wddc.DLV_Q)||'&d'||n(wddc.CAN_Q)||'&d'); utl_file.put_line(handle,n(wddc.INI)||'&d'||n(wddc.OMI)||'&d'); utl_file.put_line(handle,n(wddc.SH_FROM_ID)||'&d'||n(wddc.SH_TO_ID)||'&d'); utl_file.put_line(handle,n(wddc.WH_ID)||'&d'||n(wddc.SHIP_METH)||'&d'); utl_file.put_line(handle,n(wddc.CRE_DT)||'&d'||n(wddc.FOB_CODE)||'&d'); utl_file.put_line(handle,n(wddc.FRT_TERMS)||'&d'||n(wddc.SPL_DEL_DET_ID)||'&d'); utl_file.put_line(handle,n(wddc.LPN_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f WSH_SERIAL_NUMBERS (WSN) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ERR_FLAG &dh DEL_DET_ID &dh REL_STATUS &dh LINE &dh LINE_ID &dh ITEM_ID &dh SRQ_Q &dh SRQ_U &dh REQ_Q &dh'); UTL_FILE.PUT_LINE(handle,'REQ_U &dh PIK_Q &dh SHP_Q &dh DLV_Q &dh CAN_Q &dh INI &dh OMI &dh STA &dh STB &dh WH_ID &dh CUR_SUB &dh'); UTL_FILE.PUT_LINE(handle,'ORG_SUB &dh REV &dh LOT &dh SERIAL &dh LOC_ID &dh SPL_DEL_DET_ID &dh FROM_SERIAL &dh TO_SERIAL &dh SERIAL_QTY &dh '); UTL_FILE.PUT_LINE(handle,'CREATION_DATE &eh'); Declare cursor w_serial_n is select distinct DET.DELIVERY_DETAIL_ID DEL_DET_ID, DET.RELEASED_STATUS REL_STATUS_C, decode(DET.RELEASED_STATUS, 'Y','Y=Staged', 'R','R=Ready to Release', 'S','S=Rel to Warhouse', 'B','B=Backorder', 'P','P=Pending Inv', 'C','C=Shipped', 'N','N=Not Ready', 'D','D=Cancelled', 'X','X=Not Applicable','Unknown: '||DET.RELEASED_STATUS) REL_STATUS, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, DET.SOURCE_LINE_ID LINE_ID, DET.INVENTORY_ITEM_ID ITEM_ID, nvl(DET.SRC_REQUESTED_QUANTITY,0) SRQ_Q, SRC_REQUESTED_QUANTITY_UOM SRQ_U, nvl(DET.REQUESTED_QUANTITY,0) REQ_Q, SRC_REQUESTED_QUANTITY_UOM REQ_U, nvl(DET.SHIPPED_QUANTITY,0) SHP_Q, nvl(DET.DELIVERED_QUANTITY,0) DLV_Q, nvl(DET.CANCELLED_QUANTITY,0) CAN_Q, nvl(DET.INV_INTERFACED_FLAG,'N') INI, nvl(DET.OE_INTERFACED_FLAG,'N') OMI, DET.SHIP_TOLERANCE_ABOVE STA, DET.SHIP_TOLERANCE_BELOW STB, DET.ORGANIZATION_ID WH_ID, DET.SUBINVENTORY CUR_SUB, DET.ATTRIBUTE15 ORG_SUB, DET.REVISION REV, DET.LOT_NUMBER LOT, DET.SERIAL_NUMBER SERIAL, DET.LOCATOR_ID LOC_ID, DET.SPLIT_FROM_DELIVERY_DETAIL_ID SPL_DEL_DET_ID, DET.PICKED_QUANTITY PICKED_QUANTITY, substr(wsn.fm_serial_number,1,15) FROM_SERIAL, substr(wsn.to_serial_number,1,15) TO_SERIAL, wsn.quantity WSN_QTY, to_char(wsn.creation_date,'DD-MON-RR_HH24:MI:SS') WSN_CRE_DATE FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_SERIAL_NUMBERS WSN where DET.DELIVERY_DETAIL_ID = WSN.DELIVERY_DETAIL_ID and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (substr(UPPER(nvl('&det_cnt','Y')),1,1) = 'Y' or rownum <= 10); r_uom_lin varchar2(10); r_qshp_lin number; r_sta_lin varchar2(100); r_mtl_trn varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..1 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. No verifications yet.'; -- end if; for dd in w_serial_n loop :r_flag := ''; -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- Include verifications here -- Select nvl(mtl_transactions_enabled_flag,'N') -- into r_mtl_trn -- from Mtl_System_items -- where Inventory_item_Id = dd.ITEM_ID -- and Organization_Id = dd.WH_ID; -- if dd.PICKABLE_FLAG <> r_mtl_trn then -- :r_flag := :r_flag || '1 '; -- msg(1).flag := '1'; -- end if; -- end if; -- do_analysis --- -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d '); utl_file.put_line(handle,n(dd.DEL_DET_ID)||' &d '); utl_file.put_line(handle,n(dd.REL_STATUS)||' &d '||n(dd.LINE)||' &d '); utl_file.put_line(handle,''||n(dd.LINE_ID)||' &d '); utl_file.put_line(handle,n(dd.ITEM_ID)||' &d'); utl_file.put_line(handle,n(dd.SRQ_Q)||'&d'||n(dd.SRQ_U)||' &d '); utl_file.put_line(handle,n(dd.REQ_Q)||'&d'||n(dd.REQ_U)||' &d '); utl_file.put_line(handle,n(dd.PICKED_QUANTITY)||' &d'); utl_file.put_line(handle,n(dd.SHP_Q)||'&d'||n(dd.DLV_Q)||' &d'); utl_file.put_line(handle,n(dd.CAN_Q)||'&d'||n(dd.INI)||' &d'); utl_file.put_line(handle,n(dd.OMI)||'&d'||n(dd.STA)||' &d'); utl_file.put_line(handle,n(dd.STB)||'&d'); utl_file.put_line(handle,n(dd.WH_ID)||'&d'||n(dd.CUR_SUB)||' &d'); utl_file.put_line(handle,n(dd.ORG_SUB)||'&d'||n(dd.REV)||' &d'); utl_file.put_line(handle,n(dd.LOT)||'&d'||n(dd.SERIAL)||' &d'); utl_file.put_line(handle,n(dd.LOC_ID)||'&d'||n(dd.SPL_DEL_DET_ID)||' &d'); utl_file.put_line(handle,n(dd.FROM_SERIAL)||'&d'||n(dd.TO_SERIAL)||' &d'); utl_file.put_line(handle,n(dd.WSN_QTY)||'&d'||n(dd.WSN_CRE_DATE)||' &el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Error List: &eb &f'); for i in 1..1 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WSH_FREIGHT_COSTS (CST) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh FRT_CST_ID &dh FRT_NAME &dh FRT_TYPE &dh FRT_LEVEL &dh QTY &dh UNIT_AMT &dh TOT_AMT &dh ENTITY_ID &eh'); Declare cursor w_fre_cst is select distinct wfc.FREIGHT_COST_ID FRT_CST_ID, wfc.FREIGHT_COST_TYPE FRT_NAME, lkp.Meaning FRT_TYPE, 'DELIV_DETAIL' FRT_LEVEL, wfc.QUANTITY QTY, wfc.UNIT_AMOUNT UNIT_AMT, wfc.TOTAL_AMOUNT TOT_AMT, wfc.DELIVERY_DETAIL_ID ENTITY_ID from wsh_freight_costs_v wfc, wsh_freight_cost_types wft, fnd_lookup_values lkp, OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, fnd_languages FLA WHERE wfc.freight_cost_type_id = wft.freight_cost_type_id AND wft.freight_cost_type_code = lkp.lookup_code AND lkp.lookup_type = 'FREIGHT_COST_TYPE' AND lkp.LANGUAGE = FLA.LANGUAGE_CODE AND FLA.INSTALLED_FLAG = 'B' AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) AND WFC.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID UNION ALL select distinct wfc.FREIGHT_COST_ID FRT_CST_ID, wfc.FREIGHT_COST_TYPE FRT_NAME, lkp.Meaning FRT_TYPE, 'DELIVERY' FRT_LEVEL, wfc.QUANTITY QTY, wfc.UNIT_AMOUNT UNIT_AMT, wfc.TOTAL_AMOUNT TOT_AMT, wfc.DELIVERY_ID ENTITY_ID from wsh_freight_costs_v wfc, wsh_freight_cost_types wft, fnd_lookup_values lkp, OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, --WSH_NEW_DELIVERIES DEL, --WSH_DELIVERY_LEGS LEG, --WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, fnd_languages FLA WHERE wfc.freight_cost_type_id = wft.freight_cost_type_id AND wft.freight_cost_type_code = lkp.lookup_code AND lkp.lookup_type = 'FREIGHT_COST_TYPE' AND lkp.LANGUAGE = FLA.LANGUAGE_CODE AND FLA.INSTALLED_FLAG = 'B' AND --DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- STP.STOP_ID = LEG.PICK_UP_STOP_ID AND -- LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) AND WFC.DELIVERY_ID = ASG.DELIVERY_ID AND WFC.DELIVERY_DETAIL_ID IS NULL UNION ALL select distinct wfc.FREIGHT_COST_ID FRT_CST_ID, wfc.FREIGHT_COST_TYPE FRT_NAME, lkp.Meaning FRT_TYPE, 'LEG' FRT_LEVEL, wfc.QUANTITY QTY, wfc.UNIT_AMOUNT UNIT_AMT, wfc.TOTAL_AMOUNT TOT_AMT, wfc.DELIVERY_LEG_ID ENTITY_ID from wsh_freight_costs_v wfc, wsh_freight_cost_types wft, fnd_lookup_values lkp, OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, --WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, fnd_languages FLA WHERE wfc.freight_cost_type_id = wft.freight_cost_type_id AND wft.freight_cost_type_code = lkp.lookup_code AND lkp.lookup_type = 'FREIGHT_COST_TYPE' AND lkp.LANGUAGE = FLA.LANGUAGE_CODE AND FLA.INSTALLED_FLAG = 'B' AND DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- STP.STOP_ID = LEG.PICK_UP_STOP_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) AND WFC.DELIVERY_LEG_ID = LEG.DELIVERY_LEG_ID AND WFC.DELIVERY_DETAIL_ID IS NULL AND WFC.DELIVERY_ID IS NULL UNION ALL select distinct wfc.FREIGHT_COST_ID FRT_CST_ID, wfc.FREIGHT_COST_TYPE FRT_NAME, lkp.Meaning FRT_TYPE, 'STOP' FRT_LEVEL, wfc.QUANTITY QTY, wfc.UNIT_AMOUNT UNIT_AMT, wfc.TOTAL_AMOUNT TOT_AMT, wfc.STOP_ID ENTITY_ID from wsh_freight_costs_v wfc, wsh_freight_cost_types wft, fnd_lookup_values lkp, OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, fnd_languages FLA WHERE wfc.freight_cost_type_id = wft.freight_cost_type_id AND wft.freight_cost_type_code = lkp.lookup_code AND lkp.lookup_type = 'FREIGHT_COST_TYPE' AND lkp.LANGUAGE = FLA.LANGUAGE_CODE AND FLA.INSTALLED_FLAG = 'B' AND DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID = LEG.PICK_UP_STOP_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) AND WFC.STOP_ID = STP.STOP_ID AND WFC.DELIVERY_DETAIL_ID IS NULL AND WFC.DELIVERY_ID IS NULL AND WFC.DELIVERY_LEG_ID IS NULL UNION ALL select distinct wfc.FREIGHT_COST_ID FRT_CST_ID, wfc.FREIGHT_COST_TYPE FRT_NAME, lkp.Meaning FRT_TYPE, 'TRIP' FRT_LEVEL, wfc.QUANTITY QTY, wfc.UNIT_AMOUNT UNIT_AMT, wfc.TOTAL_AMOUNT TOT_AMT, wfc.TRIP_ID ENTITY_ID from wsh_freight_costs_v wfc, wsh_freight_cost_types wft, fnd_lookup_values lkp, OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, WSH_TRIP_STOPS STP, WSH_DELIVERY_ASSIGNMENTS ASG, fnd_languages FLA WHERE wfc.freight_cost_type_id = wft.freight_cost_type_id AND wft.freight_cost_type_code = lkp.lookup_code AND lkp.lookup_type = 'FREIGHT_COST_TYPE' AND lkp.LANGUAGE = FLA.LANGUAGE_CODE AND FLA.INSTALLED_FLAG = 'B' AND DEL.DELIVERY_ID = ASG.DELIVERY_ID AND ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND DET.SOURCE_LINE_ID = LIN.LINE_ID AND STP.STOP_ID = LEG.PICK_UP_STOP_ID AND LEG.DELIVERY_ID = DEL.DELIVERY_ID AND LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) AND WFC.TRIP_ID = STP.TRIP_ID AND WFC.DELIVERY_DETAIL_ID IS NULL AND WFC.DELIVERY_ID IS NULL AND WFC.STOP_ID IS NULL AND WFC.DELIVERY_LEG_ID IS NULL; begin for wfc in w_fre_cst loop utl_file.put_line(handle,'&sld'||n(wfc.FRT_CST_ID)||'&d'||n(wfc.FRT_NAME)||'&d'); utl_file.put_line(handle,n(wfc.FRT_TYPE)||'&d'||n(wfc.FRT_LEVEL)||'&d'); utl_file.put_line(handle,n(wfc.QTY)||'&d'||n(wfc.UNIT_AMT)||'&d'); utl_file.put_line(handle,n(wfc.TOT_AMT)||'&d'||n(wfc.ENTITY_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); -- Output for table WSH_EXCEPTIONS being commented by Dev. request to improve performance -- --UTL_FILE.PUT_LINE(handle,'&f &f WSH_EXCEPTIONS (EXC) &f --UTL_FILE.PUT_LINE(handle,'NOTE: THESE ARE BASED STRICTLY ON REQUEST_ID, SO MESSAGES MAY NOT APPLY TO THIS SHIPPING TRANSACTION &f -- --column EXCEPT_NAME format a20; --column EXC_STATUS format a18; --column ERROR_MSG format a30; -- --UTL_FILE.PUT_LINE(handle,'&std &sh EXCEPT_ID &dh EXCEPT_NAME &dh SEV &dh EXC_STATUS &dh TRIP_ID &dh STOP_ID &dh DELIV_ID &dh DEL_DET_ID &dh --UTL_FILE.PUT_LINE(handle,'ERROR_MSG &dh REQUEST_ID &dh MESSAGE &eh -- --select distinct '&sld', -- EXCEPTION_ID EXCEPT_ID, -- EXCEPTION_NAME EXCEPT_NAME, -- SEVERITY SEV, -- STATUS EXC_STATUS, -- TRIP_ID TRIP_ID, -- TRIP_STOP_ID STOP_ID, -- DELIVERY_ID DELIV_ID, -- DELIVERY_DETAIL_ID DEL_DET_ID, -- ERROR_MESSAGE ERROR_MSG, -- REQUEST_ID REQUEST_ID, -- MESSAGE MESSAGE,'&el' --FROM WSH_EXCEPTIONS EXC --where STATUS <> 'NO_ACTION_REQUIRED' -- and EXC.REQUEST_ID IN ( -- select DET.request_id -- from OE_ORDER_LINES LIN, -- WSH_DELIVERY_DETAILS DET -- WHERE -- DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND -- NVL('&line_id_selected',0) in (0,LIN.LINE_ID, -- LIN.TOP_MODEL_LINE_ID, -- LIN.ATO_LINE_ID, -- LIN.LINK_TO_LINE_ID, -- LIN.REFERENCE_LINE_ID, -- LIN.SERVICE_REFERENCE_LINE_ID) -- UNION ALL -- select ASG.REQUEST_ID -- from OE_ORDER_LINES LIN, -- WSH_DELIVERY_DETAILS DET, -- WSH_DELIVERY_ASSIGNMENTS ASG -- WHERE -- ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND -- DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND -- NVL('&line_id_selected',0) in (0,LIN.LINE_ID, -- LIN.TOP_MODEL_LINE_ID, -- LIN.ATO_LINE_ID, -- LIN.LINK_TO_LINE_ID, -- LIN.REFERENCE_LINE_ID, -- LIN.SERVICE_REFERENCE_LINE_ID) -- UNION ALL -- select LEG.REQUEST_ID -- from OE_ORDER_LINES LIN, -- WSH_DELIVERY_DETAILS DET, -- WSH_NEW_DELIVERIES DEL, -- WSH_DELIVERY_LEGS LEG, -- WSH_DELIVERY_ASSIGNMENTS ASG -- WHERE -- DEL.DELIVERY_ID = ASG.DELIVERY_ID AND -- ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND -- DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- LEG.DELIVERY_ID = DEL.DELIVERY_ID AND -- LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND -- NVL('&line_id_selected',0) in (0,LIN.LINE_ID, -- LIN.TOP_MODEL_LINE_ID, -- LIN.ATO_LINE_ID, -- LIN.LINK_TO_LINE_ID, -- LIN.REFERENCE_LINE_ID, -- LIN.SERVICE_REFERENCE_LINE_ID) -- UNION ALL -- select STP.REQUEST_ID -- from OE_ORDER_LINES LIN, -- WSH_DELIVERY_DETAILS DET, -- WSH_NEW_DELIVERIES DEL, WSH_DELIVERY_LEGS LEG, -- WSH_TRIP_STOPS STP, -- WSH_DELIVERY_ASSIGNMENTS ASG -- WHERE DEL.DELIVERY_ID = ASG.DELIVERY_ID AND -- ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND -- DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- STP.STOP_ID = LEG.PICK_UP_STOP_ID AND -- LEG.DELIVERY_ID = DEL.DELIVERY_ID AND -- LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND -- NVL('&line_id_selected',0) in (0,LIN.LINE_ID, -- LIN.TOP_MODEL_LINE_ID, -- LIN.ATO_LINE_ID, -- LIN.LINK_TO_LINE_ID, -- LIN.REFERENCE_LINE_ID, -- LIN.SERVICE_REFERENCE_LINE_ID) -- UNION ALL -- select TRP.REQUEST_ID -- from OE_ORDER_LINES LIN, -- WSH_DELIVERY_DETAILS DET, -- WSH_NEW_DELIVERIES DEL, -- WSH_DELIVERY_LEGS LEG, -- WSH_TRIP_STOPS STP, -- WSH_TRIPS TRP, -- WSH_DELIVERY_ASSIGNMENTS ASG -- WHERE DEL.DELIVERY_ID = ASG.DELIVERY_ID AND -- ASG.DELIVERY_DETAIL_ID = DET.DELIVERY_DETAIL_ID AND -- DET.SOURCE_LINE_ID = LIN.LINE_ID AND -- STP.STOP_ID = LEG.PICK_UP_STOP_ID AND -- TRP.TRIP_ID = STP.TRIP_ID AND -- LEG.DELIVERY_ID = DEL.DELIVERY_ID AND -- LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND -- NVL('&line_id_selected',0) in (0,LIN.LINE_ID, -- LIN.TOP_MODEL_LINE_ID, -- LIN.ATO_LINE_ID, -- LIN.LINK_TO_LINE_ID, -- LIN.REFERENCE_LINE_ID, -- LIN.SERVICE_REFERENCE_LINE_ID) --); -- end if; -- :v_head_only UTL_FILE.FCLOSE(handle); end; / DECLARE handle UTL_FILE.FILE_TYPE; dirname varchar2(1000); text varchar2(1000); function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin -- Append to output file handle := UTL_FILE.FOPEN('&out_dir','&out_dir/&out_file','A',32000); UTL_FILE.PUT_LINE(handle,'&et'); -- in case last one failed If :v_head_only = 'N' then if substr(UPPER(nvl('&prt_wms','N')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f WMS_RULES &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RULE ID &dh CREATE DATE &dh ORG_ID &dh TYPE CODE &dh NAME &dh '); UTL_FILE.PUT_LINE(handle,'DESCRIPTION &dh QTY_FUNCT PARAM &dh ENABLED FLAG &dh USER FLAG &dh TYPE HRD_ID &dh '); UTL_FILE.PUT_LINE(handle,'RULE WEIGHT &dh ATTR CATEG &dh MIN_PICK TASK &dh ALLOCAT MODE &eh '); -- UTL_FILE.PUT_LINE(handle,'RULE WEIGHT &dh ATTR CATEG &dh MIN_PICK TASK &dh ALLOCAT MODE &dh WMS_ENABLED FLAG &eh '); Declare cursor wms_r is Select WMSR.RULE_ID ruleid, WMSR.CREATION_DATE credt, WMSR.ORGANIZATION_ID orgid, WMSR.TYPE_CODE typc, WMSR.NAME nam, WMSR.DESCRIPTION des, WMSR.QTY_FUNCTION_PARAMETER_ID qty_funct, WMSR.ENABLED_FLAG enabf, WMSR.USER_DEFINED_FLAG userf, WMSR.TYPE_HDR_ID typh, WMSR.RULE_WEIGHT rulew, WMSR.ATTRIBUTE_CATEGORY attrcat, WMSR.MIN_PICK_TASKS_FLAG minpick, WMSR.ALLOCATION_MODE_ID allom -- WMSR.WMS_ENABLED_FLAG wmsf FROM WMS_RULES WMSR, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN where DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and WMSR.ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id); begin for wms in wms_r loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(wms.ruleid)||' &d '); utl_file.put_line(handle,n(wms.credt)||' &d '); utl_file.put_line(handle,n(wms.orgid)||' &d '||n(wms.typc)||' &d '); utl_file.put_line(handle,n(wms.nam)||' &d '||n(wms.des)||' &d '); utl_file.put_line(handle,n(wms.qty_funct)||' &d '||n(wms.enabf)||' &d '); utl_file.put_line(handle,n(wms.userf)||' &d '||n(wms.typh)||' &d '); utl_file.put_line(handle,n(wms.rulew)||' &d '||n(wms.attrcat)||' &d '); utl_file.put_line(handle,n(wms.minpick)||' &d '||n(wms.allom)||' &el '); -- utl_file.put_line(handle,n(wms.wmsf)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WMS_RULE_CONSISTENCIES &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RULE ID &dh CONSISTENCY ID &dh PARAMETER ID &dh CREATE DATE &dh ATTR CATEG &eh '); Declare cursor wms_rc is Select WRC.RULE_ID ruleid, WRC.CONSISTENCY_ID consid, WRC.PARAMETER_ID paramid, WRC.CREATION_DATE credt, WRC.ATTRIBUTE_CATEGORY attrcat FROM WMS_RULE_CONSISTENCIES WRC, WMS_RULES WMSR, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN WHERE WRC.RULE_ID = WMSR.RULE_ID and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and WMSR.ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id) ORDER BY 1; begin for wms in wms_rc loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(wms.ruleid)||' &d '); utl_file.put_line(handle,n(wms.consid)||' &d '||n(wms.paramid)||' &d '); utl_file.put_line(handle,n(wms.credt)||' &d '||n(wms.attrcat)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WMS_RESTRICTIONS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RULE ID &dh SEQUENCE NUMBER &dh CREATE DATE &dh PARAMETER ID &dh '); UTL_FILE.PUT_LINE(handle,'OPERAND CODE &dh OPERAND TYPE &dh OPER_NUMBER CONSTANT &dh OPER_CHAR CONSTANT &dh '); UTL_FILE.PUT_LINE(handle,'OPER_DATE CONSTANT &dh OPER PARAM_ID &dh OPER EXPRESSION &dh OPER_FLEX VALUE_SET &dh '); UTL_FILE.PUT_LINE(handle,'LOGICAL OPER_CODE &dh BRACKET OPEN &dh BRACKET CLOSE &dh ATTR CATEG &eh '); Declare cursor wms_res is Select WRES.RULE_ID ruleid, WRES.SEQUENCE_NUMBER seqno, WRES.CREATION_DATE credt, WRES.PARAMETER_ID paramid, WRES.OPERATOR_CODE opcode, WRES.OPERAND_TYPE_CODE optype, WRES.OPERAND_CONSTANT_NUMBER opnum, WRES.OPERAND_CONSTANT_CHARACTER opchar, WRES.OPERAND_CONSTANT_DATE opdate, WRES.OPERAND_PARAMETER_ID oppar, WRES.OPERAND_EXPRESSION opexp, WRES.OPERAND_FLEX_VALUE_SET_ID opfvs, WRES.LOGICAL_OPERATOR_CODE logop, WRES.BRACKET_OPEN braop, WRES.BRACKET_CLOSE bracl, WRES.ATTRIBUTE_CATEGORY attrcat FROM WMS_RESTRICTIONS WRES, WMS_RULES WMSR, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN WHERE WRES.RULE_ID = WMSR.RULE_ID and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and WMSR.ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id) ORDER BY 1; begin for wms in wms_res loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(wms.ruleid)||' &d '); utl_file.put_line(handle,n(wms.seqno)||' &d '||n(wms.credt)||' &d '); utl_file.put_line(handle,n(wms.paramid)||' &d '||n(wms.opcode)||' &d '); utl_file.put_line(handle,n(wms.optype)||' &d '||n(wms.opnum)||' &d '); utl_file.put_line(handle,n(wms.opchar)||' &d '||n(wms.opdate)||' &d '); utl_file.put_line(handle,n(wms.oppar)||' &d '||n(wms.opexp)||' &d '); utl_file.put_line(handle,n(wms.opfvs)||' &d '||n(wms.logop)||' &d '); utl_file.put_line(handle,n(wms.braop)||' &d '||n(wms.bracl)||' &d '); utl_file.put_line(handle,n(wms.attrcat)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WMS_SORT_CRITERIA &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RULE ID &dh SEQUENCE NUMBER &dh CREATE DATE &dh PARAMETER ID &dh '); UTL_FILE.PUT_LINE(handle,'OPERAND CODE &dh ATTR CATEG &eh '); Declare cursor wms_sc is Select WSOC.RULE_ID ruleid, WSOC.SEQUENCE_NUMBER seqno, WSOC.CREATION_DATE credt, WSOC.PARAMETER_ID paramid, WSOC.ORDER_CODE opcode, WSOC.ATTRIBUTE_CATEGORY attrcat FROM WMS_SORT_CRITERIA WSOC, WMS_RULES WMSR, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN WHERE WSOC.RULE_ID = WMSR.RULE_ID and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and WMSR.ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id) ORDER BY 1; begin for wms in wms_sc loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(wms.ruleid)||' &d '); utl_file.put_line(handle,n(wms.seqno)||' &d '||n(wms.credt)||' &d '); utl_file.put_line(handle,n(wms.paramid)||' &d '||n(wms.opcode)||' &d '); utl_file.put_line(handle,n(wms.attrcat)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f WMS_SELECTION_CRITERIA_TXN_V &f'); UTL_FILE.PUT_LINE(handle,'&std &sh SEQUENCE NUMBER &dh RULE TYPE_CODE &dh RULE TYPE &dh RETURN TYPE &dh '); UTL_FILE.PUT_LINE(handle,'RETURN TYPE_ID &dh RETURN TYPE_NAME &dh ENABLED FLAG &dh DATE TYPE_COD &dh '); UTL_FILE.PUT_LINE(handle,'DATE TYPE_FROM &dh DATE TYPE_TO &dh DATE_TYPE LOOKUP_TYPE &dh EFFECTIVE FROM &dh '); UTL_FILE.PUT_LINE(handle,'EFFECTIVE TO &dh FROM ORGANIZATION_ID &dh FROM ORGANIZATION_CODE &dh FROM SUBINVENT_NAME &dh '); UTL_FILE.PUT_LINE(handle,'TO ORGANIZATION_ID &dh TO ORGANIZATION_CODE &dh TO SUBINVENT_NAME &dh CUSTOMER ID &dh '); UTL_FILE.PUT_LINE(handle,'CUSTOMER NAME &dh FREIGHT CODE &dh FREIGHT CODE_NAME &dh INVENTORY ITEM_ID &dh ITEM &dh '); UTL_FILE.PUT_LINE(handle,'ITEM TYPE &dh ITEM TYPE_NAME &dh ASSIGNMENT GROUP_ID &dh ABC CLASS_ID &dh '); UTL_FILE.PUT_LINE(handle,'ABC_GROUP CLASS_NAME &dh CATEGORY SET_ID &dh CATEGORY ID &dh CATEGORY SET_NAME &dh '); UTL_FILE.PUT_LINE(handle,'ORDER TYPE_ID &dh ORDER TYPE_NAME &dh VENDOR ID &dh VENDOR NAME &dh PROJECT ID &dh '); UTL_FILE.PUT_LINE(handle,'PROJECT NAME &dh TASK ID &dh TASK NAME &dh USER ID &dh USER NAME &dh TRANSACTION ACTION_ID &dh '); UTL_FILE.PUT_LINE(handle,'TRANSACTION ACTION_NAME &dh REASON ID &dh REASON NAME &dh TRANSACTION SOURCE_TYPE_ID &dh '); UTL_FILE.PUT_LINE(handle,'TRANSACTION_SOURCE TYPE_NAME &dh TRANSACTION TYPE_ID &dh TRANSACTION TYPE_NAME &dh '); UTL_FILE.PUT_LINE(handle,'UOM_CODE &dh UNIT_OF MEASURE &dh UOM CLASS &dh UOM_CLASS NAME &dh CREATION DATE &eh '); --UTL_FILE.PUT_LINE(handle,'WMS_ENABLED FLAG &dh LOCATION ID &dh LOCATION NAME &eh '); Declare cursor wms_sct is Select WSCT.STG_ASSIGNMENT_ID stgasg, WSCT.SEQUENCE_NUMBER seqno, WSCT.RULE_TYPE_CODE rultyco, WSCT.RULE_TYPE rulty, WSCT.RETURN_TYPE retty, WSCT.RETURN_TYPE_ID rettyid, WSCT.RETURN_TYPE_NAME rettyna, WSCT.ENABLED_FLAG enaf, WSCT.DATE_TYPE_CODE dttyco, WSCT.DATE_TYPE_FROM dttyfr, WSCT.DATE_TYPE_TO dttyto, WSCT.DATE_TYPE_LOOKUP_TYPE dttylty, WSCT.EFFECTIVE_FROM efffr, WSCT.EFFECTIVE_TO effto, WSCT.FROM_ORGANIZATION_ID frorgid, WSCT.FROM_ORGANIZATION_CODE frorgco, WSCT.FROM_SUBINVENTORY_NAME frsubna, WSCT.TO_ORGANIZATION_ID toorgid, WSCT.TO_ORGANIZATION_CODE toorgco, WSCT.TO_SUBINVENTORY_NAME tosubna, WSCT.CUSTOMER_ID cusid, WSCT.CUSTOMER_NAME cusna, WSCT.FREIGHT_CODE fcod, WSCT.FREIGHT_CODE_NAME fcna, WSCT.INVENTORY_ITEM_ID inviid, WSCT.ITEM it, WSCT.ITEM_TYPE ityp, WSCT.ITEM_TYPE_NAME itypna, WSCT.ASSIGNMENT_GROUP_ID assgid, WSCT.ABC_CLASS_ID abcid, WSCT.ABC_GROUP_CLASS_NAME abcna, WSCT.CATEGORY_SET_ID csid, WSCT.CATEGORY_ID catid, WSCT.CATEGORY_SET_NAME csna, WSCT.ORDER_TYPE_ID otid, WSCT.ORDER_TYPE_NAME otna, WSCT.VENDOR_ID vid, WSCT.VENDOR_NAME vna, WSCT.PROJECT_ID pid, WSCT.PROJECT_NAME pna, WSCT.TASK_ID tid, WSCT.TASK_NAME tna, WSCT.USER_ID usid, WSCT.USER_NAME usna, WSCT.TRANSACTION_ACTION_ID taid, WSCT.TRANSACTION_ACTION_NAME tana, WSCT.REASON_ID resid, WSCT.REASON_NAME resna, WSCT.TRANSACTION_SOURCE_TYPE_ID tstid, WSCT.TRANSACTION_SOURCE_TYPE_NAME tstna, WSCT.TRANSACTION_TYPE_ID ttid, WSCT.TRANSACTION_TYPE_NAME ttna, WSCT.UOM_CODE uomco, WSCT.UNIT_OF_MEASURE uomna, WSCT.UOM_CLASS uomcl, WSCT.UOM_CLASS_NAME uomclna, WSCT.CREATION_DATE credt -- WSCT.WMS_ENABLED_FLAG wmsef, -- WSCT.LOCATION_ID locid, -- WSCT.LOCATION_NAME locna FROM WMS_SELECTION_CRITERIA_TXN_V WSCT, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN where DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and WSCT.FROM_ORGANIZATION_ID = DET.ORGANIZATION_ID and DET.SOURCE_HEADER_ID = nvl('&header_id_selected',:v_header_id); begin for wms in wms_sct loop if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; end if; -- do_analysis -- Print line to Output file utl_file.put_line(handle,'&sld '||n(wms.stgasg)||' &d '); utl_file.put_line(handle,n(wms.seqno)||' &d '||n(wms.rultyco)||' &d '); utl_file.put_line(handle,n(wms.rulty)||' &d '||n(wms.retty)||' &d '); utl_file.put_line(handle,n(wms.rettyid)||' &d '||n(wms.rettyna)||' &d '); utl_file.put_line(handle,n(wms.enaf)||' &d '||n(wms.dttyco)||' &d '); utl_file.put_line(handle,n(wms.dttyfr)||' &d '||n(wms.dttyto)||' &d '); utl_file.put_line(handle,n(wms.dttylty)||' &d '||n(wms.efffr)||' &d '); utl_file.put_line(handle,n(wms.effto)||' &d '||n(wms.frorgid)||' &d '); utl_file.put_line(handle,n(wms.frorgco)||' &d '||n(wms.frsubna)||' &d '); utl_file.put_line(handle,n(wms.toorgid)||' &d '||n(wms.toorgco)||' &d '); utl_file.put_line(handle,n(wms.tosubna)||' &d '||n(wms.cusid)||' &d '); utl_file.put_line(handle,n(wms.cusna)||' &d '||n(wms.fcod)||' &d '); utl_file.put_line(handle,n(wms.fcna)||' &d '||n(wms.inviid)||' &d '); utl_file.put_line(handle,n(wms.it)||' &d '||n(wms.ityp)||' &d '); utl_file.put_line(handle,n(wms.itypna)||' &d '||n(wms.assgid)||' &d '); utl_file.put_line(handle,n(wms.abcid)||' &d '||n(wms.abcna)||' &d '); utl_file.put_line(handle,n(wms.csid)||' &d '||n(wms.catid)||' &d '); utl_file.put_line(handle,n(wms.csna)||' &d '||n(wms.vid)||' &d '); utl_file.put_line(handle,n(wms.otna)||' &d '||n(wms.pid)||' &d '); utl_file.put_line(handle,n(wms.vna)||' &d '||n(wms.tid)||' &d '); utl_file.put_line(handle,n(wms.pna)||' &d '||n(wms.usid)||' &d '); utl_file.put_line(handle,n(wms.usna)||' &d '||n(wms.taid)||' &d '); utl_file.put_line(handle,n(wms.tana)||' &d '||n(wms.resid)||' &d '); utl_file.put_line(handle,n(wms.resna)||' &d '||n(wms.tstid)||' &d '); utl_file.put_line(handle,n(wms.tstna)||' &d '||n(wms.ttid)||' &d '); utl_file.put_line(handle,n(wms.ttna)||' &d '||n(wms.uomco)||' &d '); utl_file.put_line(handle,n(wms.uomna)||' &d '||n(wms.uomcl)||' &d '); utl_file.put_line(handle,n(wms.uomclna)||' &d '||n(wms.credt)||' &el '); -- utl_file.put_line(handle,n(wms.wmsef)||' &d '||n(wms.locid)||' &d '); -- utl_file.put_line(handle,n(wms.locna)||' &el '); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); end if; --prt_wms if substr(UPPER(nvl('&prt_inv','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f MTL_TRANSACTIONS_INTERFACE (MTI) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh TRX_INT_ID &dh LINE &dh LINE_ID &dh DELIVERY DETAIL_ID &dh ITEM &dh PICKING LINE &dh TRANSACT TYPE &dh '); UTL_FILE.PUT_LINE(handle,'TRANSACTION DATE &dh PRIM QTY &dh FROM_SUB &dh FROM LOC_ID &dh PROCESS &dh LOCK &dh TRANSACTION MODE &dh LPN_ID &dh '); UTL_FILE.PUT_LINE(handle,'ERROR CODE &dh ERROR EXPLANATION &dh SECONDARY UOM_CODE &dh SECONDARY TRANS_QTY &DH '); UTL_FILE.PUT_LINE(handle,'ACCOUNT PERIOD_ID &dh PERIOD NAME &dh PERIOD OPEN &dh PERIOD START_DT &dh PERIOD CLOSE_DT '); UTL_FILE.PUT_LINE(handle,'&dh SCHEDULE CLOSE_DT &eh'); Declare cursor mtl_trx_int is SELECT TMP.TRANSACTION_INTERFACE_ID TXN_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, LIN.LINE_ID LINE_ID, DET.DELIVERY_DETAIL_ID DEL_DETAIL_ID, ITM.SEGMENT1 ITEM, TMP.PICKING_LINE_ID PICK_LN_ID, decode(TMP.TRANSACTION_TYPE_ID, 52,'52-Stage Trans', 33,'33-SO Issue', 15,'15-RMA Receipt', 18,'18-PO Receipt', TMP.TRANSACTION_TYPE_ID||'-Unknown') TXN_TYPE, TMP.TRANSACTION_DATE TXN_DATE, TMP.PRIMARY_QUANTITY PRM_Q, TMP.SUBINVENTORY_CODE FROM_SUB, TMP.LOCATOR_ID FROM_LOC_ID, TMP.PROCESS_FLAG PROCESS, TMP.LOCK_FLAG LCK, TMP.TRANSACTION_MODE TRANS_MODE, TMP.CONTENT_LPN_ID LPN_ID, TMP.ERROR_CODE ERROR_CODE, TMP.ERROR_EXPLANATION ERROR_EXPL, TMP.SECONDARY_UOM_CODE SEC_UOM_CODE, TMP.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, TMP.ACCT_PERIOD_ID ACCT_PER, OAC.period_name per_name, OAC.open_flag open_fl, to_char(oac.period_start_date,'DD-MON-RR_HH24:MI:SS') per_sd, to_char(oac.period_close_date,'DD-MON-RR_HH24:MI:SS') per_cd, to_char(oac.schedule_close_date,'DD-MON-RR_HH24:MI:SS') sch_cd FROM MTL_TRANSACTIONS_INTERFACE TMP, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM, ORG_ACCT_PERIODS OAC WHERE TMP.SOURCE_LINE_ID = LIN.LINE_ID and LIN.LINE_CATEGORY_CODE = 'ORDER' and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and DET.SOURCE_LINE_ID = LIN.LINE_ID and TMP.PICKING_LINE_ID = DET.DELIVERY_DETAIL_ID(+) and TMP.ACCT_PERIOD_ID = OAC.acct_period_id and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL SELECT TMP.TRANSACTION_INTERFACE_ID TXN_ID, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, LIN.LINE_ID LINE_ID, DET.DELIVERY_DETAIL_ID DEL_DETAIL_ID, ITM.SEGMENT1 ITEM, TMP.PICKING_LINE_ID PICK_LN_ID, decode(TMP.TRANSACTION_TYPE_ID, 52,'Stage Trans', 33,'SO Issue', 15,'RMA Receipt', 18,'PO Receipt', TMP.TRANSACTION_TYPE_ID) TXN_TYPE, TMP.TRANSACTION_DATE TXN_DATE, TMP.PRIMARY_QUANTITY PRM_Q, TMP.SUBINVENTORY_CODE FROM_SUB, TMP.LOCATOR_ID FROM_LOC_ID, TMP.PROCESS_FLAG PROCESS, TMP.LOCK_FLAG LCK, TMP.TRANSACTION_MODE TRANS_MODE, TMP.CONTENT_LPN_ID LPN_ID, TMP.ERROR_CODE ERROR_CODE, TMP.ERROR_EXPLANATION ERROR_EXPL, TMP.SECONDARY_UOM_CODE SEC_UOM_CODE, TMP.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, TMP.ACCT_PERIOD_ID ACCT_PER, OAC.period_name per_name, OAC.open_flag open_fl, to_char(oac.period_start_date,'DD-MON-RR_HH24:MI:SS') per_sd, to_char(oac.period_close_date,'DD-MON-RR_HH24:MI:SS') per_cd, to_char(oac.schedule_close_date,'DD-MON-RR_HH24:MI:SS') sch_cd FROM MTL_TRANSACTIONS_INTERFACE TMP, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM, ORG_ACCT_PERIODS OAC WHERE TMP.TRX_SOURCE_LINE_ID = LIN.LINE_ID and LIN.LINE_CATEGORY_CODE = 'RETURN' and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and DET.SOURCE_LINE_ID = LIN.LINE_ID and TMP.PICKING_LINE_ID = DET.DELIVERY_DETAIL_ID(+) and TMP.ACCT_PERIOD_ID = OAC.acct_period_id and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for mti in mtl_trx_int loop utl_file.put_line(handle,'&sld'||n(mti.TXN_ID)||' &d '); utl_file.put_line(handle,n(mti.LINE)||' &d '||n(mti.LINE_ID)||' &d '); utl_file.put_line(handle,n(mti.DEL_DETAIL_ID)||' &d'||n(mti.ITEM)||' &d '); utl_file.put_line(handle,n(mti.PICK_LN_ID)||' &d'||n(mti.TXN_TYPE)||' &d '); utl_file.put_line(handle,n(mti.TXN_DATE)||' &d '); utl_file.put_line(handle,n(mti.PRM_Q)||' &d '||n(mti.FROM_SUB)||' &d '); utl_file.put_line(handle,n(mti.FROM_LOC_ID)||' &d '||n(mti.PROCESS)||' &d '); utl_file.put_line(handle,n(mti.LCK)||' &d '||n(mti.TRANS_MODE)||' &d '); utl_file.put_line(handle,n(mti.LPN_ID)||' &d '||n(mti.ERROR_CODE)||' &d '); utl_file.put_line(handle,n(mti.ERROR_EXPL)||' &d '); utl_file.put_line(handle,n(mti.SEC_UOM_CODE)||' &d '||n(mti.SEC_TRN_QTY)||' &d '); utl_file.put_line(handle,n(mti.ACCT_PER)||' &d '||n(mti.PER_NAME)||' &d '); utl_file.put_line(handle,n(mti.open_fl)||' &d '||n(mti.per_sd)||' &d '); utl_file.put_line(handle,n(mti.per_cd)||' &d '||n(mti.sch_cd)||' &el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f MTL_MATERIAL_TRANSACTIONS_TEMP (TMP) - UNPICKED LINES '); UTL_FILE.PUT_LINE(handle,'Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_TRNS_ID &dh TRANSACTION DATE &dh MOVE_LINE_ID &dh PICK_SLIP &dh LINE &dh LINE_ID &dh ITEM '); UTL_FILE.PUT_LINE(handle,'&dh PRM_Q &dh FROM_SUB &dh FROM_LOC_ID &dh '); UTL_FILE.PUT_LINE(handle,'TO_SUB &dh TO_LOC_ID &dh PROCESS &dh LCK &dh TRANS_MODE &dh ERROR_CODE &dh ERROR_EXPL &dh '); UTL_FILE.PUT_LINE(handle,'SECONDARY UOM_CODE &dh SECONDARY TRANS_QTY &dh LOT_NUM &dh LOT PRM_QTY &dh LOT SEC_QTY &eh '); -- UTL_FILE.PUT_LINE(handle,'LOT_CAL SEC_QTY &eh'); Declare cursor mtl_trx_tmp is SELECT distinct TMP.TRANSACTION_TEMP_ID MTL_TRNS_ID, TMP.TRANSACTION_DATE MTL_TRNS_DATE, TMP.MOVE_ORDER_LINE_ID MOVE_LINE_ID, --'UNPICKED' LINE_STATUS, TMP.PICK_SLIP_NUMBER PICK_SLIP, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, LIN.LINE_ID LINE_ID, --DET.DELIVERY_DETAIL_ID DET_DELIVERY_ID, ITM.SEGMENT1 ITEM, TMP.PRIMARY_QUANTITY PRM_Q, TMP.SUBINVENTORY_CODE FROM_SUB, TMP.LOCATOR_ID FROM_LOC_ID, TMP.TRANSFER_SUBINVENTORY TO_SUB, TMP.TRANSFER_TO_LOCATION TO_LOC_ID, TMP.PROCESS_FLAG PROCESS, TMP.LOCK_FLAG LCK, TMP.TRANSACTION_MODE TRANS_MODE, TMP.ERROR_CODE ERROR_CODE, TMP.ERROR_EXPLANATION ERROR_EXPL, TMP.SECONDARY_UOM_CODE SEC_UOM_CODE, TMP.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, lot.lot_number lot_num, lot.primary_quantity lot_prm_q, lot.secondary_quantity lot_sec_q -- inv_convert.inv_um_convert( -- tmp.inventory_item_id, -- lot.lot_number, -- tmp.organization_id, -- 5, -- lot.primary_quantity, -- itm.primary_uom_code, -- tmp.secondary_uom_code, -- null, null) lot_cal_sec_q FROM MTL_MATERIAL_TRANSACTIONS_TEMP TMP, -- WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM, mtl_transaction_lots_temp lot WHERE TMP.DEMAND_SOURCE_LINE = LIN.LINE_ID and LIN.LINE_CATEGORY_CODE = 'ORDER' and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and lot.transaction_temp_id (+)= tmp.transaction_temp_id -- and TMP.DEMAND_SOURCE_LINE = DET.SOURCE_LINE_ID(+) - Creates duplicates for lines with multiple Del_details. and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) UNION ALL SELECT distinct TMP.TRANSACTION_TEMP_ID MTL_TRNS_ID, TMP.TRANSACTION_DATE MTL_TRNS_DATE, TMP.MOVE_ORDER_LINE_ID MOVE_LINE_ID, --'UNPICKED' LINE_STATUS, TMP.PICK_SLIP_NUMBER PICK_SLIP, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, LIN.LINE_ID LINE_ID, -- DET.DELIVERY_DETAIL_ID DET_DELIVERY_ID, ITM.SEGMENT1 ITEM, TMP.PRIMARY_QUANTITY PRM_Q, TMP.SUBINVENTORY_CODE FROM_SUB, TMP.LOCATOR_ID FROM_LOC_ID, TMP.TRANSFER_SUBINVENTORY TO_SUB, TMP.TRANSFER_TO_LOCATION TO_LOC_ID, TMP.PROCESS_FLAG PROCESS, TMP.LOCK_FLAG LCK, TMP.TRANSACTION_MODE TRANS_MODE, TMP.ERROR_CODE ERROR_CODE, TMP.ERROR_EXPLANATION ERROR_EXPL, TMP.SECONDARY_UOM_CODE SEC_UOM_CODE, TMP.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, ' ' lot_num, 0 lot_prm_q, 0 lot_sec_q -- 0 lot_cal_sec_q FROM MTL_MATERIAL_TRANSACTIONS_TEMP TMP, -- WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM WHERE TMP.TRX_SOURCE_LINE_ID = LIN.LINE_ID and LIN.LINE_CATEGORY_CODE = 'RETURN' and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) -- and TMP.DEMAND_SOURCE_LINE = DET.SOURCE_LINE_ID(+) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for mtt in mtl_trx_tmp loop utl_file.put_line(handle,'&sld'||n(mtt.MTL_TRNS_ID)||'&d'||n(mtt.MTL_TRNS_DATE)||'&d'); utl_file.put_line(handle,n(mtt.MOVE_LINE_ID)||'&d'); utl_file.put_line(handle,n(mtt.PICK_SLIP)||'&d'||n(mtt.LINE)||'&d'); utl_file.put_line(handle,n(mtt.LINE_ID)||'&d'||n(mtt.ITEM)||'&d'); utl_file.put_line(handle,n(mtt.PRM_Q)||'&d'||n(mtt.FROM_SUB)||'&d'); utl_file.put_line(handle,n(mtt.FROM_LOC_ID)||'&d'||n(mtt.TO_SUB)||'&d'); utl_file.put_line(handle,n(mtt.TO_LOC_ID)||'&d'||n(mtt.PROCESS)||'&d'); utl_file.put_line(handle,n(mtt.LCK)||'&d'||n(mtt.TRANS_MODE)||'&d'); utl_file.put_line(handle,n(mtt.ERROR_CODE)||'&d'||n(mtt.ERROR_EXPL)||'&d '); utl_file.put_line(handle,n(mtt.SEC_UOM_CODE)||'&d'||n(mtt.SEC_TRN_QTY)||'&d'); utl_file.put_line(handle,n(mtt.LOT_NUM)||'&d'||n(mtt.LOT_PRM_Q)||'&d'); utl_file.put_line(handle,n(mtt.LOT_SEC_Q)||'&el'); -- utl_file.put_line(handle,n(mtt.LOT_SEC_Q)||'&d'||n(mtt.LOT_CAL_SEC_Q)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et '); -- This is commented out because it runs slowly without an index -- CREATE INDEX MTL_MATL_TRANS_777 -- ON INV.MTL_MATERIAL_TRANSACTIONS -- (trx_source_line_id); UTL_FILE.PUT_LINE(handle,'&f &f MTL_MATERIAL_TRANSACTIONS (TRN) - PICKED LINES '); UTL_FILE.PUT_LINE(handle,'Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WARNING &dh MTL_TRNS_ID &dh TRANSACTION DATE &dh MOVE_LINE_ID &dh TRANS_TYPE &dh '); UTL_FILE.PUT_LINE(handle,'PICK_SLIP &dh LINE &dh LINE_ID &dh PRM_Q &dh'); UTL_FILE.PUT_LINE(handle,'FROM_SUB &dh FROM_LOC_ID &dh TO_SUB &dh TO_LOC_ID &dh ORG_ID &dh PICKING_LINE_ID &dh '); UTL_FILE.PUT_LINE(handle,'SECONDARY UOM_CODE &dh SECONDARY TRANS_QTY &dh LOT PRM_QTY &dh RCV_TRANS_ID &eh'); --UTL_FILE.PUT_LINE(handle,'LOT SEC_QTY &dh LOT_CAL SEC_QTY &eh'); declare cursor Mtl_trans is SELECT TRN.TRANSACTION_ID MTL_TRNS_ID, TRN.TRANSACTION_DATE MTL_TRNS_DATE, TRN.MOVE_ORDER_LINE_ID MOVE_LINE_ID, --to_char(TRN.TRANSACTION_TYPE_ID) || '=' || -- (select TYP.TRANSACTION_TYPE_NAME -- from MTL_TRANSACTION_TYPES TYP -- where TRN.TRANSACTION_TYPE_ID = TYP.TRANSACTION_TYPE_ID) TRANS_TYPE, -- See header of this script for mapping other TRANSACTION_TYPE_ID's to their meaning decode(TRN.TRANSACTION_TYPE_ID, 52,'Stage Trans', 53,'Stage Trans INT', 33,'SO Issue', 34,'SO Issue INT', 15,'RMA Receipt', 18,'PO Receipt', 'Invalid '||to_char(TRN.TRANSACTION_TYPE_ID)) TRANS_TYPE, TRN.PICK_SLIP_NUMBER PICK_SLIP, TRN.TRX_SOURCE_LINE_ID TRX_SOURCE_LINE_ID, TRN.TRX_SOURCE_LINE_ID LINE_ID, TRN.PRIMARY_QUANTITY PRM_Q, TRN.SUBINVENTORY_CODE FROM_SUB, TRN.LOCATOR_ID FROM_LOC_ID, TRN.TRANSFER_SUBINVENTORY TO_SUB, TRN.TRANSFER_LOCATOR_ID TO_LOC_ID, TRN.ORGANIZATION_ID ORG_ID, TRN.PICKING_LINE_ID PICKING_LINE_ID, TRN.SECONDARY_UOM_CODE SEC_UOM_CODE, TRN.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, lot.primary_quantity lot_prm_q, TRN.rcv_transaction_id rcv_trans_id -- lot.secondary_transaction_quantity lot_sec_q -- inv_convert.inv_um_convert( -- lot.inventory_item_id, -- lot.lot_number, -- lot.organization_id, -- 5, -- lot.primary_quantity, -- itm.primary_uom_code, -- trn.secondary_uom_code, -- null, null) lot_cal_sec_q FROM MTL_MATERIAL_TRANSACTIONS TRN, MTL_SYSTEM_ITEMS ITM, mtl_transaction_lot_numbers lot WHERE -- klr (TRN.TRX_SOURCE_LINE_ID,TRN.ORGANIZATION_ID,TRN.INVENTORY_ITEM_ID) IN (SELECT DISTINCT LINE_ID,SHIP_FROM_ORG_ID,INVENTORY_ITEM_ID FROM OE_ORDER_LINES LIN1 WHERE LIN1.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN1.LINE_ID, LIN1.TOP_MODEL_LINE_ID, LIN1.ATO_LINE_ID, LIN1.LINK_TO_LINE_ID, LIN1.REFERENCE_LINE_ID, LIN1.SERVICE_REFERENCE_LINE_ID)) and TRN.ORGANIZATION_ID = ITM.ORGANIZATION_ID and TRN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID and lot.transaction_id (+) = trn.transaction_id UNION ALL SELECT /* DROP SHIP */ TRN.TRANSACTION_ID MTL_TRNS_ID, TRN.TRANSACTION_DATE MTL_TRNS_DATE, TRN.MOVE_ORDER_LINE_ID MOVE_LINE_ID, decode(TRN.TRANSACTION_TYPE_ID, 52,'Stage Trans', 33,'SO Issue', 15,'RMA Receipt', 18,'PO Receipt', 'Invalid '||to_char(TRN.TRANSACTION_TYPE_ID)) TRANS_TYPE, TRN.PICK_SLIP_NUMBER PICK_SLIP, -- to_char(TRN.SOURCE_LINE_ID) LINE, TRN.TRX_SOURCE_LINE_ID TRX_SOURCE_LINE_ID, TRN.TRX_SOURCE_LINE_ID LINE_ID, TRN.PRIMARY_QUANTITY PRM_Q, TRN.SUBINVENTORY_CODE FROM_SUB, TRN.LOCATOR_ID FROM_LOC_ID, TRN.TRANSFER_SUBINVENTORY TO_SUB, TRN.TRANSFER_LOCATOR_ID TO_LOC_ID, TRN.ORGANIZATION_ID ORG_ID, TRN.PICKING_LINE_ID PICKING_LINE_ID, TRN.SECONDARY_UOM_CODE SEC_UOM_CODE, TRN.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, 0 lot_prm_q, -- Only for OPM TRN.rcv_transaction_id rcv_trans_id -- 0 lot_sec_q -- Only for OPM -- 0 lot_cal_sec_q -- Only for OPM FROM MTL_MATERIAL_TRANSACTIONS TRN, MTL_SYSTEM_ITEMS ITM, OE_DROP_SHIP_SOURCES DRP, PO_HEADERS_ALL POH WHERE TRN.TRANSACTION_TYPE_ID = 18 -- PO Receipt and TRN.TRANSACTION_SOURCE_TYPE_ID = 1 and TRN.TRANSACTION_SOURCE_ID = POH.PO_HEADER_ID and POH.PO_HEADER_ID = DRP.PO_HEADER_ID and DRP.HEADER_ID = nvl('&header_id_selected',:v_header_id) and TRN.ORGANIZATION_ID = ITM.ORGANIZATION_ID and TRN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID UNION ALL SELECT /* PO receipt trx for ATO BUY ITEM */ TRN.TRANSACTION_ID MTL_TRNS_ID, TRN.TRANSACTION_DATE MTL_TRNS_DATE, TRN.MOVE_ORDER_LINE_ID MOVE_LINE_ID, decode(TRN.TRANSACTION_TYPE_ID, 52,'Stage Trans', 33,'SO Issue', 15,'RMA Receipt', 18,'PO Receipt', 'Invalid '||to_char(TRN.TRANSACTION_TYPE_ID)) TRANS_TYPE, TRN.PICK_SLIP_NUMBER PICK_SLIP, -- to_char(RES.DEMAND_SOURCE_LINE_ID) LINE, TRN.TRX_SOURCE_LINE_ID TRX_SOURCE_LINE_ID, TRN.TRX_SOURCE_LINE_ID LINE_ID, TRN.PRIMARY_QUANTITY PRM_Q, TRN.SUBINVENTORY_CODE FROM_SUB, TRN.LOCATOR_ID FROM_LOC_ID, TRN.TRANSFER_SUBINVENTORY TO_SUB, TRN.TRANSFER_LOCATOR_ID TO_LOC_ID, TRN.ORGANIZATION_ID ORG_ID, TRN.PICKING_LINE_ID PICKING_LINE_ID, TRN.SECONDARY_UOM_CODE SEC_UOM_CODE, TRN.SECONDARY_TRANSACTION_QUANTITY SEC_TRN_QTY, 0 lot_prm_q, -- Only for OPM TRN.rcv_transaction_id rcv_trans_id -- 0 lot_sec_q -- Only for OPM -- 0 lot_cal_sec_q -- Only for OPM FROM MTL_MATERIAL_TRANSACTIONS TRN, MTL_SYSTEM_ITEMS ITM, MTL_RESERVATIONS RES, PO_HEADERS_ALL POH WHERE :sales_ord_id = RES.DEMAND_SOURCE_HEADER_ID and RES.DEMAND_SOURCE_TYPE_ID = 2 -- SO and RES.SUPPLY_SOURCE_TYPE_ID in (1,13) -- PO or INV and RES.SUPPLY_SOURCE_HEADER_ID = POH.PO_HEADER_ID -- and POH.PO_HEADER_ID = TRN.TRANSACTION_SOURCE_ID and TRN.ORGANIZATION_ID = ITM.ORGANIZATION_ID and TRN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID and TRN.TRANSACTION_TYPE_ID = 18 -- PO Receipt and TRN.TRANSACTION_SOURCE_TYPE_ID = 1; r_lin_no varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..30 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := 'x'; -- end if; for mt in Mtl_trans loop :r_flag := ''; -- Order_Line number SELECT to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) into r_lin_no FROM OE_ORDER_LINES LIN WHERE mt.TRX_SOURCE_LINE_ID = LIN.LINE_ID; if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then null; --- -- Basic Verification -- -- If i.Ordq < i.shpq then -- :r_flag := :r_flag || '1 '; -- end if; -- If i.Ordq < i.fulq then -- :r_flag := :r_flag || '2 '; -- end if; --- end if; -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d'); utl_file.put_line(handle,n(mt.MTL_TRNS_ID)||'&d'||n(mt.MTL_TRNS_DATE)||'&d'); utl_file.put_line(handle,''||n(mt.MOVE_LINE_ID)||''||'&d'); utl_file.put_line(handle,n(mt.TRANS_TYPE)||'&d'||n(mt.PICK_SLIP)||'&d'); utl_file.put_line(handle,n(r_lin_no)||'&d'||n(mt.LINE_ID)||'&d'); utl_file.put_line(handle,n(mt.PRM_Q)||'&d'||n(mt.FROM_SUB)||'&d'); utl_file.put_line(handle,n(mt.FROM_LOC_ID)||'&d'||n(mt.TO_SUB)||'&d'); utl_file.put_line(handle,n(mt.TO_LOC_ID)||'&d'||n(mt.ORG_ID)||'&d'); utl_file.put_line(handle,n(mt.PICKING_LINE_ID)||'&d '); utl_file.put_line(handle,n(mt.SEC_UOM_CODE)||'&d'||n(mt.SEC_TRN_QTY)||'&d'); utl_file.put_line(handle,n(mt.LOT_PRM_Q)||'&d'||n(mt.rcv_trans_id)||'&el'); -- utl_file.put_line(handle,n(mt.LOT_PRM_Q)||'&d'||n(mt.LOT_SEC_Q)||'&el'); -- utl_file.put_line(handle,n(mt.LOT_CAL_SEC_Q)||'&el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Warning List: &eb &f'); for i in 1..30 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); -- DROP INDEX INDEX MTL_MATL_TRANS_777; UTL_FILE.PUT_LINE(handle,'&f &f MTL_SERIAL_NUMBERS (MSN) &f'); UTL_FILE.PUT_LINE(handle,'&std &sh ERR_FLAG &dh DEL_DET_ID &dh REL_STATUS &dh LINE &dh LINE_ID &dh ITEM_ID &dh FROM_SERIAL &dh TO_SERIAL &dh '); UTL_FILE.PUT_LINE(handle,'QUANTITY &dh SERIAL_NUMBER &dh CURR_STATUS &dh CURR_SUBINV &dh REVISION &dh LOT_NUMBER &dh '); UTL_FILE.PUT_LINE(handle,'CURR_LOCATION &dh CURR_ORG_ID &dh GROUP_MARK &dh LINE_MARK &dh LOT_MARK &dh ORIGIN_DATE &eh'); Declare cursor m_serial_n is select distinct DET.DELIVERY_DETAIL_ID DEL_DET_ID, decode(DET.RELEASED_STATUS, 'Y','Y=Staged', 'R','R=Ready to Release', 'S','S=Rel to Warhouse', 'B','B=Backorder', 'P','P=Pending Inv', 'C','C=Shipped', 'N','N=Not Ready', 'D','D=Cancelled', 'X','X=Not Applicable','Unknown: '||DET.RELEASED_STATUS) REL_STATUS, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, DET.SOURCE_LINE_ID LINE_ID, DET.INVENTORY_ITEM_ID ITEM_ID, substr(wsn.fm_serial_number,1,15) FROM_SERIAL, substr(wsn.to_serial_number,1,15) TO_SERIAL, wsn.quantity WSN_QTY, to_char(wsn.creation_date,'DD-MON-RR_HH24:MI:SS') WSN_CRE_DATE, MSN.SERIAL_NUMBER MSN_SN, MSN.CURRENT_STATUS MSN_CUR_STA, MSN.REVISION MSN_REV, MSN.LOT_NUMBER MSN_LOT, MSN.CURRENT_SUBINVENTORY_CODE MSN_CUR_SUB, MSN.CURRENT_LOCATOR_ID MSN_CUR_LOC, MSN.CURRENT_ORGANIZATION_ID MSN_CUR_ORG, MSN.GROUP_MARK_ID MSN_GRP_MRK, MSN.LINE_MARK_ID MSN_LIN_MRK, MSN.LOT_LINE_MARK_ID MSN_LOT_MRK, MSN.ORIGINATION_DATE MSN_ORI_DATE FROM OE_ORDER_LINES LIN, WSH_DELIVERY_DETAILS DET, WSH_SERIAL_NUMBERS WSN, MTL_SERIAL_NUMBERS MSN where DET.DELIVERY_DETAIL_ID = WSN.DELIVERY_DETAIL_ID and DET.SOURCE_LINE_ID = LIN.LINE_ID and DET.SOURCE_CODE = 'OE' and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and DET.INVENTORY_ITEM_ID = MSN.INVENTORY_ITEM_ID and MSN.SERIAL_NUMBER between WSN.FM_SERIAL_NUMBER and WSN.TO_SERIAL_NUMBER and (substr(UPPER(nvl('&det_cnt','Y')),1,1) = 'Y' or rownum <= 10) order by LINE,MSN.SERIAL_NUMBER; r_uom_lin varchar2(10); r_qshp_lin number; r_sta_lin varchar2(100); r_mtl_trn varchar2(100); type per_record_typ is RECORD (flag varchar2(1), descrip varchar2(200)); type msg_tab is TABLE of per_record_typ INDEX by binary_integer; msg msg_tab; function n(v varchar2) return varchar2 is begin if v is null then return '&sp'; else return v; end if; end n; begin :r_error := 0; -- Initialize error messages even if Do Analysis not selected -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then for i in 1..1 loop msg(i).flag := '0'; msg(i).descrip := ''; end loop; msg(1).descrip := ' 1. No verifications yet.'; -- end if; for dd in m_serial_n loop :r_flag := ''; -- if substr(UPPER(nvl('&do_analysis','Y')),1,1) = 'Y' then -- Include verifications here -- Select nvl(mtl_transactions_enabled_flag,'N') -- into r_mtl_trn -- from Mtl_System_items -- where Inventory_item_Id = dd.ITEM_ID -- and Organization_Id = dd.WH_ID; -- if dd.PICKABLE_FLAG <> r_mtl_trn then -- :r_flag := :r_flag || '1 '; -- msg(1).flag := '1'; -- end if; -- end if; -- do_analysis --- -- Print line to Output file utl_file.put_line(handle,'&sld &b '||n(:r_flag)||' &eb &d '); utl_file.put_line(handle,n(dd.DEL_DET_ID)||' &d '); utl_file.put_line(handle,n(dd.REL_STATUS)||' &d '||n(dd.LINE)||' &d '); utl_file.put_line(handle,''||n(dd.LINE_ID)||' &d '); utl_file.put_line(handle,n(dd.ITEM_ID)||' &d '); utl_file.put_line(handle,n(dd.FROM_SERIAL)||' &d '||n(dd.TO_SERIAL)||' &d '); utl_file.put_line(handle,n(dd.WSN_QTY)||' &d '||n(dd.MSN_SN)||' &d '); utl_file.put_line(handle,n(dd.MSN_CUR_STA)||' &d '||n(dd.MSN_CUR_SUB)||' &d '); utl_file.put_line(handle,n(dd.MSN_REV)||' &d '||n(dd.MSN_LOT)||' &d '); utl_file.put_line(handle,n(dd.MSN_CUR_LOC)||' &d '||n(dd.MSN_CUR_ORG)||' &d '); utl_file.put_line(handle,n(dd.MSN_GRP_MRK)||' &d '||n(dd.MSN_LIN_MRK)||' &d '); utl_file.put_line(handle,n(dd.MSN_LOT_MRK)||' &d '||n(dd.MSN_ORI_DATE)||' &el'); if :r_flag is not null then :r_error := 1; end if; end loop; utl_file.put_line(handle,'&et'); if :r_error = 1 then utl_file.put_line(handle,'&f &b Error List: &eb &f'); for i in 1..1 loop if msg(i).flag = '1' then utl_file.put_line(handle,msg(i).descrip||'&f'); end if; end loop; end if; end; UTL_FILE.PUT_LINE(handle,'&et '); UTL_FILE.PUT_LINE(handle,'&f &f MTL_UNIT_TRANSACTIONS (UNT) Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh TRANS_ID &dh TRANSACTION DATE &dh STATUS_ID &dh SUBINV &dh LOC_ID &dh SERIAL_NUM '); UTL_FILE.PUT_LINE(handle,'&dh ITEM_ID &dh WH_ID &dh TRX_DATE &dh '); UTL_FILE.PUT_LINE(handle,'TRX_SRC_ID &dh TRX_SRC_TYPE_ID &dh RECEIPT_ISSUE_TYPE &dh CUST_ID &dh SHIP_ID &eh'); Declare cursor mtl_unt_trx is select UNT.TRANSACTION_ID TRANS_ID, UNT.TRANSACTION_DATE MTL_TRNS_DATE, UNT.STATUS_ID STATUS_ID, UNT.SUBINVENTORY_CODE SUBINV, UNT.LOCATOR_ID LOC_ID, UNT.SERIAL_NUMBER SERIAL_NUM, UNT.INVENTORY_ITEM_ID ITEM_ID, UNT.ORGANIZATION_ID WH_ID, to_char(UNT.TRANSACTION_DATE,'DD-MON-RR_HH24:MI:SS') TRX_DATE, UNT.TRANSACTION_SOURCE_ID TRX_SRC_ID, UNT.TRANSACTION_SOURCE_TYPE_ID TRX_SRC_TYPE_ID, --UNT.TRANSACTION_SOURCE_NAME TRX_SOURCE_NAME UNT.RECEIPT_ISSUE_TYPE RECEIPT_ISSUE_TYPE, UNT.CUSTOMER_ID CUST_ID, UNT.SHIP_ID SHIP_ID --,UNT.SERIAL_ATTRIBUTE_CATEGORY SERIAL_ATTR_CAT --,UNT.ORIGINATION_DATE ORIGIN_DATE from MTL_UNIT_TRANSACTIONS UNT where UNT.TRANSACTION_ID in (select TRN.TRANSACTION_ID FROM MTL_MATERIAL_TRANSACTIONS TRN, --WSH_DELIVERY_DETAILS DET, --OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM WHERE -- klr (TRN.TRX_SOURCE_LINE_ID,TRN.ORGANIZATION_ID,TRN.INVENTORY_ITEM_ID) IN (SELECT DISTINCT LINE_ID,SHIP_FROM_ORG_ID,INVENTORY_ITEM_ID FROM OE_ORDER_LINES LIN1 WHERE LIN1.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN1.LINE_ID, LIN1.TOP_MODEL_LINE_ID, LIN1.ATO_LINE_ID, LIN1.LINK_TO_LINE_ID, LIN1.REFERENCE_LINE_ID, LIN1.SERVICE_REFERENCE_LINE_ID)) and TRN.ORGANIZATION_ID = ITM.ORGANIZATION_ID and TRN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID) and (substr(UPPER(nvl('&det_cnt','Y')),1,1) = 'Y' or rownum <= 10); begin for mut in mtl_unt_trx loop utl_file.put_line(handle,'&sld'||n(mut.TRANS_ID)||' &d '||n(mut.MTL_TRNS_DATE)||' &d '); utl_file.put_line(handle,n(mut.STATUS_ID)||' &d '); utl_file.put_line(handle,n(mut.SUBINV)||' &d '||n(mut.LOC_ID)||' &d '); utl_file.put_line(handle,n(mut.SERIAL_NUM)||' &d '||n(mut.ITEM_ID)||' &d '); utl_file.put_line(handle,n(mut.WH_ID)||' &d '||n(mut.TRX_DATE)||' &d '); utl_file.put_line(handle,n(mut.TRX_SRC_ID)||' &d '||n(mut.TRX_SRC_TYPE_ID)||' &d '); utl_file.put_line(handle,n(mut.RECEIPT_ISSUE_TYPE)||' &d '||n(mut.CUST_ID)||' &d '); utl_file.put_line(handle,n(mut.SHIP_ID)||' &el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f MTL_TXN_REQUEST_LINES_V (MOV) - MOVE TRANSACTIONS Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MO_LINE_ID &dh MO_NUMBER &dh MV_HDR_ID &dh MV_LINE_NUM &dh MV_LINE_STAT &dh LINE &dh TXN_SLINE_ID &dh '); UTL_FILE.PUT_LINE(handle,'ITEM &dh QTY &dh PRM_Q &dh DLV_Q &dh DTL_Q &dh MOVE_TYPE_NAME &dh TRNS_SRC_TYPE &dh TRNS_TYPE_NAME &dh WH_ID &dh '); UTL_FILE.PUT_LINE(handle,'FROM_SUB &dh FROM_LOC_ID &dh TO_SUB &dh TO_LOC_ID &dh LOT_NUM &dh TRNS_HEAD_ID &eh'); --UTL_FILE.PUT_LINE(handle,'SECONDARY QTY &dh SECONDARY DETAIL_Q &dh SECONDARY DELIVER_Q &eh'); Declare cursor mtl_trx_reql is select distinct TRL.LINE_ID MO_LINE_ID, TRH.REQUEST_NUMBER MO_NUMBER, TRL.HEADER_ID MV_HDR_ID, TRL.LINE_NUMBER MV_LINE_NUM, decode(TRL.LINE_STATUS, 1, '1=Incomplete', 2, '2=Pend Aprvl', 3, '3=Approved', 4, '4=Not Apprvd', 5, '5=Closed', 6, '6=Canceled', 7, '7=Pre Apprvd', 8, '8=Part Aprvd', 9, '9=Cncld Source') MV_LINE_STAT, to_char(LIN.line_number) || decode(LIN.shipment_number, null, null, '.' || to_char(LIN.shipment_number))|| decode(LIN.option_number, null, null, '.' || to_char(LIN.option_number)) || decode(LIN.component_number, null, null, decode(LIN.option_number, null, '.',null)|| '.'||to_char(LIN.component_number))|| decode(LIN.service_number,null,null, decode(LIN.component_number, null, '.' , null) || decode(LIN.option_number, null, '.', null ) || '.'|| to_char(LIN.service_number)) LINE, TRL.TXN_SOURCE_LINE_ID TXN_SLINE_ID, --DET.DELIVERY_DETAIL_ID DEL_DET_ID, ITM.SEGMENT1 ITEM, TRL.QUANTITY QTY, TRL.PRIMARY_QUANTITY PRM_Q, TRL.QUANTITY_DELIVERED DLV_Q, TRL.QUANTITY_DETAILED DTL_Q, TRL.MOVE_ORDER_TYPE_NAME MOVE_TYPE_NAME, decode(TRL.TRANSACTION_SOURCE_TYPE_ID,2,'Sales Order',TRL.TRANSACTION_SOURCE_TYPE_ID) TRNS_SRC_TYPE, TRL.TRANSACTION_TYPE_NAME TRNS_TYPE_NAME, TRL.ORGANIZATION_ID WH_ID, TRL.FROM_SUBINVENTORY_CODE FROM_SUB, TRL.FROM_LOCATOR_ID FROM_LOC_ID, TRL.TO_SUBINVENTORY_CODE TO_SUB, TRL.TO_LOCATOR_ID TO_LOC_ID, TRL.LOT_NUMBER LOT_NUM, TRL.TRANSACTION_HEADER_ID TRNS_HEAD_ID -- trl.secondary_quantity sec_q, -- trl.secondary_quantity_detailed sec_dtl_q, -- trl.secondary_quantity_delivered sec_dlv_q from MTL_TXN_REQUEST_LINES_V TRL, MTL_TXN_REQUEST_HEADERS TRH, WSH_DELIVERY_DETAILS DET, OE_ORDER_LINES LIN, MTL_SYSTEM_ITEMS ITM where TRL.LINE_ID = DET.MOVE_ORDER_LINE_ID --TRL.TXN_SOURCE_LINE_ID = LIN.LINE_ID and LIN.SHIP_FROM_ORG_ID = ITM.ORGANIZATION_ID(+) and LIN.INVENTORY_ITEM_ID = ITM.INVENTORY_ITEM_ID(+) and DET.SOURCE_LINE_ID = LIN.LINE_ID and TRL.HEADER_ID = TRH.HEADER_ID and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID); begin for mtr in mtl_trx_reql loop utl_file.put_line(handle,'&sld'||n(mtr.MO_LINE_ID)||'&d'||n(mtr.MO_NUMBER)||'&d'); utl_file.put_line(handle,n(mtr.MV_HDR_ID)||'&d'||n(mtr.MV_LINE_NUM)||'&d'); utl_file.put_line(handle,n(mtr.MV_LINE_STAT)||'&d'||n(mtr.LINE)||'&d'); utl_file.put_line(handle,n(mtr.TXN_SLINE_ID)||'&d'||n(mtr.ITEM)||'&d'); utl_file.put_line(handle,n(mtr.QTY)||'&d'||n(mtr.PRM_Q)||'&d'); utl_file.put_line(handle,n(mtr.DLV_Q)||'&d'||n(mtr.DTL_Q)||'&d'); utl_file.put_line(handle,n(mtr.MOVE_TYPE_NAME)||'&d'||n(mtr.TRNS_SRC_TYPE)||'&d'); utl_file.put_line(handle,n(mtr.TRNS_TYPE_NAME)||'&d'||n(mtr.WH_ID)||'&d'); utl_file.put_line(handle,n(mtr.FROM_SUB)||'&d'||n(mtr.FROM_LOC_ID)||'&d'); utl_file.put_line(handle,n(mtr.TO_SUB)||'&d'||n(mtr.TO_LOC_ID)||'&d'); utl_file.put_line(handle,n(mtr.LOT_NUM)||'&d'||n(mtr.TRNS_HEAD_ID)||'&el'); -- utl_file.put_line(handle,n(mtr.SEC_Q)||'&d'||n(mtr.SEC_DTL_Q)||'&d'); -- utl_file.put_line(handle,n(mtr.SEC_DLV_Q)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; --prt_inv if substr(UPPER(nvl('&prt_ar','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&f &f RA_INTERFACE_LINES (RAI) - RECEIVABLES INTERFACE LINES Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTF_LINE_ID &dh BATCH_SOURCE &dh ITEM_ID &dh QTY &dh ORD_Q &dh UOM &dh PRICE &dh SO_LIN &dh AR_ID &dh IR_ID &dh'); UTL_FILE.PUT_LINE(handle,'LINE_TYPE &dh Order_Num_1 &dh Order_Type_2 &dh Delivery_3 &dh WayBill_4 &dh Line_ID_6 &dh Pick_Line_Id_7 &dh Bill_Lading_8 &dh '); UTL_FILE.PUT_LINE(handle,'Customer_Item_9 &dh WH_ID_10 &dh PA_ID_11 &dh C_RATE &dh C_DATE &dh CURR &dh TR &dh S_TAX_ID &dh VAT_ID &dh EF &dh TERR_ID &eh'); Declare cursor ra_int_lin is select distinct RAI.INTERFACE_LINE_ID INTF_LINE_ID, RAI.BATCH_SOURCE_NAME BATCH_SOURCE, RAI.INVENTORY_ITEM_ID ITEM_ID, RAI.QUANTITY QTY, RAI.QUANTITY_ORDERED ORD_Q, RAI.UOM_CODE UOM, RAI.AMOUNT PRICE, trim(RAI.SALES_ORDER_LINE) SO_LIN, RAI.ACCOUNTING_RULE_ID AR_ID, RAI.INVOICING_RULE_ID IR_ID, RAI.LINE_TYPE LINE_TYPE, RAI.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAI.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAI.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAI.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAI.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAI.INTERFACE_LINE_ATTRIBUTE7 Pick_Line_Id_7, RAI.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAI.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAI.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAI.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAI.CONVERSION_RATE C_RATE, to_Char(RAI.CONVERSION_DATE,'DD-MON-RR_HH24:MI:SS') C_DATE, RAI.CURRENCY_CODE CURR, RAI.TAX_RATE TR, RAI.SALES_TAX_ID S_TAX_ID, RAI.VAT_TAX_ID VAT_ID, RAI.TAX_EXEMPT_FLAG EF, RAI.TERRITORY_ID TERR_ID FROM RA_INTERFACE_LINES RAI, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID -- and RAI.LINE_TYPE = 'LINE' and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (NVL(RAI.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) or NVL(RAI.INTERFACE_LINE_ATTRIBUTE6,0) in (select ADJ.PRICE_ADJUSTMENT_ID from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = LIN.HEADER_ID and (ADJ.LINE_ID IS NULL or ADJ.LINE_ID = LIN.LINE_ID)) ) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id); /* UNION select distinct RAI.INTERFACE_LINE_ID INTF_LINE_ID, RAI.BATCH_SOURCE_NAME BATCH_SOURCE, RAI.INVENTORY_ITEM_ID ITEM_ID, RAI.QUANTITY QTY, RAI.QUANTITY_ORDERED ORD_Q, RAI.UOM_CODE UOM, RAI.AMOUNT PRICE, trim(RAI.SALES_ORDER_LINE) SO_LIN, RAI.ACCOUNTING_RULE_ID AR_ID, RAI.INVOICING_RULE_ID IR_ID, RAI.LINE_TYPE LINE_TYPE, RAI.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAI.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAI.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAI.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAI.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAI.INTERFACE_LINE_ATTRIBUTE7 Pick_Line_Id_7, RAI.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAI.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAI.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAI.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAI.CONVERSION_RATE C_RATE, to_char(RAI.CONVERSION_DATE,'DD-MON-RR_HH24:MI:SS') C_DATE, RAI.CURRENCY_CODE CURR, RAI.TAX_RATE TR, RAI.SALES_TAX_ID S_TAX_ID, RAI.VAT_TAX_ID VAT_ID, RAI.TAX_EXEMPT_FLAG EF, RAI.TERRITORY_ID TERR_ID --ENABLE_TIMESTAMP ,to_char(RAI.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(RAI.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,RAI.REQUEST_ID REQUEST_ID FROM RA_INTERFACE_LINES RAI, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_PRICE_ADJUSTMENTS ADJ, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and RAI.LINE_TYPE = 'FREIGHT' and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and to_number(RAI.INTERFACE_LINE_ATTRIBUTE6) = ADJ.PRICE_ADJUSTMENT_ID and ADJ.LINE_ID = LIN.LINE_ID and ADJ.LINE_ID IS NOT NULL and ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) UNION select distinct RAI.INTERFACE_LINE_ID INTF_LINE_ID, RAI.BATCH_SOURCE_NAME BATCH_SOURCE, RAI.INVENTORY_ITEM_ID ITEM_ID, RAI.QUANTITY QTY, RAI.QUANTITY_ORDERED ORD_Q, RAI.UOM_CODE UOM, RAI.AMOUNT PRICE, trim(RAI.SALES_ORDER_LINE) SO_LIN, RAI.ACCOUNTING_RULE_ID AR_ID, RAI.INVOICING_RULE_ID IR_ID, RAI.LINE_TYPE LINE_TYPE, RAI.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAI.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAI.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAI.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAI.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAI.INTERFACE_LINE_ATTRIBUTE7 Pick_Line_Id_7, RAI.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAI.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAI.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAI.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAI.CONVERSION_RATE C_RATE, to_char(RAI.CONVERSION_DATE,'DD-MON-RR_HH24:MI:SS') C_DATE, RAI.CURRENCY_CODE CURR, RAI.TAX_RATE TR, RAI.SALES_TAX_ID S_TAX_ID, RAI.VAT_TAX_ID VAT_ID, RAI.TAX_EXEMPT_FLAG EF, RAI.TERRITORY_ID TERR_ID --ENABLE_TIMESTAMP ,to_char(RAI.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(RAI.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,RAI.REQUEST_ID REQUEST_ID FROM RA_INTERFACE_LINES RAI, OE_ORDER_HEADERS ORD, OE_PRICE_ADJUSTMENTS ADJ, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and RAI.LINE_TYPE = 'FREIGHT' and ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ADJ.LINE_ID IS NULL and ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id) UNION -- Freight invoice as line SELECT DISTINCT RAI.INTERFACE_LINE_ID INTF_LINE_ID, RAI.BATCH_SOURCE_NAME BATCH_SOURCE, RAI.INVENTORY_ITEM_ID ITEM_ID, RAI.QUANTITY QTY, RAI.QUANTITY_ORDERED ORD_Q, RAI.UOM_CODE UOM, RAI.AMOUNT PRICE, trim(RAI.SALES_ORDER_LINE) SO_LIN, RAI.ACCOUNTING_RULE_ID AR_ID, RAI.INVOICING_RULE_ID IR_ID, RAI.LINE_TYPE LINE_TYPE, RAI.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAI.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAI.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAI.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAI.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAI.INTERFACE_LINE_ATTRIBUTE7 Pick_Line_Id_7, RAI.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAI.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAI.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAI.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAI.CONVERSION_RATE C_RATE, TO_CHAR(RAI.CONVERSION_DATE,'DD-MON-RR_HH24:MI:SS') C_DATE, RAI.CURRENCY_CODE CURR, RAI.TAX_RATE TR, RAI.SALES_TAX_ID S_TAX_ID, RAI.VAT_TAX_ID VAT_ID, RAI.TAX_EXEMPT_FLAG EF, RAI.TERRITORY_ID TERR_ID FROM RA_INTERFACE_LINES RAI, OE_ORDER_HEADERS ORD, OE_PRICE_ADJUSTMENTS ADJ, OE_TRANSACTION_TYPES_TL TYP WHERE RAI.SALES_ORDER = TO_CHAR(ORD.ORDER_NUMBER) AND RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME AND TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID AND RAI.LINE_TYPE = 'LINE' and ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) AND RAI.INTERFACE_LINE_ATTRIBUTE6 = ADJ.PRICE_ADJUSTMENT_ID -- AND ADJ.CHARGE_TYPE_CODE = 'FREIGHT' AND RAI.SALES_ORDER_LINE IS NULL and ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id); */ begin for ril in ra_int_lin loop utl_file.put_line(handle,'&sld'||n(ril.INTF_LINE_ID)||'&d'||n(ril.BATCH_SOURCE)||'&d'); utl_file.put_line(handle,n(ril.ITEM_ID)||'&d'||n(ril.QTY)||'&d'); utl_file.put_line(handle,n(ril.ORD_Q)||'&d'||n(ril.UOM)||'&d'); utl_file.put_line(handle,n(ril.PRICE)||'&d'||n(ril.SO_LIN)||'&d'); utl_file.put_line(handle,n(ril.AR_ID)||'&d'||n(ril.IR_ID)||'&d'); utl_file.put_line(handle,n(ril.LINE_TYPE)||'&d'||n(ril.ORDER_NUM_1)||'&d'); utl_file.put_line(handle,n(ril.ORDER_TYPE_2)||'&d'||n(ril.DELIVERY_3)||'&d'); utl_file.put_line(handle,n(ril.WAYBILL_4)||'&d'||n(ril.LINE_ID_6)||'&d'); utl_file.put_line(handle,n(ril.PICK_LINE_ID_7)||'&d'||n(ril.BILL_LADING_8)||'&d'); utl_file.put_line(handle,n(ril.Cust_Item_9)||'&d'); utl_file.put_line(handle,n(ril.WH_ID_10)||'&d'||n(ril.PA_ID_11)||'&d'); utl_file.put_line(handle,n(ril.C_RATE)||'&d'||n(ril.C_DATE)||'&d'); utl_file.put_line(handle,n(ril.CURR)||'&d'||n(ril.TR)||'&d'); utl_file.put_line(handle,n(ril.S_TAX_ID)||'&d'||n(ril.VAT_ID)||'&d'); utl_file.put_line(handle,n(ril.EF)||'&d'||n(ril.TERR_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f RA_INTERFACE_ERRORS (RAE) - RECEIVABLES INTERFACE ERRORS &f'); UTL_FILE.PUT_LINE(handle,'&std &sh INTERFACE_LINE_ID &dh INTERFACE_SALESCREDIT_ID &dh MESSAGE_TEXT &eh'); Declare cursor ra_int_err is select distinct RAE.INTERFACE_LINE_ID, RAE.INTERFACE_SALESCREDIT_ID, RAE.MESSAGE_TEXT FROM RA_INTERFACE_LINES RAI, RA_INTERFACE_ERRORS RAE, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ID = RAE.INTERFACE_LINE_ID and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (NVL(RAI.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) or NVL(RAI.INTERFACE_LINE_ATTRIBUTE6,0) in (select ADJ.PRICE_ADJUSTMENT_ID from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = LIN.HEADER_ID and (ADJ.LINE_ID IS NULL or ADJ.LINE_ID = LIN.LINE_ID)) ) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id); /* UNION select distinct RAE.INTERFACE_LINE_ID, RAE.INTERFACE_SALESCREDIT_ID, RAE.MESSAGE_TEXT FROM RA_INTERFACE_LINES RAI, RA_INTERFACE_ERRORS RAE, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_PRICE_ADJUSTMENTS ADJ, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and RAI.INTERFACE_LINE_ID = RAE.INTERFACE_LINE_ID and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and RAI.LINE_TYPE = 'FREIGHT' and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and to_number(RAI.INTERFACE_LINE_ATTRIBUTE6) = ADJ.PRICE_ADJUSTMENT_ID and ADJ.LINE_ID = LIN.LINE_ID and ADJ.LINE_ID IS NOT NULL and ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) UNION select distinct RAE.INTERFACE_LINE_ID, RAE.INTERFACE_SALESCREDIT_ID, RAE.MESSAGE_TEXT FROM RA_INTERFACE_LINES RAI, RA_INTERFACE_ERRORS RAE, OE_ORDER_HEADERS ORD, OE_PRICE_ADJUSTMENTS ADJ, OE_TRANSACTION_TYPES_V TYP WHERE RAI.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAI.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and RAI.INTERFACE_LINE_ID = RAE.INTERFACE_LINE_ID and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and RAI.LINE_TYPE = 'FREIGHT' and ADJ.HEADER_ID = nvl('&header_id_selected',:v_header_id) and ADJ.LINE_ID IS NULL and ORD.HEADER_ID = nvl('&header_id_selected',:v_header_id); */ begin for rie in ra_int_err loop utl_file.put_line(handle,'&sld'||n(rie.INTERFACE_LINE_ID)||'&d'||n(rie.INTERFACE_SALESCREDIT_ID)||'&d'); utl_file.put_line(handle,n(rie.MESSAGE_TEXT)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f RA_CUSTOMER_TRX (RAH) - INVOICE HEADERS Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh CUST_TRX_ID &dh TRX_NUMBER &dh TRX_TYPE_ID &dh TRX_DATE &dh BATCH_ID &dh SOURCE_ID &dh BILL_CUST &dh BILL_SITE &dh '); UTL_FILE.PUT_LINE(handle,'SHIP_CUST &dh SHIP_SITE &dh TERM_ID &dh SALESREP_ID &dh PO_NUMBER &dh CURR &dh AGREEMENT &dh COMP_FL &dh IR_ID &dh '); UTL_FILE.PUT_LINE(handle,'SHIP_VIA &dh WAYBILL &dh STATUS &eh'); Declare cursor ra_cus_trx is select distinct RAH.CUSTOMER_TRX_ID CUST_TRX_ID, RAH.TRX_NUMBER TRX_NUMBER, RAH.CUST_TRX_TYPE_ID TRX_TYPE_ID, to_char(RAH.TRX_DATE,'DD-MON-RR_HH24:MI:SS') TRX_DATE, RAH.BATCH_ID BATCH_ID, RAH.BATCH_SOURCE_ID SOURCE_ID, RAH.BILL_TO_CUSTOMER_ID BILL_CUST, RAH.BILL_TO_SITE_USE_ID BILL_SITE, RAH.SHIP_TO_CUSTOMER_ID SHIP_CUST, RAH.SHIP_TO_SITE_USE_ID SHIP_SITE, RAH.TERM_ID TERM_ID, RAH.PRIMARY_SALESREP_ID SALESREP_ID, RAH.PURCHASE_ORDER PO_NUMBER, RAH.INVOICE_CURRENCY_CODE CURR, RAH.AGREEMENT_ID AGREEMENT, RAH.COMPLETE_FLAG COMP_FL, RAH.INVOICING_RULE_ID IR_ID, RAH.SHIP_VIA SHIP_VIA, RAH.WAYBILL_NUMBER WAYBILL, RAH.STATUS_TRX STATUS --ENABLE_TIMESTAMP ,to_char(RAH.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(RAH.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,RAH.REQUEST_ID REQUEST_ID FROM RA_CUSTOMER_TRX RAH, RA_CUSTOMER_TRX_LINES RAL, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAH.CUSTOMER_TRX_ID = RAL.CUSTOMER_TRX_ID and RAL.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAL.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) or NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (select ADJ.PRICE_ADJUSTMENT_ID from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = LIN.HEADER_ID and (ADJ.LINE_ID IS NULL or ADJ.LINE_ID = LIN.LINE_ID)) ) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) ORDER BY RAH.TRX_NUMBER; begin for rct in ra_cus_trx loop utl_file.put_line(handle,'&sld'||n(rct.CUST_TRX_ID)||'&d'||n(rct.TRX_NUMBER)||'&d'); utl_file.put_line(handle,n(rct.TRX_TYPE_ID)||'&d'||n(rct.TRX_DATE)||'&d'); utl_file.put_line(handle,n(rct.BATCH_ID)||'&d'||n(rct.SOURCE_ID)||'&d'); utl_file.put_line(handle,n(rct.BILL_CUST)||'&d'||n(rct.BILL_SITE)||'&d'); utl_file.put_line(handle,n(rct.SHIP_CUST)||'&d'||n(rct.SHIP_SITE)||'&d'); utl_file.put_line(handle,n(rct.TERM_ID)||'&d'||n(rct.SALESREP_ID)||'&d'); utl_file.put_line(handle,n(rct.PO_NUMBER)||'&d'||n(rct.CURR)||'&d'); utl_file.put_line(handle,n(rct.AGREEMENT)||'&d'||n(rct.COMP_FL)||'&d'); utl_file.put_line(handle,n(rct.IR_ID)||'&d'||n(rct.SHIP_VIA)||'&d'); utl_file.put_line(handle,n(rct.WAYBILL)||'&d'||n(rct.STATUS)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); UTL_FILE.PUT_LINE(handle,'&f &f RA_CUSTOMER_TRX_LINES (RAL) - INVOICE LINES Column Definitions &f'); UTL_FILE.PUT_LINE(handle,'&std &sh TRX_LINE_ID &dh LINK_TO_ID &dh CUST_TRX_ID &dh TRX_NUMBER &dh SOURCE &dh LINE_NUM &dh ITEM_ID &dh ORD_Q &dh '); UTL_FILE.PUT_LINE(handle,'INV_Q &dh CRD_Q &dh UOM &dh PRICE &dh EXTD_AMT &dh REV_AMT &dh SO_LIN &dh LINE_TYPE &dh Order_Num_1 &dh Order_Type_2 &dh '); UTL_FILE.PUT_LINE(handle,'Delivery_3 &dh WayBill_4 &dh Line_ID_6 &dh Bill_Lading_8 &dh Customer_item_9 &dh WH_ID_10 &dh PA_ID_11 &dh TF &dh TR &dh VAT_ID &dh S_TAX_ID &eh'); Declare cursor ra_cus_trxl is select distinct RAL.CUSTOMER_TRX_LINE_ID TRX_LINE_ID, RAL.LINK_TO_CUST_TRX_LINE_ID LINK_TO_ID, RAL.CUSTOMER_TRX_ID CUST_TRX_ID, RAH.TRX_NUMBER TRX_NUMBER, RAL.SALES_ORDER_SOURCE SOURCE, RAL.LINE_NUMBER LINE_NUM, RAL.INVENTORY_ITEM_ID ITEM_ID, RAL.QUANTITY_ORDERED ORD_Q, RAL.QUANTITY_INVOICED INV_Q, RAL.QUANTITY_CREDITED CRD_Q, RAL.UOM_CODE UOM, RAL.UNIT_SELLING_PRICE PRICE, RAL.EXTENDED_AMOUNT EXTD_AMT, RAL.REVENUE_AMOUNT REV_AMT, TRIM(RAL.SALES_ORDER_LINE) SO_LIN, RAL.LINE_TYPE LINE_TYPE, RAL.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAL.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAL.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAL.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAL.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAL.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAL.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAL.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAL.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAL.TAXABLE_FLAG TF, RAL.TAX_RATE TR, RAL.VAT_TAX_ID VAT_ID, RAL.SALES_TAX_ID S_TAX_ID --ENABLE_TIMESTAMP ,to_char(RAL.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(RAL.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,RAL.REQUEST_ID REQUEST_ID FROM RA_CUSTOMER_TRX RAH, RA_CUSTOMER_TRX_LINES RAL, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAH.CUSTOMER_TRX_ID = RAL.CUSTOMER_TRX_ID and RAL.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAL.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) or NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (select ADJ.PRICE_ADJUSTMENT_ID from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = LIN.HEADER_ID and (ADJ.LINE_ID IS NULL or ADJ.LINE_ID = LIN.LINE_ID)) ) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id) /* -- remove FROM RA_CUSTOMER_TRX RAH, RA_CUSTOMER_TRX_LINES RAL WHERE RAH.CUSTOMER_TRX_ID = RAL.CUSTOMER_TRX_ID and RAL.CUSTOMER_TRX_LINE_ID in (select RAL1.CUSTOMER_TRX_LINE_ID FROM RA_CUSTOMER_TRX RAH1, RA_CUSTOMER_TRX_LINES RAL1, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAH1.CUSTOMER_TRX_ID = RAL1.CUSTOMER_TRX_ID and RAL1.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAL1.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and NVL(RAL1.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id)) */ UNION select /* LINKED LINES */ distinct RAL.CUSTOMER_TRX_LINE_ID TRX_LINE_ID, RAL.LINK_TO_CUST_TRX_LINE_ID LINK_TO_ID, RAL.CUSTOMER_TRX_ID CUST_TRX_ID, RAH.TRX_NUMBER TRX_NUMBER, RAL.SALES_ORDER_SOURCE SOURCE, RAL.LINE_NUMBER LINE_NUM, RAL.INVENTORY_ITEM_ID ITEM_ID, RAL.QUANTITY_ORDERED ORD_Q, RAL.QUANTITY_INVOICED INV_Q, RAL.QUANTITY_CREDITED CRD_Q, RAL.UOM_CODE UOM, RAL.UNIT_SELLING_PRICE PRICE, RAL.EXTENDED_AMOUNT EXTD_AMT, RAL.REVENUE_AMOUNT REV_AMT, TRIM(RAL.SALES_ORDER_LINE) SO_LIN, RAL.LINE_TYPE LINE_TYPE, RAL.INTERFACE_LINE_ATTRIBUTE1 Order_Num_1, RAL.INTERFACE_LINE_ATTRIBUTE2 Order_Type_2, RAL.INTERFACE_LINE_ATTRIBUTE3 Delivery_3, RAL.INTERFACE_LINE_ATTRIBUTE4 WayBill_4, RAL.INTERFACE_LINE_ATTRIBUTE6 Line_ID_6, RAL.INTERFACE_LINE_ATTRIBUTE8 Bill_Lading_8, RAL.INTERFACE_LINE_ATTRIBUTE9 Cust_Item_9, RAL.INTERFACE_LINE_ATTRIBUTE10 WH_ID_10, RAL.INTERFACE_LINE_ATTRIBUTE11 PA_ID_11, RAL.TAXABLE_FLAG TF, RAL.TAX_RATE TR, RAL.VAT_TAX_ID VAT_ID, RAL.SALES_TAX_ID S_TAX_ID --ENABLE_TIMESTAMP ,to_char(RAL.CREATION_DATE,'DD-MON-RR_HH24:MI:SS') CREATE_DT --ENABLE_TIMESTAMP ,to_char(RAL.LAST_UPDATE_DATE,'DD-MON-RR_HH24:MI:SS') UPDATE_DT --ENABLE_TIMESTAMP ,RAL.REQUEST_ID REQUEST_ID FROM RA_CUSTOMER_TRX RAH, RA_CUSTOMER_TRX_LINES RAL WHERE RAH.CUSTOMER_TRX_ID = RAL.CUSTOMER_TRX_ID and RAL.LINK_TO_CUST_TRX_LINE_ID in (select RAL1.CUSTOMER_TRX_LINE_ID FROM RA_CUSTOMER_TRX RAH1, RA_CUSTOMER_TRX_LINES RAL1, OE_ORDER_LINES LIN, OE_ORDER_HEADERS ORD, OE_TRANSACTION_TYPES_V TYP WHERE RAH1.CUSTOMER_TRX_ID = RAL1.CUSTOMER_TRX_ID and RAL1.SALES_ORDER = to_char(ORD.ORDER_NUMBER) and RAL1.INTERFACE_LINE_ATTRIBUTE2 = TYP.NAME and TYP.TRANSACTION_TYPE_ID = ORD.ORDER_TYPE_ID and ORD.HEADER_ID = LIN.HEADER_ID and NVL('&line_id_selected',0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) and (NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (0,LIN.LINE_ID, LIN.TOP_MODEL_LINE_ID, LIN.ATO_LINE_ID, LIN.LINK_TO_LINE_ID, LIN.REFERENCE_LINE_ID, LIN.SERVICE_REFERENCE_LINE_ID) or NVL(RAL.INTERFACE_LINE_ATTRIBUTE6,0) in (select ADJ.PRICE_ADJUSTMENT_ID from OE_PRICE_ADJUSTMENTS ADJ where ADJ.HEADER_ID = LIN.HEADER_ID and (ADJ.LINE_ID IS NULL or ADJ.LINE_ID = LIN.LINE_ID)) ) and LIN.HEADER_ID = nvl('&header_id_selected',:v_header_id)) order by TRX_NUMBER, TRX_LINE_ID; begin for rctl in ra_cus_trxl loop utl_file.put_line(handle,'&sld'||n(rctl.TRX_LINE_ID)||'&d'||n(rctl.LINK_TO_ID)||'&d'); utl_file.put_line(handle,n(rctl.CUST_TRX_ID)||'&d'||n(rctl.TRX_NUMBER)||'&d'); utl_file.put_line(handle,n(rctl.SOURCE)||'&d'||n(rctl.LINE_NUM)||'&d'); utl_file.put_line(handle,n(rctl.ITEM_ID)||'&d'||n(rctl.ORD_Q)||'&d'); utl_file.put_line(handle,n(rctl.INV_Q)||'&d'||n(rctl.CRD_Q)||'&d'); utl_file.put_line(handle,n(rctl.UOM)||'&d'||n(rctl.PRICE)||'&d'); utl_file.put_line(handle,n(rctl.EXTD_AMT)||'&d'||n(rctl.REV_AMT)||'&d'); utl_file.put_line(handle,n(rctl.SO_LIN)||'&d'||n(rctl.LINE_TYPE)||'&d'); utl_file.put_line(handle,n(rctl.ORDER_NUM_1)||'&d'||n(rctl.ORDER_TYPE_2)||'&d'); utl_file.put_line(handle,n(rctl.DELIVERY_3)||'&d'||n(rctl.WAYBILL_4)||'&d'); utl_file.put_line(handle,n(rctl.LINE_ID_6)||'&d'||n(rctl.BILL_LADING_8)||'&d'); utl_file.put_line(handle,n(rctl.Cust_Item_9)||'&d'); utl_file.put_line(handle,n(rctl.WH_ID_10)||'&d'||n(rctl.PA_ID_11)||'&d'); utl_file.put_line(handle,n(rctl.TF)||'&d'||n(rctl.TR)||'&d'); utl_file.put_line(handle,n(rctl.VAT_ID)||'&d'||n(rctl.S_TAX_ID)||'&el'); end loop; end; UTL_FILE.PUT_LINE(handle,'&et'); end if; --prt_ar end if; -- :v_head_only -- Column descriptions for each table UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh
COLUMN DEFINITIONS
&eh &et &f'); UTL_FILE.PUT_LINE(handle,'&std &sh OE_ORDER_HEADERS (ORD) &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld OP => OPEN FLAG &d BK => BOOKED FLAG &d SP => PARTIAL SHIPMENTS ALLOWED &el '); UTL_FILE.PUT_LINE(handle,'&sld CN => CANCEL FLAG &d STA => SHIP TOLERANCE ABOVE &d STB => SHIP TOLERANCE BELOW &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh OE_ORDER_LINES (LIN) &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld SHN_Q => SHIPPING QUANTITY &d OP => OPEN FLAG &d ORG => ORGANIZATION CODE &el'); UTL_FILE.PUT_LINE(handle,'&sld SHP_Q => SHIPPED QUANTITY &d BK => BOOKED FLAG &d SI => Shipping Interfaced Flag &el'); UTL_FILE.PUT_LINE(handle,'&sld FUL_Q => FULFILLED QUANTITY &d SH => SHIPPABLE FLAG &d II => Inventory Interfaced Flag &el'); UTL_FILE.PUT_LINE(handle,'&sld CAN_Q => CANCELLED QUANTITY &d CN => CANCELLED FLAG &d ATO => ATO FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld INC_Q => INVOICED QUANTITY &d VD => VISIBLE DEMAND FLAG &d OPT => OPTION FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld RES_Q => RESERVATION QUANTITY &d SMC => SHIP MODEL COMPLETE &d FF => FULFILLED_FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld LCN_Q => LAST CANCELLED QTY &d CAL_PR => CALCULATE PRICE &d &sp &el'); UTL_FILE.PUT_LINE(handle,'&sld STA => SHIP TOLERANCE ABOVE &d STB => SHIP TOLERANCE BELOW &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); if substr(UPPER(nvl('&prt_price','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&std &sh APPLIED and UN-APPLIED HEADER PRICE ADJUSTMENTS (ADJ) &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MOD_LVL => MODIFIER_LEVEL &d IF => INVOICED FLAG &d LK => LOCK CONTROL &el'); UTL_FILE.PUT_LINE(handle,'&sld CHG_TY_CD => CHARGE_TYPE_CODE &d EF => ESTIMATED FLAG &d PP => PRICING PHASE &el'); UTL_FILE.PUT_LINE(handle,'&sld CD => CREDIT_OR_DEBIT &d UA => UPDATE ALLOWED &d PI => PRINT ON INVOICE &el'); UTL_FILE.PUT_LINE(handle,'&sld AF => AUTOMATIC FLAG &d UF => UPDATED FLAG &d AP => APPLIED FLAG &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh APPLIED AND UNAPPLIED LINE PRICE ADJUSTMENTS &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MOD_LVL => MODIFIER_LEVEL_CODE &d CD => CREDIT_OR_CHARGE_FLAG &d UA => UPDATE_ALLOWED &el'); UTL_FILE.PUT_LINE(handle,'&sld CHG_TY_CD => CHARGE_TYPE_CODE &d AF => AUTOMATIC_FLAG &d UF => UPDATED_FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld ARITH_OP => ARITHMETIC_OPERATOR &d PI => PRINT_ON_INVOICE_FLAG &d AP => APPLIED_FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld OP_PER_QTY => OPERAND_PER_PQTY &d AC => ACCRUAL_FLAG &d LK => LOCK_CONTROL &el'); UTL_FILE.PUT_LINE(handle,'&sld ADJ_AMT_PO => ADJUSTED_AMOUNT_PER_PQTY &d EF => ESTIMATED_FLAG &d PERC => PERCENT &el'); UTL_FILE.PUT_LINE(handle,'&sld ADJ_AMT => ADJUSTED_AMOUNT &d PP => PRICING_PHASE_ID &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); end if; -- prt_price UTL_FILE.PUT_LINE(handle,'&std &sh WSH_DELIVERY_DETAILS (DET) &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MO_LINE_ID => MOVE ORDER LINE ID &d DLV_Q => DELIVERED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld DELIV_ID => DELIVERY ID &d CAN_Q => CANCELLED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld SRQ_Q => SOURCE REQUESTED QUANTITY &d SRQ_U => SOURCE REQUESTED QUANTITY UOM &el'); UTL_FILE.PUT_LINE(handle,'&sld REQ_Q => REQUESTED QUANTITY &d REQ_U => REQUESTED QUANTITY UOM &el'); UTL_FILE.PUT_LINE(handle,'&sld OMI => ORDER MANAGEMENT INTERFACED &d INI => INVENTORY INTERFACED &el'); UTL_FILE.PUT_LINE(handle,'&sld PIKF => PICKABLE_FLAG &d PIK_Q => PICKED_QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld SHP_Q => SHIPPED QUANTITY &d ORG_SUB => ORIGINAL SUBINVENTORY &el'); UTL_FILE.PUT_LINE(handle,'&sld CUR_SUB => CURRENT SUBINVENTORY &d CF => CONTAINER FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld FL_PERC => FILL PERCENTAGE &d SHP_SET => SHIP_SET_ID &el'); UTL_FILE.PUT_LINE(handle,'&sld STA => SHIP TOLERANCE ABOVE &d STB => SHIP TOLERANCE BELOW &el'); UTL_FILE.PUT_LINE(handle,'&sld TRX_TEMP_ID=> TRANSACTION_TEMP_ID &d TOP_MO_LIN => TOP_MODEL_LINE_ID &el'); UTL_FILE.PUT_LINE(handle,'&sld SHP_MC => SHIP_MODEL_COMPLETE_FLAG &d SPL_DEL_DET_ID ==> SPLIT FROM DEL.DETAIL ID &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh WSH_SERIAL_NUMBERS (WSN) &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld DET_DET_ID => DELIVERY DETAIL ID &d DLV_Q => DELIVERED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld REL_STATUS => RELEASED STATUS &d CAN_Q => CANCELLED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld SRQ_Q => SOURCE REQUESTED QUANTITY &d SRQ_U => SOURCE REQUESTED QUANTITY UOM &el'); UTL_FILE.PUT_LINE(handle,'&sld REQ_Q => REQUESTED QUANTITY &d REQ_U => REQUESTED QUANTITY UOM &el'); UTL_FILE.PUT_LINE(handle,'&sld OMI => ORDER MANAGEMENT INTERFACED &d INI => INVENTORY INTERFACED &el'); UTL_FILE.PUT_LINE(handle,'&sld PIKF => PICKABLE_FLAG &d PIK_Q => PICKED_QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld SHP_Q => SHIPPED QUANTITY &d ORG_SUB => ORIGINAL SUBINVENTORY &el'); UTL_FILE.PUT_LINE(handle,'&sld CUR_SUB => CURRENT SUBINVENTORY &d CF => CONTAINER FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld FL_PERC => FILL PERCENTAGE &d SHP_SET => SHIP_SET_ID &el'); UTL_FILE.PUT_LINE(handle,'&sld STA => SHIP TOLERANCE ABOVE &d STB => SHIP TOLERANCE BELOW &el'); UTL_FILE.PUT_LINE(handle,'&sld SHP_MC => SHIP_MODEL_COMPLETE_FLAG &d SPL_DEL_DET_ID ==> SPLIT FROM DEL.DETAIL ID &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); if substr(UPPER(nvl('&prt_inv','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&std &sh MTL_RESERVATIONS (RES) &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld RES_Q => PRIMARY RESERVATION QUANTITY &d DET_Q => DETAILED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld DS_TYPE => DEMAND SOURCE TYPE &d WH_ID => ORGANIZATION ID &el'); UTL_FILE.PUT_LINE(handle,'&sld SS_TYPE_ID => SUPPLY SOURCE TYPE ID &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_TRANSACTIONS_INTERFACE (MTI) &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld TRX_INT_ID => TRANSACTION_INTERFACE_ID &d PRM_Q => PRIMARY QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld LCK => LOCK CODE &d FROM_SUB => FROM SUBINVENTORY &el'); UTL_FILE.PUT_LINE(handle,'&sld FROM_LOC_ID => FROM LOCATOR ID &d TRANS_MODE => TRANSACTION MODE &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_MATERIAL_TRANSACTIONS_TEMP (TMP) - UNPICKED LINES &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MTL_TRNS_ID => MTL TRANSACTION ID &d PICK_SLIP => PICK SLIP NUMBER &el'); UTL_FILE.PUT_LINE(handle,'&sld PRM_Q => PRIMARY QUANTITY &d LCK => LOCK CODE &el'); UTL_FILE.PUT_LINE(handle,'&sld FROM_SUB => FROM SUBINVENTORY &d FROM_LOC_ID => FROM LOCATOR ID &el'); UTL_FILE.PUT_LINE(handle,'&sld TRANS_MODE => TRANSACTION MODE &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_MATERIAL_TRANSACTIONS (TRN) - PICKED LINES &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MTL_TRNS_ID => MTL TRANSACTION ID &d TRANS_TYPE => TRANSACTION TYPE &el'); UTL_FILE.PUT_LINE(handle,'&sld PRM_Q => PRIMARY QUANTITY &d LCK => LOCK CODE &el'); UTL_FILE.PUT_LINE(handle,'&sld FROM_SUB => FROM SUBINVENTORY &d FROM_LOC_ID => FROM LOCATOR ID &el'); UTL_FILE.PUT_LINE(handle,'&sld TO_SUB => TO SUBINVENTORY &d TO_LOC_ID => TO LOCATOR ID &el'); UTL_FILE.PUT_LINE(handle,'&sld TRANS_MODE => TRANSACTION MODE &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_UNIT_TRANSACTIONS (UNT) &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld TRANS_ID => TRANSACTION ID &d SUBINV => SUBINVENTRY CODE &el'); UTL_FILE.PUT_LINE(handle,'&sld LOC_ID => LOCATOR ID &d SERIAL_NUM => SERIAL NUMBER &el'); UTL_FILE.PUT_LINE(handle,'&sld WH_ID => WAREHOUSE ID &d TRX_DATE => TRANSACTION DATE &el'); UTL_FILE.PUT_LINE(handle,'&sld TRX_SRC_ID => TRANSACTION SOURCE ID &d TRX_SRC_TYPE_ID => TRANSACTION SOURCE TYPE ID &el'); UTL_FILE.PUT_LINE(handle,'&sld CUST_ID => CUSTOMER ID &d SHIP_ID => SHIPMENT ID &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh MTL_TXN_REQUEST_LINES_V (MOV) - MOVE TRANSACTIONS &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld MO_LINE_ID => MOVE ORDER LINE ID &d MO_NUMBER => MOVE ORDER NUMBER &el'); UTL_FILE.PUT_LINE(handle,'&sld MV_HDR_ID => MOVE ORDER HEADER ID &d MV_LINE_NUM => MOVE ORDER LINE NUMBER &el'); UTL_FILE.PUT_LINE(handle,'&sld MV_LINE_STAT => MOVE ORDER LINE STATUS &d TXN_SLINE_ID=> TRANSACTION SOURCE LINE ID &el'); UTL_FILE.PUT_LINE(handle,'&sld PRM_Q => PRIMARY QUANTITY &d DLV_Q => DELIVERED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld DTL_Q => DETAILED QUANTITY &d WH_ID => WAREHOUSE ID &el'); UTL_FILE.PUT_LINE(handle,'&sld FROM_SUB => FROM SUBINVENTORY &d FROM_LOC_ID => FROM LOCATOR ID &el'); UTL_FILE.PUT_LINE(handle,'&sld TO_SUB => TO SUBINVENTORY &d TO_LOC_ID => TO LOCATOR ID &el'); UTL_FILE.PUT_LINE(handle,'&sld LOT_NUM => LOT NUMBER &d TRNS_HEAD_ID=> TRANSACTION HEADER ID &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); end if; -- prt_inv if substr(UPPER(nvl('&prt_ar','Y')),1,1) = 'Y' then UTL_FILE.PUT_LINE(handle,'&std &sh RA_INTERFACE_LINES (RAI) &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld QTY => QUANTITY &d IR_ID => INVOICING RULE ID &d TR => TAX RATE &el'); UTL_FILE.PUT_LINE(handle,'&sld ORD_Q => ORDERED QUANTITY &d PA_ID_11 => PRICE ADJUSTMENT ID &d EF => TAX EXEMPT FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld SO_LIN => SALES ORDER LINE ID &d C_RATE => CONVERSION RATE &d S_TAX_ID => SALES TAX ID &el'); UTL_FILE.PUT_LINE(handle,'&sld AR_ID => ACCOUNTING RULE ID &d C_DATE => CONVERSION DATE &d CURR => CURRENCY CODE &el'); UTL_FILE.PUT_LINE(handle,'&sld WH_ID => WAREHOUSE ID &d VAT_ID => VALUE ADDED TAX ID &d EF => TAX EXEMPT FLAG &el'); UTL_FILE.PUT_LINE(handle,'&sld TERR_ID=> TERRITORY ID &d &sp &d &sp &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RA_CUSTOMER_TRX (RAH) - INVOICE HEADERS &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld CUST_TRX_ID => CUSTOMER TRANSACTION ID &d TRX_NUMBER => TRANSACTION NUMBER &d TRX_DATE => TRANSACTION DATE &el'); UTL_FILE.PUT_LINE(handle,'&sld CURR => CURRENCY &d COMP_FL => COMPLETE FLAG &d IR_ID => INVOICING RULE ID &el &et'); UTL_FILE.PUT_LINE(handle,'&f &f'); UTL_FILE.PUT_LINE(handle,'&std &sh RA_CUSTOMER_TRX_LINES (RAL) - INVOICE LINES &dh &sp &dh &sp &eh'); UTL_FILE.PUT_LINE(handle,'&sld TRX_LINE_ID => TRANSACTION LINE ID &d CUST_TRX_ID => CUSTOMER TRANSACTION ID &d TRX_NUMBER => TRANSACTION NUMBER &el'); UTL_FILE.PUT_LINE(handle,'&sld ORD_Q => ORDERED QUANTITY &d INV_Q => INVOICED QUANTITY &d CRD_Q => CREDITED QUANTITY &el'); UTL_FILE.PUT_LINE(handle,'&sld EXTD_AMT => EXTENDED AMOUNT &d REV_AMT => REVISED AMOUNT &d PA_ID_11 => PRICE ADJUSTMENT ID &el'); UTL_FILE.PUT_LINE(handle,'&sld TF => TAXABLE FLAG &d TR => TAX RATE &d VAT_ID => VALUE ADDED TAX ID &el &et'); end if; -- prt_ar UTL_FILE.PUT_LINE(handle,'&f &f'); -- Closing Time select '&std &sh Script completion time: &eh &sld '||to_char(sysdate,'DD-MON-RR_HH24:MI:SS')||' &el &et &f &f' into text from dual; UTL_FILE.PUT_LINE(handle,text); UTL_FILE.PUT_LINE(handle,''); -- Close output file UTL_FILE.FCLOSE(handle); END; /

你可能感兴趣的:(顾问之路)