供应商导入

分享一下我老师大神的人工智能教程!零基础,通俗易懂!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 not
provided 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','','','','[email protected]');

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' , ''
                         );
 
             /*

给我老师的人工智能教程打call!http://blog.csdn.net/jiangjunshow

这里写图片描述

猜你喜欢

转载自blog.csdn.net/hsghggt/article/details/83940636