分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow
也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!
转载几篇关于供应商导入的文章
供应商导入简例
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Oracle ERP最佳技术实践之AP模块供应商数据导入参考
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Vendor Interface
Existing and new vendors must be loaded into the Oracle Payables application to support payables activities. Two methods may be used to enter vendors into Oracle Applications, manual entry and direct loading using a customized loader program.
- Manual Vendor Loading: Use the Enter Vendor window. Using this functionality vendor header information as well as vendor site information can be entered.
- Vendor Interface: When interfacing vendors into Oracle Applications two tables must be loaded the PO_VENDORS and PO_VENDOR_SITES_ALL. The vendor table contains all header information and the site table contains information about each the vendor locations such as "ship to" and "bill to". Using this method makes sense when the volume of new vendors is large. Note: Interfacing this information is not supported by Oracle.
- Those who are in 11.5.10 they will find yet another method ie by interface.
You have to Load data into the staging tables first ie.AP_SUPPLIERS_INT - Supplier Information
AP_SUPPLIER_SITES_INT - Supplier Sites Information ,AP_SUP_SITE_CONTACT_INT - supplier Contact details This uses Vendor ID, Vendor Site Code to relate the contacts to specific vendor. Once data get loaded three interface program should be kicked out which is as- Supplier Open Interface Import.
- Supplier Sites Open Interface Import
- Supplier Site Contacts Open Interface Import
Supplier , Supplier site open interface
source:http://kutuboracle.blogspot.jp/2010/02/supplier-supplier-open-interface.html
Defaults:
The intent of the Supplier Open Interface Import is to emulate the entry of Suppliers, Sites, and Contacts through the Supplier Entry form as closely as possible. As such, there are many values that will be automatically defaulted if notprovided by the user.
These defaults for Suppliers can come from AP_SYSTEM_PARAMETERS_ALL, FINANCIALS_SYSTEM_PARAMS_ALL, PO_SYSTEM_PARAMETERS.ALL, RCV_PARAMETERS, or hard-coded values. As these source tables are organized by operating unit and the supplier data is not, the Suppliers Open Interface Import program assigns a default organization to each run based on the responsibility of the user initiating the concurrent request. This is necessary in order to determine which default values to
assign to supplier records.
The defaults for Supplier Sites generally come from the Supplier record. However, in certain cases due to multiple organizations considerations, it is necessary to default values for Supplier Sites from AP_SYSTEM_PARAMETERS_ALL or FINANCIALS_SYSTEM_PARAMS_ALL.
Validations:
As with defaults, the validations performed by the Open Interface programs are intended to emulate the processing done by the Supplier Entry form. In addition to checks done at the database level for correct data types, these validations include
checks performed against existing lookup values or values derived from other tables. When these types of validations are done, a check is performed to make sure that the value supplied is that of an active record, a record that has not been end-dated or disabled.
Details of the validations performed can be found in the descriptions for the AP_SUPPLIERS_INT, AP_SUPPLIER_SITES_INT, and AP_SUP_SITE_CONTACT_INT tables.
Rejections:
If an invalid value is encountered when the concurrent process is evaluating each row, the ’REJECT_CODE’ column is populated with the relevant rejection message and the ’STATUS’ is updated to ’REJECTED’. Processing on that row then stops and the
program moves on to the next row.
1. Fisrt Create suppliers with minimum information as mentioned below:
Insert into AP_SUPPLIERS_INT(VENDOR_INTERFACE_ID,VENDOR_NAME)
2. Create Supplier site with minimum information as mentioned below:
Insert into AP_SUPPLIER_SITES_INT(VENDOR_ID,VENDOR_SITE_CODE,ORG_ID)
If using in multi org environment enter value for SHIP_TO_LOCATION_CODE, BILL_TO_LOCATION_CODE.
In our case we have used below info:
Note: I have selected many columns but these are not required. After payment_currency_code no coulmn is required except Org_id, supplier_notif_method, email_address
insert into AP_SUPPLIER_SITES_INT
(vendor_id,VENDOR_SITE_CODE,ATTENTION_AR_FLAG,ADDRESS_LINE1,ADDRESS_LINE2,ADDRESS_LINE3,CITY, STATE, ZIP,PROVINCE,COUNTRY,AREA_CODE, PHONE,FAX,FAX_AREA_CODE, PAYMENT_METHOD_LOOKUP_CODE,INVOICE_CURRENCY_CODE, PAYMENT_CURRENCY_CODE,ATTRIBUTE1,ATTRIBUTE2,ATTRIBUTE3,ATTRIBUTE4,VAT_REGISTRATION_NUM,ORG_ID,ADDRESS_LINE4,COUNTY, SUPPLIER_NOTIF_METHOD,EMAIL_ADDRESS)
select * from XX_BCS_SITE
create table XX_BCS_SITE (
vendor_id VARCHAR2(200),
vendor_site_code VARCHAR2(200),
attention_ar_flag VARCHAR2(200),
address_line1 VARCHAR2(200),
address_line2 VARCHAR2(200),
address_line3 VARCHAR2(200),
city VARCHAR2(200),
state VARCHAR2(200),
zip VARCHAR2(200),
province VARCHAR2(200),
country VARCHAR2(200),
area_code VARCHAR2(200),
phone VARCHAR2(200),
fax VARCHAR2(200),
fax_area_code VARCHAR2(200),
payment_method_lookup_code VARCHAR2(200),
invoice_currency_code VARCHAR2(200),
payment_currency_code VARCHAR2(200),
attribute1 VARCHAR2(200),
attribute2 VARCHAR2(200),
attribute3 VARCHAR2(200),
attribute4 VARCHAR2(200),
vat_registration_num VARCHAR2(200),
org_id VARCHAR2(200),
address_line4 VARCHAR2(200),
county VARCHAR2(200),
supplier_notif_method VARCHAR2(200),
email_address VARCHAR2(200))
Insert into XX_BCS_SITE values
('1351','DAMMAM','N','PO BOX 1053, DAMMAM 31431','','',
'DAMMAM','','31431','','SA','+966 3','8472466','8471812',
'8471293','CHECK','SAR','SAR','8472466 8471812 8471293',
'','','TEL :8472466 8471812FAX 8471293',
'DA0108','126','','','','accounts@cmdc.com.sa');
3.Enter supplier contact information as below:
create table XX_BCS_SUP_CONTACT (
vendor_site_id VARCHAR2(200),
FIRST_NAME VARCHAR2(200),
MIDDLE_NAME VARCHAR2(200),
LAST_NAME VARCHAR2(200),
TITLE VARCHAR2(200),
area_code VARCHAR2(200),
phone VARCHAR2(200),
org_id VARCHAR2(200))
Insert into XX_BCS_SUP_CONTACT values ('517','','','MS. PAMELA VENGLAR','','','','292');
Insert into XX_BCS_SUP_CONTACT values ('1403','','','MR. OSAMA SAMI','','','','292');
INSERT INTO AP_SUP_SITE_CONTACT_INT VENDOR_SITE_ID,FIRST_NAME,MIDDLE_NAME,LAST_NAME, TITLE,AREA_CODE,PHONE,ORG_ID) SELECT * FROM XX_BCS_SUP_CONTACT
Update AP_SUP_SITE_CONTACT_INT
set STATUS = 'NEW'
Note: For all the above three tables STATUS must be NEW. While submitting the request Supplier Open Interface Import,Supplier
Sites Open Interface Import,Supplier Site Contacts Open Interface Import the Import Option in the parameter must be NEW.
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Supplier & Supplier Sites Interface/Conversion
source:http://oraclemaniac.com/2012/09/03/supplier-supplier-sites-interfaceconversion/
In this article we shall discuss how to interface Supplier and Supplier Sites into Oracle using Open Interface tables and APIs.
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
1
2
3
4
5
6
7
8
9
|
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)
1
2
3
4
5
6
7
8
|
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
1
2
3
|
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
1
2
3
4
5
6
7
8
9
|
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:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
|
DECLARE
--Cursor 1 which retieves data from header table to insert into receiving header table
p_header_id NUMBER;
p_counter NUMBER := 0;
p_header_error NUMBER := 0;
p_line_error NUMBER := 0;
p_header_sequence NUMBER;
p_org_id NUMBER;
p_message VARCHAR2 (200);
p_count NUMBER := 0;
p_pay_code_combination_id NUMBER := 1074;
p_prepay_code_combination_id NUMBER := 1075;
l_country 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 to insert into receiving header table
p_header_id NUMBER;
p_counter NUMBER := 0;
p_header_error NUMBER := 0;
p_line_error NUMBER := 0;
p_header_sequence NUMBER;
p_org_id NUMBER;
p_message VARCHAR2 (200);
p_count NUMBER := 0;
p_pay_code_combination_id NUMBER := 1074;
p_prepay_code_combination_id NUMBER := 1075;
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);
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'
,
''
);
|