Graphical Mapping Problem : Create Segments by conditions

Hi,
i have a problem while mapping an incoming invoice to IDoc Invoic02. I had to create some Segments (E1EDP02) on basis of identifiers in the incoming message. I hope the following example i created will help to understand my exact problem:
EXAMPLE MESSAGE:
<invoice>
<document>
<position>
   <line>
     <posnum> 1 </posnum>
     <IMD>
     <ident> Name </ident>
     <val>   Maxx </val>
     </IMD>
     <IMD>
     <ident> Age </ident>
     <val>   19 </val>
     </IMD>
     <IMD>
     <ident> Gender </ident>
     <val>   Male </val>
     </IMD>
   </line>
</position>
<position>
   <line>
     <posnum> 2 </posnum>
     <IMD>
     <ident> Name </ident>
     <val>   Tina </val>
     </IMD>
     <IMD>
     <ident> Age </ident>
     <val>   28 </val>
     </IMD>
     <IMD>
     <ident> Gender </ident>
     <val>   Female </val>
     </IMD>
   </line>
</position>
</document>
</invoice>
THE RESULT I WANT:
<invoic02>
<E1EDP01>
<SEGMENT> </SEGMENT>
<POSEX> 1 </POSEX>
  <E1EDP02>
       <SEGMENT> </SEGMENT>
     <QUALF> 021 </QUALF>
     <BELNR> 19 </BELNR> // THIS should be the Age
  </E1EDP02>
  <E1EDP19>
  </E1EDP19>
</E1EDP01>
<E1EDP01>
<SEGMENT> </SEGMENT>
  <POSEX> 2 </POSEX>
  <E1EDP02>
     <SEGMENT> </SEGMENT>
     <QUALF> 021 </QUALF>
     <BELNR> 28 </BELNR> // THIS should be the Age
  </E1EDP02>
  <E1EDP19>
  </E1EDP19>
</E1EDP01>
</invoic02>
I tried to different ways to get the above result but i failed
My first try:
ident      -------|--- equalsS ------ createIf ---- E1EDP02
Constant[000] --------- SEGMENT
Constant[Age]--|
ident      -------|--- equalsS ------ ifWithoutElse ---- QUALF
Constant[Age]--|             |          
                       |
                    Constant[021]
ident      -------|--- equalsS ------ ifWithoutElse ---- BELNR
Constant[Age]--|             |          
                       |
                       val
Result:
The E1EDP02 Element will not created reliable. Sometimes it is there sometimes not dunno why ? Any Idea ?
My second try:
IMD -------------- E1EDP02
Constant[000] --------- SEGMENT
ident      -------|--- equalsS ------ ifWithoutElse ---- QUALF
Constant[Age]--|             |          
                       |
                    Constant[021]
ident      -------|--- equalsS ------ ifWithoutElse ---- BELNR
Constant[Age]--|             |          
                       |
                       val
Result:
Now every E1EDP01 Element has two E1EDP02 Elements. One correct one and an empty one with only a segment element. Is there a way to delete this empty elements ?
Any ideas to create a working mapping ?
Thanks

@Liang Ji 
When i do this i have only the first E1EDP01 Element
@Tarang Shah
Which function i had to use for this ?
Thank you

Similar Messages

  • Avoid explicit closing tag in XML using graphical mapping

    Hi,
    I created a data type with an element called TAG1 which has an attribute called attr.
    I mapped an empty constant to the element and the value XXX to the attribute.  I`m using graphical mapping and the XML I get is the following:
    <TAG1 attr = u201CXXXu201D></TAG1>
    But for reasons of volume I need to generate the XML without the explicit closing tag, such as:
    <TAG1 value = u201CXXXu201D/>
    Is there any possibility to achieve this with graphical mapping?
    Thanks & Best Regards,
    Viviana

    > But for reasons of volume I need to generate the XML without the explicit closing tag, such as:
    >
    >  <TAG1 value = u201CXXXu201D/>
    >
    > Is there any possibility to achieve this with graphical mapping?
    This is not posible. The graphical mapping always creates start and end tag, even for empty elements.
    You need a seperate mapping step with XSLT or Java mapping.
    Regards
    Stefan

  • Graphical mapping issue

    Hi gurus,
    we need help for following graphical mapping problem.
    Our input message structure and payload is like;
    <MT_INPUT>
         <Header>
              <VendorName>GREEN IT</VendorName>
         </Header>
         <Records>
              <MType>T</MType>
              <Unit>KG</Unit>
              <MS>40</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>2</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>5</MS>
         </Records>
         <Records>
              <MType>T</MType>
              <Unit>KG</Unit>
              <MS>30</MS>
         </Records>
         <Records>
              <MType>S</MType>
              <Unit>STK</Unit>
              <MS>3</MS>
         </Records>
    </MT_INPUT>
    We need only the values with Mtype = T
    needed output message is like;
    <MT_OUTPUT>
         <Header>
              <VendorName>GREEN IT</VendorName>
         </Header>
         <Records>
              <Type>Total</Type>
              <Unit>KG</Unit>
              <VALUE>40</VALUE>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
         <Records>
              <Type>Total</Type>
              <Unit>KG</Unit>
              <VALUE>30</VALUE>
         </Records>
         <Records>
              <Type>Total</Type>
         </Records>
    </MT_OUTPUT>
    Kind Regards,
    PM

    MType---
    ------      equals-----if withoutelse(Unit----then) ------UNIT
    Constant("T")---
    MType---
    ------      equals-----if withoutelse(ms----then) ------VALUE
    Constant("T")---

  • Mapping problem of Child Node elements as per Parent Node conditions

    Hi,
    I have an IDOC to SOAP scenario,I have to map the following fields of IDOC,
    E1EDPT1 (0..999..)
    _TDID (0..1)
    _ E1EDPT2 (0..999..)
    _  TDLINE (0..1)
    Whenever I have the element TDID = Z011, I have to map the element TDLINE to the target Message Type AVL_QTY , which is as below (any one)
    ITEM_TEXTS (0..unbounded)
    _ ITEM_TEXT (0..unbounded)
                   |_  AVL_QTY (0..1)
    I have done a graphical mapping where the Node ITEM_TEXTS is created only if the above condition is met, ITEM_TEXT and AVL_QTY are mapped directly to E1EDPT2 and TDLINE.
    This works for only one item, it fails for multiple.
    Please suggest a solution...
    Thanks and Regards,
    Rohit.

    Hello,
    Thanks for the above suggestion!
    But still the problem exits.
    I have currently mapped the field in such a way that it gives proper solution but every item i.e. E1EDP01 segment must have an E1EDPT1 segment with element TDID = Z011.
    Mapping in Text View looks like below:
    /ns0:MT_CONTRACT_DOWNLOAD_MOnline/CONTRACT_ITEM/AVL_QT=addCorresponding(removeContexts(index(ifWithoutElse(stringEquals(/ORDERS05/IDOC/E1EDP01/E1EDPT1/TDID, const(value=Z011)), /ORDERS05/IDOC/E1EDP01/E1EDPT1/E1EDPT2/TDLINE, keepss=false), start=1, inc=1, type=0, result)), removeContexts(ifWithoutElse(stringEquals(/ORDERS05/IDOC/E1EDP01/E1EDPT1/TDID, const(value=Z011)), /ORDERS05/IDOC/E1EDP01/E1EDPT1/E1EDPT2/TDLINE, keepss=false)), result)
    UDF for addCorresponding method:
    int flg=0;
    for (int i=0; i<indexes.length; i++)
        if(! indexes<i>.equals("1"))
                   result.addValue(tdTexts<i>);
         else
              if(flg == 0)
                        result.addValue(tdTexts<i>);
                        flg = 1;
              else
                             result.addContextChange();
                             result.addValue(tdTexts<i>);
    Suppose if there are 3 items, the above condition is met in 1st and 3rd item, and if the 2nd item has TDID = Z008, then in the output i get three item values with the TDLINE values in the first two items itself, it doesnt recognise that 2nd item hasnt matched the condition.
    Thanks and Regards,
    Rohit.

  • Graphical mapping issue with useOneAsMany if segment does not exist

    Hi all
    I have an issue with graphical mapping in an IDoc to file scenario. I need to have header level fields mapped to line item fields. Whether or not and how many source header segments of the same type exist depends on a qualifier (QUALF). This is generally working if I use the following graphical mapping:
    if QUALF = 001 then <source>  ->  removeContext  ->  useOneAsMany  ->  splitByValue  ->  <target>
    ... with setting QUALF, <source>, and the second input for the useOneAsMany to the highest possible context node.
    Nevertheless, if the segment with the qualifier 001 does not exist in the source then the mapping throws the error "Too few values in first queue in fuction useOneAsMany". Whatever I've tried, the mapping wants to execute the useOneAsMany statement anyway and I haven't found a way to omit this. Whether the target would be created with an empty value or not created at all would be secondary. Would eventually somebody have a solution to this problem?
    Thanks in advance,
    Daniel

    Daniel,
    try using mapWithDefault function before useAsmany
    if QUALF = 001 then <source> -> removeContext -> <b>MapwithDefault</b>->useOneAsMany -> splitByValue -> <target>
    I think it takes care even if the value occur in the contaxt or.
    Babu

  • Create Attachment within Graphical Mapping using UDF

    Hi!
    We want to create an attachment witihn a graphical mapping using an UDF function.
    I use that function:
    public String addAttachment(String filename, String mimeType, String content, Container container) throws StreamTransformationException{
         BASE64Decoder decoder=new BASE64Decoder();
         try {
              GlobalContainer globalContainer = container.getGlobalContainer();
              OutputAttachments outputAttachments = globalContainer.getOutputAttachments();
              Attachment attachments = outputAttachments.create(filename, mimeType,decoder.decodeBuffer(content));
              outputAttachments.setAttachment(attachments);
              return "Adde1: "+filename;
         } catch (Exception e) {
              return e.toString();
    (SDN helped me much in creating that
    This function has no compiling errors, anything workes fine:
    It takes 3 input-parameters, see also: http://help.sap.com/javadocs/pi/SP3/xpi/com/sap/aii/mapping/api/OutputAttachments.html
    filename (ok, more or less contentID)
    mimeType (more or less contentType)
    content: Base64-encoded String which should be set as content
    In my sample I use the following constants for that function:
    filename = "fn1.txt"
    mimeType="application/xml"
    content = "UG9seWZvbiB6d2l0c2NoZXJuZCBhw59lbiBNw6R4Y2hlbnMgVsO2Z2VsIFLDvGJlbiwgSm9naHVydCB1bmQgUXVhcms=" --> cames directly from http://de.wikipedia.org/wiki/Base64
    When using the message, I got this error within SXMB_MONI:
    <SAP:AdditionalText>com.sap.engine.interfaces.messaging.api.exception.MessagingException: Could not queue receive for
    message 0022642d-b106-02df-8e8c-f41c243bd112(INBOUND). Reason: java.lang.NullPointerException: while trying to
    invoke the method com.sap.aii.af.sdk.xi.lang.Binary.getBytes() of an object returned from
    com.sap.aii.af.sdk.xi.mo.xmb.XMBPayload.getContent()</SAP:AdditionalText>
    This looks pretty much the same as Add Attachment from ABAP Mapping but this tread is also not answered.
    Adding attachment from PI level looks also in that direction, again, no answer.
    So, I was wondering if someone has solved such problem?

    Hi Divyesh!
    We did it that way:
    1. Choosing the XML-Mailstructure as Destination as described in Configuring the Receiver Mail Adapter - Advanced Adapter Engine - SAP Library -  Example (XI payload with mail package)
    2. now we have created a UDF for creating the "content"
    public void getContent(String[] text, String[] attFname, String[] attType, String[] attContent, ResultList result, Container container) throws StreamTransformationException{
    // vergleich ob alle att-Arrays selbe anzahl haben
    if (attFname.length!=attType.length || attFname.length!=attContent.length) {
        result.addValue(Integer.parseInt("Fehler: alle Attachment-Eingänge müssen die selbe Anzahl an Elementen haben!"));
        String CRLF = "\r\n";
        String output="This is a multi-part message in MIME format."+CRLF+CRLF+
        "--"+getBoundary(container)+CRLF+
        "Content-Type: text/plain; charset=UTF-8"+CRLF+
        "Content-Disposition: inline" + CRLF + CRLF +
        text[0]+CRLF;
    for (int i=0;i<attFname.length;i++) {
        output+="--"+getBoundary(container)+CRLF+
        "Content-Type: "+attType[i]+"; name="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Disposition: attachment; filename="+((char)34)+attFname[i]+((char)34)+CRLF+
        "Content-Transfer-Encoding: Base64"+CRLF+CRLF+attContent[i]+CRLF;
    output+="--"+getBoundary(container)+CRLF;
    result.addValue(output);
    This UDF is configured as "QUEUE"
    We have configured this input-structure
    The Content itself is allready base64.
    So we can call this mapping and it creates a Multipart-Mail for us.

  • Problem in  Graphical Mapping

    Hi all,
         i have a Graphical mapping logic here
    Source Structure:
    GS
    GP[1]
      F1-     QI
      SDQ
        F2-     2
    GP[2]
      F1-     QD
      SDQ
        F2-     3
    GP[3]
      F1-     PC
      CTP
        F2- 5.3
    GP[4]
      F1-     AI
      SDQ
        F2-     4
    GS
    Target structure:
          MT
         Material[1]
           Qty
         Material[2]
           Qty
         Material[3]
           Qty
         Material[4]
           Price
          MT
    Here the Material node  occurences is 0 to Unb.
    For values QI,QD and AI should be a seperate mapping ie) three nodes will be created.
    For values 'PC' seperate mapping ie. last node will be created only if F1 receives 'PC' beacause i need to implement the separate mapping logic for a value 'PC'.
    If i send the data sequence QI,QD,AI and PC  my mapping is working correctly.
          MT
         Material[1]
           Qty 2
         Material[2]
           Qty 3
         Material[3]
           Qty 4
         Material[4]
           Price 5.3
           MT
    But if i send the the data sequence QI,QD,PC and AI my mapping is not working properly for 'AI'. But for QI,QD and PC mapped correctly.
    Output:
          MT
         Material[1]
           Qty 2
         Material[2]
           Qty 3
         Material[4]
              Price 5.3
          MT
    Note: For Value 'AI' , target node Material[3] is completly ignored/not coming.
    We used createif function to create the target node in the target structure based on the value 'PC'.
    we think that once if mapping executed the value for 'PC', mapping for 'AI' is not executed i.e. it doesn't go back and execute the mapping for 'AI'.
    Can you please help me to solve this problem,
    Thanks and Regards
    Kamal

    Hi Kamal,
    I understand that your src is
    GS
    GP
    F1
    SDQ/CTP
    F2
    and depending on the value of F1 the target nodes has to be created.
    here, by using the createif, u can generate the nodes properly, but the problem arises when u have to get the corressponding values in the feild QTY of your target.
    in such a situation, writing a UDF would be better a better option.
    Thanks
    Hari.

  • Mapping problem with coupled PO1 segments

    The following idoc message is being processed:
    - <E1EDP01 SEGMENT="1">
      <POSEX>00011</POSEX>
      <ACTION>001</ACTION>
      <PSTYP>0</PSTYP>
      <MENGE>1.000</MENGE>
      <MENEE>PCE</MENEE>
      <BMNG2>1.000</BMNG2>
      <PMENE>PCE</PMENE>
      <PEINH>1</PEINH>
      <GEWEI>KGM</GEWEI>
      <MATKL>79</MATKL>
      <UEPOS>00010</UEPOS>
      <BPUMN>1</BPUMN>
      <BPUMZ>1</BPUMZ>
      <BRGEW>0.7</BRGEW>
      <WERKS>DC01</WERKS>
      <LGORT>CD01</LGORT>
    - <E1EDP20 SEGMENT="1">
      <WMENG>1.000</WMENG>
      <AMENG>0.000</AMENG>
      <EDATU>20050302</EDATU>
      </E1EDP20>
    - <E1EDP19 SEGMENT="1">
      <QUALF>002</QUALF>
      <IDTNR>0017400</IDTNR>
      </E1EDP19>
    - <E1EDP19 SEGMENT="1">
      <QUALF>001</QUALF>
      <IDTNR>000000000000001683</IDTNR>
      <KTEXT>PHILIPS HQ100 T</KTEXT>
      </E1EDP19>
    - <E1EDP19 SEGMENT="1">
      <QUALF>003</QUALF>
      <IDTNR>8710103083351</IDTNR>
      </E1EDP19>
      </E1EDP01>
    - <E1EDP01 SEGMENT="1">
      <POSEX>1</POSEX>
      <UEPOS>00011</UEPOS>
      <MATNR>000000000000001683</MATNR>
    - <E1ADDI1 SEGMENT="1">
      <ADDIMATNR>SERVICE_PREPACK</ADDIMATNR>
      <ADDINUMBER>1.000</ADDINUMBER>
      <ADDIVKME>PCE</ADDIVKME>
      <ADDIFM>0005</ADDIFM>
      <ADDIFM_TXT>SLS: transito-picken</ADDIFM_TXT>
      </E1ADDI1>
    - <E1EDPA1 SEGMENT="1">
      <PARVW>SLS</PARVW>
      <PARTN>0000000004</PARTN>
      <NAME1>Osdorp 04</NAME1>
      <NAME4>0000000004</NAME4>
      <STRAS>Osdorpplein 138</STRAS>
      <ORT01>Amsterdam</ORT01>
      <PSTLZ>1068 EN</PSTLZ>
      <LAND1>NL</LAND1>
      <SPRAS>N</SPRAS>
      <SPRAS_ISO>NL</SPRAS_ISO>
      </E1EDPA1>
    - <E1EDP19 SEGMENT="1">
      <QUALF>017</QUALF>
      <IDTNR>0001</IDTNR>
      </E1EDP19>
      </E1EDP01>
    - <E1EDP01 SEGMENT="1">
      <POSEX>00012</POSEX>
      <ACTION>001</ACTION>
      <PSTYP>0</PSTYP>
      <MENGE>1.000</MENGE>
      <MENEE>PCE</MENEE>
      <BMNG2>1.000</BMNG2>
      <PMENE>PCE</PMENE>
      <PEINH>1</PEINH>
      <GEWEI>KGM</GEWEI>
      <MATKL>79</MATKL>
      <UEPOS>00010</UEPOS>
      <BPUMN>1</BPUMN>
      <BPUMZ>1</BPUMZ>
      <BRGEW>0.7</BRGEW>
      <WERKS>DC01</WERKS>
      <LGORT>CD01</LGORT>
    - <E1EDP20 SEGMENT="1">
      <WMENG>1.000</WMENG>
      <AMENG>0.000</AMENG>
      <EDATU>20050302</EDATU>
      </E1EDP20>
    - <E1EDP19 SEGMENT="1">
      <QUALF>002</QUALF>
      <IDTNR>0017400</IDTNR>
      </E1EDP19>
    - <E1EDP19 SEGMENT="1">
      <QUALF>001</QUALF>
      <IDTNR>000000000000001683</IDTNR>
      <KTEXT>PHILIPS HQ100 T</KTEXT>
      </E1EDP19>
    - <E1EDP19 SEGMENT="1">
      <QUALF>003</QUALF>
      <IDTNR>8710103083351</IDTNR>
      </E1EDP19>
      </E1EDP01>
    - <E1EDP01 SEGMENT="1">
      <POSEX>1</POSEX>
      <UEPOS>00012</UEPOS>
      <MATNR>000000000000001683</MATNR>
    - <E1ADDI1 SEGMENT="1">
      <ADDIMATNR>SERVICE_PREPACK</ADDIMATNR>
      <ADDINUMBER>1.000</ADDINUMBER>
      <ADDIVKME>PCE</ADDIVKME>
      <ADDIFM>0005</ADDIFM>
      <ADDIFM_TXT>SLS: transito-picken</ADDIFM_TXT>
      </E1ADDI1>
    - <E1EDPA1 SEGMENT="1">
      <PARVW>SLS</PARVW>
      <PARTN>0000000022</PARTN>
      <NAME1>Amersfoort 22</NAME1>
      <NAME4>0000000022</NAME4>
      <STRAS>Amsterdamseweg 8-1-</STRAS>
      <ORT01>Amersfoort</ORT01>
      <PSTLZ>3812 RS</PSTLZ>
      <LAND1>NL</LAND1>
      <SPRAS>N</SPRAS>
      <SPRAS_ISO>NL</SPRAS_ISO>
      </E1EDPA1>
    - <E1EDP19 SEGMENT="1">
      <QUALF>017</QUALF>
      <IDTNR>0001</IDTNR>
      </E1EDP19>
      </E1EDP01>
    Every position has data in two PO1 segments. The first one is referenced in the second one by the UEPOS field. In our mapping we want to create a record in a flat file when such a couple is existing in the idoc.
    In my mapping I create a record in the flat file when the first segment is being found. At the second PO1 segment the record is not being written (exactly as wanted). Nevertheless I need to map a field out of the second PO1 segment to the flat file (a field in the PA1 segment), except I cannot access the field from the second segment in the first record. I should I do this??? Working with contexts isn't helping me neither.

    Hi Mark,
    Here is the code to convert
    grey
    any value
    grey
    0000000004
    grey
    any value
    grey
    0000000022
    darkgrey
    into
    grey
    0000000004
    grey
    any value
    grey
    0000000022
    grey
    any value
    darkgrey
    You have to cache the whole queue:
    boolean first = true;
    for (int k=0; k<a.length;k++)
      if ( ! a[k].equals(ResultList.CC))
        if (first)
          first = false;
        else {
          first = true;
          result.addValue(a[k]);
          result.addContextChange();
          result.addValue("");
          if  (k<a.length-1)
            result.addContextChange();
    This works only, if the line comes strictly in pairs.
    Hope that hepls,
    Stefan

  • Conditional mapping in Graphical mapping

    Hi All,
    I have a conditional mapping requirement i.e.I have 2 nodes ( collections/collection/object and  extensions/collection/@name) in the source structres. Both nodes are identical and have unbound occurences. Based on certain condtions I need to map second node in the  source node to target node ( Items ). Below is the condition.
    If first node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/collections/collection/object/@classname' (Occurs Unbounded ) value is not  'contracts.LineItem'  and second node '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/@name' ( Occurs Unbounded ) value is 'MATGRP_COLLN' then only map source field '/MT_FCI_CONTRACT_EXPORT/fcidataexport/objects/object/extensions/collection/row' ( occurs unbounded ) to target node 'Items' ( Occurs unbounded ).
    I have done this mapping using If condtions and did some context changes. My second condition is working fine but my first condition is not working as expected. Its only taking value in the first occurences and based on that passing first condition. But I need to check in all occurences whether value 'contracts.LineItem' is not exist  then only I need to pass that condition. Please let me know how to achieve this.
    Please help me to achieve my requirement.Thanks.
    Regards,
    Rajesh

    Hi Rajesh,
    To reply your query first we have to understand the exact requirement . So I am writing my understanding below and solution for it .Kindly reply if your requirement is different.
    you have three source field which is involved in mapping .@classname, @name, and row and target side you have node item .
    Now you have to check for all classname and name that if classname is not equal to contracts.LineItem and @name is equal to MATGRP_COLLN ( both the values I have considered as constant) then map row to target node item. i.e if classname and lineitem is occuring 4 time and two time both are satisfying both the codition then generate two target Item node .
    Solution.
    classname -> (CollapseContext)->equals to ContractLineitem --not -->
                                                                                    AND -
    IIF WITHOUT ELSE
    Name -
    >(CollapseContext)-->equals to MATGRP_COLLN--
    >
    the condition of if without else function will be output of AND and in then map row----.(collpasecontext) finally the output of if without else will be mapped to item
    note :all ittalic is Graphical mapping functions .
    Regards,
    Saurabh

  • Problem creating several image maps (linking to different pdf files) RoboHelp 8

    Hi,
    I have a problem creating several image map hotspots (that link to different .pdf files), from the same image using RoboHelp 8 HTML (WebHelp project).
    After compiling, the first image map hotspot created, opens the .pdf file correctly.  Unfortunately, when clicking on the other image hotspots, I get an error " Cannot find file...<file path>... Make sure path or Internet address is correct".
    All the pdf documents are located in the same folder within the project.
    Can anyone help?

    Have you added the target files as baggage?
    See www.grainge.org for RoboHelp and Authoring tips
    @petergrainge

  • Geo Maps - Graphics rendering problem

    Hi Experts,
    I got this error while running an Application with Geo Map.- " Graphics rendering problem"
    In my application there are two UI elements ,
    Geo Map and Business Graphics, i can see business graphics properly but problem is only with GeoMap.
    I checked the SAP Note : 704604.
    And the entry in my Visual Admin is : http://localhost :40180
    When i go to the URL http://<server>:4<instance>80 , i get the message displayed as "SAP IGS is running"
    I am unable to figure out the problem can you guys help?
    regards,
    Ashish Shah

    Hello Ashish,
                     There must be some problem with IGS server. So check whether your IGS server is configure properly or not.
    Follow these steps:
    1. Check the path first
      Local Drive : \ usr \ SAP \ J2E \ JC01 \ J2EE \ admin
    2. Connect to SAP J2EE Engine
    3.Open the Visual Administrator Window, In Global Configuration page ,go to
           CONFIGURATION ADAPTER  -> WEBDYNPRO -> sap.com - > tcwddispwda -> propertysheet.default
    4. Switch to edit mode
    5.Change property entry , http://<server name: port number>
    6.Exit the visual Administrator window
    7.Restart J2EE Engine.
    Best Regards,
    Sheetal.
    Edited by: Shital Patil on May 1, 2008 3:11 PM

  • Problem creating Header Condition in BAPI_PO_CREATE1

    Hello Gurus,
       I am having problems with creating a header conditions using the BAPI BAPI_PO_CREATE1. I am filling up table such as: POCONDHEADER, POCONDHEADERX.
    It creates a PO document but the header conditions I supplied is not included.
    How do I go about this?
    Can you guys give a sample code for this?
    Need your urgent response on this matter.
    Thanks,
    Jeffrey

    Hai
    Check the following Code
    DATA: g_s_poheader    TYPE bapimepoheader,
          g_s_poheaderx   TYPE bapimepoheaderx.
    DATA: l_no_messaging       TYPE char1.  
    DATA: bednr                LIKE wvfb-bednr.
    DATA: l_t_return            LIKE bapiret2  OCCURS 0.
    DATA: l_t_poitem          STRUCTURE bapimepoitem,
          l_t_poitemx         STRUCTURE bapimepoitemx,
          l_t_poschedule      STRUCTURE bapimeposchedule,
          l_t_poschedulex     STRUCTURE bapimeposchedulx,
          l_t_poaccount       STRUCTURE bapimepoaccount,
          l_t_poaccountx      STRUCTURE bapimepoaccountx,
          l_t_pocond          STRUCTURE bapimepocond,
          l_t_pocondx         STRUCTURE bapimepocondx.
      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader                     = g_s_poheader
          poheaderx                    = g_s_poheaderx
          no_messaging                 = l_no_messaging  "RWI-47-20-messaging
       IMPORTING
          exppurchaseorder             = bednr
      EXPHEADER                    =
       TABLES
          return                       = l_t_return
          poitem                       = l_t_poitem
          poitemx                      = l_t_poitemx
      POADDRDELIVERY               =
          poschedule                   = l_t_poschedule
          poschedulex                  = l_t_poschedulex
          poaccount                    = l_t_poaccount
      POACCOUNTPROFITSEGMENT       =
          poaccountx                   = l_t_poaccountx
          pocond                       = l_t_pocond
          pocondx                      = l_t_pocondx.
    Thanks & regards
    Sreenivasulu P

  • Graphic Mapping:IDOC to File-Avoid Error in Adapter Engine

    Hi all,
    I'm using Graphic Mapping in my IDOC to File scenario in which each segment in source IDOC will generate a ROW in target File with the condition: DATBI >= currentdate (and some other conditions)
    I have a UDF and use the mapping function CREATEIF for this purpose:
                                 DATBI -> UDF -> CREATEIF -> ROW
    Problem scenario: In the source IDOC if all the segments have DATBI < currentdate then there is no ROW created, and I get the error in Adapter Engine
    Exception in XML Parser (format problem?):'java.lang.Exception: Message processing failed in XML parser: 'Conversion configuration error: Unknown structure ...
    How can I avoid this?
    I've tried to put this condition using XPATH in Interface Determination and got the error.
    There is a way to use function current-date() in XPATH condition?
    Thanks for your help,
    Elaine

    Hi all,
    How can I "suppress the row node if condition fails"? I'm new in PI, so please give more details.
    My FCC as follows:
    Record Structure: Record, Row
    Row.addHeaderLine 0
    Row.fieldSeparator ,
    Record.fieldSeparator 'nl'
    Row.endSeparator ; 'nl'
    It works fine if the condition satisfied.
    In Message Mapping, I've use Test to double check my mapping, and in the scenario that conditions fails, there is no Row in the target message.
    Please advise.
    Thanks,
    Elaine

  • Issue with a graphical mapping -

    Hi folks,
    I have an issue with a graphical mapping.
    We are replicating the Material Master, with an interface of ECC -> PI -> JDBC.
    The idoc we are using is the MATMAS.MATMAS05, and in the database we created 5 tables, simulating the structure of the source idoc. The tables are: MARA, MARC, MARD, MBEW, MAKT.
    The fact is that we need some data of some segments (tables) in another ones.
    In this case we I need to take a value of the segment E1MARCM (MARC) to the MBEW table. The value is: SERNP.
    The condition to copy that value is the centre (WERKS). So, the condition will be:
    If  MBEW-WERKS == MARC-WERKS,
      then  MBEW-SERNP = MARC-SERNP.
    The problem I'm having is that I have to lookup in many different E1MARCM segments, and the relation is not 1...1, nor, E1MBEWM is a child of it (they are in the same level.)
    For example there could come:
    - E1MARCM_1  (WERKS = 0001)
    - E1MARCM_2  (WERKS = 0002)
    - E1MARCM_3  (WERKS = 0003)
    - E1MBEWM_1 (WERKS = 0001)
    - E1MBEWM_2 (WERKS = 0002)
    - E1MBEWM_3 (WERKS = 0002)
    - E1MBEWM_4 (WERKS = 0003)
    - E1MBEWM_5 (WERKS = 0003)
    Am I clear with the requirement?
    Any answer will be greatly appreciated.
    Thanks in advance.
    .Juan.

    Hey folks, any advice or input about this?
    Thanks again.
       Juan

  • Context Mapping Problem from IDoc to EDI

    Hi,
    I'm trying to map an IDoc to an EDI and I get this problem.
    In my IDoc, I have segment E1ADRM1 (1:N)
    My mapping condition is if E1ADRM-PARTNER_Q = OSP then copy E1ADRM-REGION into x (EDI field)
    So here is my problem:
    In my IDoc test, the segment E1ADRM1 is repeated 6 times and the field REGION is not populated in all iterations so the wrong
    REGION is being copied to my EDI field.
    If I do a display queue on E1ADRM-PARTNER_Q, the value OSP is at the 5th position
    AG
    SP
    VE
    WE
    OSP  ***
    OSO
    If I do a display queue on E1ADRM-REGION, since only 5 segment E1ADRM have the field REGION populated, I get
    KS
    VA
    KS
    ON
    VA
    **(E1ADRM-PARTNER_Q = SP do not have the RIGION populated so not showing in the IDoc)
    So now, since E1ADRM-PARTNER_Q = OSP is at the 5th position, it is copying the 5th E1ADRM-REGION from the list but it should be the 4th.
    How can I do that?
    Rgds,
    Yves

    Hi,
    For the mapping to work as you are expecting the queue should look like this(<b>CC</b> denotes context change)..
    KS
    <b>CC</b>
    <b>CC</b>
    VA
    <b>CC</b>
    KS
    <b>CC</b>
    ON
    <b>CC</b>
    VA
    If you are not having the context changes, check at what level is field REGION at, right click on REGION in graphical mapping and choose menu item context, the 1st entry should have the tick mark(same should be for the PARTNER_Q field also).
    Thanks,
    Renjith.

Maybe you are looking for