Calling IDoc structure from IDOC metadata into Java mapping.
Hi All,
I have a requirement where we need to post an IDOC on target side, We are having to go for a Java Mapping ,so I need to create a Target XML with IDOC Structure, So i need to understand if we could import the structure from IDOC Meta Data in to the Java Mapping insted of creating the IDOC Structure, I am using DOM parser for my Java Mapping,
Really appreciate your response in this regard.
Best Regards
Jayaram
Hi Jayram,
In your requirement, get the xsd format of the idoc from idoc structure and using String xsdFormat ="xsd retrieved"; in the java mapping, you can create the xml structure using DOM parse APIs and then you can put values into the structure and pass it.
Thanks,
RK
Similar Messages
-
In our current implementation we have a Blank page with Text Field [field format Rich Text] on generated PDF Document.
Once the PDF document is generated, user can copy paste content form any word/rtf document to into the Text Field.
Pasted content retains all text formatting [Bold, Italic, Underline, Indentation] except the Table format. Text Field is removing table metadata from the content and converting it into plant text.
Is there anyway to copy paste table structure as it is from word document into Text Field?Hi,
I don't think you can! While you can paste formatted text into the rich text field, the table metadata means nothing to the textfield.
Niall -
Http adapter metadata in java mapping
Hi, I'd like to read the httpheaders in my java mapping.
How can this be done?
I have tried the follwing in the execute method
trace = (AbstractTrace)param.get(
StreamTransformationConstants.MAPPING_TRACE);
DynamicConfiguration dc = (DynamicConfiguration)param.get(
StreamTransformationConstants.DYNAMIC_CONFIGURATION);
Object obj = (Object) param.get(
StreamTransformationConstants.CONTENT_TYPE);
trace.addInfo(obj.getClass().toString());
// namespace http://sap.com/xi/XI/System/File
// propertyname Directory, Filename
trace.addInfo("Start");
//DynamicConfigurationKey dck = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/HTTP","httpHeader");
//trace.addInfo("has key httpHeader");
Iterator it = dc.getKeys();
while (it.hasNext()) {
DynamicConfigurationKey el = (DynamicConfigurationKey) it.next();
trace.addInfo(el.getNamespace() + " " + el.getName());
if (el.getNamespace().equals("http://sap.com/xi/XI/System/HTTP") ){
if (el.getName().equals("httpHeader") ){
//if (dc.containsKey(dck)) {
trace.addInfo("After dyn conf");
No keys are found.
Hope someone can help
Best regards /OttoHello, thanks for your help.
I have the following in my trace in the log SXMB_MONI
Depending on the charset and the content-type I'd like to take different action.
I use a visualbasic script to send a file to XI.
This file may be xml, zip, text or whatever. In this test I used a utf-8 text file. XI can put it into the pipe binary clean, and then I use a java program to unpack it and wrap it in xml for further processing. The file is put in the http post data, which is by definition binary clean.
Of course I can not route on a binary file, so I have to configure routing etc appropriately.
Looks like the trace api only allows for writing to the trace, not reading.
Best regards /Otto
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
- <!-- Technical Routing
-->
- <SAP:Trace xmlns:SAP="http://sap.com/xi/XI/Message/30">
- <Trace level="1" type="B" name="CL_HTTP_PLAIN_INBOUND">
<Trace level="1" type="T">server-protocol HTTP/1.1</Trace>
<Trace level="1" type="T">content-type text/plain; charset=UTF-8</Trace>
<Trace level="1" type="T">charset charset=UTF-8</Trace>
<Trace level="1" type="T">user-agent Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)</Trace>
<Trace level="1" type="T">host skxidev:8000</Trace>
<Trace level="1" type="T">content-length 10</Trace>
<Trace level="1" type="T">remote-addr 10.206.97.89</Trace>
</Trace> -
How to send 2 variable value from bash script into java.class
#!/bin/bash
a=10
b=20
echo $a $b | java addition
donehi there,
currently i have a simple java coding ( a + b ). and i m trying to connect with bash script but this bash script coudln't Enter 2nd value (b=20) while i running for it. may i know how do i can Enter 2 value into it?
output from terminal
[seng@localhost java_class]$ bash addition.sh
=======================================================================
simulation 1
Num_a = 10
Num_b = 20
Enter your Num_a : 10
Enter your Num_b : Exception in thread "main" java.lang.NumberFormatException
at java.lang.Integer.parseInt(java.lang.String, int, boolean) (/usr/lib/libgcj.so.6.0.0)
at java.lang.Integer.parseInt(java.lang.String) (/usr/lib/libgcj.so.6.0.0)
at filter_god.GOD(java.util.List, java.util.List, java.lang.String, java.lang.String, int) (Unknown Source)
at filter_god.main(java.lang.String[]) (Unknown Source)
at gnu.java.lang.MainThread.call_main() (/usr/lib/libgcj.so.6.0.0)
at gnu.java.lang.MainThread.run() (/usr/lib/libgcj.so.6.0.0)
=======================================================================That code will send both numbers on a single line in standard input to the java process. So if the process reads standard input, it will get a single line that has this in it: "10 20".
I'm guessing you're sending that whole line to Integer.parseInt. But a valid number doesn't have a space in the middle.
You should split up the line using String.split. Or use a StringTokenizer. Or a regular expression. Or you can use a java.util.Scanner. Or a java.io.StreamTokenizer. Or maybe some other stuff that has slipped my mind at the moment. -
Problem while calling a Webservice from a Stand alone java program
Hello Everyone,
I am using a java program to call a webservice as follows. For this I have generated the client proxy definition for Stand alone proxy using NWDS.
Now when I call the method of the webservice I am getting the correct result but along with the result I am getting one error and one warning message in the output.
The java code to call the webservice is as follows.
public class ZMATRDESCProxyClient {
public static void main(String[] args) throws Exception {
Z_MATRDESC_WSDService ws = new Z_MATRDESC_WSDServiceImpl();
Z_MATRDESC_WSD port = (Z_MATRDESC_WSD)ws.getLogicalPort("Z_MATRDESC_WSDSoapBinding",Z_MATRDESC_WSD.class);
String res = port.zXiTestGetMatrDesc("ABCD134");
System.out.print(res);
The result I am getting is :
Warning ! Protocol Implementation [com.sap.engine.services.webservices.jaxrpc.wsdl2java.features.builtin.MessageIdProtocol] could not be loaded (NoClassDefFoundError) !
Error Message is :com/sap/guid/GUIDGeneratorFactory
<b>Material Not Found</b> -
> This is the output of webservice method and it is right.
Can any one please let me know why I am getting the warning and error message and how can I fix this.
Thanks
AbinashHi Abinash,
I have the same problem. Have you solve that problem?
I am using a java program to call a webservice too. And I have generated the client proxy definition for Stand alone proxy using NWDS. When I call the method of the webservice I am getting the correct result but along with the result I am getting one error and one warning message in the output.
The java code to call the webservice is as follows.
MIDadosPessoaisSyncService service = new MIDadosPessoaisSyncServiceImpl();
MIDadosPessoaisSync port = service.getLogicalPort("MIDadosPessoaisSyncPort");
port._setProperty("javax.xml.rpc.security.auth.username","xpto");
port._setProperty("javax.xml.rpc.security.auth.password","xpto");
String out = port.MIDadosPessoaisSync("xpto", "xpto");
System.out.println(out);
The result I am getting is :
Warning ! Protocol Implementation [com.sap.engine.services.webservices.jaxrpc.wsdl2java.features.builtin.MessageIdProtocol] could not be loaded (NoClassDefFoundError) !
Error Message is :com/sap/guid/GUIDGeneratorFactory
<b>The result of the WS is correct!!!</b>
The Java project does not have any warning. But the stand alone proxy project has following warnings associated with it.
This method has a constructor name MIDadosPessoaisSync.java
The import javax.xml.rpc.holders is never used MIDadosPessoaisSyncBindingStub.java
The import javax.xml.rpc.encoding is never used MIDadosPessoaisSyncBindingStub.java
The constructor BaseRuntimeException(ResourceAccessor, String, Throwable) is deprecated MIDadosPessoaisSyncBindingStub.java
It is very similar with your problem, could you help me?
Thanks
Gustavo Freitas -
Calling Portal application from current webdynpro java application
Hi Experts,
We are having Portal 7.4 SP6 framework.
Application-A -> Web-dynpro java program pushing data into R/3 using BAPI.
Application-B -> Std. WD-ABAP iView template.
Currently, I am working in web-dynpro java program, where I am pushing some data into R/3 using BAPI in Application-A. And this BAPI data is getting displayed in another z-Tcode and displayed in portal using web-dynpro Abap iView template, which is Application-B
Now I want to align this application, so that Application- A should call Application-B from within the WD-Java framework. And here Application-A should get closed and open application-B.
Is there any standard process using Web-dynpro Java to handle such scenario.
Regards,
HanifHi Siddharth,
Well, I think you can go for Portal Navigation concept.
Please check the required source code in WDR_TEST_PORTAL_NAV Web Dynpro component. That will illustrate both Page based Navigation and Object based Navigation.
Hope that should solve your problem.
Regards
<i><b>Raja Sekhar</b></i> -
Call Unix Command From Reports Using Java
Hi,
Could somebody please show me a sample coding to call Unix command from 10g report using java?
In metalink doc id 361857.1 does not show much.
Thanks,
neeminHi,
I have a problem with synchronization of the java commands.
In the Before Parammeter Form trigger, I have:
function BeforePForm return boolean is
rt ORA_JAVA.JOBJECT;
proc ORA_JAVA.JOBJECT;
v_txt varchar2(32000);
i integer := 0;
v_cd_modulo int;
v_arqlog text_io.file_type;
cursor c_evento is
select codigo,
nome
from
(select e.cd_evento || e.cd_edicao codigo
,nm_evento nome
from grh_ev_evento e
where e.CD_GRUPO in (select cd_grupo
from grh_ev_adm
where cd_usuario = (select cd_usuario
from usuario
where login_usuario = :AUTHID)))
order by substr(nome, 11);
begin
-- Create the context for logged user
if instr(upper(nvl(:AUTHID,'RWCLIENT')),'RWCLIENT') > 0 then
:AUTHID := :SSO_USUARIO;
end if ;
TCEENV.SET_TCEENV(:AUTHID);
if PK_SCA.SCA_GET_USER_RIGHTS(:sca_module_name, :AUTHID) IS NULL then
srw.message(100, 'Access denided!');
return (FALSE);
end if;
-- Create file in Report Server (UNIX)
v_txt := '<BR>' || htf.formSelectOpen('P_EV_EDICAO', 'Evento: ');
:p_file := '/u03/SCAWEB/repout/' || :sca_module_name || '_' ||
pk_sca.sca_encrypt(:AUTHID || to_char(systimestamp, 'ss.ff'));
v_arqlog := text_io.fopen (:p_file, 'A');
text_io.put_line (v_arqlog, v_txt);
for reg in c_evento loop
i := i + 1;
if i = 1 then
v_txt := '<OPTION SELECTED VALUE="' || reg.codigo || '">' || reg.nome;
else
v_txt := '<OPTION VALUE="' || reg.codigo || '">' || reg.nome;
end if;
text_io.put_line (v_arqlog, v_txt);
end loop;
v_txt := '</SELECT></CENTER></form></BODY> </HTML>';
text_io.put_line (v_arqlog, v_txt);
text_io.fclose (v_arqlog);
SRW.SET_AFTER_FORM_HTML(SRW.FILE_ESCAPE, :p_file);
rt := RUNTIME.GetRuntime();
proc := RUNTIME.exec(rt,'rm ' || :p_file);
return (TRUE);
end;
The problem is that there isn't a "synchronize" command, and the
RUNTIME.exec(rt,'rm ' || :p_file) don't works (it does nothing) because
the SRW.SET_AFTER_FORM_HTML has a large delay and the following
command is ignored.
How can I solve it?
thanks,
lmprestes -
How to read and map schema into Java objects
I'm new to JNDI and LDAP<br>
How can I read the schema from a directory into Java objects?<br>
I need access to the object classes and get all the required and optional attributes... then details about the attributes themselves like its type, cardinality (single or multivalued), etc.Hi naidu,
1. We can use this type of path
computername
folder
file.ext
2. We can use this in GUI_UPLOAD
and it will run on presentation server,
connect to
computer
and read the file contents.
regards,
amit m. -
Replicate org structure from HR
Hi,
I need to replicate org structure from HR to SRM.What are the settings i need to do for replication in R/3 as well as in SRM.Can any body please give me the procedure.Hello Rambabu,
You might find it useful.
How to get Org structure from backend replicated into SRM
Thanks
Ashutosh -
Accessing SAP:HopList element in message header from JAVA-mapping
Dear Experts,
Is it possible to access the SAP:HopList element from message header in JAVA-mapping?
I need this to get the list off all receivers of current message (I have a ReceiverDetermination with two receivers, without any conditions, so both receivers are receiving each message and in InterfaceDetermination to one of the receivers I have a JAVA-mapping, in which I need to know the name of another receiver. And the SAP:HopList is containing this information).
Or maybe where is some other solution?
Best Regards,
Artsiom AnichenkaThat's tricky, since the proper way of doing it would be through BPM.
Anyway, if you expose your XI interface as a WebService (Soap sender cc) you could access it through Mapping Lookup (lookup works for RFC, DB and Soap lookups). Check https://help.sap.com/javadocs/NW04S/current/pi/index.html
But be aware that Mapping Lookup API is not intended for inserts/updates (since it doesn't contain any transacational handling), just mere lookups (selects in tables), so I'm not sure it is the best approach for your case.
Regards,
Henrique. -
Hi,
I have currently created a java mapping which unzips files and transforms plain text/falt files to xml according to a specific structure... So far so good. This stuff works perfectly when testing interface mapping in the repository. However at runtime it does not work, and this is where you clever guys come into the picture:-)
It should be mentioned that the zip-file is dropped on a MQ-queue and picked up in XI and passed on to a BPM - the only thing the BPM does is to perform the java mapping and afterwards send one of the messages to R/3 and the other to CRM.
The concrete error given at runtime in the PE is:
Error handling for work item 000000718016
Work item 000000718016: Object CL_SWF_XI_MSG_BROKER method CALL_TRANSFORMATION cannot be executed
Parsing error before mapping: unexpected end-of-file (line 1, column 1)
Hope somone can help me on this matter,
Best regards,
Daniel
PS: In case it is of interest/use the java code used is this:
package dk.post.xi.unzipAndConvert;
import java.io.*;
import java.util.Map;
import java.util.HashMap;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import com.sap.aii.mapping.api.MappingTrace;
import com.sap.aii.mapping.api.StreamTransformation;
import com.sap.aii.mapping.api.StreamTransformationConstants;
import com.sap.aii.mapping.api.StreamTransformationException;
public class UnzipMain implements StreamTransformation {
private MappingTrace mappingTrace = null;
private Map param = null;
private StringBuffer currentXmlRecord = new StringBuffer();
private StringBuffer currentPlainRecord = new StringBuffer();
private int[][] dataRanges = null;
private char[] charsInCurrentRange = new char[650];
private String[] xmlTagNames = null;
/* (non-Javadoc)
@see com.sap.aii.mapping.api.StreamTransformation#setParameter(java.util.Map)
Method must be implemented when class is implementing streamTransformation
public void setParameter(Map param) {
this.param = param;
if (param == null) {
this.param = new HashMap();
(non-Javadoc)
@see com.sap.aii.mapping.api.StreamTransformation#execute(java.io.InputStream, java.io.OutputStream)
Main function -- called by XI to start execution of java mapping
public final void execute(InputStream in, OutputStream out)
throws StreamTransformationException
//if no input, then cancel program execution
if (in == null) {
throw new RuntimeException("Something wrong with input zip file - is null");
//input <> null. Begin upzip operation
try {
//test is only relevant outside of XI
if (param != null) {
mappingTrace = (MappingTrace) param.get(StreamTransformationConstants.MAPPING_TRACE );
ZipInputStream zip = null;
try {
zip = new ZipInputStream(in);
ZipEntry ze = null;
out.write("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?><ns0:Messages xmlns:ns0=\"http://sap.com/xi/XI/SplitAndMerge\">".getBytes());
while ((ze = zip.getNextEntry()) != null) {
writeDebugInfo("File: " + ze.getName() + " with compressed size: " + ze.getCompressedSize());
scrutinize(zip,(ZipEntry) ze, out);
out.write("</ns0:Messages>".getBytes());
finally {
if (zip != null)
zip.close();
out.flush();
out.close();
} catch (Exception e) {
throw new RuntimeException(e + "\nSomething went wrong...");
//Unzip flat files and convert to xml
private void scrutinize(ZipInputStream inStream,ZipEntry zipEntry, OutputStream outstream) throws Exception {
long start = System.currentTimeMillis();
InputStreamReader inStreamReader = null;
BufferedReader buffReader = null;
byte[] xmlBytes = null;
try {
inStreamReader = new InputStreamReader(inStream);
buffReader = new BufferedReader(inStreamReader);
boolean masterData = zipEntry.getName().equals("PD-01-STAMDATA.DAT");
boolean creditData = zipEntry.getName().equals("PD-02-KREDITVURDERING.DAT");
String currentLine = null;
if (masterData) {
writeDebugInfo("- Begin reading and converting every line of MasterData..."); //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
outstream.write("<ns0:Message1><ns1:masterData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
while ((currentLine = buffReader.readLine()) != null) {
//convert one line of credit data plain into an xml record structure
makeXmlRecord(currentLine,true);
//Write record XML to XI's outputstream (appends)
xmlBytes = currentXmlRecord.toString().getBytes();
outstream.write(xmlBytes);
outstream.write("</ns1:masterData_MT></ns0:Message1>".getBytes());
writeDebugInfo("- Finished reading and converting every line of MasterData..."); //out-comment this outside of XI, or compilation will fail (functionality is only available in XI)
if (creditData) {
writeDebugInfo("- Begin reading and converting every line of CreditData...");
outstream.write("<ns0:Message2><ns1:creditData_MT xmlns:ns1=\"http://pdk/xi/kob/importDataToSap\">".getBytes());
while ((currentLine = buffReader.readLine()) != null) {
//convert one line of credit data plain into an xml record structure
makeXmlRecord(currentLine,false);
//Write record XML to XI's outputstream (appends)
xmlBytes = currentXmlRecord.toString().getBytes();
outstream.write(xmlBytes);
outstream.write("</ns1:creditData_MT></ns0:Message2>".getBytes());
writeDebugInfo("- Finished reading and converting every line of CreditData...");
} finally {
long timeUsed = System.currentTimeMillis() - start;
writeDebugInfo(zipEntry.getName() + " - Write took: " + timeUsed + " ms");
writeDebugInfo("Final statement entered...\n");
//check for invalid xml chars (plus a few other strange chars) in a plain text record and if any are found update the ranges of so they correspond to the new length of a record
private int[][] checkRange(String currentPlainLine, boolean isMasterData) {
int counter = 0;
int beginRange = 0;
int endRange = 0;
//populate array with proper data ranges/intervals according to how data is to be split
dataRanges = isMasterData ? new int[][] {{0,2},{2,12},{12,44},{44,47},{47,50},{50,295},{295,298},{298,356},{356,426},{426,496},{496,499},{499,506},{506,510},{510,518},{518,540},{540,546},{546,552},{552,558},{558,564},{564,570},{570,576},{576,582},{582,588},{588,594},{594,604}} : new int[][] {{0,2},{2,12},{12,20},{20,23},{23,26},{26,29},{29,44}};
//ensure stringbuffer is empty
currentPlainRecord.delete(0,currentPlainRecord.length());
//insert the current plain text line into stringbuffer
currentPlainRecord.append(currentPlainLine);
//loop through outer array (array of ranges)
for (int i = 0; i <= (dataRanges.length-1); i++) {
beginRange = dataRanges<i>[0];
counter = beginRange;
endRange = dataRanges<i>[1];
//loop through stringbuffer, based on the value-pairs of ranges/intervals in array of arrays
while (counter < endRange) {
switch (currentPlainRecord.charAt(counter)) {
case '&':
currentPlainRecord.insert(counter+1,"amp;"); //insert 'amp;' after '&', so that syntax conforms to xml syntax requirements (&)
counter += 5; //increment counter so that it continues after insertet characters
updateRange(counter,4); //update the array of ranges so that is corresponds to the new range
break;
case '\'':
currentPlainRecord.replace(counter,counter+1,"&"); //replace '\'' with '&'
currentPlainRecord.insert(counter+1,"apos;"); //insert 'apos;' after '\'', so that syntax conforms to xml syntax requirements (')
counter += 6; //increment counter so that it continues after insertet characters
updateRange(counter,5); //update the array of ranges so that is corresponds to the new range
break;
case '"':
currentPlainRecord.replace(counter,counter+1,"&"); //replace '"' with '&'
currentPlainRecord.insert(counter+1,"quot;"); //insert 'quot;' after '"', so that syntax conforms to xml syntax requirements (")
counter += 6; //increment counter so that it continues after insertet characters
updateRange(counter,5); //update the array of ranges so that is corresponds to the new range
break;
case '<':
currentPlainRecord.replace(counter,counter+1,"&"); //replace '<' with '&'
currentPlainRecord.insert(counter+1,"lt;"); //insert 'lt;' after '&', so that syntax conforms to xml syntax requirements (<)
counter += 4; //increment counter so that it continues after insertet characters
updateRange(counter,3); //update the array of ranges so that is corresponds to the new range
break;
case '>':
currentPlainRecord.replace(counter,counter+1,"&"); //replace '>' with '&'
currentPlainRecord.insert(counter+1,"gt;"); //insert 'gt;' after '&', so that syntax conforms to xml syntax requirements (>)
counter += 4; //increment counter so that it continues after insertet characters
updateRange(counter,3); //update the array of ranges so that is corresponds to the new range
break;
case 0x7F:
currentPlainRecord.replace(counter,counter+1," "); //replace 0x7F with ' '
writeDebugInfo("-- Corrected the character 0x7F ('') to ' '");
counter++;
break;
case '':
currentPlainRecord.replace(counter,counter+1," "); //replace 0x91 ('') with ' '
writeDebugInfo("-- Corrected the character '' to ' '");
counter++;
break;
case '':
currentPlainRecord.replace(counter,counter+1," "); //replace 0x9B ('') with ' '
writeDebugInfo("-- Corrected the character 0x9B to ' '"); counter++;
break;
case '':
currentPlainRecord.replace(counter,counter+1," "); //replace '' with ' '
writeDebugInfo("-- Corrected the character '' to ' '");
counter++;
break;
default :
counter++;
break;
return dataRanges;
//update array of ranges so that is corresponds to the new range
private void updateRange(int currentRange, int updateRangeBy) {
for (int k = currentRange; k < dataRanges.length; k++) {
if (k != currentRange) { //never update begin interval for the current range - only for the remaining intervals
dataRanges[k][0] += updateRangeBy;
dataRanges[k][1] += updateRangeBy; //always update end intervals
//convert one flat record line to a xml record structure
private void makeXmlRecord(String currentPlainLine,boolean isMasterData) {
dataRanges = checkRange(currentPlainLine,isMasterData);
//clear StringBuffer
currentXmlRecord.delete(0,currentXmlRecord.length());
//get the correct set of xml tags to be used when performing mapping between plain text and xml
if (isMasterData) {
xmlTagNames = new String[] {"dum1","kob_no","dum2","corp_status","legal_form","dum3","pr_protec_code","dum4","uri","email","emp_no_grp_code","exact_no_emp","dum5","founding_date","dum6","main_industry_code","industry_code1","industry_code2","industry_code3","industry_code4","industry_code5","industry_code6","industry_code7","industry_code8","dum7"};
} else {
xmlTagNames = new String[] {"dum1","kob_no","rating_date","rating_value","risc_grp_code","currency","max_credit"};
//copy all chars in stringBuffer to the specified char[]
currentPlainRecord.getChars(0,currentPlainRecord.length(),charsInCurrentRange,0);
//populate XML record structure
currentXmlRecord.append("<record>");
for (int i = 0; i < xmlTagNames.length; i++) {
currentXmlRecord.append("<" + xmlTagNames<i> + ">");
currentXmlRecord.append(charsInCurrentRange,dataRanges<i>[0],(dataRanges<i>[1])-(dataRanges<i>[0]));
currentXmlRecord.append("</" + xmlTagNames<i> + ">");
currentXmlRecord.append("</record>");
//write debug information to correct "place"
private void writeDebugInfo(String debugInfo) {
if (mappingTrace == null) {
System.out.println("Debug: " + debugInfo);
} else {
mappingTrace.addInfo("Debug: " + debugInfo);Hi Alex,
Thanks for your reply. First of all I was wondering if I missed something somewhere in my generel understanding of XI and BPM's!? - I kind of sense some irony/sarkasm in beginning of your reply:-) As far as I know BPM should have no trouble receing non-xml (in my case zip-files)!?
Anyways here goes:
1. Yes, this is also my impression that is should be possible somehow (we do currently run sp14). However, I havent yet figured out how to do it in this case. When trying to create interface mapping between the three involved software components, I get a 'MESS_MULTI_MAP_IF_WRONG_SWCV' three times. I've searched around without being able to find any information on the error. I does seem, though, like the problem is that all objects aren't in the same software component!! But this approach is of course the prefered one...
2. Well - you got me there. Kind of expected someone to point that out:-) This is of course something to be looked into also in order to "improve"/"enhance" the program - though it, as already pointed out, works perfectly as is.
3. This part I have also thought about - though quickly moved away from the idea, but that is only due to lacking insight/knowhow on the subject. Interesting weblog you have written, something so I will investigate further when time allows for it:-)
Best regards,
Daniel -
Hi,
I have two queries.
1.I need to import idoc structure from excel file not from sap, is it possible ?
2 what are the detalied steps to implement following SAP note for getting processed file name at runtime.
Thanks & Regards
Tuhin
Symptom
You want to access the name of a file sent through a File Adapter Sender channel from a custom developed XI module.
Other terms
XI 3.0, XI30, File Adapter, Module Processor, Module Development, Modules
Reason and Prerequisites
The functionality described in this note requires SP 9 or higher of the component XI ADAPTER FRAMEWORK CORE 3.0.
Solution
The File Adapter passes the name of the processed file to the module processor. This information is available in a Hashtable object accessible as as supplemental module data under the name "module.parameters" within the module's 'process' method.
For further information, please take a look at the example code below:
public ModuleData process(ModuleContext mc, ModuleData md) throws
ModuleException
Hashtable mp = (Hashtable)
md.getSupplementalData("module.parameters");
String fileName = null;
if (mp != null)
fileName = (String) mp.get("FileName");Hi Tuhin,
<i>
1. .I need to import idoc structure from excel file not from sap, is it possible ?</i>
Yes and No; If the structure in the Excel sheet is defined in XSD format (XML schema) then it should be possible to import it assuming you are using XI 3.0. In 2.0 this is not possible.
Not sure if in XI 3.0 you are allowed to import Excel files straight forward into XI.
<i>2 what are the detalied steps to implement following SAP note for getting processed file name at runtime.</i>
I'm not quite sure but this looks to me like you have to implement this within a Java custom function/mapping...
The data (in this case the filename) is encapsulated in a Hashtable object available during runtime.
Cheers,
Rob. -
Error reading IDoc Metadata from CRM 5.0 (Basis 7.0) through XI 3.0
We are not able to generate the IDoc metadata from XI 3.0 through IDX2 for port/RFC destination pointing to SAP CRM 5.0 which runs on the Basis 7.0 Web application server.
Has anyone run into this issue? We get the dialog box with information "I::000" Message no. 000. The metadata is not generated at all.
We have no problem generating IDoc metadata for other SAP systems including 6.40 and 4.6C basis layers. Is there something different with 7.0 Basis?
Thanks,
Jay Malla
SAP XI Consultant
Licensed To CodeHi Renjith,
Thanks for the suggestion. We've already tried that out - the RFC call IDX_STRUCTURE_GET works from SE37 using the RFC destination that we have defined for the CRM system which is referenced in the port. We can debug from the XI system into the CRM system and the data is returned correctly. We can also generate the IDoc schema from the Integration Builder Repository.
However, we cannot generate the metadata from IDX2. If we point the port in IDX1 to another RFC destination for a non Basis 7.0 system, the metadata generation works. So it seems that something is strange regarding generating the IDoc metadata for Basis 7.0 systems.
Regards,
Jay -
How to get IDoc Metadata and Structure without connection to sender
Hello folks!
Is there any chance to receive and process an IDoc with PI without having loaded the IDoc
Metadata with a direct connection from the sending SAP System? Can't this be done by hand?
Or is it not possible to bypass the IDoc Adapter and send the Idoc via an RFC?
Thanks in advance
GunnarHi!
The idea behind the question is the following:
Usually any NONE-SAP RFC-Server of an Integration Tool can receive IDocs just by
beein registered at the sending system. The way you get the metadata into the
receiving Integration tool is an complete different story an can be done by
manually or by doneload the metadata from the DDIC just one time by hand.
But with PI you need to connect to the sending SAP System directly
with idx1 and by importing the structure out of the Integration Builder, right? -
Refresh Idoc Metadata in PI 7.31 Java Only
Hello experts,
We are facing issue to refresh the Idoc metadata every time when we change Idoc structure in ECC for Idoc outbound scenario.
We have imported the latest Idoc structure in ESR and assigned that to MM,OM and IFolw. Still in message monitoring we can see the old Idoc structure.
Is there anywhere else to import Idoc metadata like it used to be in Dual Stack idx2 ??
Regards,
SumanHi Suman,
If you are new with Idoc in PI you try with the sap.help documentation: http://help.sap.com/saphelp_nw73ehp1/helpdata/en/50/980951964146f1a7f189b411796bae/content.htm
Regards
Maybe you are looking for
-
Unable to install soa suite 10.1.3.1.0 in windows XP
hello when i install SOA Suite10.1.3.1.0 in my windows XP, Configuration Assistant "Oracle Web Services Manager Configuration Assistant" failed, the following is the log: install.configApps.setUpLogging: [copy] Copying 1 file to D:\Oracle\10.1.3.1\Or
-
Gmail sign in problems when using Firefox in Windows 8
I haven't quite figured out under what circumstances this does or does not happen, but many times when I boot up my new Windows 8 computer, launch Firefox (in 'desktop' mode, not 'metro,' if that makes a difference(, and go to http://gmail.com, I can
-
Getting pls-00428 error.
Hi all, I'm trying to fix some invalid objects in our 11g database and i'm getting a pls-00428 error. Not sure where the issue is originating at (keep in mind, my IT team and I are not thoroughly experienced with 11g, so I apologize if this sounds a
-
Reload some package from 0fiar_o03 to 0fiar_c03
Hi, The ODS was loading fine from R/3 but the load from 0fiar_o03 to 0fiar_c03 have two yellow data packages marked . How can I reload the two yellow data packages marked to 0fiar_c03?. Manually put the status to green, is that bad? Best Regards Juan
-
Too many credit reports?
Over the last week or so, I've been repeatedly pulling my EQ report (pay for unlimited) to see when my CC payments / CLI post so I could app for a new card. I actually pulled my EX and TU by initiating a dispute to fix my last name & birthdate and wa