Tables in b2b
Hi,
there is some basic missing concept from B2B developer guide, we can learn all, but DB table part is missing, i did nt found any material for that.
can any one please tell me about basic DB architecture of B2B, what all table involve in it.
I need some a basic tutorial on it.
Similarly in 11g may i know which table replaces tip_businessmessage_rt. The columns which are being used in are messagestate, businesstransactioninstance .In SOAINFRA schema (for e.g. dev_soainfra) you may find B2B_BUSINESS_MESSAGE
Also can anyone share some useful queries which are used in B2B 11g? Queries which fetch about the status of the messages received in the seeded queues, trading partner details, agreement details and channel detailsB2B instance message java API has been released since release 11.1.1.4 (11gR1 PS3). It is recommended to use this API to get information from B2B tables. It is NOT recommended to access b2b tables directly for any monitoring/auditing purpose. To know more about instance message API in 11g, please refer -
http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10229/b2b_api_imsg.htm#BABFEFCD
Alternatively, you may also use web-services exposed by B2B for querying TP/agreement info (section "20.4 Using the Query API") -
http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10229/bb_webservice.htm#CIADAICA
Also share the log files location in the sever to debug b2b issues in 11g.Location of log file - $MW_HOME/user_projects/domains/<domainname>/servers/soa_server<n>/logs/soa_server<n>-diagnostic.log
Regards,
Anuj
Similar Messages
-
Hi B2BGurus,
Can anyone explain us with below questions, Here i am giving our scenario and my questions
Scenarion:
Div A FTP-> SOA-->B2B OutboundCoustome queue ---> B2B---->Http or HTTPs(AS2) or FTP(As2)
Div B FTP-> SOA-->B2B OutboundCoustome queue ---->B2B---->Http or HTTPs(AS2) or FTP(As2)
Div C FTP-> SOA-->B2B OutboundCoustome queue ---- B2B---->Http or HTTPs(AS2) or FTP(As2)
Div D FTP-> SOA-->B2B OutboundCoustome queue ---->B2B---->Http or HTTPs(AS2) or FTP(As2)
Explanantion of scenarion:
1. Division people places the files in FTP
2. Soa picks it up, do the transformation and places the file in B2B outbound custom queue
3. B2B server picks it up from B2B outbound custom queue and converts it into native EDI and sends it to trading partner using AS2
Questions:
1. My idea is --for each trading partner planning to create two different queues (one is for outbound and another one is inbound), is it suggestible of creating a n number of custom queues?
2. If we creating a custom queues which is suggestible( either JMS custom queues or AQ custom queues)
3. If any transaction was error out, to which queues the transaction will go? And how can we find that transaction in database.
4. How the 850 transaction and 997 transactions will co-relate, on what basis B2B will check?
5. We sent one transaction to supplier and we received a –ve MDN, How can we see that –ve MDN and how we will recognize it
6. Are there any different or separate error queues in Oracle B2B?
7. What are the important B2B tables in 11G
8. In B2B_Instancemessage table we have ID and B2B messageId, Could you please tell us what is the use of this?
Regards
cnuHi cnu,
Http or HTTPs(AS2) or FTP(As2)AS2 supports HTTP/HTTPS only. FTP is not supported as part of AS2.
1. My idea is --for each trading partner planning to create two different queues (one is for outbound and another one is inbound), is it suggestible of creating a n number of custom queues? It makes sense, specially from maintenance perspective.
2. If we creating a custom queues which is suggestible( either JMS custom queues or AQ custom queues)Depending upon use case and design you may use either of AQ/JMS but JMS may be preferred for tight performance requirement use cases. (my personal opinion)
3. If any transaction was error out, to which queues the transaction will go? And how can we find that transaction in database.By default, exception queue is IP_IN_QUEUE (AQ), but you may configure custom JMS exception/error queues. Please refer -
http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10229/app_except.htm#BCEIEEFF
4. How the 850 transaction and 997 transactions will co-relate, on what basis B2B will check?Please refer -
How 850 matches with corresponding 997
5. We sent one transaction to supplier and we received a –ve MDN, How can we see that –ve MDN and how we will recognize itOn reports console you may see negative MDN's. Please refer "Inbound Exception Handling Scenarios" -
http://download.oracle.com/docs/cd/E14571_01/integration.1111/e10229/app_except.htm#BCEIEEFF
6. Are there any different or separate error queues in Oracle B2B?No. By default IP_IN_QUEUE is the error queue.
7. What are the important B2B tables in 11G
B2B tables
Information required about B2B transaction tables in 11g
It's not recommended to access tables directly. Use InstanceMessageAPI -
http://download.oracle.com/docs/cd/E17904_01/integration.1111/e10229/b2b_api_imsg.htm#BABFEFCD
8. In B2B_Instancemessage table we have ID and B2B messageId, Could you please tell us what is the use of this?ID is the unique identifier for the particular table. B2B messageId is actually the unique identifier for a message and used for correlation between requests and response.
Regards,
Anuj -
How B2B Adapter will process multiple statements in one file
Hi All,
I have a file of MT940 format. I am able to read the file using B2B adapter. It contains multiple statements. Each statement is having opening and closing balance.
Now B2B Adapter is creating the instance on each statements Simultaneously.
Problem:
Here i need the closing balance of the 1st statement, is opening for the next statement, and i need to record the updated closing and opening balance in table. As B2B is processing independently each statement, i am not able to correlate the statement details.
Example -
Lets say i have 3001490311 - 16012013 MT940 File having mutilple statements, Lets say 3 statements.
Statement 1 -
Op Bal - 10,000, Cl Bal - 20,000
Statement 2 -
Op Bal - 20,000, Cl Bal - 30,000
Statement 3 -
Op Bal - 30,000, Cl Bal - 40,000
I need to record the Updated closing balance in the table, As B2B Adpter starts processing the statements independently, so i am not able to corelate bettwen the statements. Please if any one has any solution for this problem, please post it immediatelyThanks Anuj,
Thanks for your reply. As I unchecked the translate button. while testing i came to know that, In B2B console it showing as complete, but soa process is not getting started.
Problem:
B2b reading the file sequentially. In My case file type MT940 Postional Flat File. As its getting the starting position of the statement, B2B is creating a instance and that instance keep on moving independently, now again B2b is keep on reading the another statements in the same file.
Once again B2B is getting a starting position to read the statement, again creating the instance. so in the similar ways B2B is keep on creating the instance for other statement in the same file.
But in my case i need the out put of one process should be input to the next processs. As B2B is processing independently, i am not able to correalte the processes.
In my case I need B2b should processs first statement, till completion of the first process second processes should not initiate, so that i can use the out put of one process to input to the another process.
Thanks
Dilllip -
Hi ,
Can someone pls guide me how can i check the messages which are put into AQ by B2B or BackEndSystem. Does that data get stored in anyof the tables in B2B Schema or do we need to use any utility for that?
Thanks,
CheHi,
I use the following query:
select qtb.queue
, qtb.msg_id
, qtb.msg_state
, qtb.enq_time
, qtb.delay
, qtb.user_data.msg_id
, qtb.user_data.inreplyto_msg_id b2b_inreplyto_msg_id
, decode(instr(qtb.user_data.inreplyto_msg_id, ':'),0,qtb.user_data.inreplyto_msg_id, substr(qtb.user_data.inreplyto_msg_id, 1, instr(qtb.user_data.inreplyto_msg_id, ':')-1)) inreplyto_msg_id
, decode(instr(qtb.user_data.inreplyto_msg_id, ':'),0,null, substr(qtb.user_data.inreplyto_msg_id, instr(qtb.user_data.inreplyto_msg_id, ':')+1)) conversation_id
, qtb.user_data.from_party
, qtb.user_data.to_party
, qtb.user_data.action_name
, qtb.user_data.doctype_name
, qtb.user_data.doctype_revision
, qtb.user_data.msg_type
, qtb.user_data.payload
, qtb.user_data.attachment
, qtb.consumer_name
from aq$ip_qtab qtb
order by enq_time desc;
There are 3 remarks:
1. In a later patchset of B2B there is functionlity for ebXML to propagate protocol-converstation-id in the inreplytomsgid. It is of format <inreplytomsgid>:<conversationid>. Therefor the rather complex decode/instr/substr constructs on inreplytomsgid.
2. I allways recommend everyone to not query the queuetable directly but allways use the aq$<queuetable> view. It is the recommended way to get the correct msg-states and all other message-related information. When creating the queuetable AQ also adds IOT's and views. So the queuetable does not directly on itsself give the correct desired information. So allways use the aq$ip_qtab view in this particular case.
3. Above query directly gives access to the attributes of the ip-message-type in the payload.
Regards,
Martien -
Help needed in knowing the B2B Table strucure
Hi All,
I would like to know the tables in the B2B database that stores the ISA,GS,ST,Receiver ID and Ack flag data.
Or any document which contains the description of all the tables and what data is stored in them .
Thanks in advance.
Regards,
KaavyaHi Kaavya,
There is a view called b2b_instancemessage where you will get all the details. Please refer the post Getting the ISA Control Number and other details from a b2b generated file
which has the view creation script. If you analyze the script you will get to know the relationship between tables in the b2b schema.
Hope that it helps!!
Thanks,
Dibya Prakash Mohapatra -
Hi Gurus,
I am working on oralce B2B 10g, In B2B while configuring the TP profiles, all the configursation will save in Database.
Can anyone help us with the name of the tables where we can save the tp configurations.
Is there any document where can we see the complete info about the B2B tables.
Regards
RajsekharHi Raj,
Oracle B2B 11g, an integral component in SOA suite offering in OFM(Oracle Fusion Middleware stack) has extensive protocol support and is widely used in various of the business verticals such as Retail, telecom, health care, chemical, hi tech, transportation, logistic, energy and government sector.
Some of the key points are below.
1. Tighter in-memory integration with SOA Suite, along with other standard transport such as JMS, AQ etc. This makes the integration seamless and better performance with other components in the SOA suite.
2. Easy integration with Oracle EBusiness Suite, Peoplesoft,JDEdwards,Siebel apps.
3. Oracle B2B uses industry leader Edifecs API to provide translation and validation support for EDI and other flat file. This will enable B2B to provide complex caching support for performance and Advanced batching for retail use cases. Oracle B2B uses Edifecs Document Editor for document creation, manageability etc
4. Comprehensive HL7, MLLP support to be used in health care verticals.
5. Provides optional metadata cache at various stages for performance use cases.
6.Advanced version support in B2B metadata which enables the Administrator to switch back and forth between various version of B2B metadata
7. Provides UI based resubmission feature for messages failed at various stages of the message flow and also for various states, dates and trading partner.
8. Auto creation and Cloning of Trading partner/Agreement.
9. Sequencing/Stacking support for sending/receiving the documents in sequence
10. API Support for Bulk metadata creation.
11. Define and manage Complex correlation between various business documents using correlation sets
12.Advanced error/exception handling with Notification mechanism.
13. Performance tuning using multiple thread support.
14. Purge and Archival support for runtime data
15. Integrated with Oracle Enterprise manager for advanced manageability and metrics.
you can refer to below blogs for more details:
http://blogs.oracle.com/oracleb2bgurus/
http://blogs.oracle.com/oracleb2bgurus/what_do_i_like_most_in_11g/
http://blogs.oracle.com/oracleb2bgurus/2010/04/oracle_b2b_started_kit.html
There is a way to easy migrate from 10g to 11g B2B. you can refer below:
http://blogs.oracle.com/oracleb2bgurus/2009/10/export_the_metadata_from_10g_t.html
Rgds,
Nitesh Jain
[email protected] -
List Price Not getting displayed in B2B Webshop Product Catalog
Hello Experts,
We have done all the required configuration to view the LIST PRICE in B2B Webshop product catalog.
We have done following settings:
1. Pricing Procedure assignment to the PRODUCT CATALOG VARIANT
2. Initial Replication of the product catalog
3. Shopadmin setting for List Price (radio button selection on the GENERAL Informaiton Tab)
4. XCM Setting - No IPC
5. For the defined variant, we have maintain an entry in the Parameter for List Prices - ZPR0 and table as CUS506 and Catalog Price type as List Price.
6 Downloaded the required condition record from ECC to CRM with correct validity period
But still we are not able to see the LIST PRICE. Any other change (say addition/removal of product from CATALOG areas)in the CATALOG is getting dispayed correctly in the WEBSHOP product catalog except LIST PRICE. That means we feel there is no issue from TREX perspective.
Any other pointers will be really helpful.
Regards
DJWhat are the fields for CUS506? During replication if the list price is replicated from this table then all the key fields mentioned in this table should be available during replication for this table.
What my wild guess is that maybe this CUS506 has a field e.g say SHIP_TO or SOLD_TO etc.. Now at the time of replication.. there are no shipto or soldto hence no values/price will replicate to TREX.. hence u will see nothing in catalog.
regards,
Dipender Singh -
Hi plz help me to find out the table name and field names as i am unable to find .....In the spec am given requirements in the following pattern.
Description SAP-Term Explaination
1.Salesman Equipment AC Mgr. VBPA2 this is the salesman code - I need the
description for this.
2.Vendor MEPO_TOPLINE-SUPERFIELD Vendor field is pull from me23n where the
condition will be that COBL-KDAUF (this is a
structure from me23n in item data-account
assignment-sales order. The number here should
be the corresponding contract number. This field
should include a multiple selection function. User
can put more than one description to search for.
3. Val. Period Val. Period Category Val. Period Category from va41 header-contract
Category data. This field should include a multiple selection
function. User can put more than one description
to search for.
4. Service Order/ CAUFVD-GSTRP/ This should be the document date where by it is in
Purchase Order MEPO_TOPLINE-BEDAT between the range the user input
Document Date
5. B2B Vendor MEPO_TOPLINE-SUPERFIELD Vendor field is pull from me23n where the condition
will be that COBL-KDAUF (this is a structure from
me23n in item data-account assignment-sales
order. The number here should be the
corresponding contract number.
6. B2B Cost MEPO1211-NETPR This cost is pulled from PO (me23n) however take
note that the price will be pulled out base on line
item Net Price. Make sure that price is taken
corresponding only to the equipment tied to it.
Check on Number 7 to see how is the line item tied
to the equipment.
If this is in other currency please make it to SGD
with the exchange rate field Exchange rate
(MEPO1226-WKURS)
NOTE:: I need to know the table from which I can
determine the currency type as can be seen in the
ME23N transaction and also te exchange rate for
that particular currency.
7. No of faults The service order (CAUFVD-AUFNR) created base
on the equipment in Number 8. This should exclude
the service order of type RD08. Service order can be
access by IW33.
8. Faults Completed This would be the number of faults (Number 13)
which has a system status (CAUFVD-STTXT) of
TECO. System status can be viewed in IW33 Sys.
Status. Take note service order type RD08 will be
excluded
9. Time Spent on Fault AFVGD-ISMNW This field is in IW41 in confirmation base on the
order created. This field will be the actual time
spent. This will correspond to the Faults
Completed (Number 14). This means only orders
with system status TECO will be pull. Take not
service order type RD08 will be excluded
10. Fault Cost RIHAUFK_LIST- DGESKOSIST This will be the total cost for a service order which
have the status TECO. Those which are not TECO
will not be needed. This field can be obtain from
IW39 (standard report). Execute the report and
there will be a field for Total Actual Cost. You might
need to change the screen layout to be able to view
this. Take note service order type RD08 will be
excluded
11. PM Hours AFVGD-ISMNW This field is in IW41 in confirmation base on the
order created. This field will be the actual time
spent. This will correspond to the Faults Completed
This means only orders with system
status TECO will be pull. Take note service only
take order type RD08.
12. Spare Cost Spare part cost This field will be in IW33 under cost tab, and cost
PMCOEA-IKOSTENKGR tab in item level. This will be the actual cost of spare
part after TECO. This will include all order type.
13. Credit Note Credit Memo The programs need to pull out credit memo which is
reference from the contract. If there is a credit memo
reference from the contract then the value will be net
price per equipment.Can u tell me purpose of this spec ?
Regards,
pandu. -
Issue while handling the functional ack(CONTRL) through B2B
Hi,
My requirement is to handle the incoming CONTRL message through B2B and send the data to SOA/AIA application and update the CONTRL data in table. For that i have done the following settings in oracle B2B.
Functional Ack handled automatically : false
Functional Ack internal properties : false
Notify Inbound Receipt Acks : false
Notify Inbound Functional Acks : false
I am able to update the data successfully in the table for the successful scenarios. But if the transaction is failed in SOA/AIA application due to some error then it is creating 2 entries of MSG_ERROR in reports tab in B2B where as it is creating only one entry for MSG_COMPLETE state.
Please guide me if i am missing anything here. I am getting below 2 errors for 2 separate entries at the same time.
1)
Error Code B2B-52325
Error Description Machine Info: (elb1cn14.statoilfuelretail.com) Description: Error in the SOA Composite {0}
Error Level ERROR_LEVEL_COLLABORATION
Error Severity ERROR
Error Text Error in the SOA Composite
2)
Error Code B2B-52325
Error Description
Error Level
Error Severity
Error Text Error -: B2B-52325: Error in the SOA Composite {0}
Edited by: 901994 on Aug 22, 2012 3:36 AMBut if the transaction is failed in SOA/AIA application due to some error then it is creating 2 entries of MSG_ERROR in reports tab in B2B where as it is creating only one entry for MSG_COMPLETE state.Are you really sure that you are seeing three report entries for SAME transaction?
I guess B2B listening channel is trying to retry the same file in case of error.App message delivery is not retried in B2B rather failed messages are delivered to the IP_IN_QUEUE. Please enable the logging for B2B engine in TRACE 32 mode and run a test to reproduce the behaviour. Post the log here or mail across to my id (in my profile).
Regards,
Anuj -
Billing Document in B2B Shop.
Hi gurus,
we have the following issue that we try to solve since days without result.
We have a B2B shop connected to CRM 2007. Orders created from the web shop are transferred to ERP where they are delivered and billed. In our Dev and QA system we can see all the delivery and billing documents in the document flow in CRM and we can access/view the billing document in our B2B shop. However in our Production System we only see LIKP documents in the document flow in CRM, but no vbrk documents (invoicing) neither is there a link in the web shop to display the invoice.
The web shop settings are in all 3 systems the same.
Any idea where to look or what can go wrong?
Thanks a lot in advance,
NicoleHi all,
just to let you know the answer. Basically our root cause was that the synchronization of our crm adapter filters with ERP went wrong. Even CRM gave as a feedback everything is fine, the filters were synchronized from CRM Prod to ECC TEST. Therefore in the document flow the billing document was filtered out.
In the ERP table CRMOBJTAB there we missed entries for object SALESDOCUMENT. The same for table CRMOBJECT.
Hope this information help someone.
Cheers,
Nicole -
Creating multiple instances for a single file in B2B
Hi,
I have a requirement to read the camt.053 file from the remote partner using Oracle B2B and send the file to oracle AIA and insert the data in the ERP database tables. I am able to read the file successfully through B2B using listening channel and send the data to AIA and insert the data in ERP tables but, if there is any error occured while inserting the data in the ERP tables it is creating multiple instances(6 message count) for the same file in B2B reports. where as it is creating only one entry in reports in case of successful insertion. I have not given any retry count in listening channel nor in the database adapter in SOA/AIA composite. I am confused from where B2B is retrying the message ? Do i need to set any system properties? Could you please guide me to resolve this issue?
Regards,
Nishanth.App message delivery is not retried in B2B, rather failed messages are delivered to the IP_IN_QUEUE. Please enable the logging for B2B engine in TRACE 32 mode and run a test to reproduce the behaviour. Post the log here or mail across to my id (in my profile).
Regards,
Anuj -
BPEL Process unable to read Inbound messages from B2B Inbound IP_IN_QUEUE
Hi Greetings.
I am working on setting up trading partners at a customer place using BPEL and B2B. BPEL is 10.1.3 and B2B is 10.1.2. The previous BPEL developers developed some processes and deployed them to Development environment. B2B is also set up by them. Lets say the customer name is Pet Safe who is the host trading partner and the remote trading partner is Pet Smart. PetSmart sends Purchase Orders (850s) using EDI over Internet via AS2 connection. My B2B server has received the test PO and sent back the Functional Acknowledgement (997) to the Remote Trading partner. I can see the messages in TIP_BUSINESSMESSAGE_RT in B2B schema of the database which Oracle 10g.
There is a BPEL process called RSCProcess850. It has been developed by using JDeveloper 10g. This process has a AQ adapter configured in the source code of BPEL. It uses a managed connection factory to connect to the Adapter framework and makes a connection to the database, which in turn talks to the EIS to dequeue the messages in B2B inbound queues. This process dequeus the messages and transforms the EDI and puts the PO details into Oracle e-business Suite tables. There is another process called SendInvoice which is configured to a Data Base adapter which polls a table in the Data BAse and sends the invoice to the B2B schema by enqueing the data to OutBound queues of B2B schema. I tried creating a connection factory using Enterprize manage console for both AQ Adapter and DB Adapter but when restarted the server it is unable to load all the BPEL process because the source code of BPEL is mismathching the password. So I have deleted the connection factories that are created suing em console. These connection factories insert an entry in oc4j-ra.xml files for both AQ Adapter and DB adapter. Once I have deleted them and restarted the server all the processes are loading but the problem is the BPEL process is neither dequeueing or enqueueing the messages. There are no errors thrown in the BPEL Domain logs also. The test PO order details are not there in the staging tables of the e-business tables, which means that the BPEL process are not able to DeQ or EnQ using the adapters. How do I know whether the adapter is fetchingthe data from staging tables or not? I am nearing my deadline but unable to proceed I am stuck here. Any sort of help or approach is highly appreciated.
my e-mail Id is [email protected]
Thanks in advance
SudhakarHi,
To test whether the messgae is ENQ or DEQ u can use the sql given in thte B2B user guide.
Ritesh -
Calling New Function Module from JAVA ISA b2b
I need to call a new function module which accepts some parameters as input and
returns some result parameters back as output.
These returned value needs to be displayed on the JSP pages of ISA B2B applications.
Can someone please guide me and provide code snippet on how to do this?
Thanks in advance.
Points will be awarded for all relevant and helpful answers.Stride,
I did this on CRM ISA 4.0... I used the dev and extension guide as a basis - I think the ISA 5.0 guide has the examples and tutorials in a separate document that can also be downloaded from service.sap.com.
Heres some info on how to do it although I can't guarantee this is the full solution or that it will work the same for ISA 5.0, and I will probably forget a lot of stuff as its been a few years since I did it! I also cant guarantee it is the correct way to do it but it worked! Basically, we built a link into the order overview page to display urls to order tracking websites using an RFC on the backend CRM system. Hope it helps anyway.
1. Create RFC enabled function module in backend.
2. Edit file backendobject-config.xml in folder project_root\b2b_z\WEB-INF\xcm\customer\modification:-
[code] <backendobject
xmlns:isa="com.sapmarkets.isa.core.config"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<configs>
<!-- customer changes in backendobject-config should be done here by extending/overwriting the base configuration-->
<xi:include
href="$
Template for backend object in customer projects
Concrete implementation of a backend object
This implemenation demonstrates how a backend object
is used to communicate with the CRM system
@see com.ao.isa.backend.boi.Z_AOFuncBackend#getOrderDeliveryTrackingData(java.lang.String)
Interface used to communicate with a backend object
The purpose of this interface is to hide backend implementation details
from the business objects
Returns a vector of Z_OrderDeliverTracking objects containing data to link
to external delivery tracking websites
@param orderNo The sales order document number
@return A vector of order tracking objects
@return
@return
@return
@return
@return
@param string
@param string
@param string
@param string
@param string
/modification/backendobject-config.xml#xpointer(backendobject/configs/*)"/>
<!-- This is an example customer extension. A new Backend Object is registered in the framework using XCM extension mechanism. -->
<!-- If you write customer extensions you should register your backend objects in the same way. -->
<!-- Please make sure that you use the correct base configuration (e.g. crmdefault for CRM or r3default, r3pidefault for R/3) -->
<config
isa:extends="../config[@id='crmdefault']">
<businessObject
type="Z_AO_Custom"
name="Z_AO_Custom"
className="com.ao.isa.backend.crm.Z_AOFuncCRM"
connectionFactoryName="JCO"
defaultConnectionName="ISAStateless"/>
</config>
</configs>
</backendobject>
[/code]
File com.ao.isa.backend.crm.Z_AOFuncCRM.java looks like this :-
[code] package com.ao.isa.backend.crm;
//jco imports
import java.util.Vector;
import com.ao.isa.backend.boi.Z_AOFuncBackend;
import com.ao.isa.businessobject.order.Z_OrderDeliveryTrackingItem;
import com.sap.mw.jco.JCO;
import com.sap.mw.jco.JCO.ParameterList;
import com.sapmarkets.isa.core.eai.BackendException;
import com.sapmarkets.isa.core.eai.sp.jco.BackendBusinessObjectBaseSAP;
import com.sapmarkets.isa.core.logging.IsaLocation;
public class Z_AOFuncCRM
extends BackendBusinessObjectBaseSAP
implements Z_AOFuncBackend
// initialize logging
private static IsaLocation log =
IsaLocation.getInstance(Z_AOFuncCRM.class.getName());
/* (non-Javadoc)
public Vector getOrderDeliveryTrackingData(String orderNo)
Vector urlData = new Vector();
try
// get Java representation of function module
JCO.Function func =
getDefaultJCoConnection().getJCoFunction(
"Z_BAPI_CRM_ORDER_TRACKING_URLS");
// provide export parameters
ParameterList params = func.getImportParameterList();
params.setValue(orderNo, "ORDER_NO");
func.setExportParameterList(params);
// execute function
getDefaultJCoConnection().execute(func);
// get result table
JCO.Table table =
func.getTableParameterList().getTable("TRACKING_DATA");
int numRows = table.getNumRows();
for (int i = 0; i < numRows; i++)
// get row
table.setRow(i);
// create a new Z_orderdeliverytracking object
Z_OrderDeliveryTrackingItem trackItem =
new Z_OrderDeliveryTrackingItem(
table.getString(0),
table.getString(1),
table.getString(2),
table.getString(3),
table.getString(4));
urlData.addElement(trackItem);
trackItem = new Z_OrderDeliveryTrackingItem();
return urlData;
catch (BackendException bex)
// The following key has to be added to WEB-INF/classes/ISAResources.properties
// in order to see the exception correctly
log.config("ao.b2b.order.error.getOrderTrackingURLs", bex);
return null;
[/code]
And file com.ao.isa.backend.boi.Z_AOFuncBackend.java looks like this:-
[code] package com.ao.isa.backend.boi;
//package java.ao.com.ao.isa.backend.boi;
import java.util.Vector;
import com.sapmarkets.isa.core.eai.sp.jco.JCoConnectionEventListener;
public interface Z_AOFuncBackend
public Vector getOrderDeliveryTrackingData(String orderNo);
[/code]
Whilst file com.ao.isa.businessobject.order.Z_OrderDeliveryTrackingItem.java looks like this:-
[code]
package com.ao.isa.businessobject.order;
// Referenced classes of package com.sapmarkets.isa.businessobject.order:
// PaymentType
public class Z_OrderDeliveryTrackingItem // extends SalesDocument implements OrderData
private String deliveryDocNo;
private String goodsIssuedDate;
private String consignmentNo;
private String status;
private String url;
public Z_OrderDeliveryTrackingItem()
public Z_OrderDeliveryTrackingItem(
String delDocNo,
String GIDate,
String consNo,
String status,
String url)
this.setDeliveryDocNo(delDocNo);
this.setGoodsIssuedDate(GIDate);
this.setConsignmentNo(consNo);
this.setStatus(status);
this.setUrl(url);
public String getConsignmentNo()
return consignmentNo;
public String getDeliveryDocNo()
return deliveryDocNo;
public String getGoodsIssuedDate()
return goodsIssuedDate;
public String getStatus()
return status;
public String getUrl()
return url;
public void setConsignmentNo(String string)
consignmentNo = string;
public void setDeliveryDocNo(String string)
deliveryDocNo = string;
public void setGoodsIssuedDate(String string)
goodsIssuedDate = string;
public void setStatus(String string)
status = string;
public void setUrl(String string)
url = string;
[/code]
3. Edit file bom-config.xml in folder project_root\b2b_z\WEB-INF\xcm\customer\modification :-
[code] <BusinessObjectManagers
xmlns:isa="com.sapmarkets.isa.core.config"
xmlns:xi="http://www.w3.org/2001/XInclude"
xmlns:xml="http://www.w3.org/XML/1998/namespace">
<!-- customer changes in bom-config should be done here by extending/overwriting the base configuration-->
<xi:include
href="$/modification/bom-config.xml#xpointer(BusinessObjectManagers/*)"/>
<!-- This is an example Business Object Manager. It can act as template for customer written Business Object Managers -->
<BusinessObjectManager
name="Z_AO-BOM"
className="com.ao.isa.businessobject.Z_AOBusinessObjectManager"
/>
</BusinessObjectManagers>
[/code]
File com.ao.isa.businessobject.Z_AOBusinessObjectManager.java looks like this:-
[code] package com.ao.isa.businessobject;
// Internet Sales imports
import com.sapmarkets.isa.core.businessobject.management.BOManager;
import com.sapmarkets.isa.core.businessobject.management.DefaultBusinessObjectManager;
import com.sapmarkets.isa.core.businessobject.BackendAware;
Template for a custom BusinessObjectManager in customer projects
public class Z_AOBusinessObjectManager
extends DefaultBusinessObjectManager
implements BOManager, BackendAware {
// key used for the backend object in customer version of backendobject-config.xml
public static final String CUSTOM_BOM = "Z_AO-BOM";
// reference to backend object
private Z_AOFunc mCustomBasket;
constructor
public Z_AOBusinessObjectManager() {
Method is called by the framework before the session is invalidated.
The implemenation of this method should free any allocated resources
public void release() {
Returns custom business object
public Z_AOFunc getCustomBasket() {
if (mCustomBasket == null) {
mCustomBasket = new Z_AOFunc();
assignBackendObjectManager(mCustomBasket);
return mCustomBasket;
[/code]
And uses file com.ao.isa.businessobject.Z_AOFunc.java which looks like this:-
[code]
package com.ao.isa.businessobject;
// Internet Sales imports
import com.sapmarkets.isa.core.businessobject.BOBase;
import com.sapmarkets.isa.core.businessobject.BackendAware;
import com.sapmarkets.isa.core.eai.BackendObjectManager;
import com.sapmarkets.isa.core.eai.BackendException;
import com.sapmarkets.isa.core.logging.IsaLocation;
// custom imports
import com.ao.isa.backend.boi.Z_AOFuncBackend;
import java.util.Vector;
Template for business object in customer projects
public class Z_AOFunc extends BOBase implements BackendAware
// initialize logging
private static IsaLocation log =
IsaLocation.getInstance(Z_AOFunc.class.getName());
private BackendObjectManager bem;
private Z_AOFuncBackend backendAOBasket;
Returns a reference to the backend object. The backend object
is instantiated by the framework.
@return a reference to the backend object
private Z_AOFuncBackend getCustomBasketBackend()
if (backendAOBasket == null)
//create new backend object
try
backendAOBasket =
(Z_AOFuncBackend) bem.createBackendBusinessObject(
"Z_AO_Custom");
// the backend object is registered in customer version
// of backendobject-config.xml using the 'Z_AO_Custom' type
catch (BackendException bex)
// The following key has to be added to WEB-INF/classes/ISAResources.properties
// in order to see the exception correctly
log.config("ao.b2b.order.error.getOrderTrackingURLs", bex);
return backendAOBasket;
This method is needed when a business object has a corresponding
backend object.
public void setBackendObjectManager(BackendObjectManager bem)
this.bem = bem;
Returns a vector of url links for tracking
@return vector of urls
public Vector getOrderDeliveryTrackingData(String orderNo)
// the call is delegated to the CRM aware backend object
return getCustomBasketBackend().getOrderDeliveryTrackingData(orderNo);
[/code]
4. Edit file config.xml in folder project_root\b2b_z\WEB-INF to add custom actions (the section below is just the custom stuff added at the end of the file the Z_orderTracking is the relevant one) :-
[code] <!-- Begin of custom AO action definitions -->
<action path="/b2b/Z_orderTracking" type="com.ao.isa.order.actions.Z_OrderTrackingAction">
<forward name="success" path="/b2b/order/Z_orderTracking.jsp"/>
</action>
<action path="/catalog/Z_displaySVGPage" type="com.ao.isa.catalog.actions.Z_SVGPageAction">
<forward name="success" path="/catalog/Z_SVG_fs.jsp"/>
</action> [/code]
Which points at Java file com.ao.isa.order.actions.Z_OrderTrackingAction.java which looks like this :-
[code] package com.ao.isa.order.actions;
// internet sales imports
import com.sapmarkets.isa.core.BaseAction;
import com.sapmarkets.isa.core.UserSessionData;
// struts imports
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
// servlet imports
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.ServletException;
// Internet Sales imports
import com.ao.isa.businessobject.Z_AOBusinessObjectManager;
import java.util.Vector;
This action acts as a template for customer extensions
public class Z_OrderTrackingAction extends BaseAction
This method is called by the ISA Framework when the
action is executed
public ActionForward doPerform(
ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws ServletException
// get user session data object
UserSessionData userSessionData =
UserSessionData.getUserSessionData(request.getSession());
// gettting custom BOM
Z_AOBusinessObjectManager myBOM =
(Z_AOBusinessObjectManager) userSessionData.getBOM(
Z_AOBusinessObjectManager.CUSTOM_BOM);
// get the order number being processed
String orderDocNumber = request.getParameter("orderNo");
// pass the order number back to the page
request.setAttribute("orderNo", orderDocNumber);
if (orderDocNumber != null)
// Get a vector of delivery tracking objects from lower layers (Business Object layer =>
// Business Logic Service Layer)
Vector trackingTable =
myBOM.getCustomBasket().getOrderDeliveryTrackingData(
orderDocNumber);
String error = "";
if (trackingTable != null)
if (trackingTable.size() == 0)
error = "true";
else
error = "false";
else
error = "true";
request.setAttribute("errorMessage", error);
request.setAttribute("trackingTable", trackingTable);
return mapping.findForward("success");
[/code]
5. I added the call to the function module for page orderstatusdetail.jsp in folder project_root\b2b_z\b2b\order to display a custom page Z_orderTracking.jsp in the same folder. To do this I added a link into the HTML to call a JavaScript function that passed the current order number to the /b2b/Z_orderTracking.do actionhandler mapped in the config.xml file.
So, in summary! Create an RFC; define business managers for it in the XML files; create a new Strut action and supporting Java class; create all the Java class for the managers.
I hope this makes some sense!
Gareth. -
How to populate the collaboration name field in B2B?
hello,
There a field in oracle B2B 11g console in Reports --> Conversations
the Collaboration ID field get populated with the Id
just wanted to know how can we populate the Collaboration name ?
Regards,
ShreyaSolved..:)
Solution:
While creating the ALV grid, use the method 'get_layout' of the class CL_SALV_TABLE and get the reference of the layout in a reference variable.
Data:
gw_key TYPE salv_s_layout_key.
gr_layout = gr_grid->get_layout( ).
gw_key-report = sy-cprog.
gw_key-logical_group = gc_log_grp." Pass the logical group here say logical group: 0001, 0002, etc. for each ALV
So, whenever you create/ change a layout on the ALV grid, the system automatically passes this logical group and saves it in the table LTDX.
Regards
s@k -
Reg XML to Plain Conversion using B2B add on
Hi All,
This is an outbound scenario where the message is sent to AS2 receiver channel and the output is Plain file. I have added all the module parameters
and the content type as application/plain. While testing I am facing the error,
Exception caught by adapter framework: XML-Parser error occured while parsing: Cannot initialize XML to plain handlerCan not find a matching configuration for sender party "", service , receiver party ,service , namespace , action in table B2B_PLA_CTRL_IF.
Can anyone help me on this issue.
Cheers,
NeethuHi Neethu,
Did you import the content? See How to install the new B2B add-on , see step 5.1
You need to do this for the message type you want to exchange ((EDI, ansi X.12, ...).
Also, please do step 5.2. I guess this is not the case.
Kind regards,
Dimitri
Maybe you are looking for
-
Error opening PDF files on anonymous SharePoint 2013SP1 site with IE
Clicking search results, in the strict sense pdf files, using IE on an anonymous SharePint 2013SP1 site, I received the error: There was an error opening this document. The filename, directory name, or volume label syntax is incorrect. I would like t
-
Table cell color in webdynpro for ABAP
Hai, I need to differentiate some table cell values using color change or some other way. while populating table values, I have a field like mandatory or optional. According to mandatory field, I need to chage color the text of the another column in
-
Contact Center Ent. Integration with CUCM
I have CUCM 8.0 and CCX 8.0 and i am trying to setup the integration between them. I have created a user on the CUCM and CTI Port and done the required configuration on the CCX. Under CTI Port Status & IP Address it is giving unknown. I have attached
-
AIR compatible with Flex 2.01
I have FB 2.01 and by the time my purchase request gets approved for FB 3, FB 4 or 5 will be out. So I need to know if I can download the SDK and use it with 2.01. Thanks in advance.
-
Javascript error when viewing IE 8 (autosizing popup)
Experiencing script error in IE8 when trying to display webpage created in Robohelp 8. The problem does not exist on other computers in my office. This function was working and now it is not. Do I need to change my code some how? I have already tried