DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMF_TRANSACTION_ACCOUNTS_PUB

Source


1 PACKAGE BODY GMF_transaction_accounts_PUB AS
2 /* $Header: GMFXTABB.pls 120.3 2005/10/13 11:43:14 umoogala noship $ */
3 
4   --===================================================================
5   --
6   -- global variables
7   --
8   --===================================================================
9 
10   G_PACKAGE_NAME                 VARCHAR2(50) := 'GMF_transaction_accounts_PUB';
11 
12   G_CURRENT_RUNTIME_LEVEL     NUMBER       := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
13   G_LEVEL_UNEXPECTED CONSTANT NUMBER       := FND_LOG.LEVEL_UNEXPECTED;
14   G_LEVEL_ERROR      CONSTANT NUMBER       := FND_LOG.LEVEL_ERROR;
15   G_LEVEL_EXCEPTION  CONSTANT NUMBER       := FND_LOG.LEVEL_EXCEPTION;
16   G_LEVEL_EVENT      CONSTANT NUMBER       := FND_LOG.LEVEL_EVENT;
17   G_LEVEL_PROCEDURE  CONSTANT NUMBER       := FND_LOG.LEVEL_PROCEDURE;
18   G_LEVEL_STATEMENT  CONSTANT NUMBER       := FND_LOG.LEVEL_STATEMENT;
19   G_MODULE_NAME      CONSTANT VARCHAR2(50) :='GMF.PLSQL.GMF_transaction_accounts_PUB.';
20 
21   g_log_msg          FND_LOG_MESSAGES.message_text%TYPE;
22 
23   --===================================================================
24   --
25   -- Private procedures
26   --
27   --===================================================================
28 
29   Procedure get_accounts_po
30     (
31       x_return_status                     OUT NOCOPY    VARCHAR2
32     , x_msg_data                          OUT NOCOPY    VARCHAR2
33     , x_msg_count                         OUT NOCOPY    NUMBER
34     );
35 
36   Procedure get_accounts_cto
37     (
38       x_return_status                     OUT NOCOPY    VARCHAR2
39     , x_msg_data                          OUT NOCOPY    VARCHAR2
40     , x_msg_count                         OUT NOCOPY    NUMBER
41     );
42 
43   --===================================================================
44   --
45   -- Start of comments
46   -- API name        : get_accounts
47   -- Type            : Public
48   -- Pre-reqs        : load g_gmf_accts_tab_PROD plsql table
49   -- Version         : Current version 1.0
50   --                   Initial version 1.0
51   -- PURPOSE         : To get accounts for the calling application
52   --                   using SLA TAB functionality
53   -- Parameters      :
54   --
55   -- End of comments
56   --===================================================================
57 
58   Procedure get_accounts
59     ( p_api_version                       IN            NUMBER
60     , p_init_msg_list                     IN            VARCHAR2
61     , p_source                            IN            VARCHAR2
62 
63     , x_return_status                     OUT NOCOPY    VARCHAR2
64     , x_msg_data                          OUT NOCOPY    VARCHAR2
65     , x_msg_count                         OUT NOCOPY    NUMBER
66     )
67   IS
68 
69     l_api_name               VARCHAR2(80);
70     l_return_status          VARCHAR2(1);
71 
72     l_account_type_code      VARCHAR2(80);
73     l_legal_entity_id        NUMBER;
74     l_ledger_id              NUMBER;
75     l_coa_id                 NUMBER;
76 
77   BEGIN
78 
79     l_api_name      := 'get_accounts';
80     x_return_status := FND_API.G_RET_STS_SUCCESS;
81 
82 
83     g_log_msg := 'Begin of procedure '|| l_api_name;
84     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
85     THEN
86       FND_LOG.STRING(
87                log_level   => g_level_procedure,
88                module      => g_module_name || l_api_name,
89                message     => g_log_msg
90       );
91     END IF;
92 
93     g_log_msg := 'Running for Source '|| p_source;
94     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
95     THEN
96       FND_LOG.STRING(
97                log_level   => g_level_procedure,
98                module      => g_module_name || l_api_name,
99                message     => g_log_msg
100       );
101     END IF;
102 
103     IF p_source = 'PO'
104     THEN
105       get_accounts_po
106         (
107           x_return_status  => x_return_status
108         , x_msg_data       => x_msg_data
109         , x_msg_count      => x_msg_count
110         );
111     ELSIF p_source = 'CTO'
112     THEN
113       get_accounts_cto
114         (
115           x_return_status  => x_return_status
116         , x_msg_data       => x_msg_data
117         , x_msg_count      => x_msg_count
118         );
119     END IF;
120 
121 
122     g_log_msg := 'End of procedure '|| l_api_name;
123     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
124     THEN
125       FND_LOG.STRING(
126                log_level   => g_level_procedure,
127                module      => g_module_name || l_api_name,
128                message     => g_log_msg
129       );
130     END IF;
131 
132   END get_accounts;
133 
134 
135   --===================================================================
136   --
137   -- Start of comments
138   -- API name        : get_accounts_po
139   -- Type            : Public
140   -- Pre-reqs        : load g_gmf_accts_tab_PUR plsql table
141   -- Version         : Current version 1.0
142   --                   Initial version 1.0
143   -- PURPOSE         : To get Charge (INV/EXP) and Accrual (AAP) accounts
144   --                   using SLA TAB functionality
145   -- Parameters      :
146   --
147   -- End of comments
148   --===================================================================
149   Procedure get_accounts_po
150     (
151       x_return_status                     OUT NOCOPY    VARCHAR2
152     , x_msg_data                          OUT NOCOPY    VARCHAR2
153     , x_msg_count                         OUT NOCOPY    NUMBER
154     )
155   IS
156 
157     l_api_name               VARCHAR2(80);
158     l_return_status          VARCHAR2(1);
159 
160     l_account_type_code      VARCHAR2(80);
161     l_legal_entity_id        NUMBER;
162     l_ledger_id              NUMBER;
163     l_coa_id                 NUMBER;
164 
165   BEGIN
166 
167     l_api_name      := 'get_accounts_po';
168     x_return_status := FND_API.G_RET_STS_SUCCESS;
169 
170 
171     g_log_msg := 'Begin of procedure '|| l_api_name;
172     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
173     THEN
174       FND_LOG.STRING(
175                log_level   => g_level_procedure,
176                module      => g_module_name || l_api_name,
177                message     => g_log_msg
178       );
179     END IF;
180 
181 
182     /* Start INVCONV umoogala -- remove this once SLA TAB starts working */
183     FOR Idx IN g_gmf_accts_tab_PUR.FIRST .. g_gmf_accts_tab_PUR.LAST
184     LOOP
185 
186       g_log_msg := 'Fetching account for ' || g_gmf_accts_tab_PUR(idx).account_type_code ||
187                    ' for organization_id: ' || g_gmf_accts_tab_PUR(idx).organization_id;
188       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL )
189       THEN
190         FND_LOG.STRING(
191                  log_level   => g_level_statement,
192                  module      => g_module_name || l_api_name,
193                  message     => g_log_msg
194         );
195       END IF;
196 
197       SELECT CASE WHEN g_gmf_accts_tab_PUR(idx).account_type_code = 'INV' THEN
198                     material_account
199                   WHEN g_gmf_accts_tab_PUR(idx).account_type_code = 'EXP' THEN
200                     expense_account
201                   WHEN g_gmf_accts_tab_PUR(idx).account_type_code = 'AAP' THEN
202                     ap_accrual_account
203                   WHEN g_gmf_accts_tab_PUR(idx).account_type_code = 'PPV' THEN
204                     purchase_price_var_account
205              END CASE
206         INTO g_gmf_accts_tab_PUR(idx).target_ccid
207         FROM mtl_parameters mp
208        WHERE mp.organization_id = g_gmf_accts_tab_PUR(idx).organization_id
209       ;
210 
211       SELECT CONCATENATED_SEGMENTS
212         INTO g_gmf_accts_tab_PUR(idx).concatenated_segments
213         FROM gl_code_combinations_kfv
214        WHERE CODE_COMBINATION_ID = g_gmf_accts_tab_PUR(idx).target_ccid
215       ;
216 
217       g_log_msg := 'Concatenated account fetch: ' || g_gmf_accts_tab_PUR(idx).concatenated_segments;
218       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL )
219       THEN
220         FND_LOG.STRING(
221                  log_level   => g_level_statement,
222                  module      => g_module_name || l_api_name,
223                  message     => g_log_msg
224         );
225       END IF;
226 
227     END LOOP;
228 
229     /*
230     --===================================================================
231     -- reset package variables
235         p_api_version                     => 1.0
232     --===================================================================
233 
234     GMF_XLA_TAB_PKG.reset_online_interface(
236       , x_return_status                   => l_return_status
237       , x_msg_count                       => x_msg_count
238       , x_msg_data                        => x_msg_data
239       );
240 
241     --===================================================================
242     -- get Legal Entity, Ledger and Chart of accounts
243     --===================================================================
244 
245     SELECT legal_entity, set_of_books_id, chart_of_accounts_id
246       INTO l_legal_entity_id, l_ledger_id, l_coa_id
247       FROM org_organization_definitions
248      WHERE organization_id = to_number(g_gmf_accts_tab_PUR(1).operating_unit);
249 
250 
251     --======================================================================
252     --                    Insert Transaction data into PL/SQL table
253     --======================================================================
254 
255     FOR Idx IN g_gmf_accts_tab_PUR.FIRST .. g_gmf_accts_tab_PUR.LAST
256     LOOP
257 
258       IF g_gmf_accts_tab_PUR(idx).account_type_code = 'INV'
259       THEN
260         l_account_type_code := 'GMF_PUR_INV';
261       ELSIF g_gmf_accts_tab_PUR(idx).account_type_code = 'EXP'
262       THEN
263         l_account_type_code := 'GMF_PUR_EXP';
264       ELSIF g_gmf_accts_tab_PUR(idx).account_type_code = 'AAP'
265       THEN
266         l_account_type_code := 'GMF_PUR_AAP';
267       END IF;
268 
269       GMF_XLA_TAB_PKG.write_online_tab_PUR(
270           p_api_version                  => 1.0
271         , p_source_distrib_id_num_1      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_1
272         , p_source_distrib_id_num_2      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_2
273         , p_source_distrib_id_num_3      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_3
274         , p_source_distrib_id_num_4      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_4
275         , p_source_distrib_id_num_5      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_5
276 
277         , p_account_type_code            => l_account_type_code
278           --Start of source list
279         , organization_code              => g_gmf_accts_tab_PUR(idx).organization_id
280         , inventory_item_id              => g_gmf_accts_tab_PUR(idx).inventory_item_id
281         , item_type                      => g_gmf_accts_tab_PUR(idx).item_type
282         , ledger_id                      => l_ledger_id
283         , legal_entity_id                => l_legal_entity_id
284         , locator_id                     => g_gmf_accts_tab_PUR(idx).locator_id
285         -- , lot_number                     => g_gmf_accts_tab_PUR(idx).lot_number
286         , operating_unit                 => g_gmf_accts_tab_PUR(idx).operating_unit
287         , subinventory_code              => g_gmf_accts_tab_PUR(idx).subinventory_code
288         , subinventory_type              => g_gmf_accts_tab_PUR(idx).subinventory_type
289         , vendor_id                      => g_gmf_accts_tab_PUR(idx).vendor_id
290         , vendor_site_id                 => g_gmf_accts_tab_PUR(idx).vendor_site_id
291           --End of source list
292 
293         , x_return_status                => x_return_status
294         , x_msg_count                    => x_msg_count
295         , x_msg_data                     => x_msg_data
296         );
297 
298     END LOOP ;
299 
300 
301     --======================================================================
302     --                    Call Transaction Account Builder in online mode
303     --======================================================================
304 
305      GMF_XLA_TAB_PKG.run (
306         p_api_version                     => 1.0
307       , p_account_definition_type_code    => 'S'  -- system
308       , p_account_definition_code         => 'GMF_XLA_PUR_TAD'
309       , p_transaction_coa_id              => l_coa_id
310       , p_mode                            => 'ONLINE'
311       , x_return_status                   => l_return_status
312       , x_msg_count                       => x_msg_count
313       , x_msg_data                        => x_msg_data
314       )
315     ;
316 
317     IF l_return_status <> FND_API.G_RET_STS_SUCCESS
318     THEN
319       x_return_status := l_return_status;
320     END IF;
321 
322     --======================================================================
323     --                    retieve the code combination identifiers
324     --======================================================================
325 
326     FOR Idx IN g_gmf_accts_tab_PUR.FIRST .. g_gmf_accts_tab_PUR.LAST LOOP
327 
328       GMF_XLA_TAB_PKG.read_online_tab_PUR(
329           p_api_version                  => 1.0
330         , p_source_distrib_id_num_1      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_1
331         , p_source_distrib_id_num_2      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_2
332         , p_source_distrib_id_num_3      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_3
333         , p_source_distrib_id_num_4      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_4
334         , p_source_distrib_id_num_5      => g_gmf_accts_tab_PUR(idx).source_distrib_id_num_5
335 
336         , p_account_type_code            => GMF_XLA_TAB_PKG.g_array_xla_tab_PUR(idx).account_type_code
337 
338         , x_target_ccid                  => g_gmf_accts_tab_PUR(idx).target_ccid
339         , x_concatenated_segments        => g_gmf_accts_tab_PUR(idx).concatenated_segments
340         , x_return_status                => l_return_status
341         , x_msg_count                    => g_gmf_accts_tab_PUR(idx).msg_count
345       IF l_return_status <> FND_API.G_RET_STS_SUCCESS
342         , x_msg_data                     => g_gmf_accts_tab_PUR(idx).msg_data
343         );
344 
346       THEN
347         x_return_status := l_return_status;
348       END IF;
349 
350     END LOOP ;
351     */
352 
353     -- x_return_status is initialized to success at the beginning of the procedure
354 
355 
356     g_log_msg := 'End of procedure '|| l_api_name;
357     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
358     THEN
359       FND_LOG.STRING(
360                log_level   => g_level_procedure,
361                module      => g_module_name || l_api_name,
362                message     => g_log_msg
363       );
364     END IF;
365 
366   EXCEPTION
367     WHEN FND_API.G_EXC_UNEXPECTED_ERROR
368     THEN
369       g_log_msg := 'Exc_Unexpected_Error in GMF_transaction_accounts_PUB.get_accounts_po';
370       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
371       THEN
372         FND_LOG.STRING(
373                  log_level   => g_level_procedure,
374                  module      => g_module_name || l_api_name,
375                  message     => g_log_msg
376         );
377       END IF;
378 
379        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
380        fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
381        x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
382 
383     WHEN FND_API.G_EXC_ERROR
384     THEN
385       g_log_msg := 'EXC_ERROR in GMF_transaction_accounts_PUB.get_accounts_po: ' || x_msg_data;
386       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
387       THEN
388         FND_LOG.STRING(
389                  log_level   => g_level_procedure,
390                  module      => g_module_name || l_api_name,
391                  message     => g_log_msg
392         );
393       END IF;
394 
395        x_return_status := FND_API.G_RET_STS_ERROR;
396        IF x_msg_data IS NULL
397        THEN
398          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
399          x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
400        END IF;
401 
402     WHEN OTHERS THEN
403        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
404        FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
405        x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
406 
407        IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
408          FND_MSG_PUB.Add_Exc_Msg(G_PACKAGE_NAME, l_api_name);
409        end if;
410 
411       g_log_msg := 'In when-others. error: ' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
412       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
413       THEN
414         FND_LOG.STRING(
415                  log_level   => g_level_procedure,
416                  module      => g_module_name || l_api_name,
417                  message     => g_log_msg
418         );
419       END IF;
420 
421 
422   END get_accounts_po;
423 
424 
425   --===================================================================
426   --
427   -- Start of comments
428   -- API name        : get_accounts_cto
429   -- Type            : Public
430   -- Pre-reqs        : load g_gmf_accts_tab_CTO plsql table
431   -- Version         : Current version 1.0
432   --                   Initial version 1.0
433   -- PURPOSE         :
434   -- Parameters      :
435   --
436   -- End of comments
437   --===================================================================
438   Procedure get_accounts_cto
439     (
440       x_return_status                     OUT NOCOPY    VARCHAR2
441     , x_msg_data                          OUT NOCOPY    VARCHAR2
442     , x_msg_count                         OUT NOCOPY    NUMBER
443     )
444   IS
445 
446     l_api_name               VARCHAR2(80);
447     l_return_status          VARCHAR2(1);
448 
449     l_account_type_code      VARCHAR2(80);
450     l_legal_entity_id        NUMBER;
451     l_ledger_id              NUMBER;
452     l_coa_id                 NUMBER;
453 
454   BEGIN
455 
456     l_api_name      := 'get_accounts_cto';
457     x_return_status := FND_API.G_RET_STS_SUCCESS;
458 
459 
460     g_log_msg := 'Begin of procedure '|| l_api_name;
461     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
462     THEN
463       FND_LOG.STRING(
464                log_level   => g_level_procedure,
465                module      => g_module_name || l_api_name,
466                message     => g_log_msg
467       );
468     END IF;
469 
470 
471     /* Start INVCONV umoogala -- remove this once SLA TAB starts working */
472     FOR Idx IN g_gmf_accts_tab_CTO.FIRST .. g_gmf_accts_tab_CTO.LAST
473     LOOP
474 
475       g_log_msg := 'Fetching account for ' || g_gmf_accts_tab_CTO(idx).account_type_code ||
476                    ' for organization_id: ' || g_gmf_accts_tab_CTO(idx).organization_id;
477       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL )
478       THEN
479         FND_LOG.STRING(
480                  log_level   => g_level_statement,
481                  module      => g_module_name || l_api_name,
482                  message     => g_log_msg
483         );
484       END IF;
485 
486       SELECT CASE WHEN g_gmf_accts_tab_CTO(idx).account_type_code = G_CHARGE_INV_ACCT THEN
487                     material_account
488                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = G_CHARGE_EXP_ACCT THEN
489                     expense_account
490                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = G_ACCRUAL_ACCT THEN
491                     ap_accrual_account
492                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = G_VARIANCE_PPV_ACCT THEN
493                     purchase_price_var_account
494              END CASE
495         INTO g_gmf_accts_tab_CTO(idx).target_ccid
496         FROM mtl_parameters mp
497        WHERE mp.organization_id = g_gmf_accts_tab_CTO(idx).organization_id
498       ;
499 
500       SELECT CONCATENATED_SEGMENTS
501         INTO g_gmf_accts_tab_CTO(idx).concatenated_segments
502         FROM gl_code_combinations_kfv
503        WHERE CODE_COMBINATION_ID = g_gmf_accts_tab_CTO(idx).target_ccid
504       ;
505 
506       g_log_msg := 'concatenated Account fetched: ' || g_gmf_accts_tab_CTO(idx).concatenated_segments;
507       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL )
508       THEN
509         FND_LOG.STRING(
510                  log_level   => g_level_statement,
511                  module      => g_module_name || l_api_name,
512                  message     => g_log_msg
513         );
514       END IF;
515 
516     END LOOP;
517 
518     /*
519     -- Start INVCONV umoogala -- remove this once SLA TAB starts working
520 
521     FOR Idx IN g_gmf_accts_tab_CTO.FIRST .. g_gmf_accts_tab_CTO.LAST
522     LOOP
523       SELECT CASE WHEN g_gmf_accts_tab_CTO(idx).account_type_code = 'INV' THEN
524                     distribution_account_id
525                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = 'EXP' THEN
526                     expense_account
527                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = 'AAP' THEN
528                     ap_accrual_account
529                   WHEN g_gmf_accts_tab_CTO(idx).account_type_code = 'PPV' THEN
530                     purchase_price_var_account
531              END CASE
532         INTO g_gmf_accts_tab_CTO(idx).target_ccid
533         FROM mtl_parameters mp
534        WHERE mp.organization_id = g_gmf_accts_tab_CTO(idx).organization_id
535       ;
536 
537       SELECT CONCATENATED_SEGMENTS
538         INTO g_gmf_accts_tab_CTO(idx).concatenated_segments
539         FROM gl_code_combinations_kfv
540        WHERE CODE_COMBINATION_ID = g_gmf_accts_tab_CTO(idx).target_ccid
541       ;
542     END LOOP;
543 
544     RETURN;
545 
546     --===================================================================
547     -- reset package variables
548     --===================================================================
549 
550     GMF_XLA_TAB_PKG.reset_online_interface(
554       , x_msg_data                        => x_msg_data
551         p_api_version                     => 1.0
552       , x_return_status                   => l_return_status
553       , x_msg_count                       => x_msg_count
555       );
556 
557     --===================================================================
558     -- get Legal Entity, Ledger and Chart of accounts
559     --===================================================================
560 
561     SELECT legal_entity, set_of_books_id, chart_of_accounts_id
562       INTO l_legal_entity_id, l_ledger_id, l_coa_id
563       FROM org_organization_definitions
564      WHERE organization_id = g_gmf_accts_tab_CTO(1).operating_unit;
565 
566 
567     --======================================================================
568     --                    Insert Transaction data into PL/SQL table
569     --======================================================================
570 
571     FOR Idx IN g_gmf_accts_tab_CTO.FIRST .. g_gmf_accts_tab_CTO.LAST
572     LOOP
573 
574       IF g_gmf_accts_tab_CTO(idx).account_type_code = 'INV'
575       THEN
576         l_account_type_code := 'GMF_PUR_INV';
577       ELSIF g_gmf_accts_tab_CTO(idx).account_type_code = 'EXP'
578       THEN
579         l_account_type_code := 'GMF_PUR_EXP';
580       ELSIF g_gmf_accts_tab_CTO(idx).account_type_code = 'AAP'
581       THEN
582         l_account_type_code := 'GMF_PUR_AAP';
583       END IF;
584 
585       GMF_XLA_TAB_PKG.write_online_tab_CTO(
586           p_api_version                  => 1.0
587         , p_source_distrib_id_num_1      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_1
588         , p_source_distrib_id_num_2      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_2
589         , p_source_distrib_id_num_3      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_3
590         , p_source_distrib_id_num_4      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_4
591         , p_source_distrib_id_num_5      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_5
592 
593         , p_account_type_code            => l_account_type_code
594           --Start of source list
595         , organization_code              => g_gmf_accts_tab_CTO(idx).organization_id
596         , inventory_item_id              => g_gmf_accts_tab_CTO(idx).inventory_item_id
597         , ato_flag                       => g_gmf_accts_tab_CTO(idx).ato_flag
598         , ledger_id                      => l_ledger_id
599         , legal_entity_id                => l_legal_entity_id
600         , operating_unit                 => g_gmf_accts_tab_CTO(idx).operating_unit
601         , vendor_id                      => g_gmf_accts_tab_CTO(idx).vendor_id
602         , vendor_site_id                 => g_gmf_accts_tab_CTO(idx).vendor_site_id
603         , customer_id                    => g_gmf_accts_tab_CTO(idx).customer_id
604         , customer_site_id               => g_gmf_accts_tab_CTO(idx).customer_site_id
605           --End of source list
606 
607         , x_return_status                => x_return_status
608         , x_msg_count                    => x_msg_count
609         , x_msg_data                     => x_msg_data
610         );
611 
612     END LOOP ;
613 
614 
615     --======================================================================
616     --                    Call Transaction Account Builder in online mode
617     --======================================================================
618 
619      GMF_XLA_TAB_PKG.run (
620         p_api_version                     => 1.0
621       , p_account_definition_type_code    => 'S'  -- system
622       , p_account_definition_code         => 'GMF_XLA_TAD'
623       , p_transaction_coa_id              => l_coa_id
624       , p_mode                            => 'ONLINE'
625       , x_return_status                   => l_return_status
626       , x_msg_count                       => x_msg_count
627       , x_msg_data                        => x_msg_data
628       )
629     ;
630 
631     IF l_return_status <> FND_API.G_RET_STS_SUCCESS
632     THEN
633       x_return_status := l_return_status;
634     END IF;
635 
636     --======================================================================
637     --                    retieve the code combination identifiers
638     --======================================================================
639 
640     FOR Idx IN g_gmf_accts_tab_CTO.FIRST .. g_gmf_accts_tab_CTO.LAST LOOP
641 
642       GMF_XLA_TAB_PKG.read_online_tab_CTO(
643           p_api_version                  => 1.0
644         , p_source_distrib_id_num_1      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_1
645         , p_source_distrib_id_num_2      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_2
646         , p_source_distrib_id_num_3      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_3
647         , p_source_distrib_id_num_4      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_4
648         , p_source_distrib_id_num_5      => g_gmf_accts_tab_CTO(idx).source_distrib_id_num_5
649 
650         -- , p_account_type_code            => GMF_XLA_TAB_PKG.g_array_xla_tab_CTO(idx).account_type_code
651 
652         , x_target_ccid                  => g_gmf_accts_tab_CTO(idx).target_ccid
653         , x_concatenated_segments        => g_gmf_accts_tab_CTO(idx).concatenated_segments
654         , x_return_status                => l_return_status
655         , x_msg_count                    => g_gmf_accts_tab_CTO(idx).msg_count
656         , x_msg_data                     => g_gmf_accts_tab_CTO(idx).msg_data
657         );
658 
659       IF l_return_status <> FND_API.G_RET_STS_SUCCESS
660       THEN
661         x_return_status := l_return_status;
662       END IF;
663 
664     END LOOP ;
665     */
666 
667     -- x_return_status is initialized to success at the beginning of the procedure
668 
669     g_log_msg := 'End of procedure '|| l_api_name;
670     IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
671     THEN
672       FND_LOG.STRING(
673                log_level   => g_level_procedure,
674                module      => g_module_name || l_api_name,
675                message     => g_log_msg
676       );
677     END IF;
678 
679 
680   EXCEPTION
681     WHEN FND_API.G_EXC_UNEXPECTED_ERROR
682     THEN
683        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
684        fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
685        x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
686 
687       g_log_msg := 'Exc_Unexpected_Error. Error: ' || x_msg_data;
688       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
689       THEN
690         FND_LOG.STRING(
691                  log_level   => g_level_procedure,
692                  module      => g_module_name || l_api_name,
693                  message     => g_log_msg
694         );
695       END IF;
696 
697 
698     WHEN FND_API.G_EXC_ERROR
699     THEN
700        x_return_status := FND_API.G_RET_STS_ERROR;
701        IF x_msg_data IS NULL
702        THEN
703          fnd_msg_pub.count_and_get(p_count => x_msg_count, p_data => x_msg_data);
704          x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
705        END IF;
706 
707       g_log_msg := 'EXC_ERROR. Error: ' || x_msg_data;
708       IF (G_LEVEL_PROCEDURE >= G_CURRENT_RUNTIME_LEVEL )
709       THEN
710         FND_LOG.STRING(
711                  log_level   => g_level_procedure,
712                  module      => g_module_name || l_api_name,
713                  message     => g_log_msg
714         );
715       END IF;
716 
717 
718     WHEN OTHERS THEN
719        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
720        FND_MSG_PUB.Count_And_Get( p_count => x_msg_count, p_data => x_msg_data);
721        x_msg_data := fnd_msg_pub.get(p_msg_index => x_msg_count, p_encoded => fnd_api.g_false);
722 
723        IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
724          FND_MSG_PUB.Add_Exc_Msg(G_PACKAGE_NAME, l_api_name);
725        end if;
726 
727       g_log_msg := 'In when-others. Error: ' || DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
728       IF (G_LEVEL_STATEMENT >= G_CURRENT_RUNTIME_LEVEL )
729       THEN
730         FND_LOG.STRING(
731                  log_level   => g_level_statement,
732                  module      => g_module_name || l_api_name,
733                  message     => g_log_msg
734         );
735       END IF;
736 
737 
738   END get_accounts_cto;
739 
740 END GMF_transaction_accounts_PUB;