CREATE OR REPLACE
PACKAGE XXDM_UTIL_PKG is
/*---------------------------------------------------------
Current Version : 1.00
Create By :
Create Date :
Purpose : public function.
Logicality :
---------------------------------------------------------*/
FUNCTION xxdm_get_notice_id(p_level_id IN NUMBER,
p_member_id IN NUMBER) RETURN VARCHAR2;
FUNCTION xxdm_get_plan_method(p_supply_plan_id IN NUMBER) RETURN VARCHAR2;
FUNCTION xxdm_get_supply_plan_code(p_supply_plan_id IN NUMBER) RETURN VARCHAR2;
FUNCTION xxdm_get_item_category(p_item_id IN VARCHAR2) RETURN VARCHAR2;
FUNCTION get_outbound_lbfs_flag(p_item_id IN VARCHAR2
,p_ro IN VARCHAR2
,p_site IN VARCHAR2
,p_supplier IN VARCHAR2
,p_supply_plan_id IN NUMBER
,p_sales_date IN VARCHAR2) RETURN NUMBER;
FUNCTION xxdm_get_additional_filter(p_table_name IN VARCHAR2,
p_level_id IN NUMBER,
p_member_id IN NUMBER) RETURN VARCHAR2;
FUNCTION xxdm_get_substr_before_split(p_input_string in VARCHAR2,
p_split_char in VARCHAR2) RETURN VARCHAR2;
FUNCTION xxdm_get_substr_after_split(p_input_string in VARCHAR2,
p_split_char in VARCHAR2) RETURN VARCHAR2;
FUNCTION xxdm_get_series_id_by_title(p_title in VARCHAR2) RETURN NUMBER;
FUNCTION xxdm_get_ro(p_org_code in VARCHAR2) RETURN VARCHAR2;
FUNCTION xxdm_get_org(p_org_code in VARCHAR2) RETURN VARCHAR2;
PROCEDURE insert_step_log (p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_yyyy_mm_dd IN VARCHAR2 DEFAULT NULL,
p_product_line IN VARCHAR2 DEFAULT NULL,
p_ro IN VARCHAR2 DEFAULT NULL,
p_ppp IN VARCHAR2 DEFAULT NULL,
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL);
PROCEDURE insert_step_log_task (p_query_id IN NUMBER,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user_id IN NUMBER,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL);
PROCEDURE insert_step_log_common (p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL);
PROCEDURE insert_step_log_common2 (p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL);
end XXDM_UTIL_PKG;
/
CREATE OR REPLACE
PACKAGE BODY XXDM_UTIL_PKG is
-- Get Notice ID by #LEVEL_ID#, #MEMBER_ID#
FUNCTION xxdm_get_notice_id(p_level_id IN NUMBER,
p_member_id IN NUMBER)
RETURN VARCHAR2 IS
RESULT VARCHAR2(100);
lv_sql_stmt VARCHAR2(400);
lv_gtable group_tables.gtable%TYPE;
lv_id_field group_tables.id_field%TYPE;
lv_data_field group_tables.data_field%TYPE;
BEGIN
SELECT gtable, id_field, data_field
INTO lv_gtable, lv_id_field, lv_data_field
FROM group_tables
WHERE group_table_id = p_level_id;
lv_sql_stmt := 'SELECT ' || lv_data_field || ' FROM ' || lv_gtable ||
' WHERE ' || lv_id_field || '=' || p_member_id;
EXECUTE IMMEDIATE lv_sql_stmt
INTO RESULT;
RETURN(RESULT);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by
FUNCTION:
Get Plan Method by #MEMBER_ID#
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_supply_plan_id supply plan id
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_plan_method(p_supply_plan_id IN NUMBER)
RETURN VARCHAR2 IS
RESULT VARCHAR2(100);
v_plan_id NUMBER;
BEGIN
SELECT plan_id
INTO v_plan_id
FROM supply_plan
WHERE supply_plan_id = p_supply_plan_id;
SELECT md.attribute2
INTO RESULT
FROM apps.msc_plans mp, apps.msc_designators md
WHERE mp.plan_id = v_plan_id
AND mp.organization_id = md.organization_id
AND mp.compile_designator = md.designator
AND mp.sr_instance_id = md.sr_instance_id;
RETURN(RESULT);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-06-03
FUNCTION:
Get Supply plan code
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_supply_plan_id supply plan id
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_supply_plan_code(p_supply_plan_id IN NUMBER)
RETURN VARCHAR2 IS
RESULT VARCHAR2(100);
BEGIN
SELECT supply_plan_code
INTO RESULT
FROM demantra.supply_plan
WHERE supply_plan_id = p_supply_plan_id;
RETURN(RESULT);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-06-03
FUNCTION:
Get item category
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
item_id item id
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_item_category(p_item_id IN VARCHAR2)
RETURN VARCHAR2 IS
RESULT VARCHAR2(240);
BEGIN
SELECT cat.ebs_prod_cat INTO RESULT FROM(
SELECT distinct c.ebs_prod_cat
FROM items, t_ep_item i, t_ep_line l, t_ep_ebs_prod_cat c
WHERE i.item = p_item_id
AND items.t_ep_item_ep_id = i.t_ep_item_ep_id
AND items.t_ep_line_ep_id = l.t_ep_line_ep_id
AND items.t_ep_ebs_prod_cat_ep_id = c.t_ep_ebs_prod_cat_ep_id
) cat;
RETURN(RESULT);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-06-03
FUNCTION:
get_outbound_lbfs_flag
LOGICALITY:
INPUT:
item_id
p_ro
p_site
p_supplier
OUTPUT:
[return] NUMBER
---------------------------------------------------------*/
FUNCTION get_outbound_lbfs_flag(p_item_id IN VARCHAR2
,p_ro IN VARCHAR2
,p_site IN VARCHAR2
,p_supplier IN VARCHAR2
,p_supply_plan_id IN NUMBER
,p_sales_date IN VARCHAR2)
RETURN NUMBER IS
RESULT NUMBER(20,10);
BEGIN
SELECT t_ep_outbound_lbfs_flag
INTO RESULT
FROM demantra.supply_plan_data
WHERE item_id IN (
SELECT items.item_id
FROM demantra.t_ep_item i, demantra.items items
WHERE i.t_ep_item_ep_id = items.t_ep_item_ep_id
AND i.item = p_item_id)
AND location_id IN (
SELECT loc.location_id
FROM demantra.t_ep_organization o,
demantra.t_ep_site s,
demantra.t_ep_ebs_supplier ss,
demantra.LOCATION loc
WHERE loc.t_ep_organization_ep_id = o.t_ep_organization_ep_id
AND loc.t_ep_site_ep_id = s.t_ep_site_ep_id
AND loc.t_ep_ebs_supplier_ep_id = ss.t_ep_ebs_supplier_ep_id
AND o.ORGANIZATION = p_ro
AND s.site = p_site
AND ss.ebs_supplier = p_supplier)
AND supply_plan_id = p_supply_plan_id
AND sales_date = TO_DATE (p_sales_date, 'YYYYMMDD');
RETURN(RESULT);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-02-27
FUNCTION:
Get Additional Filter by #TABLE_NAME#, #LEVEL_ID#,#MEMBER_ID#
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_table_name table_name
p_level_id level_id
p_member_id member_id
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_additional_filter
( p_table_name in VARCHAR2,
p_level_id in NUMBER,
p_member_id in NUMBER)
RETURN VARCHAR2 IS
RESULT VARCHAR2(200);
v_id_field VARCHAR2(100);
BEGIN
/* Formatted on 2009/03/05 09:27 (Formatter Plus v4.8.7) */
SELECT id_field
INTO v_id_field
FROM group_tables
WHERE group_table_id = p_level_id;
RESULT:=' '||p_table_name||'.'||v_id_field||'='||p_member_id||' ';
RETURN RESULT;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-03-11
FUNCTION:
Get sub string before split char
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_input_string input string
p_split_char split char
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_substr_before_split
( p_input_string in VARCHAR2,
p_split_char in VARCHAR2)
RETURN VARCHAR2 IS
RESULT VARCHAR2(500);
BEGIN
RESULT:=substr(p_input_string,1,instr(p_input_string,p_split_char)-1);
RETURN RESULT;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-03-11
FUNCTION:
Get sub string after split char
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_input_string input string
p_split_char split char
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_substr_after_split
( p_input_string in VARCHAR2,
p_split_char in VARCHAR2)
RETURN VARCHAR2 IS
v_series_id NUMBER;
RESULT VARCHAR2(500);
BEGIN
RESULT:=substr(p_input_string,instr(p_input_string,p_split_char)+1);
RETURN RESULT;
END;
/*---------------------------------------------------------
Created by
FUNCTION:
Get Series id by computed_title in computed_fields
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_input_string input string
p_split_char split char
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_series_id_by_title
(p_title in VARCHAR2)
RETURN NUMBER IS
RESULT NUMBER;
BEGIN
SELECT forecast_type_id
INTO RESULT
FROM demantra.computed_fields
WHERE UPPER(computed_title) = p_title;
RETURN RESULT;
END;
/*---------------------------------------------------------
Created by Sean Huang on 2009-06-29
FUNCTION:
Get RO code by ASCP org code
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_org_code input string
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_ro(p_org_code in VARCHAR2)
RETURN VARCHAR2 IS
v_result dfs.xxascp_di_org.ro_code%TYPE;
BEGIN
SELECT ro_code
INTO v_result
FROM dfs.xxascp_di_org
WHERE org_code = p_org_code;
RETURN v_result;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created
FUNCTION:
Get ORG code by ASCP org code
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_org_code input string
OUTPUT:
[return] VARCHAR2
---------------------------------------------------------*/
FUNCTION xxdm_get_org(p_org_code in VARCHAR2)
RETURN VARCHAR2 IS
v_result dfs.xxascp_di_org.oracle_org_code%TYPE;
BEGIN
SELECT oracle_org_code
INTO v_result
FROM dfs.xxascp_di_org
WHERE org_code = p_org_code;
RETURN v_result;
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-05-06
PROCEDURE:
Insert step log
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_notice_id input string
p_status input string
p_process_date sysdate
p_fm_user input string
p_to_user input string
p_message input string
p_description input string
p_step_code input string
p_step_log input string
OUTPUT:
[return]
---------------------------------------------------------*/
PROCEDURE insert_step_log (
p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_yyyy_mm_dd IN VARCHAR2 DEFAULT NULL,
p_product_line IN VARCHAR2 DEFAULT NULL,
p_ro IN VARCHAR2 DEFAULT NULL,
p_ppp IN VARCHAR2 DEFAULT NULL,
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL
)
IS
v_id NUMBER := -1;
v_step_code VARCHAR2(50) :='';
v_step_log VARCHAR2(400) :='';
v_count NUMBER := 0;
v_rowid ROWID;
BEGIN
SELECT count(*)
INTO v_count
FROM demantra.xxdm_step_log_master
WHERE notice_id = p_notice_id;
IF v_count >0 THEN
--update status column in table xxdm_log_master
UPDATE demantra.xxdm_step_log_master SET status = p_status where notice_id = p_notice_id;
ELSE
--insert log into xxdm_log_master
INSERT INTO demantra.xxdm_step_log_master
(notice_id
,yyyymmdd
,product_line
,ro
,ppp
,status)
VALUES (p_notice_id
,p_yyyy_mm_dd
,p_product_line
,p_ro
,p_ppp
,p_status);
END IF;
v_step_code := p_step_code;
SELECT count(*)
INTO v_count
FROM demantra.xxdm_step_log_code
WHERE step_code = v_step_code;
IF v_count >0 THEN
SELECT step_log
INTO v_step_log
FROM demantra.xxdm_step_log_code
WHERE step_code = v_step_code;
ELSE
v_step_log := 'Step Code not exists.';
END IF;
--insert log into xxdm_log_detail
SELECT demantra.xxdm_step_log_detail_s.NEXTVAL
INTO v_id
FROM DUAL;
INSERT INTO demantra.xxdm_step_log_detail
(ID
,notice_id
,yyyymmdd
,product_line
,ro
,ppp
,process_date
,fm_user
,to_user
,message
,description
,step_code
,step_log)
VALUES (v_id
,p_notice_id
,p_yyyy_mm_dd
,p_product_line
,p_ro
,p_ppp
,sysdate
,p_fm_user
,p_to_user
,p_message
,p_description
,v_step_code
,v_step_log)
returning rowid into v_rowid;
EXCEPTION
WHEN OTHERS THEN
dbms_output.put_line(sqlerrm);
RAISE;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-05-06
PROCEDURE:
Insert step log when create a task or update a task
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_query_id query id
p_status input string
p_fm_user input string
p_to_user_id input number
p_message input string
p_description input string
p_step_code input string
OUTPUT:
[return]
---------------------------------------------------------*/
PROCEDURE insert_step_log_task (
p_query_id IN NUMBER,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user_id IN NUMBER,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL
)
IS
v_notice_id VARCHAR2 (100);
v_left_notice_id VARCHAR2 (100);
v_yyyy_mm_dd VARCHAR2(8) :='';
v_product_line VARCHAR2(3) :='';
v_ro VARCHAR2(3) :='';
v_ppp VARCHAR2(3) :='';
v_step_code VARCHAR2 (50) :='';
v_split_char VARCHAR2(1) :='_';
v_to_user VARCHAR2 (100) :='';
v_fm_user_role VARCHAR2 (100) :='';
v_to_user_role VARCHAR2 (100) :='';
v_insert_log BOOLEAN :=TRUE;
v_count NUMBER := 0;
C_TPC_PLANNER CONSTANT VARCHAR2 (50) := 'TPC PLANNER';
C_TPC_MANAGER CONSTANT VARCHAR2 (50) := 'TPC MANAGER';
C_RO_PLANNER CONSTANT VARCHAR2 (50) := 'RO PLANNER';
C_RO_MANAGER CONSTANT VARCHAR2 (50) := 'RO MANAGER';
C_VENDOR CONSTANT VARCHAR2 (50) := 'VENDOR';
BEGIN
IF p_query_id= -1 THEN
v_notice_id := p_message;
ELSE
v_notice_id := xxdm_get_notice_id(p_query_id,0);
END IF;
--v_notice_id := '20090303_JBK_BQP_LTB_001'; -- for test
IF v_notice_id IS NULL THEN
dbms_output.put_line('notice id is null,p_query_id='|| p_query_id);
ELSE
v_notice_id := REPLACE (v_notice_id, '-', v_split_char);
v_left_notice_id := v_notice_id;
v_yyyy_mm_dd:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get product line of notice id
v_product_line:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ro of notice id
v_ro:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ppp of notice id
v_ppp:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
select company into v_fm_user_role from user_id where user_name=p_fm_user;
select company,user_name into v_to_user_role,v_to_user from user_id where user_id=p_to_user_id;
v_fm_user_role := UPPER(TRIM(v_fm_user_role));
v_to_user_role := UPPER(TRIM(v_to_user_role));
CASE v_ppp
WHEN 'IRP' THEN
BEGIN
IF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_TPC_MANAGER THEN
v_step_code := '015';
ELSIF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_RO_PLANNER THEN
v_step_code := '014';
--if 014 exists then v_step_code is 011
SELECT COUNT (*)
INTO v_count
FROM xxdm_step_log_detail
WHERE notice_id = v_notice_id AND step_code = v_step_code;
IF v_count > 0 THEN
v_step_code := '011';
END IF;
ELSIF v_fm_user_role=C_TPC_MANAGER AND v_to_user_role=C_TPC_PLANNER THEN
v_step_code := '003';
ELSE
v_insert_log := FALSE;
DBMS_OUTPUT.PUT_LINE('user roles are not correct.from user role is '|| v_fm_user_role ||',to user role is '|| v_to_user_role || ',ppp='||v_ppp);
END IF;
END;
WHEN 'ROL' THEN
BEGIN
IF v_fm_user_role=C_RO_PLANNER AND v_to_user_role=C_RO_MANAGER THEN
v_step_code := '012';
ELSIF v_fm_user_role=C_RO_MANAGER AND v_to_user_role=C_RO_PLANNER THEN
v_step_code := '003';
ELSIF v_fm_user_role=C_RO_PLANNER AND v_to_user_role=C_TPC_PLANNER THEN
v_step_code := '001';
ELSIF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_VENDOR THEN
v_step_code := '010';
ELSIF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_RO_PLANNER THEN
v_step_code := '013';
ELSE
v_insert_log := FALSE;
DBMS_OUTPUT.PUT_LINE('user roles are not correct.from user role is '|| v_fm_user_role ||',to user role is '|| v_to_user_role || ',ppp='||v_ppp);
END IF;
END;
WHEN 'LTB' THEN
BEGIN
IF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_RO_PLANNER THEN
v_step_code := '014';
--if 014 exists then v_step_code is 011
SELECT COUNT (*)
INTO v_count
FROM xxdm_step_log_detail
WHERE notice_id = v_notice_id AND step_code = v_step_code;
IF v_count > 0 THEN
v_step_code := '011';
END IF;
ELSIF v_fm_user_role=C_TPC_PLANNER AND v_to_user_role=C_TPC_MANAGER THEN
v_step_code := '015';
ELSIF v_fm_user_role=C_TPC_MANAGER AND v_to_user_role=C_TPC_PLANNER THEN
v_step_code := '003';
ELSE
v_insert_log := FALSE;
DBMS_OUTPUT.PUT_LINE('user roles are not correct.from user role is '|| v_fm_user_role ||',to user role is '|| v_to_user_role || ',ppp='||v_ppp);
END IF;
END;
ELSE
BEGIN
v_insert_log := FALSE;
DBMS_OUTPUT.PUT_LINE('No such ppp,ppp='||v_ppp);
END;
END CASE;
IF v_insert_log THEN
insert_step_log(v_notice_id,p_status,v_yyyy_mm_dd,v_product_line,v_ro,v_ppp,p_fm_user,v_to_user,p_message,p_description,v_step_code);
COMMIT;
END IF;
END IF;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
/*---------------------------------------------------------
Created by Robbie.Zhu on 2009-05-06
PROCEDURE:
Insert step log when normal status
LOGICALITY:
<_____Optional_____Internal_Logic_Description>
INPUT:
p_notice_id input string
p_status input string
p_fm_user input string
p_to_user input string
p_message input string
p_description input string
p_step_code input string
OUTPUT:
[return]
---------------------------------------------------------*/
PROCEDURE insert_step_log_common (
p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL
)
IS
v_notice_id VARCHAR2 (100);
v_left_notice_id VARCHAR2 (100);
v_yyyy_mm_dd VARCHAR2(8) :='';
v_product_line VARCHAR2(3) :='';
v_ro VARCHAR2(3) :='';
v_ppp VARCHAR2(3) :='';
v_split_char VARCHAR2(1) :='_';
BEGIN
v_notice_id := REPLACE (p_notice_id, '-', v_split_char);
v_left_notice_id := v_notice_id;
v_yyyy_mm_dd:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get product line of notice id
v_product_line:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ro of notice id
v_ro:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ppp of notice id
v_ppp:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
insert_step_log(v_notice_id,p_status,v_yyyy_mm_dd,v_product_line,v_ro,v_ppp,p_fm_user,p_to_user,p_message,p_description,p_step_code);
COMMIT;
EXCEPTION
WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
PROCEDURE insert_step_log_common2 (
p_notice_id IN VARCHAR2,
p_status IN VARCHAR2 DEFAULT 'O',
p_fm_user IN VARCHAR2 DEFAULT NULL,
p_to_user IN VARCHAR2 DEFAULT NULL,
p_message IN VARCHAR2 DEFAULT NULL,
p_description IN VARCHAR2 DEFAULT NULL,
p_step_code IN VARCHAR2 DEFAULT NULL
)
IS
v_notice_id VARCHAR2 (100);
v_left_notice_id VARCHAR2 (100);
v_yyyy_mm_dd VARCHAR2(8) :='';
v_product_line VARCHAR2(3) :='';
v_ro VARCHAR2(3) :='';
v_ppp VARCHAR2(3) :='';
v_split_char VARCHAR2(1) :='_';
BEGIN
v_notice_id := REPLACE (p_notice_id, '-', v_split_char);
v_left_notice_id := v_notice_id;
v_yyyy_mm_dd:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get product line of notice id
v_product_line:=demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char);
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ro of notice id
v_ro:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
--get ppp of notice id
v_ppp:=UPPER(demantra.xxdm_util_pkg.xxdm_get_substr_before_split(v_left_notice_id,v_split_char));
v_left_notice_id:=demantra.xxdm_util_pkg.xxdm_get_substr_after_split(v_left_notice_id,v_split_char);
insert_step_log(v_notice_id,p_status,v_yyyy_mm_dd,v_product_line,v_ro,v_ppp,p_fm_user,p_to_user,p_message,p_description,p_step_code);
EXCEPTION
WHEN OTHERS THEN
RAISE;
END;
end XXDM_UTIL_PKG;
/