<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>SAP</title>
        <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/category/51.aspx</link>
        <description>SAP</description>
        <language>en-US</language>
        <copyright>Shawn Weisfeld</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>Cannot connect SAP Business Objects Data Services Designer to MS SQL Server</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/23/cannot-connect-sap-business-objects-data-services-designer-to-ms.aspx</link>
            <description>&lt;p&gt;I was getting the following error.    &lt;br /&gt;ODBC Call &amp;lt;SQLDriverConnect&amp;gt; for data source &amp;lt;foo&amp;gt; failed:     &lt;br /&gt;&amp;lt;[Microsoft][ODBC Driver Manager] Data source name not found and no default     &lt;br /&gt;Driver specified&amp;gt;. Notify Customer Support. (BODI-1112346)     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.drowningintechnicaldebt.com/images/www_drowningintechnicaldebt_com/ShawnWeisfeld/WindowsLiveWriter/CannotconnectSAPBusinessObjectsDataServi_106EA/clip_image001_2.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001" border="0" alt="clip_image001" src="http://www.drowningintechnicaldebt.com/images/www_drowningintechnicaldebt_com/ShawnWeisfeld/WindowsLiveWriter/CannotconnectSAPBusinessObjectsDataServi_106EA/clip_image001_thumb.gif" width="653" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt; &lt;a href="http://www.drowningintechnicaldebt.com/images/www_drowningintechnicaldebt_com/ShawnWeisfeld/WindowsLiveWriter/CannotconnectSAPBusinessObjectsDataServi_106EA/clip_image001_2.gif"&gt;&lt;/a&gt;  &lt;p&gt;If you see this guy try installing the "Microsoft SQL Server 2008 Native Client". You can download it from Microsoft (&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c&amp;amp;DisplayLang=en)"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=c6c3e9ef-ba29-4a43-8d69-a2bed18fe73c&amp;amp;DisplayLang=en)&lt;/a&gt;. Scroll about 1/2 way down the page and look for the version for your processor. . . .     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.drowningintechnicaldebt.com/images/www_drowningintechnicaldebt_com/ShawnWeisfeld/WindowsLiveWriter/CannotconnectSAPBusinessObjectsDataServi_106EA/clip_image001%5B4%5D.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image001[4]" border="0" alt="clip_image001[4]" src="http://www.drowningintechnicaldebt.com/images/www_drowningintechnicaldebt_com/ShawnWeisfeld/WindowsLiveWriter/CannotconnectSAPBusinessObjectsDataServi_106EA/clip_image001%5B4%5D_thumb.gif" width="672" height="229" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Hopes this saves you the frustration I have had. . . . &lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/784.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Shawn Weisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/23/cannot-connect-sap-business-objects-data-services-designer-to-ms.aspx</guid>
            <pubDate>Mon, 23 Aug 2010 20:23:06 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/784.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2010/08/23/cannot-connect-sap-business-objects-data-services-designer-to-ms.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/784.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/784.aspx</trackback:ping>
        </item>
        <item>
            <title>SAP .NET Connector Password Error</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/07/21/sap-net-connector-password-error.aspx</link>
            <description>&lt;p&gt;It appears from some testing that one of the libraries that ships with the SAP .NET Connector doesn’t support hardened passwords. You might get the following error:&lt;/p&gt;  &lt;p&gt;“Name or password is incorrect (repeat logon)” &lt;/p&gt;  &lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/shawnweisfeld/clip_image002_7310E8C0.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://drowningintechnicaldebt.com/shawnweisfeld/clip_image002_thumb_23C3F06C.jpg" width="634" height="341" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;To correct the problem you need to put the latest version of the librfc32.dll into the bin folder of your .NET Application. If you have the SAP client installed on your desktop you will find this dll in the c:\windows\system32\ folder.&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/315.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/07/21/sap-net-connector-password-error.aspx</guid>
            <pubDate>Tue, 21 Jul 2009 06:20:18 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/315.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/07/21/sap-net-connector-password-error.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/315.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/315.aspx</trackback:ping>
        </item>
        <item>
            <title>System namespace conflict in SAP web services</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/04/17/system-namespace-conflict-in-sap-web-services.aspx</link>
            <description>&lt;p&gt;My colleague, Jerome Nicolas, found a solution the problem outlined below and since he doesn't have a blog and we thought this was some great information we decided to post it to mine. Hope it helps.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Scenario&lt;/strong&gt;: adding a web reference in Visual Studio to an SAP web service that was created from a remotely enabled function module with a table parameter associated type BAPIRET2.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Problem&lt;/strong&gt;: The ABAP object BAPIRET2 is typically used to return messages when calling a BAPI, but it contains a field named “SYSTEM” which can conflict with the System namespace in .NET. If you create a web service from a function module that uses BAPIRET2 and try to set up a web reference in Visual Studio, you’ll get a build error like this:&lt;/p&gt;  &lt;p&gt;&lt;i&gt;An object reference is required for the nonstatic field, method, or property 'SAPWebService.SAPWebRef.Bapiret2.System.get'&lt;/i&gt;&lt;/p&gt;  &lt;p&gt;for every line in Reference.cs that looks like this:&lt;/p&gt;  &lt;p&gt;System.Xml.Serialization.XmlElementAttribute(Form=System.Xml.Schema.XmlSchemaForm.Unqualified)]&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;: To avoid this error without having to change the code in all your .NET applications that consume these web services, you can create a copy of BAPIRET2 in SAP and rename the SYSTEM field. In this case, we copied BAPIRET2 to ZRFC_BAPIRET2_TAB and renamed the SYSTEM field to SYSTEMSAP.&lt;/p&gt;  &lt;p&gt;Original BAPIRET2:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image002_2577513F.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image002_thumb_7D64A21F.jpg" width="244" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;New object ZRFC_BAPIRET2_TAB&lt;/p&gt;  &lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image004_15F43F70.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image004" border="0" alt="clip_image004" src="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image004_thumb_6DE19050.jpg" width="244" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Then in your function module, use the new object instead of BAPIRET2.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image006_1B62B014.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image006" border="0" alt="clip_image006" src="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image006_thumb_012246F0.jpg" width="244" height="184" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now when you run the SAP web service wizard, it generates a WSDL with the new SYSTEMSAP field. And viola! No more build errors.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image008_32ADB485.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="clip_image008" border="0" alt="clip_image008" src="http://drowningintechnicaldebt.com/blogs/shawnweisfeld/clip_image008_thumb_11BA41DE.jpg" width="244" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/292.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/04/17/system-namespace-conflict-in-sap-web-services.aspx</guid>
            <pubDate>Fri, 17 Apr 2009 16:55:41 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/292.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2009/04/17/system-namespace-conflict-in-sap-web-services.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/292.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/292.aspx</trackback:ping>
        </item>
        <item>
            <title>Using XML\A and C# to Query SAP BW</title>
            <link>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/14/using-xml-a-and-c-to-query-sap-bw.aspx</link>
            <description>&lt;p mce_keep="true"&gt;Need to query SAP BW from your .NET application? This is a trivial task with XML\A and C#. XML\A is a specification that allows multidimentional datasources to be queried by applications. It is how Reporting Services talks to SAP BW (&lt;a href="http://technet.microsoft.com/en-us/library/bb508810(SQL.90).aspx" mce_href="http://technet.microsoft.com/en-us/library/bb508810(SQL.90).aspx"&gt;http://technet.microsoft.com/en-us/library/bb508810(SQL.90).aspx&lt;/a&gt;).&lt;/p&gt;
&lt;p mce_keep="true"&gt;Step 1: Find out the path to your SAP BW XML\A service, Mine looks something like this "http://&amp;lt;Server&amp;gt;:&amp;lt;Port&amp;gt;/sap/bw/xml/soap/xmla"&lt;/p&gt;
&lt;p mce_keep="true"&gt;Step 2: Open a .NET project and create a web reference to that service, I called mine MsXmlAnalysis&lt;/p&gt;
&lt;p mce_keep="true"&gt;Step 3: Modify the WebService Proxy Class, When .NET generates the proxy class it declares the Execute Mehtod with two arguments the ExecuteCommand and a PropertiesType. The PropertiesType is a base class for the DiscoverProperties object, but has no properties. To fix this we actually want to pass a DiscoverProperties object to the Execute Method. While this compiles fine the XML serializer has a problem serializing the request. To fix this add "[XmlElement(typeof(DiscoverProperties))]" before the PropertiesType argument in the Execute Methods Signature. It should look like this "public System.Xml.XmlElement Execute([System.Xml.Serialization.XmlElementAttribute(IsNullable=true)] ExecuteCommand Command,  [XmlElement(typeof(DiscoverProperties))]PropertiesType Properties) {"&lt;/p&gt;
&lt;p mce_keep="true"&gt;Step 4: Execute the MDX Query:&lt;br /&gt;using (MsXmlAnalysis.MsXmlAnalysis ws = new MsXmlAnalysis.MsXmlAnalysis())&lt;br /&gt;{&lt;br /&gt; //the _userId and _password are your login credentials to the SAP Server&lt;br /&gt; NetworkCredential nc = new NetworkCredential(_userId, _password);&lt;br /&gt; //the url is the path you found in Step 1&lt;br /&gt; ws.Credentials = nc.GetCredential(new Uri(url), "Basic");&lt;br /&gt; ws.Url = url;&lt;/p&gt;
&lt;p mce_keep="true"&gt; MsXmlAnalysis.ExecuteCommand cmd = new MsXmlAnalysis.ExecuteCommand();&lt;br /&gt; cmd.Statement = "MDX QUERY HERE";&lt;/p&gt;
&lt;p mce_keep="true"&gt; MsXmlAnalysis.DiscoverProperties properties = new MsXmlAnalysis.DiscoverProperties();&lt;br /&gt; properties.PropertyList = new MsXmlAnalysis.DiscoverPropertiesPropertyList();&lt;br /&gt; properties.PropertyList.LocalIdentifier = "1033";&lt;br /&gt; properties.PropertyList.DataSourceInfo = "default";&lt;br /&gt; properties.PropertyList.Content = "SchemaData";&lt;br /&gt; properties.PropertyList.Format = "Tabular";&lt;/p&gt;
&lt;p mce_keep="true"&gt; XmlElement elem =  ws.Execute(cmd, properties);&lt;br /&gt; //Do something with the element here&lt;br /&gt;}&lt;/p&gt;
&lt;p mce_keep="true"&gt;You can also query metadata out of the SAP BW using the XML\A&lt;/p&gt;
&lt;p mce_keep="true"&gt;Here is a list of different requests you can do: DISCOVER_DATASOURCES, DISCOVER_PROPERTIES, MDSCHEMA_CUBES, MDSCHEMA_CUBES, MDSCHEMA_DIMENSIONS, MDSCHEMA_HIERARCHIES, SAP_VARIABLES, MDSCHEMA_MEASURES, MDSCHEMA_PROPERTIES. If you want to limit your search to a specific cube specify a catalog and cube specify those values also (some of the queries require catalog and cube to be specified). &lt;/p&gt;
&lt;p mce_keep="true"&gt;using (MsXmlAnalysis.MsXmlAnalysis ws = new MsXmlAnalysis.MsXmlAnalysis())&lt;br /&gt;{&lt;br /&gt; NetworkCredential nc = new NetworkCredential(_userId, _password);&lt;br /&gt; ws.Credentials = nc.GetCredential(new Uri(url), "Basic");&lt;br /&gt; ws.Url = url;&lt;/p&gt;
&lt;p mce_keep="true"&gt; MsXmlAnalysis.DiscoverProperties properties = new MsXmlAnalysis.DiscoverProperties();&lt;br /&gt; properties.PropertyList = new MsXmlAnalysis.DiscoverPropertiesPropertyList();&lt;br /&gt; properties.PropertyList.LocalIdentifier = "1033";&lt;br /&gt; properties.PropertyList.DataSourceInfo = "default";&lt;br /&gt; properties.PropertyList.Content = "SchemaData";&lt;br /&gt; properties.PropertyList.Format = "Tabular";&lt;/p&gt;
&lt;p mce_keep="true"&gt; MsXmlAnalysis.DiscoverRestrictions restrictions = new MsXmlAnalysis.DiscoverRestrictions();&lt;br /&gt; restrictions.RestrictionList = new MsXmlAnalysis.DiscoverRestrictionsRestrictionList();&lt;/p&gt;
&lt;p mce_keep="true"&gt; if (catalog != null &amp;amp;&amp;amp; cube != null&lt;br /&gt;     &amp;amp;&amp;amp; catalog.Length &amp;gt; 0 &amp;amp;&amp;amp; cube.Length &amp;gt; 0)&lt;br /&gt; {&lt;br /&gt;     restrictions.RestrictionList.CATALOG_NAME = catalog;&lt;br /&gt;     restrictions.RestrictionList.CUBE_NAME = cube;&lt;br /&gt; }&lt;/p&gt;
&lt;p mce_keep="true"&gt; XmlElement elem = ws.Discover(request, restrictions, properties);&lt;br /&gt; //Do something with the element here&lt;br /&gt;}&lt;/p&gt;&lt;img src="http://www.drowningintechnicaldebt.com/ShawnWeisfeld/aggbug/195.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>sweisfeld</dc:creator>
            <guid>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/14/using-xml-a-and-c-to-query-sap-bw.aspx</guid>
            <pubDate>Thu, 14 Jun 2007 20:04:00 GMT</pubDate>
            <wfw:comment>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/195.aspx</wfw:comment>
            <comments>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/archive/2007/06/14/using-xml-a-and-c-to-query-sap-bw.aspx#feedback</comments>
            <slash:comments>3</slash:comments>
            <wfw:commentRss>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/comments/commentRss/195.aspx</wfw:commentRss>
            <trackback:ping>http://www.drowningintechnicaldebt.com/ShawnWeisfeld/services/trackbacks/195.aspx</trackback:ping>
        </item>
    </channel>
</rss>
