zoukankan      html  css  js  c++  java
  • Receiving Transaction Processor Conundrum

    what would we do if we are faced with a situation to execute a receiving transaction in oracle ebusiness suite from a BPEL process in Oracle Fusion Middleware?


    There are no public APIs provided as of this moment to execute the transactions. The only option is to use the receiving transaction processor. We would not want to invoke a concurrent program from a BPEL process and write wait & watch logic to check the outcome of the concurrent program. Could there be a better way? Let us dig deeper into how Oracle internally handles the receiving transactions.

    Within the ebusiness suite system, there are 3 modes with which receiving can be done: Online, Immediate, Batch.

    Immediate mode calls the receiving transaction processor as a concurrent request while the batch mode simply inserts the transactions into the receiving interface which could then be processed by a scheduled run of the receiving transaction processor.

    What is of interest to us is this online mode. The online mode invokes the receiving transaction processor as a synchronous call bypassing the concurrent request submission. It is this mode that we can use to our advantage in a BPEL process to pull off our heist.

    Synchronous calls can be done using fnd_transaction.synchronous API in the ebusiness suite system. The synchronous call to receiving transaction processor would be like this:

    l_retvalue := fnd_transaction.synchronous( 300, -- timeout in seconds
    l_outcome, -- out variable indicating Success/Warning/Error
    l_message, -- out variable with a descriptive message
    'PO',
    'RCVTPO',
    'ONLINE',
    l_group_id, -- group_id in rcv_transactions_interface
    l_organization_id, -- inventory organization_id,
    NULL, NULL, NULL, NULL, NULL,
    NULL, NULL, NULL, NULL, NULL, NULL,
    NULL, NULL, NULL, NULL, NULL, NULL);

    Please note that Oracle internally makes this call for Online receiving transactions using POR_RCV_ORD_SV.Call_Txn_Processor routine.

    There are a couple of things that we need to do before we make this synchronous call:

    • Set the apps context
    • Insert rows into receiving interface tables
    • Specify processing_mode_code in rcv_transactions_interface as 'ONLINE'


    To debug this routine, set the 'CONC_DEBUG' profile to 'TC' and watch for errors in the fnd_concurrent_debug_info table.

    All of this could be wrapped up into a nice custom utility and we would be good to go!

    Enjoy the serving!

  • 相关阅读:
    610K图纸打印新版增值税发票不完整的调整方法 黑盘红盘都兼容
    Teleport Ultra 下载网页修复
    IIS7配置Gzip压缩 JS压强失败的原因
    Destoon B2B 调优SQL后 生成首页仍然慢或不成功的原因
    奈学教育《大数据架构师》课程大纲
    奈学教育《P7架构师》课程大纲
    奈学教育《Java资深研发工程师》课程大纲
    奈学教育《百万架构师》课程大纲
    奈学教育《大数据开发工程师》课程大纲
    奈学教育<P7架构师>课程大纲(第一阶段)
  • 原文地址:https://www.cnblogs.com/quanweiru/p/4084922.html
Copyright © 2011-2022 走看看