You are on page 1of 9

REM +=========================================================+

set serveroutput on ;

EXEC dbms_output.enable(1000000);

set feedback off;

REM The following sqlplus statements will let you start process

REM the whole Open Interface process after you have provided

REM the runtime parameters.

WHENEVER SQLERROR EXIT FAILURE ROLLBACK

DECLARE

i_type po_interface_errors.interface_type%TYPE;

i_hdr_id po_interface_errors.interface_header_id%TYPE;

i_line_id po_interface_errors.interface_line_id%TYPE;

X_progress varchar2(1000);

x_org_id NUMBER;

X_GROUP_ID NUMBER;

hdr_id NUMBER := 0;

line_id NUMBER := 0 ;

CURSOR header_cur is

select poi.column_name,poi.error_message,

rhi.header_interface_id,
rhi.vendor_name,

rhi.vendor_num,

rhi.shipment_num,

rhi.receipt_num,

rhi.invoice_num,

rhi.asn_type,

rhi.auto_transact_code,

rhi.test_flag,

rhi.creation_date,

rhi.created_by,

rhi.ship_to_organization_code,

rhi.expected_receipt_date,

rhi.invoice_date,

rhi.total_invoice_amount,

rhi.packing_slip,

rhi.hazard_description

from po_interface_errors poi,rcv_headers_interface rhi

where poi.interface_header_id = rhi.header_interface_id and

poi.interface_line_id is null and

rhi.group_id = x_group_id and

-- rhi.processing_status_code NOT IN ('PRINT','PENDING')

rhi.processing_status_code <> 'PENDING'

order by rhi.header_interface_id,rhi.vendor_name;

CURSOR tr_int_cur is
select poi.column_name,poi.error_message,

rti.interface_transaction_id,

rti.vendor_name,

rti.vendor_num,

rti.shipment_num,

rti.transaction_type,

rti.transaction_date,

rti.creation_date,

rti.created_by,

rti.to_organization_code,

rti.ship_to_location_code,

rti.document_num,

rti.release_num,

rti.document_line_num,

rti.document_shipment_line_num,

rti.vendor_item_num,

rti.item_num,

rti.substitute_item_num,

rti.item_description,

rti.expected_receipt_date,

rti.quantity,

rti.unit_of_measure,

rti.quantity_invoiced

from po_interface_errors poi,rcv_transactions_interface rti

where
poi.interface_line_id = rti.interface_transaction_id and

rti.group_id = x_group_id and

-- rti.processing_status_code NOT IN ('PRINT','PENDING')

rti.processing_status_code <> 'PENDING' and

rti.transaction_type in ('DELIVER','RECEIVE')

-- order by rti.interface_transaction_id,rti.vendor_name;

UNION ALL

select poi.column_name,poi.error_message,

rti.interface_transaction_id,

rti.vendor_name,

rti.vendor_num,

rti.shipment_num,

rti.transaction_type,

rti.transaction_date,

rti.creation_date,

rti.created_by,

rti.to_organization_code,

rti.ship_to_location_code,

rti.document_num,

rti.release_num,

rti.document_line_num,

rti.document_shipment_line_num,

rti.vendor_item_num,

rti.item_num,

rti.substitute_item_num,
rti.item_description,

rti.expected_receipt_date,

rti.quantity,

rti.unit_of_measure,

rti.quantity_invoiced

from po_interface_errors poi,rcv_transactions_interface rti

where

poi.interface_transaction_id = rti.interface_transaction_id and

rti.group_id = x_group_id and

-- rti.processing_status_code NOT IN ('PRINT','PENDING')

rti.processing_status_code <> 'PENDING' and

rti.transaction_type not in ('DELIVER','RECEIVE')

order by 3, 4;

begin

X_progress := '010';

x_group_id := to_number(nvl('&2','0'));

x_org_id := &1;

if x_group_id =0 then

select max(group_id)

into x_group_id

from rcv_headers_interface
where from_organization_id = x_org_id;

end if;

dbms_output.put_line('==================================');

dbms_output.put_line('RECEIVING ERRORS REPORT');

dbms_output.put_line('Interface Group ID: '||to_char(x_group_id));

dbms_output.put_line('==================================');

FOR rcv_hdr_record IN header_cur LOOP

dbms_output.put_line('***********************');

dbms_output.put_line('Error at Header Level');

dbms_output.put_line('***********************');

dbms_output.put_line('Column_name '|| rcv_hdr_record.column_name);

dbms_output.put_line(substr('Error Message '||


rcv_hdr_record.error_message,1,255));

dbms_output.put_line('Vendor Name '|| rcv_hdr_record.vendor_name);

dbms_output.put_line('Vendor Number '|| rcv_hdr_record.vendor_num);

dbms_output.put_line('Shipment Number '|| rcv_hdr_record.shipment_num);

dbms_output.put_line('Receipt Number '|| rcv_hdr_record.receipt_num);

dbms_output.put_line('Invoice Number '|| rcv_hdr_record.invoice_num);

dbms_output.put_line('ASN Type '|| rcv_hdr_record.asn_type);

dbms_output.put_line('Auto Transact Code '|| rcv_hdr_record.auto_transact_code);

dbms_output.put_line('Test Flag '|| rcv_hdr_record.test_flag);

dbms_output.put_line('Creation Date '|| rcv_hdr_record.creation_date);

dbms_output.put_line('Created By '|| rcv_hdr_record.created_by);


dbms_output.put_line('Ship To Organization '|| rcv_hdr_record.ship_to_organization_code);

dbms_output.put_line('Expected Receipt Date '|| rcv_hdr_record.expected_receipt_date);

dbms_output.put_line('Invoice Date '|| rcv_hdr_record.invoice_date);

dbms_output.put_line('Total Invoice Amount '|| rcv_hdr_record.total_invoice_amount);

dbms_output.put_line('Packing Slip '|| rcv_hdr_record.packing_slip);

dbms_output.put_line('Hazard Description '|| rcv_hdr_record.hazard_description);

if (hdr_id != rcv_hdr_record.header_interface_id) then

update rcv_headers_interface rhi

set processing_status_code = 'PRINT'

where rhi.header_interface_id = rcv_hdr_record.header_interface_id;

end if;

hdr_id := rcv_hdr_record.header_interface_id;

END LOOP;

X_progress := '020';

FOR rcv_trans_record IN tr_int_cur LOOP

dbms_output.put_line('***********************');

dbms_output.put_line('Error at Transaction Level');

dbms_output.put_line('***********************');

dbms_output.put_line('Column_name '|| rcv_trans_record.column_name);

dbms_output.put_line(substr('Error Message '||


rcv_trans_record.error_message,1,255));
dbms_output.put_line('Vendor Name '|| rcv_trans_record.vendor_name);

dbms_output.put_line('Vendor Number '|| rcv_trans_record.vendor_num);

dbms_output.put_line('Shipment Number '|| rcv_trans_record.shipment_num);

dbms_output.put_line('Transaction Type '|| rcv_trans_record.transaction_type);

dbms_output.put_line('Transaction Date '|| rcv_trans_record.transaction_date);

dbms_output.put_line('Creation Date '|| rcv_trans_record.creation_date);

dbms_output.put_line('Created By '|| rcv_trans_record.created_by);

dbms_output.put_line('Ship To Location Code '|| rcv_trans_record.ship_to_location_code);

dbms_output.put_line('To Organization Code '|| rcv_trans_record.to_organization_code);

dbms_output.put_line('Document Number '|| rcv_trans_record.document_num);

dbms_output.put_line('Release Number '|| rcv_trans_record.release_num);

dbms_output.put_line('Document Line Number '||


rcv_trans_record.document_line_num);

dbms_output.put_line('Document Shipment Line Number '||


rcv_trans_record.document_shipment_line_num);

dbms_output.put_line('Vendor Item Number '|| rcv_trans_record.vendor_item_num);

dbms_output.put_line('Item Number '|| rcv_trans_record.item_num);

dbms_output.put_line('Substitute Item Number '|| rcv_trans_record.substitute_item_num);

dbms_output.put_line('Item Description '|| rcv_trans_record.item_description);

dbms_output.put_line('Expected Receipt Date '|| rcv_trans_record.expected_receipt_date);

dbms_output.put_line('Quantity '|| rcv_trans_record.quantity);

dbms_output.put_line('Unit of Measure '|| rcv_trans_record.unit_of_measure);

dbms_output.put_line('Quantity Invoiced '|| rcv_trans_record.quantity_invoiced);

if (line_id != rcv_trans_record.interface_transaction_id) then

update rcv_transactions_interface rti


set processing_status_code = 'PRINT'

where rti.interface_transaction_id = rcv_trans_record.interface_transaction_id;

end if;

line_id := rcv_trans_record.interface_transaction_id;

END LOOP;

EXCEPTION

WHEN others THEN

po_message_s.sql_error('INTERFACE ERRORS',X_progress,sqlcode);

po_message_s.sql_show_error;

RAISE;

END;

exit;

You might also like