Vous êtes sur la page 1sur 19

Supplier & Supplier Sites Interface/Conversion

Open Interface method Application: Payables Tables used: AP_SUPPLIERS_INT (populates PO_VENDORS), AP_SUPPLIER_SITE_INT (populates PO_VENDOR_SITES), HR_ALL_ORGANIZATION_UNITS (cf organization_id) , GL_CODE_COMBINATIONS (cf code_combination_id) PO_LOOKUP_CODES (cf LOOKUP_CODE) PER_PEOPLE_F (cf PERSON_ID) Step 1: Check for vendors that already exist SELECT * FROM PO_VENDORS WHERE VENDOR_NAME = ENTER VENDOR NAME; Step 2: Entering supplier / employee by classifying accordingly For entering employee as supplier
INSERT INTO ap_suppliers_int (vendor_name, segment1, vendor_interface_id, vendor_type_lookup_code, employee_id ) VALUES ('VENDOR2', --NAME OF VENDOR 'V02', --SUPPLIER NUMBER 21, -- UNIQUE SUPPLIER INTERFACE RECORD, 'Employee',--LOOKUP_CODE 234 -- PERSON_ID OF EMPLOYEE );

For entering supplier (who is not an employee)


INSERT INTO ap_suppliers_int

(vendor_name, segment1, vendor_interface_id, vendor_type_lookup_code ) VALUES ('VENDOR2', --NAME OF VENDOR 'V02', --SUPPLIER NUMBER 21, -- UNIQUE SUPPLIER INTERFACE RECORD, 'Supply' --LOOKUP_CODE );

Submit request Supplier Open Interface Import

Step 3: Query to retrieve vendor id


SELECT po.vendor_id, po.vendor_name, po.segment1 FROM po_vendors po, ap_suppliers_int supp WHERE supp.segment1 = po.segment1

Step 4: Entering the site information and account information for suppliers
INSERT INTO ap_supplier_sites_int (vendor_interface_id, vendor_site_code, vendor_id, org_id, address_line1, address_line2, address_line3, city, state, zip, country, accts_pay_code_combination_id, --LIABILITY ACCOUNT prepay_code_combination_id -- PREPAYMENT ACCOUNT

) VALUES (21, 'VENDOR23', 16044, 141, NULL, NULL, NULL, NULL, NULL, 123456, NULL, 1418, 1419 );

Submit request Supplier Sites Open Interface Import

After importing the suppliers you can check Supplier master. Navigation: Suppliers > Entry

Click on Sites button

A sample interface script is given below:

DECLARE --Cursor 1 which retieves data header table p_header_id p_counter p_header_error p_line_error p_header_sequence p_org_id p_message p_count p_pay_code_combination_id p_prepay_code_combination_id l_country

from header table to insert into receiving NUMBER; NUMBER := 0; NUMBER := 0; NUMBER := 0; NUMBER; NUMBER; VARCHAR2 (200); NUMBER := 0; NUMBER := 1074; NUMBER := 1075; VARCHAR2 (2);

CURSOR c2 IS SELECT vendor_name, vendor_type_lookup_code, site, country, address1, address2, address3, city, state, pin, liability_account_id FROM xx_vendor_sites_others_b WHERE flag IS NULL ORDER BY vendor_name; FUNCTION get_country_code (p_country IN VARCHAR2) RETURN VARCHAR2 IS BEGIN SELECT territory_code INTO l_country FROM fnd_territories_vl WHERE territory_short_name = INITCAP (p_country); RETURN l_country; EXCEPTION WHEN NO_DATA_FOUND THEN l_country := 'IN'; END; BEGIN FOR c2_rec IN c2 LOOP BEGIN SELECT COUNT (*) INTO p_count FROM ap_suppliers_int WHERE vendor_name = c2_rec.vendor_name; END; IF p_count = 0 THEN BEGIN INSERT INTO ap_suppliers_int (vendor_interface_id, vendor_name, vendor_name_alt, segment1, summary_flag, enabled_flag,

vendor_type_lookup_code, one_time_flag, ship_to_location_id, bill_to_location_id, terms_id, set_of_books_id, always_take_disc_flag, pay_date_basis_lookup_code, pay_group_lookup_code, payment_priority, hold_all_payments_flag, hold_future_payments_flag, start_date_active, payment_method_lookup_code, terms_date_basis, qty_rcv_tolerance, qty_rcv_exception_code, enforce_ship_to_location_code, days_early_receipt_allowed, days_late_receipt_allowed, receipt_days_exception_code, receiving_routing_id, allow_substitute_receipts_flag, allow_unordered_receipts_flag, bank_charge_bearer, match_option, allow_awt_flag ) VALUES (ap_suppliers_int_s.NEXTVAL, UPPER (c2_rec.vendor_name), UPPER (c2_rec.vendor_name), c2_rec.segment1, 'N', 'Y', c2_rec.vendor_type_lookup_code, 'Sub-Contractor', 'N', 142, 142, 10000, 1001, 'N', 'DISCOUNT', 'HIGH PRIORITY', 99, 'N', 'N', '15-AUG-2005', 'CHECK', 'Invoice', 10, 'WARNING', 'NONE', 2, 5, 'WARNING', 1, 'N', 'Y', 'I', 'R', '' ); /* UPDATE XX_VENDOR_SITES_OTHERS_B SET FLAG='Y' WHERE VENDOR_NAME=C2_REC.VENDOR_NAME; */ COMMIT; SELECT ap_suppliers_int_s.CURRVAL INTO p_header_sequence FROM DUAL; EXCEPTION WHEN OTHERS THEN ROLLBACK; p_message := SUBSTR (SQLERRM, 1, 200 ); UPDATE xx_vendor_sites_others_b SET flag = 'N', error_message = p_message WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT; p_header_error := 1;

END; END IF;

BEGIN SELECT code_combination_id INTO p_pay_code_combination_id FROM gl_code_combinations WHERE segment1 || '.' || segment2 || '.' || segment3 || '.' || segment4 = c2_rec.lia_account_code; SELECT code_combination_id INTO p_prepay_code_combination_id FROM gl_code_combinations WHERE segment1 || '.' || segment2 || '.' || segment3 || '.' || segment4 = c2_rec.advances_account_code; BEGIN l_country := get_country_code (c2_rec.country); EXCEPTION WHEN OTHERS THEN l_country := 'IN'; END; INSERT INTO ap_supplier_sites_int (vendor_interface_id, vendor_site_code, payment_method_lookup_code, terms_date_basis, accts_pay_code_combination_id, prepay_code_combination_id, pay_group_lookup_code, payment_priority, terms_id, pay_date_basis_lookup_code, org_id, purchasing_site_flag, rfq_only_site_flag, pay_site_flag, attention_ar_flag, allow_awt_flag, address_line1, address_line2, address_line3, city, country, state, zip, address_lines_alt, ship_to_location_id, bill_to_location_id ) VALUES (ap_suppliers_int_s.CURRVAL, c2_rec.site, 'SITE1', 'CHECK', 'Invoice', c2_rec.liability_account_id, p_prepay_code_combination_id, 'SUPPLIER', 'HIGH PRIORITY', 99, 10000, 'DISCOUNT', 82, 'Y', 'N', 'Y', 'N', 'N', c2_rec.address1, c2_rec.address2, c2_rec.address3, c2_rec.city, l_country, c2_rec.state, c2_rec.pin, c2_rec.contact_phones, 142, 142 ); UPDATE xx_vendor_sites_others_b SET flag = 'Y' WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; p_message := SUBSTR (SQLERRM, 1,

200 ); UPDATE xx_vendor_sites_others_b SET flag = 'N', error_message = p_message WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT; END; END LOOP; EXCEPTION WHEN OTHERS THEN ROLLBACK; END; COMMIT ; DECLARE --Cursor 1 which retieves data from header table header table p_header_id NUMBER; p_counter NUMBER := p_header_error NUMBER := p_line_error NUMBER := p_header_sequence NUMBER; p_org_id NUMBER; p_message VARCHAR2 (200); p_count NUMBER := p_pay_code_combination_id NUMBER := p_prepay_code_combination_id NUMBER := l_country VARCHAR2 (2); ln_req_id NUMBER; -- Concurrent request parameters lb_flag BOOLEAN; lv_dev_phase VARCHAR2 (30); lv_dev_status VARCHAR2 (30); lv_phase VARCHAR2 (30); lv_message VARCHAR2 (240);

to insert into receiving 0; 0; 0;

0; 1074; 1075;

CURSOR c2 IS SELECT vendor_name, vendor_type_lookup_code, site, country, address1, address2, address3, city, state, pin, liability_account_id FROM xx_vendor_sites_others_b WHERE flag IS NULL ORDER BY vendor_name; FUNCTION get_country_code (p_country IN VARCHAR2) RETURN VARCHAR2 IS BEGIN

SELECT INTO FROM WHERE

territory_code l_country fnd_territories_vl territory_short_name = INITCAP (p_country);

RETURN l_country; EXCEPTION WHEN NO_DATA_FOUND THEN l_country := 'IN'; END; BEGIN FOR c2_rec IN c2 LOOP BEGIN SELECT COUNT (*) INTO p_count FROM ap_suppliers_int WHERE vendor_name = c2_rec.vendor_name; END; IF p_count = 0 THEN BEGIN INSERT INTO ap_suppliers_int (vendor_interface_id, vendor_name, vendor_name_alt, segment1, summary_flag, enabled_flag, vendor_type_lookup_code, one_time_flag, ship_to_location_id, bill_to_location_id, terms_id, set_of_books_id, always_take_disc_flag, pay_date_basis_lookup_code, pay_group_lookup_code, payment_priority, hold_all_payments_flag, hold_future_payments_flag, start_date_active, payment_method_lookup_code, terms_date_basis, qty_rcv_tolerance, qty_rcv_exception_code, enforce_ship_to_location_code, days_early_receipt_allowed, days_late_receipt_allowed, receipt_days_exception_code, receiving_routing_id, allow_substitute_receipts_flag, allow_unordered_receipts_flag, bank_charge_bearer, match_option, allow_awt_flag ) VALUES (ap_suppliers_int_s.NEXTVAL, UPPER (c2_rec.vendor_name), UPPER (c2_rec.vendor_name), c2_rec.segment1, 'N', 'Y', c2_rec.vendor_type_lookup_code, 'Sub-Contractor', 'N', 142, 142, 10000, 1001, 'N', 'DISCOUNT', 'HIGH PRIORITY', 99, 'N', 'N', '15-AUG-2005', 'CHECK', 'Invoice', 10, 'WARNING', 'NONE', 2, 5, 'WARNING', 1, 'N', 'Y', 'I', 'R', '' ); /* UPDATE XX_VENDOR_SITES_OTHERS_B

SET FLAG='Y' WHERE VENDOR_NAME=C2_REC.VENDOR_NAME; */ COMMIT; SELECT ap_suppliers_int_s.CURRVAL INTO p_header_sequence FROM DUAL; EXCEPTION WHEN OTHERS THEN ROLLBACK; p_message := SUBSTR (SQLERRM, 1, 200 ); UPDATE xx_vendor_sites_others_b SET flag = 'N', error_message = p_message WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT; p_header_error := 1;

END; END IF;

BEGIN SELECT code_combination_id INTO p_pay_code_combination_id FROM gl_code_combinations WHERE segment1 || '.' || segment2 || '.' || segment3 || '.' || segment4 = c2_rec.lia_account_code; SELECT code_combination_id INTO p_prepay_code_combination_id FROM gl_code_combinations WHERE segment1 || '.' || segment2 || '.' || segment3 || '.' || segment4 = c2_rec.advances_account_code; BEGIN l_country := get_country_code (c2_rec.country); EXCEPTION WHEN OTHERS THEN l_country := 'IN'; END; INSERT INTO ap_supplier_sites_int (vendor_interface_id, vendor_site_code, payment_method_lookup_code, terms_date_basis, accts_pay_code_combination_id,

prepay_code_combination_id, pay_group_lookup_code, payment_priority, terms_id, pay_date_basis_lookup_code, org_id, purchasing_site_flag, rfq_only_site_flag, pay_site_flag, attention_ar_flag, allow_awt_flag, address_line1, address_line2, address_line3, city, country, state, zip, address_lines_alt, ship_to_location_id, bill_to_location_id ) VALUES (ap_suppliers_int_s.CURRVAL, c2_rec.site, 'SITE1', 'CHECK', 'Invoice', c2_rec.liability_account_id, p_prepay_code_combination_id, 'SUPPLIER', 'HIGH PRIORITY', 99, 10000, 'DISCOUNT', 82, 'Y', 'N', 'Y', 'N', 'N', c2_rec.address1, c2_rec.address2, c2_rec.address3, c2_rec.city, l_country, c2_rec.state, c2_rec.pin, c2_rec.contact_phones, 142, 142 ); UPDATE xx_vendor_sites_others_b SET flag = 'Y' WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT; EXCEPTION WHEN OTHERS THEN ROLLBACK; p_message := SUBSTR (SQLERRM, 1, 200 ); UPDATE xx_vendor_sites_others_b SET flag = 'N', error_message = p_message WHERE vendor_name = c2_rec.vendor_name AND vendor_type_lookup_code = c2_rec.vendor_type_lookup_code AND site = c2_rec.site; COMMIT;

END; END LOOP;

-- Initialize APPS fnd_global.apps_initialize (user_id resp_id resp_appl_id ); -- Submit Supplier Import program BEGIN ln_req_id := fnd_request.submit_request (application

=> 12691, => 50293, => 200

=> 'SQLAP',

'APXSUIMP',

program argument1 argument2 argument3 argument4 argument5 argument6 );

=> => => => => => => 'ALL', 1000, 'N', 'N', 'N', '-99'

COMMIT;

IF ln_req_id = 0 THEN -- Error while submitting Supplier import fnd_file.put_line (fnd_file.LOG, 'Error while submitting Supplier Import. ' || SQLERRM); RETURN; ELSE lb_flag := fnd_concurrent.wait_for_request (request_id => ln_req_id, INTERVAL => 5, phase => lv_phase, status => lv_status1, dev_phase => lv_dev_phase, dev_status => lv_dev_status, MESSAGE => lv_message ); IF lv_dev_phase = 'COMPLETE' AND lv_dev_status = 'NORMAL' THEN fnd_file.put_line (fnd_file.LOG, 'Supplier Import program completed successfully' || ln_req_id); ELSE fnd_file.put_line (fnd_file.LOG, 'Error while running Supplier Import program'); ROLLBACK; END IF; END IF; END; -- Submit Supplier Sites Import program BEGIN ln_req_id := fnd_request.submit_request (application program 'APXSSIMP', argument1 argument2 argument3

=> 'SQLAP', => => 'NEW', => 1000, => 'N',

argument4 argument5 argument6 ); COMMIT;

=> 'N', => 'N', => '-99'

IF ln_req_id = 0 THEN -- Error while submitting Supplier sites import fnd_file.put_line (fnd_file.LOG, 'Error while submitting Supplier sites Import. ' || SQLERRM); RETURN; ELSE lb_flag := fnd_concurrent.wait_for_request (request_id => ln_req_id, INTERVAL => 5, phase => lv_phase, status => lv_status1, dev_phase => lv_dev_phase, dev_status => lv_dev_status, MESSAGE => lv_message ); IF lv_dev_phase = 'COMPLETE' AND lv_dev_status = 'NORMAL' THEN fnd_file.put_line (fnd_file.LOG, 'Supplier sites Import program completed successfully' || ln_req_id); ELSE fnd_file.put_line (fnd_file.LOG, 'Error while running Supplier sites Import program'); ROLLBACK; END IF; END IF; END; EXCEPTION WHEN OTHERS THEN ROLLBACK; END;

Application Programming Interface (API) method You can also use an API for importing suppliers and their corresponding sites

Function Vendor Vendor Sites Create a record ap_vendors_pkg.insert_row ap_vendor_sites_pkg.insert_row Update a record ap_vendors_pkg.update_row ap_vendor_sites_pkg.update_row A sample script using the API is given below. This script is used for updating supplier sites. You can use the other APIs in a similar way.
DECLARE CURSOR c_vendorsites (v_vendor_site_id NUMBER) IS SELECT pvsa.*, pvsa.ROWID FROM po_vendor_sites_all pvsa WHERE 1 = 1 AND pvsa.vendor_site_id = v_vendor_site_id; v_date DATE; v_itemkey VARCHAR2 (100); v_vendor_site_id NUMBER; v_user_id NUMBER; v_resp_id NUMBER; BEGIN v_user_id := fnd_profile.VALUE ('USER_ID'); v_resp_id := fnd_profile.VALUE ('RESP_ID'); v_vendor_site_id := 1034; fnd_global.apps_initialize (user_id resp_id resp_appl_id ); FOR v_site IN c_vendorsites (v_vendor_site_id) LOOP ap_vendor_sites_pkg.update_row (x_rowid v_site.ROWID, x_vendor_site_id v_site.vendor_site_id, x_last_update_date v_site.last_update_date, x_last_updated_by v_site.last_updated_by, x_vendor_id v_site.vendor_id, x_vendor_site_code v_site.vendor_site_code, x_last_update_login v_site.last_update_login, x_creation_date v_site.creation_date, x_created_by v_site.created_by, x_purchasing_site_flag v_site.purchasing_site_flag, x_rfq_only_site_flag v_site.rfq_only_site_flag, x_pay_site_flag v_site.pay_site_flag,

=> v_user_id, => v_resp_id, => 200

=> => => => => => => => => => => =>

v_site.attention_ar_flag, v_site.address_line1, v_site.address_line2, v_site.address_line3, v_site.city, v_site.state, v_site.zip, v_site.province, v_site.country, v_site.area_code, v_site.phone, v_site.customer_num, v_site.ship_to_location_id, v_site.bill_to_location_id, v_site.ship_via_lookup_code, v_site.freight_terms_lookup_code, v_site.fob_lookup_code,

x_attention_ar_flag x_address_line1 x_address_line2 x_address_line3 x_city x_state x_zip x_province x_country x_area_code x_phone x_customer_num x_ship_to_location_id x_bill_to_location_id x_ship_via_lookup_code x_freight_terms_lookup_code x_fob_lookup_code x_inactive_date --v_Site.inactive_date, x_fax x_fax_area_code x_telex x_payment_method_lookup_code x_bank_account_name x_bank_account_num x_bank_num x_bank_account_type x_terms_date_basis x_current_catalog_num

=> => => => => => => => => => => => => => => => => => v_date, => => => => => => => => => =>

v_site.fax, v_site.fax_area_code, v_site.telex, v_site.payment_method_lookup_code, v_site.bank_account_name, v_site.bank_account_num, v_site.bank_num, v_site.bank_account_type, v_site.terms_date_basis, v_site.current_catalog_num,

v_site.vat_code, v_site.distribution_set_id, v_site.accts_pay_code_combination_id, v_site.future_dated_payment_ccid, v_site.prepay_code_combination_id, v_site.pay_group_lookup_code, v_site.payment_priority, v_site.terms_id, v_site.invoice_amount_limit, v_site.pay_date_basis_lookup_code, v_site.always_take_disc_flag, v_site.invoice_currency_code, v_site.payment_currency_code, v_site.hold_all_payments_flag, v_site.hold_future_payments_flag, v_site.hold_reason, v_site.hold_unmatched_invoices_flag, v_site.match_option, v_site.create_debit_memo_flag, v_site.exclusive_payment_flag, v_site.tax_reporting_site_flag, v_site.attribute_category, v_site.attribute1, v_site.attribute2, v_site.attribute3, v_site.attribute4, v_site.attribute5, v_site.attribute6,

x_vat_code x_distribution_set_id x_accts_pay_ccid x_future_dated_payment_ccid x_prepay_code_combination_id x_pay_group_lookup_code x_payment_priority x_terms_id x_invoice_amount_limit x_pay_date_basis_lookup_code x_always_take_disc_flag x_invoice_currency_code x_payment_currency_code x_hold_all_payments_flag x_hold_future_payments_flag x_hold_reason

=> => => => => => => => => => => => => => => =>

x_hold_unmatched_invoices_flag => x_match_option x_create_debit_memo_flag x_exclusive_payment_flag x_tax_reporting_site_flag x_attribute_category x_attribute1 x_attribute2 x_attribute3 x_attribute4 x_attribute5 x_attribute6 => => => => => => => => => => =>

v_site.attribute7, v_site.attribute8, v_site.attribute9, v_site.attribute10, v_site.attribute11, v_site.attribute12, v_site.attribute13, v_site.attribute14, v_site.attribute15, v_site.validation_number, v_site.exclude_freight_from_discount, v_site.vat_registration_num, v_site.offset_tax_flag, v_site.check_digits, v_site.bank_number, v_site.address_line4, v_site.county, v_site.address_style, v_site.LANGUAGE, v_site.allow_awt_flag, v_site.awt_group_id, v_site.pay_on_code, v_site.default_pay_site_id, v_site.pay_on_receipt_summary_code, v_site.bank_branch_type, v_site.edi_id_number, v_site.edi_payment_method, v_site.edi_payment_format,

x_attribute7 x_attribute8 x_attribute9 x_attribute10 x_attribute11 x_attribute12 x_attribute13 x_attribute14 x_attribute15 x_validation_number x_exclude_freight_from_disc x_vat_registration_num x_offset_tax_flag x_check_digits x_bank_number x_address_line4 x_county x_address_style x_language x_allow_awt_flag x_awt_group_id x_pay_on_code x_default_pay_site_id

=> => => => => => => => => => => => => => => => => => => => => => =>

x_pay_on_receipt_summary_code => x_bank_branch_type x_edi_id_number x_edi_payment_method x_edi_payment_format => => => =>

v_site.edi_remittance_method, v_site.edi_remittance_instruction, v_site.edi_transaction_handling, v_site.auto_tax_calc_flag, v_site.auto_tax_calc_override, v_site.amount_includes_tax_flag, v_site.ap_tax_rounding_rule, v_site.vendor_site_code_alt, v_site.address_lines_alt, v_site.global_attribute_category, v_site.global_attribute1, v_site.global_attribute2, v_site.global_attribute3, v_site.global_attribute4, v_site.global_attribute5, v_site.global_attribute6, v_site.global_attribute7, v_site.global_attribute8, v_site.global_attribute9, v_site.global_attribute10, v_site.global_attribute11, v_site.global_attribute12, v_site.global_attribute13, v_site.global_attribute14, v_site.global_attribute15, v_site.global_attribute16, v_site.global_attribute17, v_site.global_attribute18,

x_edi_remittance_method x_edi_remittance_instruction x_edi_transaction_handling x_auto_tax_calc_flag x_auto_tax_calc_override x_amount_includes_tax_flag x_ap_tax_rounding_rule x_vendor_site_code_alt x_address_lines_alt x_global_attribute_category x_global_attribute1 x_global_attribute2 x_global_attribute3 x_global_attribute4 x_global_attribute5 x_global_attribute6 x_global_attribute7 x_global_attribute8 x_global_attribute9 x_global_attribute10 x_global_attribute11 x_global_attribute12 x_global_attribute13 x_global_attribute14 x_global_attribute15 x_global_attribute16 x_global_attribute17 x_global_attribute18

=> => => => => => => => => => => => => => => => => => => => => => => => => => => =>

v_site.global_attribute19, v_site.global_attribute20, v_site.bank_charge_bearer, v_site.ece_tp_location_code, v_site.pcard_site_flag, v_site.country_of_origin_code,

x_global_attribute19 x_global_attribute20 x_bank_charge_bearer x_ece_tp_location_code x_pcard_site_flag x_country_of_origin_code

=> => => => => =>

x_calling_sequence => NULL, x_shipping_location_id => NULL, --v_Site.shipping_location_id, -- do not update shipping location information x_supplier_notif_method => v_site.supplier_notif_method, x_email_address => v_site.email_address, x_remittance_email => v_site.remittance_email, x_primary_pay_site_flag => v_site.primary_pay_site_flag, x_shipping_control => v_site.shipping_control, x_gapless_inv_num_flag => v_site.gapless_inv_num_flag, x_selling_company_identifier => v_site.selling_company_identifier, x_duns_number => v_site.duns_number, x_tolerance_id => v_site.tolerance_id ); END LOOP; COMMIT; END;

Vous aimerez peut-être aussi