用接口开发接PO收入库程序
用接口开发采购入库程序在网上一搜就会有很多,但基本上都是一样的程序,在自己的系统中操作时很有可能不成功,下面就针对这种情况,将自己操作的全过程记录下来,供大家参考:
SQL代码(网上搜的):
/* Formatted on 2014-10-7 15:23:20 (QP5 v5.115.810.9015) */
/*采购接收接口开发
RCV_TRANSACTIONS_INTERFACE;
RCV_HEADERS_INTERFACE;
mtl_transaction_lots_interface; (物料属于批次控制)
**************************************************
*/
DECLARE
V_INTERFACE_TRANSACTION_ID NUMBER;
V_GROUP_ID NUMBER;
V_SHIPMENT_HEADER_ID NUMBER;
V_SHIPMENT_LINE_ID NUMBER;
V_LINE_LOCATION_ID NUMBER;
V_PO_DISTRIBUTION_ID NUMBER;
V_HEADER_INTERFACE_ID NUMBER;
V_DELIVER_TO_PERSON_ID NUMBER;
L_REQUEST_ID NUMBER;
L_REQUEST_ID2 NUMBER;
V_DESTINATION_TYPE_CODE VARCHAR2(100);
V_EXPECTED_RECEIPT_DATE DATE;
V_COUNTRY_OF_ORIGIN_CODE VARCHAR2(100);
V_LOT_CONTROL NUMBER;
V_USE_MTL_SERIAL NUMBER;
V_RCV_QTY NUMBER;
V_TRANS_QTY NUMBER;
L_PHASE VARCHAR2(10);
L_STATUS VARCHAR2(10);
L_DEV_PHASE VARCHAR2(10);
L_DEV_STATUS VARCHAR2(10);
L_MESSAGE VARCHAR2(10);
L_REQUEST_LAUCH1_STATUS BOOLEAN;
V_INTERFACE_ID NUMBER;
CURSOR CUR_PO_INFO
IS
SELECT PHA.SEGMENT1
,PHA.CURRENCY_CODE
,PHA.SHIP_TO_LOCATION_ID
,PHA.VENDOR_ID
,PHA.VENDOR_SITE_ID
,PLA.*
FROM PO_HEADERS_ALL PHA, PO_LINES_ALL PLA
WHERE PHA.PO_HEADER_ID = PLA.PO_HEADER_ID
AND PHA.ORG_ID = PLA.ORG_ID
AND PHA.ORG_ID = 85
AND PHA.AUTHORIZATION_STATUS = 'APPROVED'
AND PHA.TYPE_LOOKUP_CODE = 'STANDARD'
AND PHA.WF_ITEM_TYPE = 'POAPPRV'
AND PHA.SEGMENT1 = '123214060066' ;
BEGIN
FND_GLOBAL.APPS_INITIALIZE(USER_ID => 11236 --7137
,RESP_ID => 50623
,RESP_APPL_ID => 201 --Purchasing Super User , PO
);
MO_GLOBAL.SET_POLICY_CONTEXT('S', 85);
MO_GLOBAL.SET_ORG_CONTEXT(85, '', 'ONT');
MO_GLOBAL.INIT('ONT');
dbms_application_info.SET_CLIENT_INFO(85);
FOR C_PO_INFO IN CUR_PO_INFO LOOP
SELECT RCV_TRANSACTIONS_INTERFACE_S.NEXTVAL
INTO V_INTERFACE_TRANSACTION_ID
FROM DUAL;
SELECT RCV_INTERFACE_GROUPS_S.NEXTVAL INTO V_GROUP_ID FROM DUAL;
SELECT RCV_SHIPMENT_HEADERS_S.NEXTVAL
INTO V_SHIPMENT_HEADER_ID
FROM DUAL;
SELECT RCV_SHIPMENT_LINES_S.NEXTVAL INTO V_SHIPMENT_LINE_ID FROM DUAL;
SELECT RCV_HEADERS_INTERFACE_S.NEXTVAL
INTO V_HEADER_INTERFACE_ID
FROM DUAL;
SELECT MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL
INTO V_INTERFACE_ID
FROM DUAL;
BEGIN
SELECT MSIB.LOT_CONTROL_CODE
INTO V_LOT_CONTROL
FROM MTL_SYSTEM_ITEMS_B MSIB
WHERE MSIB.INVENTORY_ITEM_ID = C_PO_INFO.ITEM_ID
AND MSIB.ORGANIZATION_ID = 104; --HUTS
EXCEPTION
WHEN OTHERS THEN
V_LOT_CONTROL := NULL;
END;
IF V_LOT_CONTROL IS NULL THEN
V_USE_MTL_SERIAL := NULL;
ELSE
V_USE_MTL_SERIAL := 1;
END IF;
--Get po line location informations
BEGIN
SELECT PLLA.LINE_LOCATION_ID
,PLLA.NEED_BY_DATE
,PLLA.COUNTRY_OF_ORIGIN_CODE
,(PLLA.QUANTITY - PLLA.QUANTITY_RECEIVED)
INTO V_LINE_LOCATION_ID
,V_EXPECTED_RECEIPT_DATE
,V_COUNTRY_OF_ORIGIN_CODE
,V_TRANS_QTY
FROM PO_LINE_LOCATIONS_ALL PLLA
WHERE PLLA.PO_HEADER_ID = C_PO_INFO.PO_HEADER_ID
AND PLLA.PO_LINE_ID = C_PO_INFO.PO_LINE_ID
AND ROWNUM = 1;
EXCEPTION
WHEN OTHERS THEN
V_LINE_LOCATION_ID := NULL;
V_EXPECTED_RECEIPT_DATE := NULL;
V_COUNTRY_OF_ORIGIN_CODE := NULL;
V_TRANS_QTY := 0;
END;
--Get po_distribution_id
BEGIN
SELECT PDA.PO_DISTRIBUTION_ID
,PDA.DESTINATION_TYPE_CODE
,PDA.DELIVER_TO_PERSON_ID
INTO V_PO_DISTRIBUTION_ID
,V_DESTINATION_TYPE_CODE
,V_DELIVER_TO_PERSON_ID
FROM PO_DISTRIBUTIONS_ALL PDA
WHERE PDA.PO_HEADER_ID = C_PO_INFO.PO_HEADER_ID
AND PDA.PO_LINE_ID = C_PO_INFO.PO_LINE_ID
AND ROWNUM = 1;
EXCEPTION
WHEN OTHERS THEN
V_PO_DISTRIBUTION_ID := NULL;
V_DESTINATION_TYPE_CODE := NULL;
END;
IF V_TRANS_QTY > 0 THEN
INSERT INTO RCV_TRANSACTIONS_INTERFACE(INTERFACE_TRANSACTION_ID
,GROUP_ID
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY
,LAST_UPDATE_LOGIN
,TRANSACTION_TYPE
,TRANSACTION_DATE
,PROCESSING_STATUS_CODE
,PROCESSING_MODE_CODE
,TRANSACTION_STATUS_CODE
,QUANTITY
,UNIT_OF_MEASURE
,ITEM_ID
,EMPLOYEE_ID
,AUTO_TRANSACT_CODE
,SHIP_TO_LOCATION_ID
,RECEIPT_SOURCE_CODE
,VENDOR_ID
,SOURCE_DOCUMENT_CODE
,PO_HEADER_ID
,PO_LINE_ID
,PO_LINE_LOCATION_ID
,DESTINATION_TYPE_CODE
,DELIVER_TO_PERSON_ID
,LOCATION_ID
,DELIVER_TO_LOCATION_ID
,SUBINVENTORY
,LOCATOR_ID
,HEADER_INTERFACE_ID
,DOCUMENT_NUM
,TO_ORGANIZATION_ID
,VALIDATION_FLAG
)
VALUES (V_INTERFACE_TRANSACTION_ID
, --INTERFACE_TRANSACTION_ID,
V_GROUP_ID
, --GROUP_ID,
SYSDATE
, --LAST_UPDATE_DATE,
11236
, --LAST_UPDATED_BY,
SYSDATE
, --CREATION_DATE,
11236
, --CREATED_BY,
11236
, --LAST_UPDATE_LOGIN,
'RECEIVE'
, --TRANSACTION_TYPE,
SYSDATE
, --TRANSACTION_DATE,
'PENDING'
, --PROCESSING_STATUS_CODE,
'BATCH'--'IMMEDIATE'
, --PROCESSING_MODE_CODE,
'PENDING'
, --TRANSACTION_STATUS_CODE,
10
, --QUANTITY,
C_PO_INFO.UNIT_MEAS_LOOKUP_CODE
, --UNIT_OF_MEASURE,
C_PO_INFO.ITEM_ID
, --ITEM_ID,
37316
, --EMPLOYEE_ID,
'DELIVER'
, --AUTO_TRANSACT_CODE,
C_PO_INFO.SHIP_TO_LOCATION_ID
, --SHIP_TO_LOCATION_ID,
'VENDOR'
, --RECEIPT_SOURCE_CODE,
C_PO_INFO.VENDOR_ID
, --VENDOR_ID,
'PO'
, --SOURCE_DOCUMENT_CODE,
C_PO_INFO.PO_HEADER_ID
, --PO_HEADER_ID,
C_PO_INFO.PO_LINE_ID
, --PO_LINE_ID,
V_LINE_LOCATION_ID
, --PO_LINE_LOCATION_ID,
V_DESTINATION_TYPE_CODE
, --DESTINATION_TYPE_CODE,
V_DELIVER_TO_PERSON_ID
, --DELIVER_TO_PERSON_ID,
147
, --LOCATION_ID,
147
, --DELIVER_TO_LOCATION_ID,
'QBF-FL'
, --SUBINVENTORY,
347751
, --locator_id,
V_HEADER_INTERFACE_ID
, --HEADER_INTERFACE_ID,
C_PO_INFO.SEGMENT1
, --DOCUMENT_NUM,
104
, --TO_ORGANIZATION_ID,
'Y' --VALIDATION_FLAG
);
--Insert into header interface
INSERT INTO RCV_HEADERS_INTERFACE(HEADER_INTERFACE_ID
,GROUP_ID
,PROCESSING_STATUS_CODE
,RECEIPT_SOURCE_CODE
,TRANSACTION_TYPE
,AUTO_TRANSACT_CODE
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,LAST_UPDATE_LOGIN
,CREATION_DATE
,CREATED_BY
,VENDOR_ID
,SHIP_TO_ORGANIZATION_ID
,EXPECTED_RECEIPT_DATE
,VALIDATION_FLAG
)
VALUES (V_HEADER_INTERFACE_ID
, --Header_Interface_Id
V_GROUP_ID
, --Group_Id
'PENDING'
, --Processing_Status_Code
'VENDOR'
, --Receipt_Source_Code
'NEW'
, --Transaction_Type
'DELIVER'
, --Auto_Transact_Code
SYSDATE
, --Last_Update_Date
11236
, --Last_Updated_By
11236
, --Last_Update_Login
SYSDATE
, --Creation_Date
11236
, --Created_By
C_PO_INFO.VENDOR_ID
, --Vendor_Id
104
, --Ship_To_Organization_Id,
SYSDATE
, --Expected_Receipt_Date
'Y' --Validation_Flag
);
INSERT INTO MTL_TRANSACTION_LOTS_INTERFACE(TRANSACTION_INTERFACE_ID
,ORIGINATION_TYPE
,LAST_UPDATE_DATE
,LAST_UPDATED_BY
,CREATION_DATE
,CREATED_BY
,LAST_UPDATE_LOGIN
,LOT_NUMBER
,TRANSACTION_QUANTITY
,PRIMARY_QUANTITY
,--SERIAL_TRANSACTION_TEMP_ID,
PRODUCT_CODE
,PRODUCT_TRANSACTION_ID
)
VALUES (V_INTERFACE_ID
, --TRANSACTION_INTERFACE_ID
3
, --ORIGINATION_TYPE
SYSDATE
, --LAST_UPDATE_DATE
11236
, --LAST_UPDATED_BY
SYSDATE
, --CREATION_DATE
11236
, --CREATED_BY
11236
, --LAST_UPDATE_LOGIN
'QB1410070001'
, --LOT_NUMBER
10
, --TRANSACTION_QUANTITY
10
, --PRIMARY_QUANTITY
--0,--MTL_MATERIAL_TRANSACTIONS_S.NEXTVAL, --SERIAL_TRANSACTION_TEMP_ID
'RCV'
, --PRODUCT_CODE
V_INTERFACE_TRANSACTION_ID --PRODUCT_TRANSACTION_ID
);
END IF;
L_REQUEST_ID :=
FND_REQUEST.SUBMIT_REQUEST( 'PO', -- application
'RVCTP', -- program
NULL, --'接收事务处理处理器', description optional)
NULL, -- start_time (optional)
FALSE, -- sub_request
'BATCH',---人工提交
to_char(V_GROUP_ID), -- group id to process
chr(0)
);
/* L_REQUEST_ID2 :=
FND_REQUEST.SUBMIT_REQUEST('PO'
, --APPLICATIONI SHORT NAME;
'RCVDLPDT'
, --PROGRAME SHORT NAME;
''
,''
,FALSE
,'P_group_id=' || V_GROUP_ID
,'P_receipt_source_type=Supplier'
,'P_qty_precision=2'
,'P_org_id=85'
);
dbms_output.PUT_LINE( 'l_request_id: '
|| L_REQUEST_ID
|| ' l_request_id2: '
|| L_REQUEST_ID2);
*/
END LOOP;
COMMIT;
END;
用上面这段代码在toad中执行时查看interface表出现错误:
SELECT * FROM RCV_HEADERS_INTERFACE
WHERE GROUP_ID =1260538 -- 1260557
-- 1260538
SELECT * FROM RCV_TRANSACTIONS_INTERFACE
WHERE GROUP_ID =1260538
SELECT * FROM PO_INTERFACE_ERRORS
WHERE INTERFACE_HEADER_ID = 996012
在PO_INTERFACE_ERRORS表中报错的错误如下:
错误: derive_vendor_rcv_line_qty-098:1
原因:在 derive_vendor_rcv_line_qty 中出现 SQL 错误。SQL 错误为 User-Defined Exception。
措施:请记录此错误编号以及您尝试进行的活动。请与系统管理员联系以寻求更多帮助。
网上一搜,还真有不少人遇到,最有参考价值的是http://blog.csdn.net/yy5512/article/details/4463000 : 参照里面的方法,对接收事务处理处理器 这支报表进行Trace。
Trace过程:
1.设置profile: a. RCV: Debug Mode=Yes
b. FND: Debug Log Enabled=Yes
c. FND: Debug Log Level=Statement
d. FND: Debug Log Module=po%
----------------------------------------------
a. TP:INV Transaction processing mode=On-line
b. INV: Debug Trace=Yes
c. INV: Debug Level=11
d. INV: Debug file (Including the complete path)=<valid directory path ---------------------------------------------- ---此处可以不填
a. OM: Debug Level = 5
b. OM: Debug Log Directory = <valid directory path> ---此处可以不填
2.更新 interface表的状态 ,因为第一次不成功时PROCESSING_STATUS_CODE 状态已是ERROR了,必须将状态修改过来再次执行的时候才会再重新从头运行。
UPDATE RCV_TRANSACTIONS_INTERFACE
SET PROCESSING_STATUS_CODE ='PENDING'
WHERE GROUP_ID = 1260538
UPDATE RCV_HEADERS_INTERFACE
SET PROCESSING_STATUS_CODE ='PENDING'
WHERE GROUP_ID = 1260538
3根据request id 查看 Trace信息
select to_char(timestamp, 'DD-MON-YY HH24:MI:SS'),
message_text,
module,
log_sequence
from fnd_log_messages
WHERE trunc(timestamp) = trunc(sysdate)
AND process_id = (SELECT os_process_id
FROM fnd_concurrent_requests
WHERE request_id =42574017)
AND module not like 'fnd%'
ORDER BY log_sequence;
错误信息如下: Match Option:RProfile value ALLOW_RATE_OVERRIDE_FOR_USER_RATE_TYPE:N |
po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.4896 |
No of Distributions:1:: Rate and Rate_date in po distributions6.318::06-06-14 | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.4922 |
Exception in derive_vendor_rcv_line_qty | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.5176 |
v--------Procedure Started-----------v | po.plsql.RCV_ERROR_PKG.RCV_ERROR_PKG.begin |
set error message token = PO_ALL_SQL_ERROR | po.plsql.RCV_ERROR_PKG.RCV_ERROR_PKG.214 |
error stack from call to set_error_message | po.plsql.RCV_ERROR_PKG.RCV_ERROR_PKG.215 |
^--------Implicit Procedure Exit-----^ | po.plsql.RCV_ERROR_PKG.RCV_ERROR_PKG.end_implicit |
1 | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.5216 |
User-Defined Exception | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.5217 |
error 098 | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.5218 |
^--------Implicit Procedure Exit-----^ | po.plsql.RCV_ROI_TRANSACTION.RCV_ROI_TRANSACTION.end_implicit |
Back from derive routine with 1 rows | po.plsql.RCV_ROI_PREPROCESSOR.RCV_ROI_PREPROCESSOR.1700 |
后来查看RCV_ROI_TRANSACTION包中查看,估计是税这块出了问题(如下图),之后查看PO,发现currency_code ,rate_type 都填的跟系统标准的不太一样(此po是导入的),于是针对标准PO进行了如下修改
UPDATE po_distributions_ALL
SET RATE_DATE =NULL, RATE =NULL
WHERE LINE_LOCATION_ID = 1654169
UPDATE po_headers_ALL
SET currency_code ='CNY',rate_type =NULL,RATE_DATE=NULL,RATE = NULL
WHERE po_header_id = 785071
之后再重新修正interface表的数据
UPDATE RCV_TRANSACTIONS_INTERFACE
SET PROCESSING_STATUS_CODE ='PENDING',CURRENCY_CODE='CNY',CURRENCY_CONVERSION_TYPE =NULL,CURRENCY_CONVERSION_RATE=NULL,CURRENCY_CONVERSION_DATE=NULL
WHERE GROUP_ID = 1260538
UPDATE RCV_HEADERS_INTERFACE
SET PROCESSING_STATUS_CODE ='PENDING'
WHERE GROUP_ID = 1260538
再次run 接收事务处理处理器 时,居然又报错:
Error: Please enter a GL date that is within an open purchasing accounting period.
期间没打开,INV和gl是确定打开了的,难道还有其他期间?
之后网上查找到 http://blog.csdn.net/pan_tian/article/details/8801120 这篇文章,采用了里面的解决办法,将采购超级用户-设置-控制采购期间 ,将当期的(2014-10)打开,之后再重新 跑接收事务处理处理器,这样接口表的数据就已经过去了。
解决方法:
确保GL,Purchasing,Inventory期间为打开的状态。
如何开各个期间,参考:Navigation to Open/Close INV/GL/AR/AP/PO Period
查询是否已经有采购接收入库的数据:
SELECT * FROM RCV_TRANSACTIONS
WHERE PO_HEADER_ID =785071
用接口开发接PO收入库程序相关推荐
- 微信小程序项目实战篇——基于WYY音乐真实接口开发的音乐小程序
文章目录 一.项目简介 二.项目结构 三.开发工具 四.项目截图 五.项目地址 六.部分代码 七.项目运行 八.特别声明 一.项目简介 此小程序以网易云音乐为原型进行项目构建,使用网易云音乐真实API ...
- web api接口开发实例_小程序开发如何调用 API 接口,以豆瓣电影为例
API 调用是开发者在小程序开发过程中经常会遇到的问题,本期我们以为调用豆瓣电影 API 为例具体来看 API 的调用过程以及常见的一些问题. 测试用到的小程序是「电影周周看」,内容来自清华大学软件学 ...
- 12月15-16日:跟着猫叔写代码学习api接口开发小程序
猫叔博客地址:fast-小程序:todolist项目文档汇总 - 猫叔饭-写代码的猫叔个人博客 视频地址:todolist实战课程-fastadmin结合微信小程序开发实例 api接口开发和对接_哔哩 ...
- php微信接口怎么开发,php微信公众平台配置接口开发程序的方法实例详解
这篇文章主要为大家详细介绍了php微信公众平台配置接口开发程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 在阅读这篇文章之前你要做以下的准备: 1.注册一个订阅号(通过微信公众平台https: ...
- SpringBoot+Vue博客系统---后端接口开发
Java后端接口开发 从零开始搭建一个项目骨架,最好选择合适,熟悉的技术,并且在未来易拓展,适合微服务化体系等.所以一般以Springboot作为我们的框架基础,这是离不开的了. 然后数据层,我们常用 ...
- 基于SpringBoot+Vue开发的前后端分离博客项目-Java后端接口开发
文章目录 1. 前言 2. 新建Springboot项目 3. 整合mybatis plus 第一步:导依赖 第二步:写配置文件 第三步:mapper扫描+分页插件 第四步:代码生成配置 第五步:执行 ...
- WIP 工序移动和完工接口开发
WIP 工序移动和工单完工接口开发 在某个项目中, 需要对 WIP 的工单的某工序进行移动, 完工, 同时可能涉及到超量完工. Release 之后的工单可以进行工序移动事务处理, 在工序移动的同时可 ...
- 《Web接口开发与自动化测试 -- 基于Python语言》 ---前言
前 言 本书的原型是我整理一份Django学习文档,从事软件测试工作的这六.七年来,一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮 ...
- 一周的微信公众平台接口开发总结
2019独角兽企业重金招聘Python工程师标准>>> 在公司弄了一个星期的微信公众平台的接口开发,由于之前没弄过,开发的过程遇到了很多的小问题.下面我就总结一下我在开发过程中遇到了 ...
最新文章
- error: xxxx.o: Relocations in generic ELF (EM: 3)解决办法
- php多人点餐可以看到对方点的菜,千万不要小看你身边那个会点菜的人,因为
- 去年计算机试题,微机去年试卷及答案,广东海洋大学
- (c语言)输入某年某日,判断这一天是这一年的第几天?
- 6月16日!蒋江伟深度解读基础云产品生态战略 | 凌云时刻
- 理解证券行业“行业分类
- css cursor 鼠标手势
- 草根的91助手和它的同类们
- 计算机显示去掉拼音分类,win10系统取消电脑文件显示以字母数字拼音分组的解决方法...
- Topic 7. 临床预测模型--Cox回归
- 深度学习基础----GAE和VGAE
- centos win xp双系统 安装手记 9660 grldr U盘安装
- axure 授权码,试用期过了也可以用
- 动画解析:图的遍历方式有哪些?
- oracle OCP指南
- jmeter导入自定义jar包
- Look N Stop防火墙使用指南规则教程(1)
- 青岛啤酒与德国啤酒:纯爽背后的渊源与秘密
- 实体服装店如何开展线上销售的新模式?
- HR软件切忌过度招标