You are on page 1of 12

set serverout on size 200000

DECLARE

err_buf varchar2(1000);

ret_code varchar2(1000);

assembly varchar2(1000) := 'JBP Item';

cost_type varchar2(1000) := 'Frozen';

--MULTI-LEVEL BOM W/COST

TYPE bet_row IS TABLE OF varchar(200) index by binary_integer;

v_error char(1) := 'N';

v_apimsg varchar2(240);

v_apierr varchar2(15);

v_item_id number;

v_revision_date date := sysdate;

v_group_id number;

v_session_id number;

v_output_rec varchar2(500);

v_input_assy varchar2(50);

v_cost_type varchar2(50);

v_cost_id number;

v_recs number;

v_nam bet_row;

v_rec bet_row;

v_rowix number;

v_colix number;

v_rowct number;
v_org_test number;

/*

v_level varchar2(50);

v_part varchar2(50);

v_description varchar2(250);

v_revision varchar2(50);

v_type varchar2(25);

v_item_seq varchar2(10);

v_qpa number;

v_makebuy varchar2(4);

v_planner varchar2(20);

v_buyer varchar2(50);

v_item_cost number;

v_ext_item_cost number;

v_ext_mtl_cost number;

v_ext_op_cost number;

v_ext_lbr_cost number;

v_ext_maoh_cost number;

v_ext_oh_cost number;

*/

cursor bill_lines(p_session_id NUMBER, p_group_id NUMBER, p_cost_id NUMBER, P_cost_type


VARCHAR2)

is

select lpad(bet.plan_level,bet.plan_level) LVL

,lpad(' ',bet.plan_level*7-7)||'Some Part' PART

,'Some Description' Description

,'POC' type
,bet.item_num item

,bet.extended_quantity qpa

,'Buy' mkbuy

,'planner code' planner

,1 buyer

,1 ITEM_COST

,1 EXT_ITEM_COST

,1 EXT_MTL_COST

,1 EXT_MAOH_COST

,1 EXT_LBR_COST

,1 EXT_OP_COST

,1 EXT_OH_COST

from bom_explosion_temp bet

begin

begin

--

--INPUT PARMS

--

v_input_assy:= assembly; -- validate against mtl_system_items org 83

v_cost_type := cost_type; -- validate against BOM.CST_COST_TYPES.COST_TYPE

IF V_ERROR <> 'Y'

THEN

BEGIN

SELECT 'Y'

INTO V_ERROR
FROM DUAL

WHERE NOT EXISTS (SELECT '1'

FROM MTL_SYSTEM_ITEMS

WHERE SEGMENT1 = V_INPUT_ASSY

AND ORGANIZATION_ID = 207

);

EXCEPTION

WHEN OTHERS

THEN

V_ERROR := 'N';

END;

IF V_ERROR = 'Y'

THEN

DBMS_OUTPUT.PUT_LINE ('NO SUCH ASSEMBLY "'||V_INPUT_ASSY||'" FOUND');

fnd_file.PUT_LINE(FND_FILE.LOG,'NO SUCH ASSEMBLY "'||V_INPUT_ASSY||'" FOUND');

END IF;

END IF;

IF V_ERROR <> 'Y'

THEN

BEGIN

SELECT COST_TYPE_ID

INTO V_COST_ID

FROM CST_COST_TYPES

WHERE COST_TYPE = V_COST_TYPE;

EXCEPTION

WHEN NO_DATA_FOUND
THEN

DBMS_OUTPUT.PUT_LINE ('NO SUCH COST TYPE "'||V_COST_TYPE||'" FOUND');

fnd_file.PUT_LINE(FND_FILE.LOG,'NO SUCH COST TYPE "'||V_COST_TYPE||'" FOUND');

V_ERROR := 'Y';

END;

END IF;

select inventory_item_id

into v_item_id

from mtl_system_items

where 1=1

and organization_id = 207

and segment1 = v_input_assy

dbms_output.put_line('Input Assy: '||v_input_assy);

fnd_file.PUT_LINE(FND_FILE.LOG,'Input Assy: '||v_input_assy);

dbms_output.put_line(' Item ID: '||v_item_id);

fnd_file.PUT_LINE(FND_FILE.LOG,' Item ID: '||v_item_id);

dbms_output.put_line(' Cost Type: '||v_cost_type);

fnd_file.PUT_LINE(FND_FILE.LOG,' Cost Type: '||v_cost_type);

dbms_output.put_line(' Cost ID: '||v_cost_id);

fnd_file.PUT_LINE(FND_FILE.LOG,' Cost ID: '||v_cost_id);

select bom_explosion_temp_s.nextval

into v_group_id

from dual;
dbms_output.put_line(' Group ID: '||v_group_id);

fnd_file.PUT_LINE(FND_FILE.LOG,' Group ID: '||v_group_id);

select bom_explosion_temp_session_s.nextval

into v_session_id

from dual;

dbms_output.put_line('Session ID: '||v_session_id);

fnd_file.PUT_LINE(FND_FILE.LOG,'Session ID: '||v_session_id);

apps.bompexpl.exploder_userexit(0, -- verify flag

207, -- org_id

2, -- order by

v_group_id, -- grp_id

v_session_id, -- session id

25, -- levels to explode

1, -- bom or eng

1, -- impl flag

2, -- plan factor flag

2, -- explode option

2, -- module

0, -- cst type id

0, -- std cmp flag ??????????

1, -- expl qty

v_item_id, --item_id

'', -- alt desg

'', -- comp code

v_revision_date, -- rev date


'', -- unit number

0, -- release option

V_apimsg,

v_apierr);

commit;

exception

when others

then

dbms_output.put_line('Error in BOM API: '||v_apierr||' ----> '||v_apimsg);

fnd_file.PUT_LINE(FND_FILE.LOG,'Error in BOM API: '||v_apierr||' ----> '||v_apimsg);

RAISE_APPLICATION_ERROR(-20002, 'Error in BOM API: '||v_apierr||' ----> '||v_apimsg);

end;

for v_colix in 1..196

loop

select lpad(rpad(column_name,25,' '),25,' ')

into v_nam(v_colix)

from all_tab_columns

where owner = 'BOM'

and table_name = 'BOM_EXPLOSION_TEMP'

and column_id = v_colix;

end loop;

select count(*)

into v_rowct

from bom_explosion_temp;

dbms_output.put_line(' ');
fnd_file.PUT_LINE(FND_FILE.LOG,' ');

dbms_output.put_line('API Returned '||v_rowct||' rows.');

fnd_file.PUT_LINE(FND_FILE.LOG,'API Returned '||v_rowct||' rows.');

dbms_output.put_line(' ');

fnd_file.PUT_LINE(FND_FILE.LOG,' ');

/*

for v_rowix in 1..v_rowct

loop

begin

select *

into
v_rec(001),v_rec(002),v_rec(003),v_rec(004),v_rec(005),v_rec(006),v_rec(007),v_rec(008),v_rec(009),v_
rec(010),

v_rec(011),v_rec(012),v_rec(013),v_rec(014),v_rec(015),v_rec(016),v_rec(017),v_rec(018),v_rec(019),v_
rec(020),

v_rec(021),v_rec(022),v_rec(023),v_rec(024),v_rec(025),v_rec(026),v_rec(027),v_rec(028),v_rec(029),v_
rec(030),

v_rec(031),v_rec(032),v_rec(033),v_rec(034),v_rec(035),v_rec(036),v_rec(037),v_rec(038),v_rec(039),v_
rec(040),

v_rec(041),v_rec(042),v_rec(043),v_rec(044),v_rec(045),v_rec(046),v_rec(047),v_rec(048),v_rec(049),v_
rec(050),

v_rec(051),v_rec(052),v_rec(053),v_rec(054),v_rec(055),v_rec(056),v_rec(057),v_rec(058),v_rec(059),v_
rec(060),

v_rec(061),v_rec(062),v_rec(063),v_rec(064),v_rec(065),v_rec(066),v_rec(067),v_rec(068),v_rec(069),v_
rec(070),
v_rec(071),v_rec(072),v_rec(073),v_rec(074),v_rec(075),v_rec(076),v_rec(077),v_rec(078),v_rec(079),v_
rec(080),

v_rec(081),v_rec(082),v_rec(083),v_rec(084),v_rec(085),v_rec(086),v_rec(087),v_rec(088),v_rec(089),v_
rec(090),

v_rec(091),v_rec(092),v_rec(093),v_rec(094),v_rec(095),v_rec(096),v_rec(097),v_rec(098),v_rec(099),v_
rec(100),

v_rec(101),v_rec(102),v_rec(103),v_rec(104),v_rec(105),v_rec(106),v_rec(107),v_rec(108),v_rec(109),v_
rec(110),

v_rec(111),v_rec(112),v_rec(113),v_rec(114),v_rec(115),v_rec(116),v_rec(117),v_rec(118),v_rec(119),v_
rec(120),

v_rec(121),v_rec(122),v_rec(123),v_rec(124),v_rec(125),v_rec(126),v_rec(127),v_rec(128),v_rec(129),v_
rec(130),

v_rec(131),v_rec(132),v_rec(133),v_rec(134),v_rec(135),v_rec(136),v_rec(137),v_rec(138),v_rec(139),v_
rec(140),

v_rec(141),v_rec(142),v_rec(143),v_rec(144),v_rec(145),v_rec(146),v_rec(147),v_rec(148),v_rec(149),v_
rec(150),

v_rec(151),v_rec(152),v_rec(153),v_rec(154),v_rec(155),v_rec(156),v_rec(157),v_rec(158),v_rec(159),v_
rec(160),

v_rec(161),v_rec(162),v_rec(163),v_rec(164),v_rec(165),v_rec(166),v_rec(167),v_rec(168),v_rec(169),v_
rec(170),

v_rec(171),v_rec(172),v_rec(173),v_rec(174),v_rec(175),v_rec(176),v_rec(177),v_rec(178),v_rec(179),v_
rec(180),

v_rec(181),v_rec(182),v_rec(183),v_rec(184),v_rec(185),v_rec(186),v_rec(187),v_rec(188),v_rec(189),v_
rec(190),

v_rec(191),v_rec(192),v_rec(193),v_rec(194),v_rec(195),v_rec(196)
from bom_explosion_temp

where rownum=v_rowix;

exception when others then

dbms_output.put_line('Error Code: '||SQLCODE||', Error message: ' || substrb(SQLERRM, 1, 80));

end;

for v_colix in 1..196

loop

dbms_output.put_line('Row#'||v_rowix||chr(09)||'Col#'||v_colix||chr(09)||v_nam(v_colix)||' =
'||v_rec(v_colix));

fnd_file.PUT_LINE(FND_FILE.LOG,'Row#'||v_rowix||chr(09)||'Col#'||v_colix||chr(09)||
v_nam(v_colix)||' = '||v_rec(v_colix));

end loop;

end loop;

*/

if v_error <> 'Y'

then

v_output_rec := 'Lvl'||chr(09)||

'Part'||chr(09)||

'Description'||chr(09)||

'Type'||chr(09)||

'Make/Buy'||chr(09)||

'Planner'||chr(09)||

'Buyer'||chr(09)||

'Item Seq'||chr(09)||

'Qty'||chr(09)||

'Item Cost'||chr(09)||

'Ext Item Cost'||chr(09)||

'Ext Mtl Cost'||chr(09)||


'Ext OP Cost'||chr(09)||

'Ext Lbr Cost'||chr(09)||

'Ext Mtl OH Cost'||chr(09)||

'Ext OH Cost'||chr(09);

DBMS_OUTPUT.PUT_LINE (v_output_rec);

fnd_file.PUT_LINE(FND_FILE.OUTPUT,v_output_rec);

for record in bill_lines(v_session_id,v_group_id,v_cost_id,v_cost_type)

loop

v_output_rec := RECORD.LVL||chr(09)||

RECORD.PART||chr(09)||

RECORD.DESCRIPTION||chr(09)||

RECORD.TYPE||chr(09)||

RECORD.MKBUY||chr(09)||

RECORD.PLANNER||chr(09)||

RECORD.BUYER||chr(09)||

RECORD.ITEM||chr(09)||

RECORD.QPA||chr(09)||

RECORD.ITEM_COST||chr(09)||

RECORD.EXT_ITEM_COST||chr(09)||

RECORD.EXT_MTL_COST||chr(09)||

RECORD.EXT_OP_COST||chr(09)||

RECORD.EXT_LBR_COST||chr(09)||

RECORD.EXT_MAOH_COST||chr(09)||

RECORD.EXT_OH_COST||chr(09);

DBMS_OUTPUT.PUT_LINE (v_output_rec);

fnd_file.PUT_LINE(FND_FILE.OUTPUT,v_output_rec);
end loop;

--delete bom_explosion_temp

--where group_id = v_group_id

--and session_id = v_session_id

--;

--commit;

else

RAISE_APPLICATION_ERROR(-20001, 'Error: INVALID ITEM OR COST TYPE');

end if;

end;

You might also like