CREATE OR REPLACE PACKAGE BODY CUX_FINANCE_DEBUG_REPORT IS
/* ===============================================================
* PROCEDURE NAME: MAIN
* AUTHOR : LWW
* DATE : 2017-03-08
* PURPOSE : CUX:财务侦错报告
* PARAMETER :
*
* RETURN :
* UPDATE HISTORY
* VERSION DATE NAME DESCRIPTION
* -------- ---------- --------------- --------------------
* V1.0 2017-03-08 LWW CREATION
===============================================================*/
PROCEDURE MAIN
(
ERRBUF OUT VARCHAR2,
RETCODE OUT NUMBER,
p_organization_id in NUMBER
--p_error_code varchar2,
) AS
/*strWhere varchar2;
if p_error_code is not null then
strWhere :=‘and TABLE_TEMP.错误代码=‘||p_error_code;
end if;*/
CURSOR CUR_ALL IS
SELECT TABLE_TEMP.组织ID,
ORG.ORGANIZATION_NAME AS 组织,
TABLE_TEMP.错误代码,
TABLE_TEMP.报错描述,
TABLE_TEMP.单据类型,
TABLE_TEMP.单据编号,
TABLE_TEMP.单据日期 AS 单据日期,
TABLE_TEMP.制单人
FROM (
--6.‘领料单‘
SELECT A.ORGANIZATION_ID AS 组织ID,
‘6‘ AS 错误代码,
‘领料单已发放,已超过1天未过账,请查核!‘ AS 报错描述,
‘工单领料‘ AS 单据类型,
A.REQUISITION_NUMBER AS 单据编号,
A.CREATION_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_PERSON_NAME(A.CREATE_PERSON_ID) AS 制单人
FROM CUX_WIP_STOCK_REQ_HEADERS A
WHERE A.REQUISITION_STATUS = ‘RELEASE‘
AND A.REQUISITION_TYPE = ‘JOBS_P‘
AND (SYSDATE - A.CREATION_DATE) >= 1
UNION ALL
--7.‘退料单‘
SELECT B.ORGANIZATION_ID AS 组织ID,
‘7‘ AS 错误代码,
‘退料单已发放,已超过1天未过账,请查核!‘ AS 报错描述,
‘工单领料‘ AS 单据类型,
B.REQUISITION_NUMBER AS 单据编号,
B.CREATION_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_PERSON_NAME(B.CREATE_PERSON_ID) AS 制单人
FROM CUX_WIP_STOCK_REQ_HEADERS B
WHERE B.REQUISITION_STATUS = ‘RELEASE‘
AND B.REQUISITION_TYPE = ‘JOBS_B‘
AND (SYSDATE - B.CREATION_DATE) >= 1
UNION ALL
--8.‘超领单‘
SELECT C.ORGANIZATION_ID AS 组织ID,
‘8‘ AS 错误代码,
‘超领单已发放,已超过1天未过账,请查核!‘ AS 报错描述,
‘工单领料‘ AS 单据类型,
C.REQUISITION_NUMBER AS 单据编号,
C.CREATION_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_PERSON_NAME(C.CREATE_PERSON_ID) AS 制单人
FROM CUX_WIP_STOCK_REQ_HEADERS C
WHERE C.REQUISITION_STATUS = ‘RELEASE‘
AND C.REQUISITION_TYPE = ‘PUSH_P‘
AND (SYSDATE - C.CREATION_DATE) >= 1
UNION ALL
--9.‘完工入库‘
SELECT D.ORGANIZATION_ID AS 组织ID,
‘9‘ AS 错误代码,
‘完工入库单已申请,已超过1天未过账,请查核!‘ AS 报错描述,
‘工单入库‘ AS 单据类型,
D.TRANSACTION_NUM AS 单据编号,
D.CREATION_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_EMPLOYEE_NAME(D.CREATED_BY) AS 制单人
FROM CUX_BUWWIP_MOVE_TRANS_HEADERS D
WHERE D.TRANSACTION_STATUS = ‘RELEASED‘
AND D.TRANSACTION_TYPE = ‘WIP_COMP‘
AND (SYSDATE - D.CREATION_DATE) >= 1
UNION ALL
--10.‘完工退回‘
SELECT E.ORGANIZATION_ID AS 组织ID,
‘10‘ AS 错误代码,
‘完工退回单已申请,已超过1天未过账,请查核!‘ AS 报错描述,
‘工单入库‘ AS 单据类型,
E.TRANSACTION_NUM AS 单据编号,
E.CREATION_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_EMPLOYEE_NAME(E.CREATED_BY) AS 制单人
FROM CUX_BUWWIP_MOVE_TRANS_HEADERS E
WHERE E.TRANSACTION_STATUS = ‘RELEASED‘
AND E.TRANSACTION_TYPE = ‘WIP_COMP_F‘
AND (SYSDATE - E.CREATION_DATE) >= 1
UNION ALL
--11.‘已完工,但尚未报工‘
SELECT TABLE11.ORGANIZATION_ID AS 组织ID,
‘11‘ AS 错误代码,
‘工单已完工,但尚未报工,请查核!‘ AS 报错描述,
‘工单控制‘ AS 单据类型,
TABLE11.WIP_ENTITY_NAME AS 单据编号,
TABLE11.SCHEDULED_START_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_EMPLOYEE_NAME(TABLE11.CREATED_BY) AS 制单人
FROM (SELECT A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
SUM(C.QUANTITY_COMPLETED) AS BG_SUM,
B.SCHEDULED_START_DATE,
A.CREATED_BY
FROM WIP_ENTITIES A
INNER JOIN WIP_DISCRETE_JOBS B
ON B.WIP_ENTITY_ID = A.WIP_ENTITY_ID
INNER JOIN WIP_OPERATIONS C
ON C.WIP_ENTITY_ID = A.WIP_ENTITY_ID
WHERE B.STATUS_TYPE = ‘4‘ AND B.CLASS_CODE<>‘M4-试制‘
GROUP BY A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
B.SCHEDULED_START_DATE,
A.CREATED_BY) TABLE11
WHERE TABLE11.BG_SUM = 0
UNION ALL
--12‘已有完工入库,但尚未领料‘
SELECT TABLE12.ORGANIZATION_ID AS 组织ID,
‘12‘ AS 错误代码,
‘工单已有完工入库,但尚未领料,请查核!‘ AS 报错描述,
‘工单控制‘ AS 单据类型,
TABLE12.WIP_ENTITY_NAME AS 单据编号,
TABLE12.SCHEDULED_START_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_EMPLOYEE_NAME(TABLE12.CREATED_BY) AS 制单人
FROM (SELECT A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
B.QUANTITY_COMPLETED,
SUM(C.QUANTITY_ISSUED) AS LL_SUM,
B.SCHEDULED_START_DATE,
A.CREATED_BY
FROM WIP_ENTITIES A
INNER JOIN WIP_DISCRETE_JOBS B
ON B.WIP_ENTITY_ID = A.WIP_ENTITY_ID
INNER JOIN WIP_REQUIREMENT_OPERATIONS C
ON C.WIP_ENTITY_ID = A.WIP_ENTITY_ID
GROUP BY A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
B.QUANTITY_COMPLETED,
B.SCHEDULED_START_DATE,
A.CREATED_BY) TABLE12
WHERE TABLE12.QUANTITY_COMPLETED > 0
AND TABLE12.LL_SUM = 0
UNION ALL
--13‘已完工,已领料,已报工,状态需切换‘
SELECT TABLE13.ORGANIZATION_ID AS 组织ID,
‘13‘ AS 错误代码,
‘工单已完工入库,已充分领料并报工,请及时将工单【状态】修改为"完工-不计费"!‘ AS 报错描述,
‘工单控制‘ AS 单据类型,
TABLE13.WIP_ENTITY_NAME AS 单据编号,
TABLE13.SCHEDULED_START_DATE AS 单据日期,
CUX_PUBLIC_PKG.GET_EMPLOYEE_NAME(TABLE13.CREATED_BY) AS 制单人
FROM (SELECT A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
SUM(C.QUANTITY_COMPLETED) AS BG_SUM,
SUM(D.QUANTITY_ISSUED) AS LL_SUM,
B.SCHEDULED_START_DATE,
A.CREATED_BY
FROM WIP_ENTITIES A
INNER JOIN WIP_DISCRETE_JOBS B
ON B.WIP_ENTITY_ID = A.WIP_ENTITY_ID
INNER JOIN WIP_OPERATIONS C
ON C.WIP_ENTITY_ID = A.WIP_ENTITY_ID
INNER JOIN WIP_REQUIREMENT_OPERATIONS D
ON D.WIP_ENTITY_ID = A.WIP_ENTITY_ID
WHERE B.STATUS_TYPE = ‘4‘
GROUP BY A.ORGANIZATION_ID,
A.WIP_ENTITY_NAME,
B.SCHEDULED_START_DATE,
A.CREATED_BY) TABLE13
WHERE TABLE13.LL_SUM <> 0
AND TABLE13.BG_SUM <> 0
/*UNION ALL
--14‘报工数量<>转移数量‘--某些工单导入EBS成功,但移动事务处理没有产生记录
SELECT TABLE14.ORGANIZATION_ID AS 组织ID,
‘14‘ AS 错误代码,
‘工单对应工序‘ || TABLE14.OPERATION_SEQ_NUM_S || ‘的报工数量不等于转移数量,请查核!‘ AS 报错提示,
‘工单控制‘ AS 单据类型,
TABLE14.WIP_ENTITY_NAME AS 单据编号,
TABLE14.SCHEDULED_START_DATE AS 单据日期
FROM (SELECT DISTINCT A.ORGANIZATION_ID,A.WIP_ENTITY_ID,
A.WIP_ENTITY_NAME,
D.OPERATION_SEQ_NUM_S,
C.QUANTITY_COMPLETED AS BG_SUM, --报工数量(取报工界面上的总报工数)
B.SCHEDULED_START_DATE,
(SELECT NVL(SUM(E.TRANSACTION_QUANTITY), 0)
FROM WIP_ENTITIES D
INNER JOIN WIP_MOVE_TRANSACTIONS E
ON E.WIP_ENTITY_ID = D.WIP_ENTITY_ID
WHERE D.WIP_ENTITY_NAME = A.WIP_ENTITY_NAME
--AND E.FM_INTRAOPERATION_STEP_TYPE = 1
--AND E.TO_INTRAOPERATION_STEP_TYPE = 3
AND E.FM_OPERATION_SEQ_NUM =
D.OPERATION_SEQ_NUM_S) AS ZY_SUM --转移数量
FROM WIP_ENTITIES A
INNER JOIN CUX_WIP_MOVE_RESOURCES D ON A.WIP_ENTITY_ID=D.WIP_ENTITY_ID
INNER JOIN WIP_DISCRETE_JOBS B
ON B.WIP_ENTITY_ID = A.WIP_ENTITY_ID
INNER JOIN WIP_OPERATIONS C
ON C.WIP_ENTITY_ID = A.WIP_ENTITY_ID AND C.OPERATION_SEQ_NUM=D.OPERATION_SEQ_NUM_S
) TABLE14
WHERE TABLE14.BG_SUM <> TABLE14.ZY_SUM*/
) TABLE_TEMP
INNER JOIN ORG_ORGANIZATION_DEFINITIONS ORG ON TABLE_TEMP.组织ID = ORG.ORGANIZATION_ID
where ORG.ORGANIZATION_ID=p_organization_id;
BEGIN
ERRBUF := ‘OK‘;
RETCODE := 0;
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,
‘<?xml version = ‘‘‘ || ‘1.0‘ || ‘‘‘ encoding = ‘ || ‘‘‘UTF-8‘ || ‘‘‘?>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<G1>‘);
--FND_FILE.PUT_LINE(FND_FILE.OUTPUT, ‘<TIME>‘ || TO_CHAR(SYSDATE,‘YYYY-MM-DD hh24:mi:ss‘) || ‘</TIME>‘);
FOR CUR_ROW IN CUR_ALL LOOP
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<G_LINES>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<organization_code>‘ || CUR_ROW.组织ID|| ‘</organization_code>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<organization_name>‘ || CUR_ROW.组织|| ‘</organization_name>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<error_code>‘ || CUR_ROW.错误代码 ||‘</error_code>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<error_content>‘ || CUR_ROW.报错描述 ||‘</error_content>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<doc_type>‘ || CUR_ROW.单据类型 ||‘</doc_type>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<doc_number>‘ || CUR_ROW.单据编号 ||‘</doc_number>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<doc_date>‘ || TO_CHAR(CUR_ROW.单据日期,‘YYYY-MM-DD‘) ||‘</doc_date>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘<doc_man>‘ || CUR_ROW.制单人 ||‘</doc_man>‘);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘</G_LINES>‘);
END LOOP;
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,‘</G1>‘);
fnd_file.put_line(fnd_file.LOG,
‘**************************************************************‘);
fnd_file.put_line(fnd_file.LOG,
‘程序开始运行 ‘ ||
TO_CHAR(SYSDATE, ‘yyyy-mm-dd hh24:mi:ss‘));
fnd_file.put_line(fnd_file.LOG, ‘p_organization_id==‘ || p_organization_id);
EXCEPTION
WHEN OTHERS THEN
RETCODE := 2;
ERRBUF := ‘异常:‘||SQLERRM||‘代码行:‘||DBMS_UTILITY.FORMAT_ERROR_BACKTRACE;
FND_FILE.PUT_LINE(FND_FILE.LOG,ERRBUF);
END MAIN;
END CUX_FINANCE_DEBUG_REPORT;
来源: http://www.bubuko.com/infodetail-2279385.html