Passing table from ABAP to webservice using SOAP

Hello:
I am trying to pass table data from ABAP code to a webservice using SOAP.  I have seen many examples of passing single value parameters such as:
  DATA: osoap   TYPE REF TO CSoapDocument.
    GET REFERENCE OF p_refno INTO dref.
    CALL METHOD osoap->add_parameter
      EXPORTING
        direction  = CSoapConstants=>ic_param_in
        name       = 'ws_ref_no'
        value      = dref.
    CALL METHOD osoap->set_tag_name_format
      EXPORTING format = CSoapConstants=>ic_tagfmt_default.
However I cannot find any code examples of passing table data to a webservice.  Can anyone provide a sample or documentation for how to pass table data to a webservice?
Thanks,
Craig

Hi Craig
i just posted this on SAPfans for you too!
if you are not using PI, then follow this....
http://help.sap.com/erp2005_ehp_04/helpdata/EN/bb/ddb33d2ae46b3be10000000a114084/frameset.htm
http://help.sap.com/erp2005_ehp_04/helpdata/EN/9b/dad1ae3908ee44a5caf57e10918be9/frameset.htm
this is converting XSD to ABAP....
http://help.sap.com/erp2005_ehp_04/helpdata/EN/de/705c3c3806af06e10000000a11402f/frameset.htm
i have only used PI to do this via ABAP Proxies....

Similar Messages

  • Error while testing webservice using SOAP

    Hi,
    While i was testing my published webservice using soap-ui it gave me following error,
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
    <soap:Fault>
    <faultcode>soap:Server</faultcode>
    <faultstring>Internal SOAP Processing Failure</faultstring>
    <detail/>
    </soap:Fault>
    </soap:Body>
    </soap:Envelope>
    and in the event log i can see a event as follows and there is no warning or error
    Upon investigation i got to know the following steps might solve the problem..i.e..
    - Is the receive location for the SOAP webservice enabled? - YES
    - Can you browse to (the WSDL of) the webservice? Is displayed correctly? -YES
    - Is the webservice configured to run in the correct application pool? -YES
    -The user under which application pool is running have the read/write permission on the %temp% folder.-Dont Know how to check
    -In IIS,Check the identity of the application pool on which Web service is running and make sure that the user is the member of both “IIS_WPG” and “BizTalk Isolated host users”.
    -DONT Know how to check
    Please Help me in guiding me in the last two points
    and if there are any other solutions for this..
    Thanks,
    Sarva.

    You mentioned you checked that the webservice is configured under correct application pool. you can find the user under which the application pool is configured (open iis- > select application pools -> find out the "Identity column" to
    know the user for your application pool.
    -The user under which application pool is running have the read/write permission on the %temp% folder.-Dont Know how to check
    Go to run -> type "%temp%" -> Go one step back -> Right click to the folder -> Properties -> Security -> check the application pool user is present under "Group or user names"
    -In IIS,Check the identity of the application pool on which Web service is running and make sure that the user is the member of both “IIS_WPG” and “BizTalk Isolated host users”.
    -DONT Know how to check
    Refer How to Add Service Account to the IIS_WPG Group to add your application pool user under IIS_WPG. Also similar activity to add your service account to "BizTalk Isolated
    host users" if it is local groups. Or Ask your network support team if "BizTalk Isolated host users" is domain group.
    Please Help me in guiding me in the last two points
    and if there are any other solutions for this..
    Thanks,
    Sarva.
    Your event viewer might have more information pointing exactly what is causing "Internal SOAP processing failure". 
    Also refer this
    which might be helpful for you.
    If this answers your question please mark it as Answer and if this post is helpful, please vote as helpful. Thanks !

  • How do you join two tables from different Oracle schemas using a subquery

    I am trying to join two tables from different Oracle schemas using a subquery. I can extract data from each of the tables without a problem. However, when I combine the select statements using a subquery I get the Oracle error *'ORA-00936: missing expression'*. Since each SELECT statement executes on its own without error I don't understand what is missing. The result set I am trying to get is to match up the LINE_ID from PDTABLE_12_1 in schema DD_12809 with the MAT_DESCRIPTION from table PDTABLE_201 in schema RA_12809.
    The query is as follows:
    sql = "SELECT [DD_12809].[PDTABLE_12_1].LINE_ID FROM [DD_12809].[PDTABLE_12_1] JOIN " _
    + "(SELECT [RA_12809].[PDTABLE_201].MAT_DESCRIPTION " _
    + "FROM [RA_12809].[PDTABLE_201]) AS FAB " _
    + "ON [DD_12809].[PDTABLE_12_1].PIPING_MATER_CLASS = FAB.PIPING_MATER_CLASS"
    The format of the query is copied from a SQL programming manual.
    I also tried executing the query using a straight JOIN on the two tables but got the same results. Any insight would be helpful. Thanks!
    Edited by: user11338343 on Oct 19, 2009 6:55 AM

    I believe you are receiving the error because you are trying to JOIN on a column that doesn't exist. For example you are trying to join on FAB.PIPING_MATER_CLASS but that column does not exist in the subquery.
    If you want to do a straight join without a subquery you could do the following
    SELECT  DD_12809.PDTABLE_12_1.LINE_ID
    ,       FAB.MAT_DESCRIPTION
    FROM    DD_12809.PDTABLE_12_1
    JOIN    RA_12809.PDTABLE_201    AS FAB ON DD_12809.PDTABLE_12_1.PIPING_MATER_CLASS = FAB.PIPING_MATER_CLASS  HTH!

  • How to read a table from a word file, using HWPF

    How can I read a table from a Word file using HWPF?
    I looked in API and Table class doesn't seem to have a constructor... very very strange for me. pls help

    the constructor is HWPFDocument = new HWPFDocument(/*file*/)
    Here is the API for that
    http://poi.apache.org/apidocs/org/apache/poi/hwpf/HWPFDocument.html
    Also here is another link to something that might help you more with tables
    http://www.aspose.com/Community/forums/thread/79182.aspx

  • Passing Tables from one method to another method.

    Hi All,
    I'm creating a Web-Dynpro program in which I wouild like to passing an internal table from one method to another method within the same View. 
    Is this possible?  And if so, how can I set it up.
    Thank you.
    Paul

    Hi Paul ,
    I hope u wud be clear with passing table from one method to another now .U may also wish to see this WIKI
    Link: [Passing table parameters|https://wiki.sdn.sap.com/wiki/display/WDABAP/Passingtableparameterfromoneviewtoanotherview+locally]
    I hope it wud help u .
    regards,
    amit

  • Pass data from servlet to jsp using sendRedirect

    Hi,
    I am passing data from servlet to jsp using forward method of request dispatcher but as it doesn't change the url it is creating problems. When ever user refreshes the screen(browser refresh) it's re-loading both servlet and jsp, which i don't want to happen. I want only the jsp to be reloaded.
    Can I pass data from servlet to jsp using sendRedirect in this case. I also want to pass some values from servlet to jsp but without using query string. I want to set some attributes and send to jsp just like we do for forward method of request dispatcher.
    Is there any way i can send data using attributes(without using query string) using sendRedirect? Please let me know

    sendRedirect is meant as a true redirect. meaning
    you can use it to redirect to urls not in your
    context....with forward you couldn't pass information
    to jsps/servlets outside your own context.Actually, you can:
    getServletContext().getContext("/other").getRequestDispatcher("/path/to/servlet").forward(request, response)I think the issue here is that the OP would like to have RequestDispatcher.forward() also update the address in the client's browser. That's not possible, AFAIK. By the time the request is forwarded, the browser has already determined the URL of the servlet, and the only I know of way to have the browser change the URL to the forwarded Servlet/JSP is to send a Location: header (i.e. sendRedirect()). Remember that server-side dispatching is transparent to the client. Maybe there's some tricky stuff you can do with JavaScript to change the address in the address bar without reloading the page?
    Brian

  • Problem in passing xstring data from abap to webservice method.

    Hi,
    I want to upload the document from ABAP to Microsoft SharePoint. So for that i have created the webservice in .net for uploading the document in SharePoint.
    Now in Abap i have consumed this service by creating proxy class. The web service has one method as Upload_File which takes byte[] as paramerter, so in wsdl file this parameter get converted into s:base64Binary and in abap it get converted into RAWSTRING.
    Now, when i try to upload the file with very small content (less than 54 character mean the rawstring variable which contain the file content has length less than 108 ), file gets uploaded with no problem, but when the file has content more than 54 character, it give error like "SOAP:1.032 SRT: Wrong Content-Type and empty HTTP-Body received"
    And also one thing when i have created the proxy class it gives warning that "The XSD type base64Binary does not exactly correspond to the ABAP type RAWSTRING"
    What can be the problem? how to pass file content to external web service?
    Thanks,
    Vikram

    Hi Nick,
    Yes, when i declare the data type as string in XSD it get converted into xsd:string.
    I have already tried using String as parameter in WebService method instead of byte[].
    But then in .Net, I need to write some code for converting the string variable ( which content the file content in hexadecimal format) into byte array and for that there is a method provided by .Net framework but when I use it, it write the hexadecimal content in file.
    So I have written my own code for converting hexadecimal content which string variable content to byte array.
    By doing this, it working fine and all type of file getting uploaded in SharePoint but when I try to open the file only .TXT file get open properly and other type of file give me some error.

  • Passing data from abap-program to mssql database table thro native sql

    Hi,
    To pass the data from abap-program to mssql server,i have created database connection through dbco t.code.
    now i am trying to get connection thro native sql but am not able to get it .Am working in ECC 5.0.
    Could anyone help me on this.Did i miss anything?
    i have tried Native-sql like this.
    DATA: CON_NAME LIKE DBCON-CON_NAME VALUE 'BIW'.
    EXEC SQL.
      CONNECT TO :con_name AS 'C1'
    ENDEXEC.
    Thanks in advance.

    Hi,
    Trying to do the same here, only using Oracle DB.
    DATA:     dbc TYPE DBCON_NAME VALUE 'BI'
    TRY.
      EXEC SQL.
        CONNECT TO :dbc
      ENDEXEC.
      IF sy-subrc NE 0.
        RAISE EXCEPTION TYPE cx_sy_native_sql_error.
      ENDIF.
    CATCH cx_sy_native_sql_error INTO oref_native_sql_error.
      sql_emsg = oref_native_sql_error->get_text( ).
      MESSAGE sql_emsg TYPE 'I'.
    ENDTRY.
    I keep getting the message 'Native SQL exception has occured' (because of the RAISE statement, I wonder how we can get a meaningfull error description).
    Of course this can be a result of a number of network issues, so I'm trying to resolve this together with my BC admin.
    I suggest the same to you..
    In the meantime, if anyone can help out, it will be appreciated.
    Regards,
    SD

  • Need Help: Not able to invoke fusion crm webservice using SOAP UI

    Hi,
    I am trying to invoke fusion crm webservice by using SOAP UI, but I am getting Invalid seccurity tocken exception.
    I have followed below steps specified in the oracle support document.
    In Soap UI, Go to File>Preferences ,select the "HTTP Settings' tab on the lower left panel, then select the checkbox 'Authenticate Preemtively'.
    2. From the wsdl extract the content from above wsdl between the tag/elements <dsig:X509Certificate> and </dsig:X509Certificate>
    3. Create a file called certificate.cer ( in local Drive) with above encrypted data enclosed between -----BEGIN CERTIFICATE-----   and -----END CERTIFICATE-----, file content shown below ( note: encrypted data 
        for example
        -----BEGIN CERTIFICATE-----
    MIICCzCCAXSgAwIBAgIETy
        -----END CERTIFICATE-----
    4. Identifiy the java.home of SOAP UI , navigation (Help – System Properties) ,example ( it may be something like D:\SOAP UI download\soapui-4.5.1\jre)
    5.  Find the location of cacert file in SOAP UI ( example D:\SOAP UI download\soapui-4.5.1\jre\lib\security\cacert)
    6. Use following keytool command to add the certificate file certificate.cer into keystore cacert , sample command given below for reference
       keytool -importcert -alias rcpt-key-alias -file "D:\certificate.cer" -keystore "D:\SOAP UI download\soapui-4.5.1\jre\lib\security\cacerts"
       at command prompt when prompted enter password as changeit
    7. Restart SOAP UI and create a new project with https version of WSDL of organizationService
    8. In SOAP UI ,  in Auth tab , provide the user name and password.
    9. Invoke the Webservice
    I have used following request XML in SOAP UI
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/sales/opptyMgmt/opportunities/opportunityService/types/" xmlns:opp="http://xmlns.oracle.com/apps/sales/opptyMgmt/opportunities/opportunityService/" xmlns:rev="http://xmlns.oracle.com/apps/sales/opptyMgmt/revenues/revenueService/" xmlns:not="http://xmlns.oracle.com/apps/crmCommon/notes/noteService" xmlns:not1="http://xmlns.oracle.com/apps/crmCommon/notes/flex/noteDff/" xmlns:rev1="http://xmlns.oracle.com/oracle/apps/sales/opptyMgmt/revenues/revenueService/" xmlns:act="http://xmlns.oracle.com/apps/crmCommon/activities/activitiesService/" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:soap="soap" xmlns:ns1="http://xmlns.oracle.com/apps/fnd/soaprovider/plsql/fnd_user_pkg/">
       <soapenv:Header>
          <fmw-context xmlns="http://xmlns.oracle.com/fmw/context/1.0"/>
          <wsse:Security soap:mustUnderstand="1">
             <wsse:UsernameToken>
                <wsse:Username>userName</wsse:Username>
                <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">Password</wsse:Password>
             </wsse:UsernameToken>
          </wsse:Security>
       </soapenv:Header>
       <soapenv:Body>
          <typ:createOpportunity>
             <typ:opportunity>
                <opp:BudgetedFlag>1</opp:BudgetedFlag>
             </typ:opportunity>
          </typ:createOpportunity>
       </soapenv:Body>
    </soapenv:Envelope>
    It would be great help if someone guide me on this...
    Thanks & Regards
    Samanta Mishra

    For reference here is an example of a SOAP envelope I commonly use with SOAP UI to "query" employee data from HCM:
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:typ="http://xmlns.oracle.com/apps/hcm/employment/core/workerService/types/" xmlns:typ1="http://xmlns.oracle.com/adf/svc/types/">
        <soapenv:Header>
            <wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
                <wsse:UsernameToken wsu:Id="UsernameToken-2" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
                    <wsse:Username>username</wsse:Username>
                    <wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">password</wsse:Password>
                    <wsse:Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">jwCzGGijT90Wml6eZe4cxg==</wsse:Nonce>
                    <wsu:Created>2012-07-04T06:49:48.981Z</wsu:Created>
                </wsse:UsernameToken>
            </wsse:Security>
        </soapenv:Header>
        <soapenv:Body>
            <typ:findWorker>
                <typ:findCriteria>
                    <typ1:fetchStart>0</typ1:fetchStart>
                    <typ1:fetchSize>1</typ1:fetchSize>
                    <typ1:filter>
                        <typ1:conjunction>And</typ1:conjunction>
                        <typ1:group>
                            <typ1:conjunction>And</typ1:conjunction>
                            <typ1:upperCaseCompare>false</typ1:upperCaseCompare>
                            <typ1:item>
                                <typ1:conjunction>And</typ1:conjunction>
                                <typ1:upperCaseCompare>false</typ1:upperCaseCompare>
                                <typ1:attribute>PersonNumber</typ1:attribute>
                                <typ1:operator>=</typ1:operator>
                                <typ1:value>123456</typ1:value>
                            </typ1:item>
                        </typ1:group>
                    </typ1:filter>
                </typ:findCriteria>
                <typ:findControl>
                    <typ1:retrieveAllTranslations>false</typ1:retrieveAllTranslations>
                </typ:findControl>
            </typ:findWorker>
        </soapenv:Body>
    </soapenv:Envelope>
    This example works fine for our Fusion Applications Cloud test instance, without any SSL setup or setting credentials on the request properties as the target service supports policy without message protection.
    Based on the your steps your service has message protection policy, so the above will not work rather you need to do additional configuration. Please check the policy on your service to confirm how the call needs to be made. Here are few links and documents:
    "How to invoke Fusion Application TCA webservice from SOAP UI (Doc ID 1496071.1)"  documents how a service with message protection can be called from SOAP UI. Your steps seem identical so presumably they are based on this document.
    "Oracle Fusion Sales Cloud Web Services (Doc ID 1354841.1)" contains information about the CRM web services including examples on the certificate import and sample payloads.
    Please provide:
    The security policies defined on the service (check the wsdl)
    The exact error message the you get
    Jani Rautiainen
    Fusion Applications Developer Relations
    https://blogs.oracle.com/fadevrel/

  • How to read an APO table from excel in place using Visual Basic ?

    We have enhanced some APO reports using layouts that use excel in place with custom visual basic (VB) code. For example, the VB code can append the data with additional columns that perform specific calculations and then proceed to create pivot table reports in excel..That is working fine.
    The challenge is to see if that VB code could read specific APO tables (e.g. product master tables) to bring additional elements into excel and thus expand the report content. We know that additional fields can be added to the reports, but having the flexibility to read tables from VB could be more flexible.
    Can that be done?. If so, would it be possible using exclusively the VB code attached to the layout, i.e. no ABAP?

    Hello Anselmo,
    I am assuming you are doing this either using BeX analyzer or by reading the planning book using the RFC ActiveX component and a BAPI.
    I think it's possible to retrieve the data from the product master table. Here are my thoughts on how can this be done:
    1) You can create a generic datasource (transaction RSO2) for the product master table, connect that to a BW remotecube and use a BeX query to retrieve that values. You can then join the queries using VBA. Alternatively, you can build a muti-provider that connects your current InfoCube to the new RemoteCube and build a query from there. The multi-provider, in this case, joins the data (no more VBA).
    2) If you have already loaded your product master data into master data carrying InfoObjects then you can try the same technique as #1 but this time there is no need to create the generic datasource. You can use the InfoObjects for your master data as the InfoProviders for your query.
    3) You can try the ActiveX component from SAP which can  connect to any emote enabled function in SAP system. SAP already provided some BAPIs (check transaction BAPI for a list) which might be able to provide the data. You can also create your own function modules (be sure to make it remote enabled) using ABAP. (transaction SE37).
    Hope this helps

  • Pass parameters from abap to MS word

    Hello everyone ,
      I have a requirement wherein i have to pass some parameters from abap to MS word template. Now this MS word template is designed by the user and in this template there are some fields whose input will be passed from the abap.
    For e.g :
    MS WordTemplate has sales order no. which needs to be imported  from abap , meaning in abap selection screen i enter sales order and after executing the report, user made MSword template opens and in certain position that sales order is printed.
    I tried to find some threads but couldn't get the appropriate ones. Also found OLE formatters but not helpful.
    Please advice.
    Thanks in advace.

    THis may be late but after you Open the word doc make document active, get fields object, get field count.  Loop through for the number of fields and get the field name when the name is what you want to set use result property (which is the value).  I got alot from fm DSVAS_MSWORD_READ_FIELDS1.  I can read values greater than 245 into a string but am unable to set a result greater than 256 characters.  That's why I was looking and ran across your post from January. 
    Active Doc
      call method of lo_application 'ActiveDocument' = lo_activedocument.
      if sy-subrc <> 0.
        perform error using 'Method ActiveDocument'.
      endif.
    Fields
      call method of lo_activedocument 'FormFields' = lo_fields.
      if sy-subrc <> 0.
        perform error using 'Method FormFields'.
      endif.
    Get number of fields in document
      get property of lo_fields 'count' = lf_fcount.
      if sy-subrc <> 0.
        perform error using 'Get Property Count'.
      endif.
    for each field get the Name and set values
      do lf_fcount times.
        call method of lo_fields 'Item' = lo_myfld
          exporting
            #1 = sy-index.
        if sy-subrc <> 0.
          perform error using 'Method Item'.
        endif.
        get property of lo_myfld 'Name' = lf_fname.
        if sy-subrc <> 0.
          perform error using 'Get Property Name'.
        endif.
        case lf_fname.
          when 'QMNUM'.
            set property of lo_myfld 'Result' = viqmel-qmnum.
            if sy-subrc ne 0.
              perform error using 'Set Property Result = QMNUM'.
            endif.
          when 'MATKTX'.
            set property of lo_myfld 'Result' = riwo03-matktx.
            if sy-subrc ne 0.
              perform error using 'Set Property Result = MATKTX'.
            endif.
          when 'MATNR'.
            set property of lo_myfld 'Result' = viqmel-matnr.
            if sy-subrc ne 0.
              perform error using 'Set Property Result = MATNR'.
            endif.
          when 'QMTXT'.
            set property of lo_myfld 'Result' = g_string. " viqmel-qmtxt.
            if sy-subrc ne 0.
              perform error using 'Set Property Result = QMTXT'.
            endif.
            exit.  "no more fields to update
        endcase.
      enddo.

  • How to call webservices using soap in xi

    Hello
    I am tring to work  on webserivces,bascially i am not having any knowledge on webservices,i have seen the documentation & i know how to configure soap adapter &  how to define webservice in integration directory.can any one please help me out how to work with webservices  & good documentation on webservices & soap.
    Thanks
    Rajesh

    Hi Rajesh,
    Use server(tomcat server) or plain html coding for defining webservices....
    check sample webservice coding
    Purchase Order Web Application
    dispDate(0)
    Purchase Order Input Parameters:
    Document Type:
    Standard PO
    Vendor Number:
              Purchase Order Date:
    Purchasing Material:
              Delivery Date:
    Quantity:
    NetPrice:
    Unit of Measurement:
    PCs
    PriceUnit:
    Results:
    /code
    And gothrough the following weblogs which will be useful...
    /people/siva.maranani/blog/2005/03/01/testing-xi-exposed-web-services
    /people/thomas.jung3/blog/2005/06/05/web-services-the-case-of-the-missing-soap-action-header
    /people/siva.maranani/blog/2005/09/03/invoke-webservices-using-sapxi
    Hope u get some idea...
    Regards,
    Sridhar
    Message was edited by: sridhar reddy kondam

  • Passing data from ABAP to MSSQl

    Dear Experts,
                 I have an requirement to pass the data from Abap to Mssql server. Is it possible thro bapi? or should i follow ALE?
    Pls Give some ideas to proceed.
    Thanks in Advance.

    Closing this thread...

  • PASS DATA FROM ABAP PROGRAM TO WORKFLOW CONTAINER

    Hello Everybody,
    I am a workflow beginner and I want to pass a data from my ABAP code to a workflow container. This workflow container is used in the Send Mail step.
    The ABAP  Program is:
    REPORT  zdb_work_flow.
    tables : vbak.
    DATA : k TYPE sweinstcou-objkey,
                e TYPE swetypecou-event.
    DATA : st TYPE swcont,
                itab TYPE STANDARD TABLE OF swcont.
    PARAMETERS : vbeln TYPE vbak-vbeln.
    start-of-selection.
      st-element = 'VBELN'.   "This is my WORKFLOW CONTAINER
      st-tab_index = 1.
      st-elemlength = 10.
      st-type = 'C'.
      st-value = vbeln.
      append st to itab.
      k = vbeln.
      e = 'TRIGGER'               "This is an event in my BUS OBJ ZDB_WFLOW
      CALL FUNCTION 'SWE_EVENT_CREATE'
        EXPORTING
          objtype                               = 'ZDB_WFLOW'   "My BUS OBJ
          objkey                                 = k
          event                                  = e    "Event TRIGGER in ZDB_WFLOW
        tables
          event_container               = itab
        exceptions
          objtype_not_found             = 1
          OTHERS                        = 2
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.         .
      COMMIT WORK.
    Now I have created a workflow in SWDD as ZDB_WF_SW.
    In this WF I have created a container as VBELN.
    In the SEND MAIL I have given a header as "Worflow Triggered for &VBELN&"
    PROBLEM.
    The Workflow is getting triggered. I am also getting a mail "Workflow Triggered for" in my mailbox but the &VBELN& is missing from the header.
    I have set the IMPORT EXPORT flag of the WF CONTAINER "VBELN"
    Please Help.
    Edited by: Deepankar.B on Feb 22, 2011 4:08 PM
    Edited by: Deepankar.B on Feb 22, 2011 4:10 PM

    You wouldn't use a SMA as an assistance class - but refer to one within it.
    I would use Shared Memory Area classes - but I'd also build a SMA that could talk across multiple application servers.
    Thomas Jung proposed this in a forum reply some time ago.
    It shouldn't be too difficult to use RFC's to access the content of SMA's in multiple app servers - ensuring synchronisation across multi app servers. I've not yet had the need, so haven't attempted.
    The long polling in 7.02 apparently uses this approach, so in a 7.02 system there may even be standard components/ SMAs that you could use.
    I do not think global areas in FM's are available across sessions - I don't think you could use that as a data transport.

  • Protect sensitive HR tables from ABAPer and BASIS

    Hello
    We are trying to work out some security authorizations where in we can protect HR master data through direct access to HR tables through SE16 or SM30 for info type tables like PA0008 or PA0015 etc. I know that these tables have authorization group 'PA' and we can build a role using S_TABU_DIS using this autho group but we have about 30 such infotypes to be protected. If we build a role with S_TABU_DIS and Auth group='PA' we will land up protecting all the Infotypes. Other problem is that if we create a new auth group 'ZPA' for these 30 infotype tables, thats too much customization as we might have problems during future upgrades.
    My question to the forum members is - What solutions were explored or implemented for such situations?
    Thanks
    Snehal

    Dear Snehal,
    Maintain all such sensitive infotypes in a Z table. Implement a proper BAdi/Enhacement that will be called whenver user accesses the transactions that you want to restrict and validate against that Z table. If the entry exists in Z table raise an error message saying 'You are not authorized' else display.
    You would need to bypass this validation for users other than ABAPer or BASIS. For that you may need to maintain proper naming convention or some logic.
    Please check this sample program from other thread to find BADI and enhancement for a given transaction code. You just need to create a custom program in your system by cut and paste below codes.
    REPORT ZTEST.
    TABLES: TSTC,
    TADIR,
    MODSAPT,
    MODACT,
    TRDIR,
    TFDIR,
    ENLFDIR,
    SXS_ATTRT ,
    TSTCT.
    DATA: JTAB LIKE TADIR OCCURS 0 WITH HEADER LINE.
    DATA: FIELD1(30).
    DATA: V_DEVCLASS LIKE TADIR-DEVCLASS.
    PARAMETERS: P_TCODE LIKE TSTC-TCODE,
    P_PGMNA LIKE TSTC-PGMNA .
    DATA: WA_TADIR TYPE TADIR.
    START-OF-SELECTION.
    IF NOT P_TCODE IS INITIAL.
    SELECT SINGLE * FROM TSTC WHERE TCODE EQ P_TCODE.
    ELSEIF NOT P_PGMNA IS INITIAL.
    TSTC-PGMNA = P_PGMNA.
    ENDIF.
    IF SY-SUBRC EQ 0.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'PROG'
    AND OBJ_NAME = TSTC-PGMNA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    IF SY-SUBRC NE 0.
    SELECT SINGLE * FROM TRDIR
    WHERE NAME = TSTC-PGMNA.
    IF TRDIR-SUBC EQ 'F'.
    SELECT SINGLE * FROM TFDIR
    WHERE PNAME = TSTC-PGMNA.
    SELECT SINGLE * FROM ENLFDIR
    WHERE FUNCNAME = TFDIR-FUNCNAME.
    SELECT SINGLE * FROM TADIR
    WHERE PGMID = 'R3TR'
    AND OBJECT = 'FUGR'
    AND OBJ_NAME EQ ENLFDIR-AREA.
    MOVE : TADIR-DEVCLASS TO V_DEVCLASS.
    ENDIF.
    ENDIF.
    SELECT * FROM TADIR INTO TABLE JTAB
    WHERE PGMID = 'R3TR'
    AND OBJECT in ('SMOD', 'SXSD')
    AND DEVCLASS = V_DEVCLASS.
    SELECT SINGLE * FROM TSTCT
    WHERE SPRSL EQ SY-LANGU
    AND TCODE EQ P_TCODE.
    FORMAT COLOR COL_POSITIVE INTENSIFIED OFF.
    WRITE:/(19) 'Transaction Code - ',
    20(20) P_TCODE,
    45(50) TSTCT-TTEXT.
    SKIP.
    IF NOT JTAB[] IS INITIAL.
    WRITE:/(105) SY-ULINE.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    Sorting the internal Table
    sort jtab by OBJECT.
    data : wf_txt(60) type c,
    wf_smod type i ,
    wf_badi type i ,
    wf_object2(30) type C.
    clear : wf_smod, wf_badi , wf_object2.
    Get the total SMOD.
    LOOP AT JTAB into wa_tadir.
    at first.
    FORMAT COLOR COL_HEADING INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 'Enhancement/ Business Add-in',
    41 SY-VLINE ,
    42 'Description',
    105 SY-VLINE.
    WRITE:/(105) SY-ULINE.
    endat.
    clear wf_txt.
    at new object.
    if wa_tadir-object = 'SMOD'.
    wf_object2 = 'Enhancement' .
    elseif wa_tadir-object = 'SXSD'.
    wf_object2 = ' Business Add-in'.
    endif.
    FORMAT COLOR COL_GROUP INTENSIFIED ON.
    WRITE:/1 SY-VLINE,
    2 wf_object2,
    105 SY-VLINE.
    endat.
    case wa_tadir-object.
    when 'SMOD'.
    wf_smod = wf_smod + 1.
    SELECT SINGLE MODTEXT into wf_txt
    FROM MODSAPT
    WHERE SPRSL = SY-LANGU
    AND NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED OFF.
    when 'SXSD'.
    For BADis
    wf_badi = wf_badi + 1 .
    select single TEXT into wf_txt
    from SXS_ATTRT
    where sprsl = sy-langu
    and EXIT_NAME = wa_tadir-OBJ_NAME.
    FORMAT COLOR COL_NORMAL INTENSIFIED ON.
    endcase.
    WRITE:/1 SY-VLINE,
    2 wa_tadir-OBJ_NAME hotspot on,
    41 SY-VLINE ,
    42 wf_txt,
    105 SY-VLINE.
    AT END OF object.
    write : /(105) sy-ULINE.
    ENDAT.
    ENDLOOP.
    WRITE:/(105) SY-ULINE.
    SKIP.
    FORMAT COLOR COL_TOTAL INTENSIFIED ON.
    WRITE:/ 'No.of Exits:' , wf_smod.
    WRITE:/ 'No.of BADis:' , wf_badi.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'No userexits or BADis exist'.
    ENDIF.
    ELSE.
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON.
    WRITE:/(105) 'Transaction does not exist'.
    ENDIF.
    AT LINE-SELECTION.
    data : wf_object type tadir-object.
    clear wf_object.
    GET CURSOR FIELD FIELD1.
    CHECK FIELD1(8) EQ 'WA_TADIR'.
    read table jtab with key obj_name = sy-lisel+1(20).
    move jtab-object to wf_object.
    case wf_object.
    when 'SMOD'.
    SET PARAMETER ID 'MON' FIELD SY-LISEL+1(10).
    CALL TRANSACTION 'SMOD' AND SKIP FIRST SCREEN.
    when 'SXSD'.
    SET PARAMETER ID 'EXN' FIELD SY-LISEL+1(20).
    CALL TRANSACTION 'SE18' AND SKIP FIRST SCREEN.
    ENDCASE.
    Alternatively, you can do the following:
    1. For what ever transaction u want the enhancement .. just check for the System-->status (menu) and find out the PROGRAM name....
    2. Double click on to the program name and go inside the program (Abap editor)
    3. Search for "Call Customer-function " ... and u'll get some search results .. If u get results then u have enhancement in that tcode .....
    4. Then it actually calls a Function module .... copy the Function module name .... go to SE80 (object navigator) click on "Repository Information system" then Customer Enhancements .... Give the Function module name in the "Components" field and click Execute ....
    ull get a list of Enhancements related to that Componene....
    5. Choose which ever enhancement will suit ur business need ..
    6. Go to CMOD... create a project .... assign ur enhancement ... and then code ur logic.... activate ur enhancement in CMOD ....... Ur Buisness need will be solved...
    For a user exit......
    Finding whether there is any User Exit or not for tcode VA42
    1. For what ever transaction u want the user exit .. just check for the System-->status (menu) and find out the PROGRAM name.... ( The program name would be for our scenario "SAPMV45A" )
    2. Double click on to the program name and go inside the program (Abap editor)
    3. Search for the word "USEREXIT" .... u ll find all the user exits in the search result .. and find ur's then ...
    Hope this will help.
    Regards,
    Naveen.

Maybe you are looking for

  • Here Drive + Beta (Navigation region issue)

    Hi all. Well, long story short , i had a Lumia 800 until march and recently bought a Lumia 920, so i gave the 800 to my sister, till now all is good except for the shocking news i discovered yesterday when tried to navigate to a destination and here

  • Issue on Badi Execution for copy appset

    Hai, I have write a badi to Copy Transaction data from appset to another appset it works fine and now i has to enhance the code to copy same to another account. here comes the issue., when i execute the code for hard coded it works fine and post the

  • Can I save my still frames in iPhoto or similar

    Hello ... I have taken a number of still frames from my video event and made a picture project ... However when I export it .. it ends up as a video file ... Is there a way of saving single pictures into iPhoto or whatever ... so that I can use these

  • CS5 Master Suite AE/Premier requires Intel?

    Wow, I just went to the link for eval on the CS5 Suite and they stated it requires an Intel 64 bit processor. I recently (last week)  got a computer with an AMD Quad-core. You've got to be kidding me that both CS5AE and CS5Premier don't support non-I

  • Function  giving numeric overflow

    When i call this function with parameter- 6244628707 i get this error-numeric overflow. CREATE OR REPLACE FUNCTION TATA_ICR.isprime (p_number NUMBER) RETURN NUMBER IS BEGIN IF p_number = 3 or p_number=1 THEN RETURN 1; END IF; FOR i IN 3 .. p_number -