Handling SAP deep structure via JCo

Hello-
I have an RFC enabled function module in my ECC 6 system that I'd like to call using the JCo API's. I have read conflicting materials on whether this is even possible or not. Can anyone confirm if it is possible or not, and if you have a general description of how you handled it with the Java code it would be much appreciated. I am an experienced SAP developer who is delving into JCo for the first time.
Thanks,
Andy

Hi Andy
Here is the JCo API Javadocs: http://www.huihoo.org/openweb/jco_api/
Code could be like the following (I assume output table):
JCO.Client client;
/* code for ABAP connection and getting the client here*/
JCO.Repository myRepository = new JCO.Repository("Test", client);
JCO.IFunctionTemplate ft = myRepository.getFunctionTemplate(functionName);
JCO.Function function = ft.getFunction();
/* invoke function here */
JCO.Table jcoTable = function.getTableParameterList().getTable(tableName);
for (int i = 0; i < jcoTable.getNumRows(); i++) {
         jcoTable.setRow(i);
         // get value of the field <fieldName>: it could be anything:
         JCO.Table jcoTable = jcoTable.getTable(<field name>);
         // or JCO.Structure jcoTable = jcoTable.getStructure(<field name>);
         // or JCO.Field jcoField = jcoTable.getField(<field name>);
         // go ahead with the field: a) get plain value or b) iterate over its rows if it's a table again
// close the connection
BR, Sergei
Edited by: Siarhei Pisarenka on Jun 4, 2009 3:50 PM

Similar Messages

  • XSLT and ABAP Transformation Deep Structure

    Hello Everyone,
    While I've read the forums and the links of a number of folks doing the same thing. I am stuck in that I cannot figure out how to populate a deep structure via XSLT.  Not sure what is going wrong, but I suspect it is obvious. The simple problem is that my structure is not getting populated. It is blank.  The transformation works in testing STRANS (and in Stylus Studio). 
    I cannot figure out what is wrong that makes the t_pexr2002 table blank.  Thanks for any insight. 
    Greg
    The simple program is:
    TYPES: BEGIN OF ty_head,
              sndprn TYPE string,
              bgmref TYPE string,
              moabetrh TYPE string,
              create_date TYPE string,
              settlement_date TYPE string,
              no_lines TYPE string,
           END OF ty_head.
    TYPES: BEGIN OF ty_pricing,
            moabetr TYPE string,
           END OF ty_pricing.
    TYPES: BEGIN OF ty_item,
              docname TYPE string,
              docnummr TYPE string,
              pricing TYPE ty_pricing,
            END OF ty_item.
    TYPES: BEGIN OF ty_summary,
              status_message TYPE string,
           END OF ty_summary.
    TYPES: BEGIN OF ty_mn,
            header_data  TYPE ty_head,
            item_data    TYPE ty_item,
            summary_data TYPE ty_summary,
           END OF ty_mn.
    DATA: t_pexr2002 TYPE STANDARD TABLE OF ty_mn.
    DATA: xml_doc TYPE REF TO cl_xml_document, xml TYPE string.
    CREATE OBJECT xml_doc.
    CALL METHOD xml_doc->import_from_file
      EXPORTING
        filename = 'C:\temp\2640273.xml'.
    CALL METHOD xml_doc->render_2_string
      EXPORTING
        pretty_print = 'X'
      IMPORTING
        stream       = xml.
    CALL TRANSFORMATION zusl_pexr2002_v1
    SOURCE XML xml
    RESULT output = t_pexr2002.
    Edited by: Thomas Zloch on Jun 9, 2010 6:05 PM

    Here is my XSLT:
    Here is the transformation: Also pretty simple...
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ... >
      <xsl:strip-space elements="*"/>
      <xsl:template match="/PEXR2002/IDOC">
        <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <OUTPUT>
                <HEADER_DATA>
                  <SNDPRN>
                    <xsl:value-of select="EDI_DC40/SNDPRN"/>
                  </SNDPRN>
                  <BGMREF>
                    <xsl:value-of select="E1IDKU1/BGMREF"/>
                  </BGMREF>
                  <MOABETRH>
                    <xsl:value-of select="E1IDKU5/MOABETR"/>
                  </MOABETRH>
                  <CREATE_DATE>
                    <xsl:value-of select="EDI_DC40/CREDAT"/>
                  </CREATE_DATE>
                  <SETTLEMENT_DATE>
                    <xsl:value-of select="E1EDK03/DATUM"/>
                  </SETTLEMENT_DATE>
                  <NO_LINES>
                    <xsl:value-of select="count(E1IDPU1)"/>
                  </NO_LINES>
                </HEADER_DATA>
                <ITEM_DATA>
                  <xsl:for-each select="E1IDPU1">
                    <DOCNAME>
                      <xsl:value-of select="DOCNAME"/>
                    </DOCNAME>
                    <DOCNUMMR>
                      <xsl:value-of select="DOCNUMMR"/>
                    </DOCNUMMR>
                    <PRICING_DATA>
                      <xsl:for-each select="E1IDPU5[MOAQUAL = '006']">
                        <MOABETR>
                          <xsl:value-of select="MOABETR"/>
                        </MOABETR>
                      </xsl:for-each>
                    </PRICING_DATA>
                  </xsl:for-each>
                </ITEM_DATA>
                <SUMMARY_DATA>
                  <xsl:for-each select="EDI_DS40">
                    <STATUS_MESSAGE>
                      <xsl:value-of select="STAPA1"/>
                    </STATUS_MESSAGE>
                  </xsl:for-each>
                </SUMMARY_DATA>
            </OUTPUT>
          </asx:values>
        </asx:abap>
      </xsl:template>
    </xsl:transform>
    Edited by: Thomas Zloch on Jun 9, 2010 6:05 PM

  • How to via JCO Call RFC upload file to the SAP DMS.

    HI ,ALL :
      NOW i want to upload file via JCO,but i upload in sap gui is success ,but jco call RFC is error ,this is my code:
    excute this  code is not error ,but the data not write to SAP,
            //连接SAP
              Client client = com.hipfung.jco.JCOFactory.getInstance().getClient();
              JCO.Repository repo = new JCO.Repository("ZOA01", client);
              //调用RFC函数
              IFunctionTemplate ft = repo.getFunctionTemplate("CVAPI_DOC_CHECKIN");
              JCO.Function f = ft.getFunction();
              IFunctionTemplate ft2 = repo.getFunctionTemplate("BAPI_TRANSACTION_COMMIT");
              JCO.Function commitFunction = ft2.getFunction();
              //设置传入参数值(注意类型)
              //1.传入参数为Field
                f.getImportParameterList().setValue("TXB",          "PF_DOKAR");  //
              f.getImportParameterList().setValue("0000010101010101020000000","PF_DOKNR");  //文档类型
              f.getImportParameterList().setValue("01","PF_DOKVR");                          //文档版本
              f.getImportParameterList().setValue("000","PF_DOKTL");     
              f.getImportParameterList().setValue("SAPFTPA","PF_FTP_DEST");     
              f.getImportParameterList().setValue("SAPHTTPA","PF_HTTP_DEST");     
              // Get content as table
              f.getImportParameterList().setValue("TBL", "PF_CONTENT_PROVIDE");
            //read file and trans to byte
                      byte b[]=null;
                        File inf = new File("d:
    test.jpg");
                        InputStream in;
                        try {
                             in = new FileInputStream(inf);
                              b =new byte[(int)inf.length()];     //创建合适文件大小的数组
                             in.read(b);                          //读取文件中的内容到b[]数组
                             in.close();
                        } catch (FileNotFoundException e1) {
                             // TODO Auto-generated catch block
                             e1.printStackTrace();
              //set byte to internal table     
             JCO.Table poItem = f.getTableParameterList().getTable("PT_CONTENT");        
             poItem.appendRow(); //增加空行
             poItem.setValue(b, "ORBLK");
             poItem.nextRow();
             //运行RFC函数
              try
                   client.execute(f);
                   client.execute(commitFunction);
              catch(JCO.AbapException ae)
                   System.err.println("JCO.AbapException: < DMS > " + ae);
                   ae.printStackTrace();
              catch(JCO.Exception e)
                   System.err.println("JCO.Exception: < DMS > " + e);
                   e.printStackTrace();
             //返回参数
              JCO.Structure struct = f.getExportParameterList().getStructure("PSX_MESSAGE");
              String te = struct.getString("MSG_TYPE");
              System.out.println("RFC Error Type is :"+te);
              String pr = struct.getString("MSG_TXT");
              System.out.println("RFC get Data is :"+pr);
              com.hipfung.jco.JCOFactory.getInstance().release(client);
    i  can get file via CVAPI_DOC_CHECKoutView
    Edited by: pan qiaoming on Mar 15, 2011 3:05 PM

    HI ,ALL :
      NOW i want to upload file via JCO,but i upload in sap gui is success ,but jco call RFC is error ,this is my code:
    excute this  code is not error ,but the data not write to SAP,
            //连接SAP
              Client client = com.hipfung.jco.JCOFactory.getInstance().getClient();
              JCO.Repository repo = new JCO.Repository("ZOA01", client);
              //调用RFC函数
              IFunctionTemplate ft = repo.getFunctionTemplate("CVAPI_DOC_CHECKIN");
              JCO.Function f = ft.getFunction();
              IFunctionTemplate ft2 = repo.getFunctionTemplate("BAPI_TRANSACTION_COMMIT");
              JCO.Function commitFunction = ft2.getFunction();
              //设置传入参数值(注意类型)
              //1.传入参数为Field
                f.getImportParameterList().setValue("TXB",          "PF_DOKAR");  //
              f.getImportParameterList().setValue("0000010101010101020000000","PF_DOKNR");  //文档类型
              f.getImportParameterList().setValue("01","PF_DOKVR");                          //文档版本
              f.getImportParameterList().setValue("000","PF_DOKTL");     
              f.getImportParameterList().setValue("SAPFTPA","PF_FTP_DEST");     
              f.getImportParameterList().setValue("SAPHTTPA","PF_HTTP_DEST");     
              // Get content as table
              f.getImportParameterList().setValue("TBL", "PF_CONTENT_PROVIDE");
            //read file and trans to byte
                      byte b[]=null;
                        File inf = new File("d:
    test.jpg");
                        InputStream in;
                        try {
                             in = new FileInputStream(inf);
                              b =new byte[(int)inf.length()];     //创建合适文件大小的数组
                             in.read(b);                          //读取文件中的内容到b[]数组
                             in.close();
                        } catch (FileNotFoundException e1) {
                             // TODO Auto-generated catch block
                             e1.printStackTrace();
              //set byte to internal table     
             JCO.Table poItem = f.getTableParameterList().getTable("PT_CONTENT");        
             poItem.appendRow(); //增加空行
             poItem.setValue(b, "ORBLK");
             poItem.nextRow();
             //运行RFC函数
              try
                   client.execute(f);
                   client.execute(commitFunction);
              catch(JCO.AbapException ae)
                   System.err.println("JCO.AbapException: < DMS > " + ae);
                   ae.printStackTrace();
              catch(JCO.Exception e)
                   System.err.println("JCO.Exception: < DMS > " + e);
                   e.printStackTrace();
             //返回参数
              JCO.Structure struct = f.getExportParameterList().getStructure("PSX_MESSAGE");
              String te = struct.getString("MSG_TYPE");
              System.out.println("RFC Error Type is :"+te);
              String pr = struct.getString("MSG_TXT");
              System.out.println("RFC get Data is :"+pr);
              com.hipfung.jco.JCOFactory.getInstance().release(client);
    i  can get file via CVAPI_DOC_CHECKoutView
    Edited by: pan qiaoming on Mar 15, 2011 3:05 PM

  • Data exchange between SAP SCM and an external java tool via JCo

    Hi everybody,
    the situation i am in is the following:
    We are developping a java application for production planning using multi-agent systems. What I am currently working on is an integration concept towards SAP via JCo. I am using a SAP SCM System.
    What i got is the following:
    I got the JCo connection to SCM and I am able to execute BAPIs from Java.
    Now my problem is the following:
    We want to recognize a change in the SCM System, e.g. when someone added a new manufacturing order. What do I have to do for that?
    Do I have to register a JCO.Server as a RFC Destination?
    Do I have to use SCM EventManagement to handle the corresponding events?
    In Java terms, what I want is a EventListener for some events - but neither do I know how the events are created nor how they are transferred to third party systems...
    Anyone with a hint?
    Thanks a lot!
    Greetings
    Jan

    Hi Jan,
    architecturally you will need to determine a point in the SCM application logic to understand that a relevant event has occurred and then issue a notification "message" - in your case it sounds like your system is directly coupled so it wouldn't exactly be a message but an RFC call instead.
    On SCM itself all you need is the RFC-enabled function module interface (an ABAP development), a logical destination and a hook somewhere in the application logic to make the RFC call.
    From a JCo perspective you then just have to implement an "RFC server" that responds to these RFC calls.
    Most difficult part will be to find a suitable hook in the SCM application logic that doesn't modify any delivered SAP code but uses an enhancement technique like a BADI.
    Anything you can share about your planned development? Is this specifically for a customer or are you planning on releasing a product?
    Regards, Harry.

  • Error during data transfer from Lotus Notes to SAP via JCO - Urgent Help Required

    Dear SAP Expert:
    I need your help! Recently getting error during data transfer to SAP. I need your suggestion!
    I am transferring Lotus Notes data to SAP via JCO, recently getting the below error msg, could you pls tell me what could be the reason?
    Please suggest me how to fix that kind of issue.
    "com.sap.mw.jco.JCO$Exception: (104) RFC_ERROR_SYSTEM_FAILURE: Error in ABAP/4 statement when processing an internal table. table.
    at com.sap.mw.jco.rfc.MiddlewareRFC$Client.nativeExecute(Native Method)
    at com.sap.mw.jco.rfc.MiddlewareRFC$Client.execute(MiddlewareRFC.java:1244)
    at com.sap.mw.jco.JCO$Client.execute(JCO.java:3842)
    at com.sap.mw.jco.JCO$Client.execute(JCO.java:3287)
    at SAPAdapter.execute(Unknown Source)
    at JavaAgent.fillBapiAndWriteBackToNotes(Unknown Source)
    at JavaAgent.NotesMain(Unknown Source)
    at lotus.domino.AgentBase.runNotes(Unknown Source)
    at lotus.domino.NotesThread.run(NotesThread.java:249)
    Thanks in advance! Your help would be highly appreciated! Thanks again!

    error is clear, check your abap code.

  • How to use STRANS to translate XML to ABAP with deep structure

    every experts, I want to use Tcode: STRANS to translate XML to ABAP, But it does not work well,
    here is XML code,I want to translate this XML into an an Inter table gt_orders with deep structure of oeb, and colum oeb is also and intertable,how can I do this.
    <?xml version="1.0" encoding="gb2312" ?><axmt410><ObjectID>setSalesOrder</ObjectID><azp01>000000</azp01><oea00>1</oea00><ta_oeaecn>SO-140227-3041</ta_oeaecn><oea03>25325017</oea03><oea02>2014-02-27 17:44:44.0</oea02><ta_oea002>2763.0</ta_oea002><ta_oea001>0.0</ta_oea001><oea14></oea14><oea15>25325017</oea15><oea23>RMB</oea23><oeaconf>S3</oeaconf><oea10></oea10><oeaud01>null</oeaud01><ta_oea007></ta_oea007><oea25>101</oea25><ta_oea008>0</ta_oea008><ta_oea009>null</ta_oea009><oeauser>Hanjingya</oeauser><ta_oeanday>2014-02-27 17:44:44.991</ta_oeanday><ta_oeamday>2014-02-28 08:30:14.866</ta_oeamday><ta_oeacday>2014-02-28 08:30:14.866</ta_oeacday><oeaud02>0</oeaud02><ta_oea030>null</ta_oea030><oeb><oeb03>1</oeb03><oeb04>7400208249</oeb04><oeb05>PCS</oeb05><oeb17>921.0</oeb17><oeb13>921.0</oeb13><oeb15></oeb15><oeb12>5</oeb12><oeb09>990001</oeb09><ta_oeb001></ta_oeb001><ta_oeb002>Yunnan</ta_oeb002><ta_oeb003>address1</ta_oeb003><ta_oeb004>zhangdagui、zhanglan</ta_oeb004><ta_oeb005>15974749998、15987782008</ta_oeb005><ta_oeb006>address and street</ta_oeb006><oebud01></oebud01></oeb><oeb><oeb03>2</oeb03><oeb04>7400208250</oeb04><oeb05>PCS</oeb05><oeb17>921.0</oeb17><oeb13>921.0</oeb13><oeb15></oeb15><oeb12>5</oeb12><oeb09>990001</oeb09><ta_oeb001></ta_oeb001><ta_oeb002>Yunnan</ta_oeb002><ta_oeb003>address2</ta_oeb003><ta_oeb004>zhangdagui、chenlan</ta_oeb004><ta_oeb005>15974749998、15987782008</ta_oeb005><ta_oeb006>address and street</ta_oeb006><oebud01></oebud01></oeb></axmt410>
    I write these codes in SAP XSLT  editor
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
       <xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
       <xsl:strip-space elements="*"/>
       <xsl:strip-space elements="*"/>
       <xsl:template match="/">
         <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
           <asx:values>
             <ORDERS>
               <xsl:apply-templates select="//axmt410"/>
             </ORDERS>
           </asx:values>
         </asx:abap>
       </xsl:template>
       <xsl:template match="axmt410">
         <OBJECTID>
           <xsl:value-of select="ObjectID"/>
         </OBJECTID>
         <AZP01>
           <xsl:value-of select="azp01"/>
         </AZP01>
         <OEA00>
           <xsl:value-of select="oea00"/>
         </OEA00>
         <TA_OEAECN>
           <xsl:value-of select="ta_oeaecn"/>
         </TA_OEAECN>
         <OEA03>
           <xsl:value-of select="oea03"/>
         </OEA03>
         <OEA05>
           <xsl:value-of select="oea05"/>
         </OEA05>
         <OEA02>
           <xsl:value-of select="oea02"/>
         </OEA02>
         <TA_OEA002>
           <xsl:value-of select="ta_oea002"/>
         </TA_OEA002>
         <TA_OEA001>
           <xsl:value-of select="ta_oea001"/>
         </TA_OEA001>
         <OEA14>
           <xsl:value-of select="ora14"/>
         </OEA14>
         <OEA15>
           <xsl:value-of select="ora15"/>
         </OEA15>
         <OEA23>
           <xsl:value-of select="ora23"/>
         </OEA23>
         <OEACONF>
           <xsl:value-of select="oeaconf"/>
         </OEACONF>
         <OEA10>
           <xsl:value-of select="ora10"/>
         </OEA10>
         <OEAUD01>
           <xsl:value-of select="oeaud01"/>
         </OEAUD01>
         <TA_OEA007>
           <xsl:value-of select="ta_oea007"/>
         </TA_OEA007>
         <OEA25>
           <xsl:value-of select="ora25"/>
         </OEA25>
         <TA_OEA008>
           <xsl:value-of select="ta_oea008"/>
         </TA_OEA008>
         <TA_OEA009>
           <xsl:value-of select="ta_oea009"/>
         </TA_OEA009>
         <TA_OEA013>
           <xsl:value-of select="ta_oea013"/>
         </TA_OEA013>
         <TA_OEA014>
           <xsl:value-of select="ta_oea014"/>
         </TA_OEA014>
         <TA_OEA015>
           <xsl:value-of select="ta_oea015"/>
         </TA_OEA015>
         <TA_OEA016>
           <xsl:value-of select="ta_oea016"/>
         </TA_OEA016>
         <TA_OEA017>
           <xsl:value-of select="ta_oea017"/>
         </TA_OEA017>
         <TA_OEA018>
           <xsl:value-of select="ta_oea018"/>
         </TA_OEA018>
         <TA_OEA019>
           <xsl:value-of select="ta_oea019"/>
         </TA_OEA019>
         <TA_OEA020>
           <xsl:value-of select="ta_oea020"/>
         </TA_OEA020>
         <TA_OEA021>
           <xsl:value-of select="ta_oea021"/>
         </TA_OEA021>
         <TA_OEA022>
           <xsl:value-of select="ta_oea022"/>
         </TA_OEA022>
         <TA_OEA028>
           <xsl:value-of select="ta_oea028"/>
         </TA_OEA028>
         <OEAUSER>
           <xsl:value-of select="oeauser"/>
         </OEAUSER>
         <TA_OEANDAY>
           <xsl:value-of select="ta_oeanday"/>
         </TA_OEANDAY>
         <TA_OEAMDAY>
           <xsl:value-of select="ta_oeamday"/>
         </TA_OEAMDAY>
         <TA_OEACDAY>
           <xsl:value-of select="ta_oeacday"/>
         </TA_OEACDAY>
         <OEAUD02>
           <xsl:value-of select="oeaud02"/>
         </OEAUD02>
         <TA_OEA030>
           <xsl:value-of select="ta_oea030"/>
         </TA_OEA030>
         <OEB>
           <xsl:for-each select="oeb">
             <OEB03>
               <xsl:value-of select="oeb03"/>
             </OEB03>
             <OEB04>
               <xsl:value-of select="oeb04"/>
             </OEB04>
             <OEB05>
               <xsl:value-of select="oeb05"/>
             </OEB05>
             <OEB17>
               <xsl:value-of select="oeb17"/>
             </OEB17>
             <OEB13>
               <xsl:value-of select="oeb13"/>
             </OEB13>
             <OEB15>
               <xsl:value-of select="oeb15"/>
             </OEB15>
             <OEB12>
               <xsl:value-of select="oeb12"/>
             </OEB12>
             <OEB09>
               <xsl:value-of select="oeb09"/>
             </OEB09>
             <TA_OEB001>
               <xsl:value-of select="ta_oeb001"/>
             </TA_OEB001>
             <TA_OEB002>
               <xsl:value-of select="ta_oeb002"/>
             </TA_OEB002>
             <TA_OEB003>
               <xsl:value-of select="ta_oeb003"/>
             </TA_OEB003>
             <TA_OEB004>
               <xsl:value-of select="ta_oeb004"/>
             </TA_OEB004>
             <TA_OEB005>
               <xsl:value-of select="ta_oeb005"/>
             </TA_OEB005>
             <TA_OEB006>
               <xsl:value-of select="ta_oeb006"/>
             </TA_OEB006>
             <OEBUD01>
               <xsl:value-of select="oebud01"/>
             </OEBUD01>
           </xsl:for-each>
         </OEB>
       </xsl:template>
    </xsl:transform>
    and I use below ABAP program for a test, but the items from XML can not translate into Interner table gt_orders-oeb[]
    TYPE-POOLS abap.
    CONSTANTS gs_file TYPE string VALUE 'C:\temp\order02.xml'.
    * This is the structure for the data from the XML file
    TYPES:
       BEGIN OF typ_s_oeb,
         oeb03     TYPE string,    "
         oeb04     TYPE string,    "
         oeb05     TYPE string,    "
         oeb17     TYPE string,    "
         oeb13     TYPE string,   
         oeb15     TYPE string,   
         oeb12     TYPE string,    "
         oeb09     TYPE string,    "
         ta_oeb001 TYPE string,    "
         ta_oeb002 TYPE string,    "
         ta_oeb003 TYPE string,    "
         ta_oeb004 TYPE string,    "
         ta_oeb005 TYPE string,    "
         ta_oeb006 TYPE string,    "
         ta_oeb013 TYPE string,    "
         ta_oeb014 TYPE string,    "
         ta_oeb015 TYPE string,    "
         ta_oeb016 TYPE string,    "
         ta_oeb017 TYPE string,    "
         ta_oeb018 TYPE string,    "
         ta_oeb019 TYPE string,    "
         ta_oeb020 TYPE string,    "
         ta_oeb021 TYPE string,    "
         ta_oeb022 TYPE string,    "
         oebud01   TYPE string,    "
       END OF typ_s_oeb.
    TYPES: typ_t_oeb TYPE TABLE OF typ_s_oeb WITH KEY oeb03.
    TYPES:
       BEGIN OF typ_s_order,
         objectid   TYPE string,   "
         azp01      TYPE string,   "
         oea00      TYPE string,   "
         ta_oeaecn  TYPE string,   "
         oea03      TYPE string,   "
         oea02      TYPE string,   "
         ta_oea002  TYPE string,   "
         ta_oea001  TYPE string,   "
         oea14      TYPE string,   "
         oea15      TYPE string,  
         oea23      TYPE string,   "
         oeaconf    TYPE string,   "
         oea10      TYPE string,   "
         oeaud01    TYPE string,   "
         ta_oea007  TYPE string,   "
         oea25      TYPE string,   "
         ta_oea008  TYPE string,   "
         ta_oea009  TYPE string,   "
         oeauser    TYPE string,   "
         ta_oeanday TYPE string,   "
         ta_oeamday TYPE string,   "
         ta_oeacday TYPE string,   "
         oeaud02    TYPE string,   "
         ta_oea030  TYPE string,   "
         ta_oea013  TYPE string,
         ta_oea014  TYPE string,
         ta_oea015  TYPE string,
         ta_oea016  TYPE string,
         ta_oea017  TYPE string,
         ta_oea018  TYPE string,
         ta_oea019  TYPE string,
         ta_oea020  TYPE string,
         ta_oea021  TYPE string,
         ta_oea022  TYPE string,
         ta_oea025  TYPE string,
         oeb        TYPE typ_t_oeb,
        END OF typ_s_order.
    * Table for the XML content
    DATA: gt_itab       TYPE STANDARD TABLE OF char2048,
           gs_itab       LIKE LINE OF gt_itab.
    * Table and work ares for the data from the XML file
    DATA: gt_orders     TYPE STANDARD TABLE OF typ_s_order,
           gs_orders     TYPE typ_s_order.
    * Result table that contains references
    * of the internal tables to be filled
    DATA: gt_result_xml TYPE abap_trans_resbind_tab,
           gs_result_xml TYPE abap_trans_resbind.
    * For error handling
    DATA: gs_rif_ex     TYPE REF TO cx_root,
           gs_var_text   TYPE string.
    * Get the XML file from your client
    CALL METHOD cl_gui_frontend_services=>gui_upload
       EXPORTING
         filename                = gs_file
       CHANGING
         data_tab                = gt_itab
       EXCEPTIONS
         file_open_error         = 1
         file_read_error         = 2
         no_batch                = 3
         gui_refuse_filetransfer = 4
         invalid_type            = 5
         no_authority            = 6
         unknown_error           = 7
         bad_data_format         = 8
         header_not_allowed      = 9
         separator_not_allowed   = 10
         header_too_long         = 11
         unknown_dp_error        = 12
         access_denied           = 13
         dp_out_of_memory        = 14
         disk_full               = 15
         dp_timeout              = 16
         not_supported_by_gui    = 17
         error_no_gui            = 18
         OTHERS                  = 19.
    IF sy-subrc <> 0.
       MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ENDIF.
    * Fill the result table with a reference to the data table.
    * Within the XSLT stylesheet, the data table can be accessed with
    * "IPERSON".
    GET REFERENCE OF gt_orders INTO gs_result_xml-value.
    gs_result_xml-name = 'ORDERS'.
    APPEND gs_result_xml TO gt_result_xml.
    * Perform the XSLT styleshee
    TRY.
         CALL TRANSFORMATION zfx_so_xml_to_abap
         SOURCE XML gt_itab
         RESULT (gt_result_xml).
       CATCH cx_root INTO gs_rif_ex.
         gs_var_text = gs_rif_ex->get_text( ).
         MESSAGE gs_var_text TYPE 'S'.
    ENDTRY.
    LOOP AT gt_orders INTO gs_orders.
    ENDLOOP.

    The simplest way seems to me is to use a XSL file for that. The <xsl:output> attributes doctype-system and doctype-public generate the DTD declaration <!DOCTYPE YOUR_ROOT SYSTEM "yourDTDfile.dtd"> and <!DOCTYPE YOUR_ROOT PUBLIC "yourDTDfile.dtd">, respectively.
    When calling transformerInstance.transform() the XSLT processor performs the identity transformation - it just copies elements, attributes, content, processing instructions and comments to the result stream.
    If you're using an xsl file for your transformation already, simply add <xsl:output doctype-system="yourDTDfile.dtd"/> to your existing XSL file.
    If you're only using the identity transformation you'd need to change the line of code where you obtain the transformer instance from the TransformerFactory to:
    t_factory.newTransformer(new StreamSource("test.xsl"));
    and use this as test.xsl:
    <?xml version="1.0"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:output doctype-system="yourDTDfile.dtd"/>
       <!-- this is the identity transformation -->
       <xsl:template match="*|@*|comment()|processing-instruction()|text()">
          <xsl:copy>
             <xsl:apply-templates select="*|@*|comment()|processing-instruction()|text()"/>
          </xsl:copy>
       </xsl:template>
    </xsl:stylesheet>Good luck.

  • Create a new routing with BAPI BAPI_ROUTING_CREATE via JCo

    I try to create a new routing with BAPI BAPI_ROUTING_CREATE via JCo.
    I filled all necessary parameters. I also realized a commit_work. I get in the RETURN parameter of the BAPI the Message "S 000 Routing N/50001641/01". But the routing isn't in the database. Other JCo programs I wrote (create material master or costumer order) are working very well.
    Have anyone an idea?
    Thanks Jörg
    Here's my coding:
    public void createArbeitsplan() {
              doLogin();
    //          connectionAttributes();
              Plan plan = new Plan();
              for (int i = 0; i < planList.size(); i++)
                   plan = (Plan) planList.get(i);
                   //Ein Function-Objekt erzeugen
                   String bapi = "BAPI_ROUTING_CREATE";
                   JCO.Function savePlan = null;          
                   try { savePlan = this.createFunction(bapi); }
                   catch(Exception ex) { ex.printStackTrace(); System.exit(1); }
                   if(savePlan == null) { System.err.println(bapi + " not found in SAP"); System.exit(1); }
                   //Import und Tabellen füllen
                   // Plankopf
                   JCO.Table headData = savePlan.getTableParameterList().getTable("TASK");
                   headData.appendRow();
                   headData.setValue(plan.kurztext,"DESCRIPTION");
                   headData.setValue("1","TASK_LIST_USAGE");
                   headData.setValue(werks,"PLANT");
                   headData.setValue("4","TASK_LIST_STATUS");
                   headData.setValue("ST","TASK_MEASURE_UNIT");
                   headData.setValue("001","RESP_PLANNER_GROUP");
                   headData.setValue("20070101","VALID_FROM");
                   headData.setValue("20991231","VALID_TO_DATE");
                   headData.setValue("1","LOT_SIZE_FROM");
                   headData.setValue("99999999","LOT_SIZE_TO");
                   // Materialzuordnung
                   JCO.Table materialAlloc = savePlan.getTableParameterList().getTable("MATERIALTASKALLOCATION");
                   materialAlloc.appendRow();
                   materialAlloc.setValue(plan.material,"MATERIAL");
                   materialAlloc.setValue(werks,"PLANT");
                   materialAlloc.setValue("20070101","VALID_FROM");
                   materialAlloc.setValue("20991231","VALID_TO_DATE");
                   materialAlloc.setValue("1","GROUP_COUNTER");
                   // Vorgänge
                   JCO.Table operationData = savePlan.getTableParameterList().getTable("OPERATION");
                   for (int j = 0; j < plan.getAnzahl(); j++) {
                        operationData.appendRow();
                        operationData.setValue(plan.getVorgang(j).vorgang,"ACTIVITY");
                        operationData.setValue(plan.getVorgang(j).steuschl,"CONTROL_KEY");
                        operationData.setValue(plan.getVorgang(j).arbplatz,"WORK_CNTR");
                        operationData.setValue("1111","WORK_CNTR");
                        operationData.setValue(plan.getVorgang(j).text,"DESCRIPTION");
                        operationData.setValue(plan.getVorgang(j).basismenge,"BASE_QUANTITY");
                        operationData.setValue(plan.getVorgang(j).vw1,"STD_VALUE_01");
                        operationData.setValue(plan.getVorgang(j).vw2,"STD_VALUE_02");
                        operationData.setValue(plan.getVorgang(j).vw3,"STD_VALUE_03");
                        operationData.setValue(plan.getVorgang(j).ze1,"STD_UNIT_01");
                        operationData.setValue(plan.getVorgang(j).ze2,"STD_UNIT_02");
                        operationData.setValue(plan.getVorgang(j).ze3,"STD_UNIT_03");
                        operationData.setValue("1","DENOMINATOR");
                        operationData.setValue("1","NOMINATOR");
                        operationData.setValue("20070101","VALID_FROM");
                        operationData.setValue("20991231","VALID_TO_DATE");
                        operationData.setValue("ST","OPERATION_MEASURE_UNIT");
                   // Testflag
                   JCO.Structure test = savePlan.getImportParameterList().getStructure("TESTRUN");
                   test.setValue(" ","BAPIFLAG");
                   //BAPI ausführen (incl. Commit)
                   mConnection.execute(savePlan);
                   JCO.Function commit = null;
                   try {commit = this.createFunction("BAPI_TRANSACTION_COMMIT"); }
                   catch (Exception ex) { ex.printStackTrace();System.exit(1); }
                   JCO.ParameterList input = commit.getImportParameterList();
                   input.setValue("X","WAIT");
                   mConnection.execute(commit);
                   //Messages vom SAP-System holen
                   JCO.Table jcoReturn = savePlan.getTableParameterList().getTable("RETURN");
                   for (int k = 0; k < jcoReturn.getNumRows(); k++)
                        jcoReturn.setRow(i);
    //                    System.out.println(jcoReturn.getField("MESSAGE").getValue());
                        System.out.println(jcoReturn.getField("TYPE").getValue());
                        System.out.println(jcoReturn.getField("NUMBER").getValue());
                        System.out.println(jcoReturn.getField("MESSAGE_V1").getValue());
                        System.out.println(jcoReturn.getField("MESSAGE_V2").getValue());
                        System.out.println(jcoReturn.getField("MESSAGE_V3").getValue());
                        System.out.println(jcoReturn.getField("MESSAGE_V4").getValue());
                   JCO.Structure output = commit.getExportParameterList().getStructure("RETURN");;
                   System.out.println(output.getString("MESSAGE"));
                   System.out.println(output.getString("TYPE"));
                   System.out.println(output.getString("NUMBER"));
                   System.out.println(output.getString("MESSAGE_V1"));
              closeConnectionToSAP();
              System.exit(1);

    Hi,
    perhaps you could use
    BAPI_HRMASTER_SAVE_REPL_MULT
    Regards
    Bernd

  • Fiedcatalog & deep structures

    Hello! Good day to you all!
         I'm a begginer to the whole SAP R/3 system... and I have a question related to so-caled deep structures. Have I got an opportunity to describe a deep structure in fiedcatalog like I can do for a simple field?
         Like...
             ls_fieldcat-fieldname = 'O_TAB'.
    where o_tab is an internal table...
    P.S. Will be pleased with any suggested ideas and advices.. =)
    Peace to everyone!

    Hi,
    Check this code...
    REPORT  ZTEST1234    MESSAGE-ID ZZ                           .
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_VALID TYPE C,
          V_FLAG,
          V_DATA_CHANGE,
          V_ROW TYPE LVC_S_ROW,
          V_COLUMN TYPE LVC_S_COL,
          V_ROW_NUM TYPE LVC_S_ROID.
    *       CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
      PUBLIC SECTION .
        METHODS:
    **Hot spot Handler
        HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
                          IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
    **Double Click Handler
        HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                                         IMPORTING E_ROW E_COLUMN ES_ROW_NO.
    ENDCLASS.                    "lcl_event_handler DEFINITION
    *       CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    *Handle Hotspot Click
      METHOD HANDLE_HOTSPOT_CLICK .
        CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
        V_ROW  = E_ROW_ID.
        V_COLUMN = E_COLUMN_ID.
        V_ROW_NUM = ES_ROW_NO.
        MESSAGE I000 WITH V_ROW 'clicked'.
      ENDMETHOD.                    "lcl_event_handler
    *Handle Double Click
      METHOD  HANDLE_DOUBLE_CLICK.
      ENDMETHOD.                    "handle_double_click
    ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION
    *&             Global Definitions
    DATA:      G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,"Container1
                G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
    DATA: OK_CODE LIKE SY-UCOMM,
          SAVE_OK LIKE SY-UCOMM,
          G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
          GS_LAYOUT TYPE LVC_S_LAYO.
    *- Fieldcatalog for First and second Report
    DATA: IT_FIELDCAT  TYPE  LVC_T_FCAT,
          X_FIELDCAT TYPE LVC_S_FCAT,
          LS_VARI  TYPE DISVARIANT.
    *                START-OF_SELECTION
    START-OF-SELECTION.
      DATA:BEGIN OF  ITAB OCCURS 0,
           VBELN LIKE LIKP-VBELN,
           POSNR LIKE LIPS-POSNR,
           CELLCOLOR TYPE LVC_T_SCOL, "required for color
           DROP(10),
           END OF ITAB.
      SELECT VBELN
             POSNR
             FROM LIPS
             UP TO 20 ROWS
             INTO CORRESPONDING FIELDS OF TABLE ITAB.
    END-OF-SELECTION.
      IF NOT ITAB[] IS INITIAL.
        CALL SCREEN 100.
      ELSE.
        MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
      ENDIF.
    *&      Form  CREATE_AND_INIT_ALV
    *       text
    FORM CREATE_AND_INIT_ALV .
      DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
      CREATE OBJECT G_CUSTOM_CONTAINER
             EXPORTING CONTAINER_NAME = G_CONTAINER1.
      CREATE OBJECT G_GRID
             EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
    * Set a titlebar for the grid control
      CLEAR GS_LAYOUT.
      GS_LAYOUT-GRID_TITLE = TEXT-003.
      GS_LAYOUT-ZEBRA = SPACE.
      GS_LAYOUT-CWIDTH_OPT = 'X'.
      GS_LAYOUT-NO_ROWMARK = 'X'.
      GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
      CALL METHOD G_GRID->REGISTER_EDIT_EVENT
        EXPORTING
          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
      CREATE OBJECT G_HANDLER.
      SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
      SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
      DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
      DATA: L_INDEX TYPE SY-TABIX.
      "Here i am changing the color of line 1,5,10...
      "so you can change the color of font conditionally
      LOOP AT ITAB.
        L_INDEX = SY-TABIX.
        IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
          LS_CELLCOLOR-FNAME = 'VBELN'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
          LS_CELLCOLOR-FNAME = 'POSNR'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
        ENDIF.
      ENDLOOP.
    * setting focus for created grid control
      CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
        EXPORTING
          CONTROL = G_GRID.
    * Build fieldcat and set editable for date and reason code
    * edit enabled. Assign a handle for the dropdown listbox.
      PERFORM BUILD_FIELDCAT.
      PERFORM  SET_DRDN_TABLE.
    * Optionally restrict generic functions to 'change only'.
    *   (The user shall not be able to add new lines).
      PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
    **Vaiant to save the layout
      LS_VARI-REPORT      = SY-REPID.
      LS_VARI-HANDLE      = SPACE.
      LS_VARI-LOG_GROUP   = SPACE.
      LS_VARI-USERNAME    = SPACE.
      LS_VARI-VARIANT     = SPACE.
      LS_VARI-TEXT        = SPACE.
      LS_VARI-DEPENDVARS  = SPACE.
    **Calling the Method for ALV output
      CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
          IS_VARIANT           = LS_VARI
          IS_LAYOUT            = GS_LAYOUT
          I_SAVE               = 'A'
        CHANGING
          IT_FIELDCATALOG      = IT_FIELDCAT
          IT_OUTTAB            = ITAB[].
    * Set editable cells to ready for input initially
      CALL METHOD G_GRID->SET_READY_FOR_INPUT
        EXPORTING
          I_READY_FOR_INPUT = 1.
    ENDFORM.                               "CREATE_AND_INIT_ALV
    *&      Form  EXCLUDE_TB_FUNCTIONS
    *       text
    *      -->PT_EXCLUDE text
    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
    * Only allow to change data not to create new entries (exclude
    * generic functions).
      DATA LS_EXCLUDE TYPE UI_FUNC.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
    ENDFORM.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_fieldcat
    *       Fieldcatalog
    FORM BUILD_FIELDCAT .
      DATA: L_POS TYPE I.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
      X_FIELDCAT-FIELDNAME = 'VBELN'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-NO_ZERO    = 'X'.
      X_FIELDCAT-OUTPUTLEN = '10'.
      X_FIELDCAT-HOTSPOT = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Item'(025).
      X_FIELDCAT-FIELDNAME = 'POSNR'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Drop'(025).
      X_FIELDCAT-FIELDNAME = 'DROP'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      X_FIELDCAT-EDIT = 'X'.
      X_FIELDCAT-DRDN_HNDL = '1'.
      X_FIELDCAT-DRDN_ALIAS = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
    ENDFORM.                    " build_fieldcat
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAIN100'.
      IF G_CUSTOM_CONTAINER IS INITIAL.
    **Initializing the grid and calling the fm to Display the O/P
        PERFORM CREATE_AND_INIT_ALV.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  SET_DRDN_TABLE
    *       text
    FORM SET_DRDN_TABLE.
      DATA:LT_DRAL TYPE LVC_T_DRAL,
            LS_DRAL TYPE LVC_S_DRAL.
      LOOP AT ITAB .
    * First listbox (handle '1').
        IF SY-INDEX = 1.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ' '.
          LS_DRAL-INT_VALUE =  ' '.
        ELSE.
          LS_DRAL-HANDLE = '1'.
          LS_DRAL-VALUE =  ITAB-POSNR.
          LS_DRAL-INT_VALUE =  ITAB-POSNR.
        ENDIF.
        APPEND LS_DRAL TO LT_DRAL.
      ENDLOOP.
    **Setting the Drop down table for Reason Code
      CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
        EXPORTING
          IT_DROP_DOWN_ALIAS = LT_DRAL.
    ENDFORM.                               " set_drdn_table
    Regards
    vijay

  • How can i map a file with different structures to several deep structures?

    Hey experts,
    here is my situation. I have to build a file2file scenario. The file has a flat structure without any separators. Depending on the value of the keyfield, i have to determinate, which kind of structure in the current sequence there is. Like i wrote, there isn't any fieldseparator, but for every possible structure (overall 4 types) i know the type by the length of every field in the structure.
    My task is:
    1. Read the file into PI and transform to XML
    2. Map the flat structure depending on the keyvalue to the deep structure
    3. Transform several fields in the different structures like the requirement
    4. Write back the file via FTP as the same flat structure as before
    Do you have any approach to solve the item number 2 (the other steps are clear for me)?
    Do i need several mapping-programs? If so, how can i determinate the right mapping-program, deping on the keyvalue?
    Thanks in advance
    Tobi

    Here the inbound payload:
    <?xml version="1.0" encoding="utf-8" ?>
    - <ns:MT_MULTI_TYPES xmlns:ns="namespace">
    - <VORSATZ>
      <ZSATA>0</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZLIEF>T</ZLIEF>
      <START>20080905</START>
      <ZFILL />
      <ZENDE>E</ZENDE>
      </VORSATZ>
    - <KOPFSATZ>
      <ZSATA>1</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <BUDAT>20080904</BUDAT>
      <BLDAT>20080904</BLDAT>
      <XBLNR />
      <WAERS />
      <HWAE2>EUR</HWAE2>
      <HWAE3 />
      <KURS2>000000000</KURS2>
      <KURS3>000000000</KURS3>
      <BKTXT />
      <ZFILK />
      <ZENDE>E</ZENDE>
      </KOPFSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>001</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>30611102</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000057576</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>009</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000021070</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AA</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000009796</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4027V63RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <NACHSATZ>
      <ZSATA>9</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZZSOL>000000000359502</ZZSOL>
      <ZZHAB>000000000359502</ZZHAB>
      <ZZBEL>0000001</ZZBEL>
      <ZZPOS>000000010</ZZPOS>
      <ZFILN />
      <ZENDE>E</ZENDE>
      </NACHSATZ>
    - <VORSATZ>
      <ZSATA>0</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZLIEF>T</ZLIEF>
      <START>20080905</START>
      <ZFILL />
      <ZENDE>E</ZENDE>
      </VORSATZ>
    - <KOPFSATZ>
      <ZSATA>1</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <BUDAT>20080904</BUDAT>
      <BLDAT>20080904</BLDAT>
      <XBLNR />
      <WAERS />
      <HWAE2>EUR</HWAE2>
      <HWAE3 />
      <KURS2>000000000</KURS2>
      <KURS3>000000000</KURS3>
      <BKTXT />
      <ZFILK />
      <ZENDE>E</ZENDE>
      </KOPFSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>001</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>30611102</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000057576</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>009</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000021070</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AA</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000009796</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4027V63RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <NACHSATZ>
      <ZSATA>9</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZZSOL>000000000359502</ZZSOL>
      <ZZHAB>000000000359502</ZZHAB>
      <ZZBEL>0000001</ZZBEL>
      <ZZPOS>000000010</ZZPOS>
      <ZFILN />
      <ZENDE>E</ZENDE>
      </NACHSATZ>
      </ns:MT_MULTI_TYPES>
    And here the outbound payload:
    <?xml version="1.0" encoding="UTF-8" ?>
    - <ns0:MT_MULTI_TYPES xmlns:ns0="namespace">
    - <VORSATZ>
      <ZSATA>0</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZLIEF>T</ZLIEF>
      <START>20080905</START>
      <ZFILL />
      <ZENDE>E</ZENDE>
      </VORSATZ>
    - <VORSATZ>
      <ZSATA>0</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZLIEF>T</ZLIEF>
      <START>20080905</START>
      <ZFILL />
      <ZENDE>E</ZENDE>
      </VORSATZ>
    - <KOPFSATZ>
      <ZSATA>1</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <BUDAT>20080904</BUDAT>
      <BLDAT>20080904</BLDAT>
      <XBLNR />
      <WAERS />
      <HWAE2>EUR</HWAE2>
      <HWAE3 />
      <KURS2>000000000</KURS2>
      <KURS3>000000000</KURS3>
      <BKTXT />
      <ZFILK />
      <ZENDE>E</ZENDE>
      </KOPFSATZ>
    - <KOPFSATZ>
      <ZSATA>1</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>000</BUZEI>
      <BUDAT>20080904</BUDAT>
      <BLDAT>20080904</BLDAT>
      <XBLNR />
      <WAERS />
      <HWAE2>EUR</HWAE2>
      <HWAE3 />
      <KURS2>000000000</KURS2>
      <KURS3>000000000</KURS3>
      <BKTXT />
      <ZFILK />
      <ZENDE>E</ZENDE>
      </KOPFSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>001</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>30611102</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000057576</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>009</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000021070</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AA</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000009796</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4027V63RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>001</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>30611102</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000057576</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>009</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AB</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000021070</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4025V64RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <POSITIONSSATZ>
      <ZSATA>4</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <KOART>S</KOART>
      <SHKZG>S</SHKZG>
      <NEWKO>20519109</NEWKO>
      <GSBER>17AA</GSBER>
      <ZUBUK />
      <VBUND />
      <WRBTR>0000000000000</WRBTR>
      <ZBTR1>0000000009796</ZBTR1>
      <ZBTR2>0000000000000</ZBTR2>
      <ZSTEU />
      <VALUT>20080904</VALUT>
      <KOSTL />
      <AUFNR />
      <ZUONR>X4027V63RE460XXXXX</ZUONR>
      <SGTXT>REX</SGTXT>
      <BEWAR />
      <ZFPOS />
      <ZENDE>E</ZENDE>
      </POSITIONSSATZ>
    - <NACHSATZ>
      <ZSATA>9</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZZSOL>000000000359502</ZZSOL>
      <ZZHAB>000000000359502</ZZHAB>
      <ZZBEL>0000001</ZZBEL>
      <ZZPOS>000000010</ZZPOS>
      <ZFILN />
      <ZENDE>E</ZENDE>
      </NACHSATZ>
    - <NACHSATZ>
      <ZSATA>9</ZSATA>
      <MANDT>001</MANDT>
      <BUKRS>0560</BUKRS>
      <BLART>8F</BLART>
      <BELNR>1816008128</BELNR>
      <BUZEI>010</BUZEI>
      <ERDAT>20080905</ERDAT>
      <UZEIT>000549</UZEIT>
      <ZPROG>PGRR3010</ZPROG>
      <ZZSOL>000000000359502</ZZSOL>
      <ZZHAB>000000000359502</ZZHAB>
      <ZZBEL>0000001</ZZBEL>
      <ZZPOS>000000010</ZZPOS>
      <ZFILN />
      <ZENDE>E</ZENDE>
      </NACHSATZ>
      </ns0:MT_MULTI_TYPES>

  • How can i point to a specific field in DEEP structure and populate it?

    Hello,
    I have declared a internal table as below,
    DATA: BEGIN OF wa_data,
                  vkorg TYPE vkorg
                  vtweg TYPE vtweg
                  spartTYPE spart
                  field_name TYPE CHAR30
                   value TYPE CHAR50
                END OF wa_data
    DATA: ls_data TYPE wa_data,
                lt_data TYPE STANDARD TABLE OF wa_data.
    The lt_data is populated as below,
    VKORG-------VTWEG-------SPART-------FIELD_NAME-------VALUE
    1000-----------10-------------01------------KALKS---------------ZP00 "Pricing procedure
    1000-----------10-------------01------------ZTERM---------------15 days "Payment terms
    1000-----------10-------------01------------MAHNA---------------09 "Dunning
    Fine.
    Now, i have a DEEP DEEP DEEP structure as belowm
    DATA: ls_deep TYPE cmds_ei_extern. "Pls. see this deep structure 'cmds_ei_extern' in SAP DDIC / SE11
    This deep structure is part of Customer master creation. Now, i would like to POPULATE this deep structure from my lt_data itab DYNAMICALLy, i mean, with out mentioning the field names (like, ZTERM, KALKS, MAHNA etc etc), bcz its these i am pulling this lt_data from a custom table, so going further business may also ADD a new record / field like BUSAB (Accouting clerk) with a value of AL (Allen Christi), hence i want to hv dynamic and its less tediuos also bcz,
    We can LOOP lt_data INTO ls_data (for example, the ls_data-field_name = KALKS)
    Now, point the KALKS in the deep deep deep structure and populate it with a value of ls_data-value (= 15 days)
    ENDLLOOP.
    Pls. let me know How can i do this, i guess, we need to use field symbols, pls. let me know the code to achieve my requirement
    Thank you

    Hi,
    Please refer below code.This will populate field kunnr of the deep structure. Once you select the data as per your requirement,you can write similar code to populate rest of the fields in the deep strucure.
    TYPES : BEGIN OF ty_data,
                 kunnr TYPE kunnr,
                 END OF ty_data.
    FIELD-SYMBOLS : <lfs_cmds_ei_header>   TYPE cmds_ei_header,
                    <lfs_cmds_ei_instance>              TYPE cmds_ei_instance,
                    <lfs_kunnr>                                   TYPE kunnr.
    DATA:  lfs_cmds_ei_extern  TYPE cmds_ei_extern,
                 lr_dytable                  TYPE REF TO data,
                 lr_dytable_wa           TYPE REF TO data,
                 lt_data                       TYPE STANDARD TABLE of ty_data ,
                 wa_data                   TYPE ty_data.
      SELECT kunnr
      FROM yalb_kunde
      UP TO 1 ROWS
      INTO TABLE lt_data.
      IF sy-subrc = 0.
        LOOP AT lt_data INTO lwa_data.
          ASSIGN COMPONENT 'HEADER' OF STRUCTURE lfs_cmds_ei_extern TO <lfs_cmds_ei_header>.
          IF sy-subrc = 0.
            ASSIGN COMPONENT 'OBJECT_INSTANCE' OF STRUCTURE <lfs_cmds_ei_header> TO <lfs_cmds_ei_instance>.
            IF sy-subrc = 0.
              ASSIGN COMPONENT 'KUNNR' OF STRUCTURE <lfs_cmds_ei_instance> TO <lfs_kunnr>.
              IF sy-subrc = 0.
                <lfs_kunnr> = lwa_data-kunnr.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
    Thanks,
    Priya

  • Pass user name from MII to SAP R/3 via JRA

    When calling in MII a BAPI that executes a goods movement in SAP R/3 via a JRA connection, the user name of the JRA connection is passed to SAP R/3 and not the user name of the person who executed the action in MII. This means that the documented goods movements in SAP R/3, that were created with the JRA connection, are all posted with the same user name. We would like to register the user name of the person who is logged into MII, because we want to know which person executed the goods movements. How can we achieve this?

    Thank you guys, enabling the autobind was a good tip.
    We don't use JRA anymore, instead we use JCO to pass the user name. This is how we did it:
    Prerequisites:
    u2022 Login name in ABAP must be the same as in Netweaver (Java) - when creating users in Netweaver, copy them from ABAP. An other option might be to map the users in Netweaver with the users of ABAP, in case users are different.
    u2022 SSO certificates have to be exchanged between the two systems, SAP R/3 and Netweaver CE.
    u2022 Profile parameters in SAP R/3 system should be correct
    Confirguration in SAP MII:
    u2022 In the JCO action block (for RFC or BAPI call) in the link editor, set SAPUserName property to u201C$MYSAPSSO2$u201D
    u2022 Define a transaction property MYSAPSSO2 and in the link editor from the JCO action block, link it to SAPSSO2Ticket property
    u2022 In MII Menu - Dataservers - XacuteConnector activate property u201CAutobindu201D
    u2022 In MII Menu - System Connection Editor - JCO (used JCO connection) - activate u201CSSOu201D

  • How to connect to R/3 via JCo using MYSAPSSO2?

    Hello!
    I'm developing a J2EE application who resides in an EP with Single Sign On. I have to retrieve some data from R/3, the way I want to connect is via JCo using MYSAPSSO.
    I have read that is possible to connect passing MYSAPSSO2 as <i>user</i> and its value as <i>password</i>. The java code in the jsp is something like this:
    javax.servlet.http.Cookie [] my_cookies = request.getCookies();
    java.util.Hashtable cks = new Hashtable();
    for(int i=0;i<my_cookies.length;i++){
         cks.put(my_cookies<i>.getName(),java.net.URLDecoder.decode(my_cookies<i>.getValue()));
    String user = "$MYSAPSSO2$";
    String pass = (String)cks.get("MYSAPSSO2");
    JCO.Client conex;
    JCO.Repository rep;
    boolean ok=true;
    conex = JCO.createClient("000",user,pass,"es","192.168.0.1","00","","");
    try{
         conex.connect();
         rep = new JCO.Repository("mirep",conex);
    } catch (Exception e){
         out.write("<br>"e"<br>");
         ok = false;
    if (ok)
         conex.disconnect();
    We are working with EP6 SP2, WAS 6.20.
    The error is:
    com.sap.mw.jco.JCO$Exception: (103) RFC_ERROR_LOGON_FAILURE: Se ha recibido un ticket SSP que no se puede interpretar
    (I translate you:)
    RFC_ERROR_LOGON_FAILURE: unable to interpret a retrieved SSP ticket
    Thank you all!!

    Ok!
    I have solve the problem. So, I was trying to connect via SSO within an user that was not registered in R/3 and I forgot it.
    Sorry for the inconvenience.

  • Reciever file adapter configuration for Deep structure

    Hi Experts,
                     I have a idoc to file scenario in which i used a data type for file in below format:
    DT_Test
    -->Recordset(0.unbounded)
    >E21DPU1(0.unbounded)
    >field1
    >field2
    >E21DPU5(0.unbounded)
    >filed 3
    >filed 4
    >E21DP03(0.unbounded)
    >filed 5
    >filed 6
    Here DT_test is datatype name,Recordset is a structure name which contain E21DPU1, E21DPU5,E21DPO3 stucture inside it.Now,E21DPU5 and E21DPO3 structures are under E21DPU1.
    I am confused in creating content conversion parameters i.e what we have to mention in Recordset Stucture .
    I used E21DPU1,,E21DPU5,,E21DP03,* .should it work for deep structure.
    Thanks
    Deepak

    Hi,
    file adapter does not handle 2 level deep structures
    the easiest way to do it now is to go for abap or java mapping
    and create a line for each of the output lines and handle this in the file adapter
    so like <line> </line>
    <line>E21DPU1(0.unbounded) with fields </line>
    <line>E21DPU5(0.unbounded) with fields </line>
    <line> etc. </line>
    Regards,
    Michal Krawczyk

  • XSLT transformation for deep structure .....

    Hello,
            I am trying to do an XSLT transformation for a deep structure HAP_S_PDF_DOCUMENT (see it in SE11), I have managed to achieve this. but not with perfection. i still get some redundant data and data have been experiencing Data duplication. I was hoping if you people point out the what is wrong in the transfromation. The data repeats for every once under node DATA and then under node of the refered structure name. Besides it also create a blank row even if the record is 0. I am mostly facing problem with nodes T_ELEMENTS. T_COL_CELL and T_FIELD. These are the nested structures, Can anybody help / guide me to achieve these transforamtion?
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:sap="http://www.sap.com/sapxsl" version="1.0">
    <xsl:strip-space elements="*"/>
    <xsl:template match="HAP_DOCUMENT">
    <xsl:element name="HAP_DOCUMENT" namespace="">
    <xsl:apply-templates select="MAIN_HEADER"/>
    <xsl:apply-templates select="T_ELEMENTS"/>
    <xsl:apply-templates select="T_STAT_CHG_BUTTONS"/>
    <xsl:apply-templates select="S_APPRAISAL_ID"/>
    <xsl:apply-templates select="S_HEADER"/>
    <xsl:apply-templates select="POSITIONS"/>
    <xsl:element name="STAT_CHG_BUTTON">
    <xsl:value-of select="../STAT_CHG_BUTTON"/>
    </xsl:element>
    <xsl:element name="OFFLINE_ID">
    <xsl:value-of select="OFFLINE_ID"/>
    </xsl:element>
    <xsl:element name="BSP_FLAG">
    <xsl:value-of select="BSP_FLAG"/>
    </xsl:element>
    <xsl:element name="ROLE">
    <xsl:value-of select="ROLE"/>
    </xsl:element>
    <xsl:element name="APPRAISAL_YEAR">
    <xsl:value-of select="APPRAISAL_YEAR"/>
    </xsl:element>
    </xsl:element>
    </xsl:template>
    <xsl:template match="MAIN_HEADER">
    <xsl:element name="MAIN_HEADER">
    <xsl:for-each select="ZBGAPR_FORM_HEADER">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_ELEMENTS">
    <xsl:element name="T_ELEMENTS">
    <xsl:for-each select="ZHAP_S_PDF_ELEMENTS">
    <xsl:element name="DATA">
    <xsl:apply-templates select="T_COL_CELL"/>
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_COL_CELL">
    <xsl:element name="T_COL_CELL">
    <xsl:for-each select="ZHAP_S_PDF_COL_CELL">
    <xsl:element name="DATA">
    <xsl:apply-templates select="T_FIELD"/>
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_FIELD">
    <xsl:element name="T_FIELD">
    <xsl:for-each select="ZHAP_S_PDF_FIELD">
    <xsl:element name="DATA">
    <xsl:apply-templates select="T_VAL_VALUES"/>
    <xsl:apply-templates select="T_VAL_RANGES"/>
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_VAL_VALUES">
    <xsl:element name="T_VAL_VALUES">
    <xsl:for-each select="HAP_S_BODY_CELL_VAL_VALUES">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_VAL_RANGES">
    <xsl:element name="T_VAL_RANGES">
    <xsl:for-each select="HAP_S_BODY_CELL_VAL_RANGES">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_STAT_CHG_BUTTONS">
    <xsl:element name="T_STAT_CHG_BUTTONS">
    <xsl:for-each select="HAP_S_BODY_CELL_VAL_RANGES">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_APPRAISAL_ID">
    <xsl:element name="S_APPRAISAL_ID">
    <xsl:copy-of select="node()"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_HEADER">
    <xsl:element name="S_HEADER">
    <xsl:apply-templates select="S_TEXTS"/>
    <xsl:apply-templates select="T_APPRAISER"/>
    <xsl:apply-templates select="T_APPRAISEE"/>
    <xsl:apply-templates select="T_PART_APPRAISER"/>
    <xsl:apply-templates select="T_OTHERS"/>
    <xsl:apply-templates select="S_STATUS"/>
    <xsl:apply-templates select="S_DATES"/>
    <xsl:apply-templates select="S_DISPLAY"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="POSITIONS">
    <xsl:element name="POSITION">
    <xsl:for-each select="ZBGHR_APR_POSITION_DET">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_TEXTS">
    <xsl:element name="S_TEXTS">
    <xsl:copy-of select="node()"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_APPRAISER">
    <xsl:element name="T_APPRAISER">
    <xsl:for-each select="HAP_S_PDF_APPRAISER">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_APPRAISEE">
    <xsl:element name="T_APPRAISEE">
    <xsl:for-each select="HAP_S_PDF_APPRAISEE">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_OTHERS">
    <xsl:element name="T_OTHERS">
    <xsl:for-each select="HAP_S_PDF_OTHERS">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_PART_APPRAISER">
    <xsl:element name="T_PART_APPRAISER">
    <xsl:for-each select="HAP_S_PDF_PART_APPRAISERS">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="T_PART_APPRAISER">
    <xsl:element name="T_PART_APPRAISER">
    <xsl:for-each select="HAP_S_PDF_PART_APPRAISERS">
    <xsl:element name="DATA">
    <xsl:copy-of select="child::node()"/>
    </xsl:element>
    </xsl:for-each>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_STATUS">
    <xsl:element name="S_STATUS">
    <xsl:copy-of select="node()"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_DATES">
    <xsl:element name="S_DATES">
    <xsl:copy-of select="node()"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="S_DISPLAY">
    <xsl:element name="S_DISPLAY">
    <xsl:copy-of select="node()"/>
    </xsl:element>
    </xsl:template>
    <xsl:template match="STAT_CHG_BUTTON">
    </xsl:template>
      <xsl:template match="OFFLINE_ID">
    </xsl:template>
      <xsl:template match="BSP_FLAG">
    </xsl:template>
      <xsl:template match="ROLE">
    </xsl:template>
      <xsl:template match="APPRAISAL_YEAR">
    </xsl:template>
    </xsl:transform>
    Regards,
    Shishir.P

    "XSLT transformation for a deep structure"
    which way abap to xml or xml to abap?
    you may want to check this thread
    Re: Problem converting XML back to structure using XSLT

  • Creating an XML From a Deep Structure  using XSL Transformation

    Hi ABAPers,
    I have a requirement to use XSL Transformations on an ABAP deep type structure.
    Currently i have an API that fills in this deep structure and by using CALL TRANSFORMATION ID.... i will get the BIG XML having having 100s of nodes . But actualy form the deep structure i need only some NODES (say 50)... So i tried writing an XSLT
    in the transaction STRANS.. but on using this TRANSFORMATION which i wrote i am getting an error messgae like INVALID XML...
    Am i going in right track or is there a good solution...
    My sample transformation is as below...
    <xsl:transform version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:strip-space elements="*"/>
    <xsl:template match="/">
    <xsl:value-of select="DATA/NODE_ELEMENTS/UUID_KEY/UUID"/>
    <xsl:value-of select="DATA/NODE_ELEMENTS/SEMANTICAL_NAME"/>
    <xsl:value-of select="DATA/NODE_ELEMENTS/STRUCT_CAT"/>
    <xsl:value-of select="DATA/NODE_ELEMENTS/USAGE_CAT"/>
    <xsl:value-of select="DATA/NODE_ELEMENTS/RESTRICTED_IND"/>
    <xsl:value-of select="VALUES/DATA/NODE_ID"/>.
    </xsl:template>
    </xsl:transform>
    Please help me in solving this issue....
    Thanks,
    Linda.

    Hi Linda,
        I am replying based on your sample code.
       Try the below following suggestions.
       here 'GRPHDR' is the node where I am selecting the data.
               IGRPHDR is the name of the reference.
    First calling the transformation in you program.
    TYPES: BEGIN OF tl_hdr,
               msgid(20)    TYPE c,
                 END OF tl_hdr.
    DATA : t_hdr           TYPE STANDARD TABLE OF tl_hdr.
      GET REFERENCE OF t_hdr INTO l_result_xml-value.
        l_result_xml-name = 'IGRPHDR'.
        APPEND l_result_xml TO t_result_xml.
       TRY.
            CALL TRANSFORMATION yfi_xml_read
            SOURCE XML it_xml_data
            RESULT (t_result_xml).
          CATCH cx_root INTO l_rif_ex.
            l_var_text = l_rif_ex->get_text( ).
            l_bapiret-type = 'E'.
            l_bapiret-message = l_var_text.
            APPEND l_bapiret TO errormsgs.
            EXIT.
        ENDTRY.
    in XSL transformation
       First write a block of statement to specify from which node you are taking the data.
       No matter it is a node or sub-node.
    <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
      <xsl:output encoding="iso-8859-1" indent="yes" method="xml" version="1.0"/>
      <xsl:strip-space elements="*"/>
    <xsl:template match="/">
          <asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
          <asx:values>
            <IGRPHDR>  " reference name of internal table
              <xsl:apply-templates select="//GrpHdr"/>
            </IGRPHDR>
      </asx:values>
        </asx:abap>
    </xsl:template>
    Next select the data from the nodes under the nodes specified in the transformation.
    here msgid is the field i am selecting for value.
    <xsl:template match="GrpHdr">
        <item>
          <MSGID>  " field in the internal table t_hdr where data has to go
            <xsl:value-of select="MsgId"/>
          </MSGID>
        </item>
      </xsl:template>
    reply back if further clarification is needed.
    Thanks and regards,
    Kannan N

Maybe you are looking for

  • Button in ALV Coloumn

    Hello Experts, I am having a requirement to show buttons as a coloumn in ALV. I  dont know how to achieve it. Could you Please suggest and help? Thanks in Advance..... Best Regards, Sahil

  • Incopy crashed during editors save in Word on PC

    I am the reporter here, let me know if I have left out any pertinent details...The editor has input all of the corrections into the Incopy file [created from Indesign 5.5 (v7.5.1)] on her PC in Word. During the save the file crashed. When she reopene

  • Problem with search and replace

    I'm workin on Windows XP, Dreamwearver 8 When I do a search and replace in a site, the changes will be made correctly, however, the auto date stamp that I'm using on my pages will duplicate on random pages and overwrite text This doesn't occur on all

  • Network users file permissions won't allow documents to be moved or deleted

    Sorry for the confusing title. It's late, and if I've missed any details, please feel free to ask for them. I've migrated a couple of desktop users to a network user based environment. Data files were copied off workstations to an external drive, whi

  • Re-import existing DC to QA

    Hi Team members Please help me, there is an existing Development Component (DC) which is working fine in Development but is throwing an error in QA and Production. I need to re-import the one in Development to QA. Please help me I do not know how to