INV(库存管理)

Posted 旺仔丶小馒头

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了INV(库存管理)相关的知识,希望对你有一定的参考价值。

物料

技术分享
  1 PROCEDURE update_item(p_init_msg_list IN VARCHAR2 DEFAULT fnd_api.g_false,
  2                         x_return_status OUT NOCOPY VARCHAR2,
  3                         x_msg_count     OUT NOCOPY NUMBER,
  4                         x_msg_data      OUT NOCOPY VARCHAR2) IS
  5   
  6     l_api_name CONSTANT VARCHAR2(30) := UPDATE_ITEM;
  7     l_savepoint_name VARCHAR2(30) := UPDATE_ITEM;
  8     l_item_rec1      inv_item_grp.item_rec_type;
  9     x_item_rec1      inv_item_grp.item_rec_type;
 10     l_item_rec       inv_item_grp.item_rec_type;
 11     x_item_rec       inv_item_grp.item_rec_type;
 12     x_error_tbl      inv_item_grp.error_tbl_type;
 13     -- x_return_status     VARCHAR2(10);
 14     l_user_id           NUMBER := 0; --User ID, Sysadmin here
 15     l_message           VARCHAR2(500);
 16     x_message           VARCHAR2(500);
 17     l_buyer_id          NUMBER;
 18     l_old_category_id   NUMBER;
 19     l_category_id       NUMBER;
 20     l_category_set_id   NUMBER;
 21     l_category_set_name VARCHAR2(240) := 库存;
 22     --l_item_id           NUMBER;
 23     --l_organization_id   NUMBER;
 24     l_errorcode    VARCHAR2(100);
 25     l_msg_count    NUMBER;
 26     l_structure_id NUMBER;
 27   
 28     l_chart_of_account_id NUMBER;
 29     l_ccid1               NUMBER;
 30     l_ccid2               NUMBER;
 31     l_ccid3               NUMBER;
 32     l_ccid4               NUMBER;
 33     l_default_org         NUMBER;
 34     l_organization_id     NUMBER;
 35     l_item_id             NUMBER;
 36     l_organization_id1    NUMBER;
 37     l_item_id1            NUMBER;
 38   
 39     l_err_count NUMBER;
 40   
 41     --更新类别信息
 42     l_category_rec inv_item_category_pub.category_rec_type;
 43   BEGIN
 44   
 45     -- and initialize message list, include debug message hint to enter api
 46     x_return_status := hss_api.start_activity(p_pkg_name      => g_pkg_name,
 47                                               p_api_name      => l_api_name,
 48                                               p_init_msg_list => p_init_msg_list);
 49     -- check if activity started successfully
 50     IF (x_return_status = fnd_api.g_ret_sts_unexp_error) THEN
 51       RAISE fnd_api.g_exc_unexpected_error;
 52     ELSIF (x_return_status = fnd_api.g_ret_sts_error) THEN
 53       RAISE fnd_api.g_exc_error;
 54     END IF;
 55   
 56     -- hss_log.debug(‘测试=======‘);  
 57     BEGIN
 58       SELECT mcs.category_set_id,
 59              mcs.structure_id
 60         INTO l_category_set_id,
 61              l_structure_id
 62         FROM mtl_category_sets mcs
 63        WHERE mcs.category_set_name = l_category_set_name;
 64     EXCEPTION
 65       WHEN OTHERS THEN
 66         --dbms_output.put_line(‘类别集   :‘ || l_category_set_name || ‘未定义‘);
 67         RETURN;
 68     END;
 69   
 70     l_err_count := 0;
 71     FOR c IN (SELECT *
 72                 FROM cux.cux_mtl_update_prperty ccp
 73                WHERE nvl(ccp.return_stastus,
 74                          N) <> S
 75                ORDER BY ccp.item_code)
 76     LOOP
 77       SAVEPOINT l_savepoint_name; --设置保存点
 78     
 79       hss_conc_utl.log_msg(物料编码: || c.item_code);
 80     
 81       l_message := NULL;
 82       --=============================================================================
 83       /*当需要更新物料说明和默认发运组织时,需先更新主组织的物料说明和默认发运组织*/
 84       --=============================================================================
 85       IF (c.desc_mir IS NOT NULL OR c.default_shipping_org IS NOT NULL) THEN
 86       
 87         l_item_rec1.organization_code := MST;
 88         l_item_rec1.item_number       := c.item_code;
 89       
 90         --IF (c.desc_mir IS NOT NULL) THEN
 91         --  l_item_rec1.description := c.desc_mir;
 92         --ELSE
 93         --  l_item_rec1.description := NULL;
 94         ---END IF;
 95       
 96         IF c.item_desc IS NOT NULL THEN
 97           l_item_rec1.long_description := c.item_desc;
 98         ELSE
 99           l_item_rec1.long_description := NULL;
100         END IF;
101       
102         IF (c.default_shipping_org IS NOT NULL) THEN
103           BEGIN
104             SELECT oog.organization_id
105               INTO l_default_org
106               FROM org_organization_definitions oog
107              WHERE oog.organization_code = c.default_shipping_org;
108           EXCEPTION
109             WHEN OTHERS THEN
110               l_default_org := NULL;
111           END;
112         
113           l_item_rec1.default_shipping_org := l_default_org;
114         ELSE
115           l_item_rec1.default_shipping_org := NULL;
116         END IF;
117       
118         --API
119         ----更新物料信息-----
120         inv_item_grp.update_item(p_commit        => fnd_api.g_false,
121                                  p_item_rec      => l_item_rec1,
122                                  x_item_rec      => x_item_rec1,
123                                  x_return_status => x_return_status,
124                                  x_error_tbl     => x_error_tbl);
125         IF x_return_status <> fnd_api.g_ret_sts_success THEN
126           -- l_message := NULL;
127           FOR i IN 1 .. x_error_tbl.count
128           LOOP
129             l_message := l_message || x_error_tbl(i).message_name;
130           END LOOP;
131           x_error_tbl.delete;
132           --ELSE
133           --  l_message := NULL;
134         END IF;
135       END IF; --IF (c.desc_mir IS NOT NULL OR c.default_shipping_org IS NOT NULL) THEN
136     
137       --=============================================================================
138       --更新子组织信息
139       --============================================================================
140       --Master Inv Organization first, then Current Inv Organization
141       l_item_rec.organization_code := c.organization_code;
142       l_item_rec.item_number       := c.item_code;
143     
144       IF c.buyer IS NOT NULL THEN
145         BEGIN
146           SELECT he.employee_id
147             INTO l_buyer_id
148             FROM hr_employees he
149            WHERE he.full_name = c.buyer;
150         EXCEPTION
151           WHEN OTHERS THEN
152             l_buyer_id := NULL;
153         END;
154         IF l_buyer_id IS NOT NULL THEN
155           l_item_rec.buyer_id := l_buyer_id;
156         END IF;
157       ELSE
158         l_item_rec.buyer_id := NULL;
159       END IF;
160       IF c.planer IS NOT NULL THEN
161         l_item_rec.planner_code := c.planer;
162       ELSE
163         l_item_rec.planner_code := NULL;
164       END IF;
165       IF c.attribute1 IS NOT NULL THEN
166         l_item_rec.attribute1 := c.attribute1;
167       ELSE
168         l_item_rec.attribute1 := NULL;
169       END IF;
170       IF c.attribute2 IS NOT NULL THEN
171         l_item_rec.attribute2 := c.attribute2;
172       ELSE
173         l_item_rec.attribute2 := NULL;
174       END IF;
175       IF c.attribute3 IS NOT NULL THEN
176         l_item_rec.attribute3 := c.attribute3;
177       ELSE
178         l_item_rec.attribute3 := NULL;
179       END IF;
180       IF c.attribute4 IS NOT NULL THEN
181         l_item_rec.attribute4 := c.attribute4;
182       ELSE
183         l_item_rec.attribute4 := NULL;
184       END IF;
185       IF c.attribute5 IS NOT NULL THEN
186         l_item_rec.attribute5 := c.attribute5;
187       ELSE
188         l_item_rec.attribute5 := NULL;
189       END IF;
190       IF c.attribute6 IS NOT NULL THEN
191         l_item_rec.attribute6 := c.attribute6;
192       ELSE
193         l_item_rec.attribute6 := NULL;
194       END IF;
195       IF c.attribute7 IS NOT NULL THEN
196         l_item_rec.attribute7 := c.attribute7;
197       ELSE
198         l_item_rec.attribute7 := NULL;
199       END IF;
200       IF c.attribute8 IS NOT NULL THEN
201         l_item_rec.attribute8 := c.attribute8;
202       ELSE
203         l_item_rec.attribute8 := NULL;
204       END IF;
205       IF c.attribute9 IS NOT NULL THEN
206         l_item_rec.attribute9 := c.attribute9;
207       ELSE
208         l_item_rec.attribute9 := NULL;
209       END IF;
210       IF c.attribute10 IS NOT NULL THEN
211         l_item_rec.attribute10 := c.attribute10;
212       ELSE
213         l_item_rec.attribute10 := NULL;
214       END IF;
215       IF c.attribute11 IS NOT NULL THEN
216         l_item_rec.attribute11 := c.attribute11;
217       ELSE
218         l_item_rec.attribute11 := NULL;
219       END IF;
220       IF c.attribute12 IS NOT NULL THEN
221         l_item_rec.attribute12 := c.attribute12;
222       ELSE
223         l_item_rec.attribute12 := NULL;
224       END IF;
225       IF c.attribute13 IS NOT NULL THEN
226         l_item_rec.attribute13 := c.attribute13;
227       ELSE
228         l_item_rec.attribute13 := NULL;
229       END IF;
230       IF c.attribute14 IS NOT NULL THEN
231         l_item_rec.attribute14 := c.attribute14;
232       ELSE
233         l_item_rec.attribute14 := NULL;
234       END IF;
235       IF c.attribute15 IS NOT NULL THEN
236         l_item_rec.attribute15 := c.attribute15;
237       ELSE
238         l_item_rec.attribute15 := NULL;
239       END IF;
240       IF c.attribute16 IS NOT NULL THEN
241         l_item_rec.attribute16 := c.attribute16;
242       ELSE
243         l_item_rec.attribute16 := NULL;
244       END IF;
245       IF c.attribute17 IS NOT NULL THEN
246         l_item_rec.attribute17 := c.attribute17;
247       ELSE
248         l_item_rec.attribute17 := NULL;
249       END IF;
250       IF c.attribute18 IS NOT NULL THEN
251         l_item_rec.attribute18 := c.attribute18;
252       ELSE
253         l_item_rec.attribute18 := NULL;
254       END IF;
255       IF c.attribute19 IS NOT NULL THEN
256         l_item_rec.attribute19 := c.attribute19;
257       ELSE
258         l_item_rec.attribute19 := NULL;
259       END IF;
260       IF c.attribute20 IS NOT NULL THEN
261         l_item_rec.attribute20 := c.attribute20;
262       ELSE
263         l_item_rec.attribute20 := NULL;
264       END IF;
265     
266       IF (c.supply_subinventory IS NOT NULL) THEN
267         l_item_rec.wip_supply_subinventory := c.supply_subinventory;
268       ELSE
269         l_item_rec.wip_supply_subinventory := NULL;
270       END IF;
271     
272       IF (c.min_quantity IS NOT NULL) THEN
273         l_item_rec.min_minmax_quantity := c.min_quantity;
274       ELSE
275         l_item_rec.min_minmax_quantity := NULL;
276       END IF;
277       IF (c.max_quantity IS NOT NULL) THEN
278         l_item_rec.max_minmax_quantity := c.max_quantity;
279       ELSE
280         l_item_rec.max_minmax_quantity := NULL;
281       END IF;
282       IF (c.min_order_quantity IS NOT NULL) THEN
283         l_item_rec.minimum_order_quantity := c.min_order_quantity;
284       ELSE
285         l_item_rec.minimum_order_quantity := NULL;
286       END IF;
287       IF (c.max_order_quantity IS NOT NULL) THEN
288         l_item_rec.maximum_order_quantity := c.max_order_quantity;
289       ELSE
290         l_item_rec.maximum_order_quantity := NULL;
291       END IF;
292       IF (c.fixed_order_quantity IS NOT NULL) THEN
293         l_item_rec.fixed_order_quantity := c.fixed_order_quantity;
294       ELSE
295         l_item_rec.fixed_order_quantity := NULL;
296       END IF;
297       IF (c.fixed_days_supply IS NOT NULL) THEN
298         l_item_rec.fixed_days_supply := c.fixed_days_supply;
299       ELSE
300         l_item_rec.fixed_days_supply := NULL;
301       END IF;
302       IF (c.fixed_lot_multiplier IS NOT NULL) THEN
303         l_item_rec.fixed_lot_multiplier := c.fixed_lot_multiplier;
304       ELSE
305         l_item_rec.fixed_lot_multiplier := NULL;
306       END IF;
307     
308       BEGIN
309         SELECT gsob.chart_of_accounts_id
310           INTO l_chart_of_account_id
311           FROM gl_sets_of_books             gsob,
312                hr_operating_units           hou,
313                org_organization_definitions ood
314          WHERE gsob.set_of_books_id = hou.set_of_books_id
315            AND hou.organization_id = ood.operating_unit
316            AND ood.organization_code = c.organization_code;
317       EXCEPTION
318         WHEN OTHERS THEN
319           hss_conc_utl.log_msg(chart_of_account_id 没有找到);
320         
321           l_message := l_message || 组织对应chart_of_account_id 没有找到==;
322       END;
323     
324       -----------------------
325     
326       IF (c.encumbrance_account IS NOT NULL) THEN
327         l_ccid1                        := fnd_flex_ext.get_ccid(application_short_name => SQLGL,
328                                                                 key_flex_code          => GL#,
329                                                                 structure_number       => l_chart_of_account_id,
330                                                                 validation_date        => to_char(SYSDATE,
331                                                                                                   DD-MON-YYYY),
332                                                                 concatenated_segments  => c.encumbrance_account);
333         l_item_rec.encumbrance_account := l_ccid1;
334       
335         IF (l_ccid1 IS NULL) THEN
336           hss_conc_utl.log_msg(更新保留款账户异常!);
337           l_message := l_message || 保留款账户异常==;
338         END IF;
339       ELSE
340         l_item_rec.encumbrance_account := NULL;
341       END IF;
342       IF (c.expense_account IS NOT NULL) THEN
343         l_ccid2                    := fnd_flex_ext.get_ccid(application_short_name => SQLGL,
344                                                             key_flex_code          => GL#,
345                                                             structure_number       => l_chart_of_account_id,
346                                                             validation_date        => to_char(SYSDATE,
347                                                                                               DD-MON-YYYY),
348                                                             concatenated_segments  => c.expense_account);
349         l_item_rec.expense_account := l_ccid2;
350       
351         IF (l_ccid1 IS NULL) THEN
352           hss_conc_utl.log_msg(更新费用账户异常!);
353           l_message := l_message || 费用账户异常==;
354         END IF;
355       ELSE
356         l_item_rec.expense_account := NULL;
357       END IF;
358     
359       --l_item_rec.sales_account := NULL;
360       IF (c.sales_account IS NOT NULL) THEN
361         l_ccid3                  := fnd_flex_ext.get_ccid(application_short_name => SQLGL,
362                                                           key_flex_code          => GL#,
363                                                           structure_number       => l_chart_of_account_id,
364                                                           validation_date        => to_char(SYSDATE,
365                                                                                             DD-MON-YYYY),
366                                                           concatenated_segments  => c.sales_account);
367         l_item_rec.sales_account := l_ccid3;
368       
369         IF (l_ccid1 IS NULL) THEN
370           hss_conc_utl.log_msg(更新销售账户异常!);
371           l_message := l_message || 销售账户异常==;
372         END IF;
373       ELSE
374         hss_conc_utl.log_msg(物料 || c.item_code || 下的销售账户不能为空);
375         l_message := l_message || 物料 || c.item_code || 下的销售账户不能为空==;
376         --  l_item_rec.sales_account := NULL;
377       END IF;
378     
379       --l_item_rec.cost_of_sales_account := NULL;
380       IF (c.cost_of_sales_account IS NOT NULL) THEN
381         l_ccid4                          := fnd_flex_ext.get_ccid(application_short_name => SQLGL,
382                                                                   key_flex_code          => GL#,
383                                                                   structure_number       => l_chart_of_account_id,
384                                                                   validation_date        => to_char(SYSDATE,
385                                                                                                     DD-MON-YYYY),
386                                                                   concatenated_segments  => c.cost_of_sales_account);
387         l_item_rec.cost_of_sales_account := l_ccid4;
388       
389         IF (l_ccid1 IS NULL) THEN
390           hss_conc_utl.log_msg(更新销售成本账户异常!);
391           l_message := l_message || 销售成本账户异常==;
392         END IF;
393       ELSE
394         hss_conc_utl.log_msg(物料 || c.item_code || 下的销售成本账户不能为空);
395         l_message := l_message || 物料 || c.item_code || 下的销售成本账户不能为空==;
396         --  l_item_rec.cost_of_sales_account := NULL;
397       END IF;
398       --API
399       ----更新物料信息-----
400       inv_item_grp.update_item(p_commit        => fnd_api.g_false,
401                                p_item_rec      => l_item_rec,
402                                x_item_rec      => x_item_rec,
403                                x_return_status => x_return_status,
404                                x_error_tbl     => x_error_tbl);
405     
406       --Result
407       IF x_return_status <> fnd_api.g_ret_sts_success THEN
408         --ROLLBACK;
409         --l_message := NULL;
410         FOR i IN 1 .. x_error_tbl.count
411         LOOP
412           l_message := l_message || x_error_tbl(i).message_name;
413         END LOOP;
414         x_error_tbl.delete;
415         --ELSE
416         -- l_message := NULL;
417         -- COMMIT;
418       END IF;
419     
420       IF x_return_status = fnd_api.g_ret_sts_success THEN
421         IF c.inv_category_contractsegment IS NOT NULL THEN
422           BEGIN
423             --获取物料类别ID--------
424             SELECT mcv.category_id
425               INTO l_category_id
426               FROM mtl_categories_v mcv
427              WHERE 1 = 1
428                AND mcv.structure_id = l_structure_id
429                AND mcv.category_concat_segs = c.inv_category_contractsegment
430                AND (mcv.disable_date IS NULL OR mcv.disable_date > SYSDATE);
431           EXCEPTION
432             WHEN OTHERS THEN
433               l_category_id := NULL;
434           END;
435         
436           IF l_category_id IS NULL THEN
437             x_return_status := E;
438             l_message       := l_message || 物料类别 : || c.inv_category_contractsegment || 无效;
439           ELSE
440           
441             ----获取原来类别id
442             BEGIN
443               SELECT mic.category_id
444                 INTO l_old_category_id
445                 FROM mtl_system_items_b  msi,
446                      mtl_item_categories mic
447                WHERE 1 = 1
448                  AND msi.inventory_item_id = mic.inventory_item_id
449                  AND msi.organization_id = mic.organization_id
450                  AND msi.inventory_item_id = x_item_rec.inventory_item_id
451                  AND msi.organization_id = x_item_rec.organization_id
452                  AND mic.category_set_id = l_category_set_id;
453             EXCEPTION
454               WHEN OTHERS THEN
455                 l_old_category_id := NULL;
456             END;
457           
458             --- inv_item_category_pub.Create_Category_Assignment
459             IF l_old_category_id IS NOT NULL
460                AND l_old_category_id <> l_category_id THEN
461               ---更新物料类别分配
462               inv_item_category_pub.update_category_assignment(p_api_version       => 1.0,
463                                                                p_init_msg_list     => fnd_api.g_true,
464                                                                p_commit            => fnd_api.g_false,
465                                                                p_category_id       => l_category_id,
466                                                                p_old_category_id   => l_old_category_id,
467                                                                p_category_set_id   => l_category_set_id,
468                                                                p_inventory_item_id => x_item_rec.inventory_item_id,
469                                                                p_organization_id   => x_item_rec.organization_id,
470                                                                x_return_status     => x_return_status,
471                                                                x_errorcode         => l_errorcode,
472                                                                x_msg_count         => l_msg_count,
473                                                                x_msg_data          => x_message);
474             
475               IF x_return_status <> fnd_api.g_ret_sts_success THEN
476                 /*FOR i IN 2 .. l_msg_count LOOP
477                   l_message := fnd_msg_pub.get;
478                   \*dbms_output.put_line(REPLACE(l_message,
479                                                chr(0),
480                                                ‘ ‘));*481                 END LOOP;*/
482                 /*dbms_output.put_line(‘update_category_assignment:‘ ||
483                 x_return_status || l_message);*/
484                 hss_conc_utl.log_msg(l_category_id:= || l_category_id);
485                 hss_conc_utl.log_msg(l_category_set_id:= || l_category_set_id);
486               
487                 l_message := l_message || 分配物料类别报错: || x_message;
488               ELSE
489                 /*dbms_output.put_line(‘update_category_assignment:‘ ||
490                 x_return_status || l_message);*/
491                 NULL;
492               END IF;
493             ELSIF l_old_category_id IS NULL THEN
494               inv_item_category_pub.create_category_assignment(p_api_version       => 1.0,
495                                                                p_init_msg_list     => fnd_api.g_true,
496                                                                p_commit            => fnd_api.g_false,
497                                                                x_return_status     => x_return_status,
498                                                                x_errorcode         => l_errorcode,
499                                                                x_msg_count         => l_msg_count,
500                                                                x_msg_data          => x_message,
501                                                                p_category_id       => l_category_id,
502                                                                p_category_set_id   => l_category_set_id,
503                                                                p_inventory_item_id => x_item_rec.inventory_item_id,
504                                                                p_organization_id   => x_item_rec.organization_id);
505               IF x_return_status <> fnd_api.g_ret_sts_success THEN
506                 /*dbms_output.put_line(‘create_category_assignment:‘ ||
507                 x_return_status || l_message);*/
508                 hss_conc_utl.log_msg(l_category_id1:= || l_category_id);
509                 hss_conc_utl.log_msg(l_category_set_id1:= || l_category_set_id);
510               
511                 l_message := l_message || 分配物料类别报错: || x_message;
512               END IF;
513             ELSE
514               NULL;
515             END IF;
516           END IF; --IF l_old_category_id IS NOT NULL
517         END IF;
518       END IF;
519     
520       --更新物料类别信息
521       FOR rec_category IN (SELECT t.*
522                              FROM mtl_item_categories_v        t,
523                                   org_organization_definitions ood,
524                                   mtl_system_items_b           msib
525                             WHERE 1 = 1
526                               AND t.organization_id = ood.organization_id
527                               AND ood.organization_code = c.organization_code
528                               AND t.organization_id = msib.organization_id
529                               AND t.inventory_item_id = msib.inventory_item_id
530                               AND msib.segment1 = c.item_code
531                               AND t.category_set_name IN (BOSUN成本类别集,
532                                                           产品类别,
533                                                           BOSUN折扣类别集))
534       LOOP
535       
536         -- hss_conc_utl.log_msg(‘更新类别信息!‘);
537         IF (rec_category.category_set_name = BOSUN成本类别集) THEN
538           IF (c.chenben_category IS NOT NULL) THEN
539             BEGIN
540               UPDATE mtl_categories_b mcb
541                  SET mcb.segment1 = c.chenben_category
542                WHERE mcb.category_id = rec_category.category_id;
543             EXCEPTION
544               WHEN OTHERS THEN
545                 hss_conc_utl.log_msg(更新成本类别错误!);
546                 l_message := l_message || 更新成本类别错误;
547             END;
548           END IF;
549         ELSIF (rec_category.category_set_name = 产品类别) THEN
550           IF (c.shengchan_category IS NOT NULL) THEN
551             BEGIN
552               UPDATE mtl_categories_b mcb
553                  SET mcb.segment1 = c.shengchan_category
554                WHERE mcb.category_id = rec_category.category_id;
555             EXCEPTION
556               WHEN OTHERS THEN
557                 hss_conc_utl.log_msg(更新生产类别错误!);
558                 l_message := l_message || 更新生产类别错误;
559             END;
560           END IF;
561         ELSIF (rec_category.category_set_name = BOSUN折扣类别集) THEN
562           IF (c.zhekou_category IS NOT NULL) THEN
563             BEGIN
564               UPDATE mtl_categories_b mcb
565                  SET mcb.segment1 = c.zhekou_category
566                WHERE mcb.category_id = rec_category.category_id;
567             EXCEPTION
568               WHEN OTHERS THEN
569                 hss_conc_utl.log_msg(更新折扣类别错误!);
570                 l_message := l_message || 更新折扣类别错误;
571             END;
572           END IF;
573         END IF;
574       
575       END LOOP; --FOR rec_category IN (
576     
577       /* FOR rec_category IN (SELECT t.*
578                              FROM mtl_item_categories_v        t,
579                                   org_organization_definitions ood,
580                                   mtl_system_items_b           msib
581                             WHERE 1 = 1
582                               AND t.organization_id = ood.organization_id
583                               AND ood.organization_code = c.organization_code
584                               AND t.organization_id = msib.organization_id
585                               AND t.inventory_item_id = msib.inventory_item_id
586                               AND msib.segment1 = c.item_code
587                               AND t.category_set_name IN ( --‘BOSUN成本类别集‘,
588                                                           --‘产品类别‘,
589                                                           ‘BOSUN折扣类别集‘))
590       LOOP
591         l_category_rec.category_id       := rec_category.category_id;
592         l_category_rec.structure_id      := rec_category.structure_id;
593         l_category_rec.summary_flag      := rec_category.summary_flag;
594         l_category_rec.enabled_flag      := rec_category.enabled_flag;
595         --l_category_rec. := rec_category.;
596         l_category_rec.segment2          := rec_category.segment2;
597         l_category_rec.segment3          := rec_category.segment3;
598         l_category_rec.segment4          := rec_category.segment4;
599         l_category_rec.segment5          := rec_category.segment5;
600         l_category_rec.segment6          := rec_category.segment6;
601         l_category_rec.segment7          := rec_category.segment7;
602         l_category_rec.segment8          := rec_category.segment8;
603         l_category_rec.segment9          := rec_category.segment9;
604         l_category_rec.segment10         := rec_category.segment10;
605         l_category_rec.segment11         := rec_category.segment11;
606         l_category_rec.segment12         := rec_category.segment12;
607         l_category_rec.segment13         := rec_category.segment13;
608         l_category_rec.segment14         := rec_category.segment14;
609         l_category_rec.segment15         := rec_category.segment15;
610         l_category_rec.segment16         := rec_category.segment16;
611         l_category_rec.segment17         := rec_category.segment17;
612         l_category_rec.segment18         := rec_category.segment18;
613         l_category_rec.segment19         := rec_category.segment19;
614         l_category_rec.segment20         := rec_category.segment20;
615       
616         IF (rec_category.category_set_name = ‘BOSUN成本类别集‘) THEN
617           IF (c.chenben_category IS NOT NULL) THEN
618             l_category_rec.category_id := c.chenben_category;
619           END IF;
620         ELSIF (rec_category.category_set_name = ‘产品类别‘) THEN
621           IF (c.chenben_category IS NOT NULL) THEN
622             l_category_rec.segment1 := c.chenben_category;
623           END IF;
624         ELSIF (rec_category.category_set_name = ‘BOSUN折扣类别集‘) THEN
625           IF (c.zhekou_category IS NOT NULL) THEN
626             l_category_rec.segment1 := c.zhekou_category;
627           END IF;
628         END IF;
629       
630         inv_item_category_pub.update_category(p_api_version   => ‘1.0‘,
631                                               p_init_msg_list => fnd_api.g_true,
632                                               p_commit        => fnd_api.g_false,
633                                               x_return_status => x_return_status,
634                                               x_errorcode     => l_errorcode,
635                                               x_msg_count     => l_msg_count,
636                                               x_msg_data      => x_message,
637                                               p_category_rec  => l_category_rec);
638         IF x_return_status <> fnd_api.g_ret_sts_success THEN
639           hss_conc_utl.log_msg(‘更新物料类别信息错误!‘);
640           l_message := l_message || x_message;
641         END IF;
642       END LOOP; --FOR rec_category IN*/
643     
644       IF (l_message IS NOT NULL) THEN
645         --dbms_transaction.rollback_savepoint(l_savepoint_name);
646         hss_conc_utl.log_msg(l_message:= || l_message);
647         l_err_count := l_err_count + 1;
648       
649         ROLLBACK TO l_savepoint_name;
650       
651         UPDATE cux.cux_mtl_update_prperty t
652            SET t.return_stastus = E,
653                t.mes_text       = substr(l_message,
654                                          1,
655                                          2000)
656          WHERE t.id = c.id;
657       
658         l_message := NULL;
659         continue;
660       ELSE
661         UPDATE cux.cux_mtl_update_prperty t
662            SET t.return_stastus = x_return_status,
663                t.mes_text       = substr(l_message,
664                                          1,
665                                          200)
666          WHERE t.id = c.id;
667         l_message := NULL;
668       END IF;
669     END LOOP;
670   
671     IF (l_err_count > 0) THEN
672       hss_conc_utl.log_msg(存在异常未处理的数据,请求报黄!);
673       RAISE fnd_api.g_exc_error;
674     END IF;
675     -- end activity, include debug message hint to exit api
676     x_return_status := hss_api.end_activity(p_pkg_name  => g_pkg_name,
677                                             p_api_name  => l_api_name,
678                                             x_msg_count => x_msg_count,
679                                             x_msg_data  => x_msg_data);
680   
681   EXCEPTION
682     WHEN fnd_api.g_exc_error THEN
683       x_return_status := hss_api.handle_exceptions(p_pkg_name  => g_pkg_name,
684                                                    p_api_name  => l_api_name,
685                                                    p_exc_name  => hss_api.g_exc_name_error,
686                                                    x_msg_count => x_msg_count,
687                                                    x_msg_data  => x_msg_data);
688     WHEN fnd_api.g_exc_unexpected_error THEN
689       x_return_status := hss_api.handle_exceptions(p_pkg_name  => g_pkg_name,
690                                                    p_api_name  => l_api_name,
691                                                    p_exc_name  => hss_api.g_exc_name_unexp,
692                                                    x_msg_count => x_msg_count,
693                                                    x_msg_data  => x_msg_data);
694     WHEN OTHERS THEN
695       x_return_status := hss_api.handle_exceptions(p_pkg_name  => g_pkg_name,
696                                                    p_api_name  => l_api_name,
697                                                    p_exc_name  => hss_api.g_exc_name_others,
698                                                    x_msg_count => x_msg_count,
699                                                    x_msg_data  => x_msg_data);
700   END update_item;
创建物料

 

以上是关于INV(库存管理)的主要内容,如果未能解决你的问题,请参考以下文章

使用 Git 来管理 Xcode 中的代码片段

mysql中的if语句和while语句

massCode 一款优秀的开源代码片段管理器

如何管理在每个 git 版本中添加私有代码片段?

如何使用Android片段管理器传递变量[重复]

Android:使用支持片段管理器时复制片段