<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>SAP Experts: VMware Virtualization &#124; Consulting &#124; Integration - DataXstream &#187; Tim Yates</title>
	<atom:link href="http://www.dataxstream.com/author/tyates/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dataxstream.com</link>
	<description>SAP Certified Consultants</description>
	<lastBuildDate>Tue, 07 Feb 2012 23:57:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Lessons Learned for Decision Makers and Leads from a Successful SAP Retail Project Part 2 &#8211; Client Resources</title>
		<link>http://www.dataxstream.com/2012/01/sap-retail-lessons-learned-part-2-client-resources/</link>
		<comments>http://www.dataxstream.com/2012/01/sap-retail-lessons-learned-part-2-client-resources/#comments</comments>
		<pubDate>Thu, 12 Jan 2012 18:49:19 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Retail]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Lessons Learned]]></category>
		<category><![CDATA[LOM]]></category>
		<category><![CDATA[lumber liquidators]]></category>
		<category><![CDATA[POS]]></category>
		<category><![CDATA[Retail]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Tim Yates]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=10139</guid>
		<description><![CDATA[My first post of the SAP Retail Lessons Learned series, I provided some background information on the SAP Retail implementation project that will be used as the primary reference for the lessons learned. I also listed a few over-arching themes for the entire series as well as major Lessons Learned categories that will be featured [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">My <a href="http://www.dataxstream.com/2012/01/sap-retail-project-lessons-learned/">first post</a> of the SAP Retail Lessons Learned series, I provided some background information on the SAP Retail implementation project that will be used as the primary reference for the lessons learned. I also listed a few over-arching themes for the entire series as well as major Lessons Learned categories that will be featured in upcoming posts.</p>
<p style="text-align: justify;">In continuing my series of lessons learned with SAP Retail I would like to cover the topic of Client Resources and Planning. Again, in general many of these lesson I have learned could be applied to any project and I can easily draw parallels from other SAP industry solution implementations that I have led in the past. I will do my best to highlight where I think there are specific retail differences.</p>
<h3>There Are <span style="text-decoration: underline;">Never</span> Enough Client Resources</h3>
<p style="text-align: justify;">This is the case on almost any large-scale project, not just SAP projects. It impacts smaller organizations and it impacts retail businesses more because they tend to run leaner IT organizations. So you might be saying to yourself, &#8220;big deal; what project not funded by the government doesn&#8217;t have enough resources?&#8221; This one point however might be the most important one I make in this series.</p>
<p><span id="more-10139"></span></p>
<p style="text-align: justify;">Think about it. In a new SAP Retail implementation you are going to completely replace the core of your IT business systems. This typically impacts all aspects of your business; Finance, Store Operations, Merchandising, and Warehousing. It typically reaches outside your organization and impacts your Business Partners as well. So how do you fix resource problems? As a leader, and I am specifically talking to the CEO (or your organization&#8217;s equivalent) here, because he/she is the only one that can make things happen on the resource front. CEO&#8217;s, you need to engage the entire business in this process in a meaningful and organized way from the project&#8217;s inception and kick-off all the way to go-live and post go-live support.</p>
<p style="text-align: justify;">I know from experience that this kind of ideal C-suite-to-IT alignment does not always occur. My uncle was the president of a division of Honeywell that implemented SAP. I can remember talking with him about his project and being a little frustrated with him. He knew the project was important and impactful but from the language he used I could tell that he did not grasp the significance of the undertaking that an SAP implementation demands and that more overall focus and dedication from the organization as a whole would reduce the time required for the business to successfully adapt to the new system.</p>
<p style="text-align: justify;">Don’t make this mistake in your implementation; engage the best of the best in your organization on the project, and engage the entire organization in meaningful ways throughout the entire project. The more exposure and input people have doing the implementation the easier the transition will be. Always remember, there is no such thing as &#8220;cutting corners&#8221; in SAP implementations (or any SAP project for that matter). You always end up getting as much from your SAP system as you put into it. Settling for adequate resources at bargain prices will do two things: cut immediate resource overhead costs and produce an adequate SAP system for your business.</p>
<h3>Client Management Expectations For Their Internal SAP Resources Are Always Unrealistic</h3>
<p style="text-align: justify;">OK, so this is not specific to Retail; it is a recurring theme from all my SAP project exposure.</p>
<ul>
<li style="text-align: justify;">First point: unless you have implemented SAP before you and your resources will automatically underestimate what it is going to take to get the job done.</li>
<li style="text-align: justify;">Second: don’t expect seasoned IT resources to work an SAP implementation and come out of it completely capable of supporting the system on their own after go live. One out of ten will be able to fly solo after go live,  the rest will need assistance for sometime in the future. (By the way, the ones that fly solo need to be rewarded significantly, if not they will be consultants within 12 months)</li>
<li style="text-align: justify;">Third: look at what you are asking of your resources. If you have them working on business requirements, functional design, test planning, test script creation, test execution, training, etc., do they really have the capacity to do any of these activities simultaneously while maintaining high-quality output? Engage more of the business and spread out the load. After all, implementing SAP is a business commitment, not an IT department commitment. I will make recommendations in other sections on where you can engage more of the business.</li>
</ul>
<h3>There Is Never Enough Time For Knowledge Transfer</h3>
<p style="text-align: justify;">Knowledge Transfer (KT) is an activity that is always held high at the beginning of the project but it is the first part of the plan and budget to get absorbed when things don’t go as planned and it is never replaced. In addition, it is never given proper consideration, planning, and execution like any other phase of the project. Failing in KT can potentially squander all the effort and investment you&#8217;ve put into an SAP project; new technology has ZERO value if your business users are not proficient at using the system. You should treat knowledge transfer planning and execution just like testing, with specific goals, topics identified and capacity planned. It should also be spread out thoughtfully across the duration of the project. Expectations / level of KT expected also needs to be clearly communicated to both the consulting team and internal team. You need to have realistic expectations here. At the end of KT, your internal resources (especially if new to SAP) will not be able to do what your consulting team can. Knowledge transfer is often approached using the &#8220;fire hose&#8221; technique. SPOILER: it does not work.</p>
<p style="text-align: justify;"><em><strong>Fire Hose Technique - </strong> <span style="color: #000000;">Tasking several of your senior SAP consultants to simultaneously knowledge transfer to the same beginner SAP client resource via a two week brain-dump.</span></em></p>
<p style="text-align: justify;">There are very few people that can effectively learn this way. Genuine knowledge transfer can only truly be achieved through doing, not watching or listening. Engagement and participation throughout the entire project lifespan will lead to knowledge transfer organically. The most effective way to execute knowledge transfer is to plan a PPS (Post Production Support) phase that keeps the consulting team engaged &#8211; some full time, some part time, and some as needed. This will enable the transferring responsibility and knowledge overtime. It is important to understand you will need to push the internal team here, you want the consulting team as a safety net not a crutch.</p>
<h3>Client Resources Can Cause Delays Too</h3>
<p style="text-align: justify;">OK, now it&#8217;s time for me to call out all my clients from the past. This is more of a universal lesson learned but it especially applies to SAP Retail projects. Consultants and consulting teams are not always responsible for project delays. It is our job as consultants in most cases to take the heat and blame whenever deliverable dates are missed; that is part of our job function and it comes with the territory. What sort of things am I referring to? Information needed by the project team needs to flow quickly, and there is often information and tasks that extend outside of the identified SAP project team. It is important that from the top down those tasks are given priority and accomplished with a sense of urgency from Day 1. Oftentimes, teams have to push ahead making assumptions and then have to backtrack to fix wrong assumptions once they receive the information from the business. Good consulting teams never sit around twiddling their thumbs while waiting to receive all the information needed; they assume leadership and use good judgement to help their client be successful.</p>
<p style="text-align: justify;">It is also important for SAP project leadership to monitor for “Analysis Paralysis”. While some consultants can be susceptible to this it is more often the client resources that come down with this serious condition. &#8220;Analysis Paralysis&#8221; is the most common reason projects get delayed. If you have unlimited budget then go ahead and try and think of everything. Otherwise you need to quickly review the information you do have, pour on some assumptions, and move forward. You will learn more as you progress through the project and can always go back and refine those critical things that you have missed. Prototyping and pilots give you more opportunity to move forward more quickly with an approach that can be refined as you get smarter.</p>
<p style="text-align: justify;">One last point on client resources delaying projects: do not put procrastinators on your SAP Project team. You need to put your resources that hit the ground running and do their best to stay ahead. The average SAP project costs 16 million dollars. This is a pretty significant capital investment for any company. All it takes is one procrastinator in one area of the project to slow down the efficiency of the entire team.</p>
<p style="text-align: justify;">So I got derailed a bit at the beginning of the week so I am behind schedule on my topic list.  I will do my best to cover planning this evening and post sometime tomorrow to keep on track.</p>
<p style="text-align: justify;">Be on the lookout for my next post, which will Lessons Learned for the Planning phase of an SAP Retail project. The remaining schedule is as follows:</p>
<p>Here is an outline of my future lessons learned post topics:</p>
<ul>
<li><strong>Week 3</strong></li>
<ul>
<li><em>Design - </em>If It Is Hard or Complex You Most Likely Are Taking The Wrong Approach</li>
</ul>
</ul>
<ul>
<li><strong>Week 4</strong></li>
<ul>
<li><em>Execution</em></li>
<ul>
<li>Basis - Size Does Matter</li>
<li>Configuration - Prototype And Prove Out Approach Before You Commit To Process</li>
<li>Development - RICEFW Can Not Be Developed In Silo&#8217;s</li>
</ul>
</ul>
</ul>
<ul>
<li><strong> Week 5</strong></li>
<ul>
<li><em>Testing - </em>Testing Design Is More Important Than Solution Design</li>
<li><em>Go-live Planning &amp; Execution - </em>Have An Implementation Methodology That Tests Your Go-live Plan As You Go</li>
<li><em>Go-live - </em>Big Bang Not A Good Idea For  An SAP Retail Implementation (Without A Pilot)</li>
</ul>
</ul>
<ul>
<li><strong>Week 6</strong></li>
<ul>
<li><em>Post Production Support - </em>Figure This Out Prior To Go-live</li>
</ul>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2012/01/sap-retail-lessons-learned-part-2-client-resources/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lessons Learned for Decision Makers and Leads from a Successful SAP Retail Project</title>
		<link>http://www.dataxstream.com/2012/01/sap-retail-project-lessons-learned/</link>
		<comments>http://www.dataxstream.com/2012/01/sap-retail-project-lessons-learned/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 20:03:27 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Project Management]]></category>
		<category><![CDATA[SAP Retail]]></category>
		<category><![CDATA[SAP Strategy]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[LOM]]></category>
		<category><![CDATA[lumber liquidators]]></category>
		<category><![CDATA[POS]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Yates]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=9936</guid>
		<description><![CDATA[I have spent the last 2 years working on an SAP Retail implementation.  An SAP Retail project is the last place I could have ever imagined myself working.  I have always been drawn more to SAP manufacturing, distribution, and A&#38;D projects.  Being a manufacturing engineer by trade, I am always a little more comfortable with [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">I have spent the last 2 years working on an SAP Retail implementation.  An SAP Retail project is the last place I could have ever imagined myself working.  I have always been drawn more to SAP manufacturing, distribution, and A&amp;D projects.  Being a manufacturing engineer by trade, I am always a little more comfortable with a manufacturing line or warehouse near by.  Even the facility that we ran the SAP project out of had a manufacturing line in it and a warehouse, so it helped to ease my inner engineer.  It also broke my 12 year streak of not having a project in the state I live in.</p>
<p style="text-align: justify;">I have been working with SAP for over 15 years.  This was my first SAP Retail project and once again SAP has proved to me that it can be successfully leveraged and become a competitive advantage for those companies that implement it.  Each time I start a new project in a new industry I think about the vast differences in how the new company will need to leverage SAP and the challenges that unique business will create for the SAP application.  Time and time again a reasonable solution path is achieved and SAP becomes a solid foundation from which the business operates.  The diversity of my own personal experience working with successful SAP customers demonstrates this point.  There are not a lot of similarities in how A Flooring Retailer, Rocket Manufacturer, Pharmaceutical Manufacturer operate, yet they are all very successful at leveraging SAP.</p>
<p><span id="more-9936"></span></p>
<h3 style="text-align: justify;">Project Background</h3>
<p style="text-align: justify;">A little bit about my background in SAP Retail.  I have played quite a few roles over the last 2 years.  I have been an Infrastructure Architect (Design Of Virtual SAP Landscape), Development Lead (Initial Implementation), Stabilization Lead (Post Go-live), and SAP Program Manager (2 Physical Inventory Projects, Implementation Of Canadian Operations, POS (Point of Sale) Redesign, and Store Receiving Redesign).  Through these various roles within this project I have learned some very important new lessons as well as proved out ones I already new.</p>
<h3 style="text-align: justify;">Lessons Learned &#8211; Too many to fit in one post</h3>
<p style="text-align: justify;">I would like to break down my lessons into the various phases of the project, from start to finish I think there are valuable lessons to be learned.  I will start with a lesson learned that applies to all aspects of the project and you will most likely think &#8220;thanks captain obvious for pointing this out&#8221;.  <strong>Rule #1 &#8211; Apply Common Sense</strong> in all decisions you make and look to see that other decision makers are doing the same.  Yes this is obvious but more often then not common sense is not applied.  I will reference this theme as I point out specific lessons learned.  Many of my lessons learned apply to all SAP projects or any project in general.  I will try and highlight lessons that I feel are specific to a retail.</p>
<p style="text-align: justify;">In order to keep this post manageable I am going to break the lessons learned up into a series of posts.  I will add a new post each week until I have covered all the areas that I think are important to cover.  So lets start with project resources.</p>
<h3><strong>Consulting Resources</strong></h3>
<ul>
<li style="text-align: justify;"><strong>Eliminate Under-Performers Quickly</strong> – I personally am not very good at this.  It is in my nature to look to try and help develop an individual to be successful.  However when it comes to consulting resources, career development does not apply on a project team.  We had several resources (not on my team) that did not have the skills and/or could not keep up with the pace.  We worked around them instead of eliminating them.  DataXstream did have a contract resource we brought on to my team and within a couple weeks we could see that he had interviewed better than he executed.  It is never easy to say we made a mistake to the client but we did and we replaced him.</li>
<li style="text-align: justify;"><strong>Cheap Resources Are Not Always Cheap</strong> – You could also reference the lesson above because it usually applies here.  However decision makers managing budgets tend to try and make the numbers work instead of ensuring they have the right people or are doing the right thing.  If a resource does not have the skills, drive, attitude or lacks all of these then it does not matter if the numbers look good in Excel.  This is a common thread to all SAP projects.</li>
<li style="text-align: justify;"><strong>With Free Resources You Get What You Pay For</strong> – There are many free resources that consulting firms provide that add real value.  However it is important to recognize that not all do and some provide negative value.  Free + Negative Value = Expensive.</li>
<li style="text-align: justify;"><strong>A Good (Non-Retail Experienced SAP Resource) is Better Than A Bad (SAP Retail Experienced Resource) </strong>– An SAP Retail System is 95% the same as any other SAP system.  Yes, there are differences. A good resource will have worked in a divers set of industries in the past.  They will pick up retail differences.  A weak resource with Retail experience will continue to be a weak resource.</li>
</ul>
<p>Here is an outline of my future lessons learned post topics:</p>
<ul>
<li><strong>Week 2</strong></li>
<ul>
<li><em>Client Resources - </em>There Are Never Enough Client Resources</li>
<li><em>Planning - </em>Establish Planning Rules That All Decision Makers Agree To And Then Follow Them</li>
</ul>
</ul>
<ul>
<li><strong>Week 3</strong></li>
<ul>
<li><em>Design - </em>If It Is Hard or Complex You Most Likely Are Taking The Wrong Approach</li>
</ul>
</ul>
<ul>
<li><strong>Week 4</strong></li>
<ul>
<li><em>Execution</em></li>
<ul>
<li>Basis - Size Does Matter</li>
<li>Configuration - Prototype And Prove Out Approach Before You Commit To Process</li>
<li>Development - RICEFW Can Not Be Developed In Silo&#8217;s</li>
</ul>
</ul>
</ul>
<ul>
<li><strong> Week 5</strong></li>
<ul>
<li><em>Testing - </em>Testing Design Is More Important Than Solution Design</li>
<li><em>Go-live Planning &amp; Execution - </em>Have An Implementation Methodology That Tests Your Go-live Plan As You Go</li>
<li><em>Go-live - </em>Big Bang Not A Good Idea For  An SAP Retail Implementation (Without A Pilot)</li>
</ul>
</ul>
<ul>
<li><strong>Week 6</strong></li>
<ul>
<li><em>Post Production Support - </em>Figure This Out Prior To Go-live</li>
</ul>
</ul>
<p>Hope you have enjoyed this post and I will see you next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2012/01/sap-retail-project-lessons-learned/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Changing SAP IDOCs Status In Mass / Mass Deletion Of IDOCs</title>
		<link>http://www.dataxstream.com/2009/10/mass-status-change-sap-idoc/</link>
		<comments>http://www.dataxstream.com/2009/10/mass-status-change-sap-idoc/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 04:00:20 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[ALE]]></category>
		<category><![CDATA[IDOC]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Timothy Yates]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2295</guid>
		<description><![CDATA[<p>From time to time it becomes necessary to change the status of SAP IDOCs in SAP. The most common scenario is the requirement to mark SAP IDOCs for detetion. There is no good way to mass mark IDOCs for deletion via the standard IDOC processing transaction BD87. However there is a program that will let you change status.</p>
<p>RC1_IDOC_SET_STATUS</p>
<p><strong>Caution: This program should be used with great care and consideration. Inproper use of this program can result in data consistancy issues. Make sure you know what you are deleting, why you are deleting it, and what is required to correctly update you system after deleting.</strong></p>
]]></description>
			<content:encoded><![CDATA[<h2>Mass Change of SAP IDOC Status</h2>
<p>From time to time it becomes necessary to change the status of SAP IDOCs in SAP. The most common scenario is the requirement to mark SAP IDOCs for deletion. There is no good way to mass mark IDOCs for deletion via the standard IDOC processing transaction BD87. However there is a program that will let you change status.</p>
<p>RC1_IDOC_SET_STATUS</p>
<p><strong>CAUTION: This program should be used with great care and consideration. Improper use of this program can result in data consistency issues. Make sure you know what you are deleting, why you are deleting it, and what is required to correctly update you system after deleting.</strong></p>
<p><span id="more-2295"></span></p>
<h2>Example: Marking IDOCs for Deletion In Mass</h2>
<p>It is pretty typical for support users to set the deletion flag on IDOCs that have been incorrectly created and have errored. When there are a small number of IDOCs this is possible via transaction BD87.</p>
<p>An inbound IDOC in error will have the status 51, when it is marked for deletion it has a status of 68.</p>
<p>A view of the IDOCs to be deleted in WE05.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051528.jpg" alt="200910051528.jpg" width="480" height="96" /></p>
<p>To mass delete IDOCs run the following program via SE38: RC1_IDOC_SET_STATUS via the SAP Transaction: SE38</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051501.jpg" alt="200910051501.jpg" width="480" height="238" /></p>
<p>There are only a few parameters on the selection screen for this program. It is most important that you correctly restrict the IDOCs you select with this program. The program automatically defaults to marking inbound IDOCs in error for deletion.</p>
<p>To mass select IDOCs to be marked for deletion select: <img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051504.jpg" alt="200910051504.jpg" width="43" height="20" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051522.jpg" alt="200910051522.jpg" width="480" height="325" /></p>
<p>There are many options for selecting and restricting the IDOCs to Mass process. Select by single value or range. Restrict by single value or range.</p>
<p>The <img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051506.jpg" alt="200910051506.jpg" width="23" height="17" /> allows you to upload a list of IDOCs from a text file.</p>
<p>The <img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051514.jpg" alt="200910051514.jpg" width="24" height="20" /> allows you to apply a list from your clipboard.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051531.jpg" alt="200910051531.jpg" width="480" height="221" /></p>
<p>Execute the program <img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051529.jpg" alt="200910051529.jpg" width="25" height="20" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/2009100515291.jpg" alt="200910051529.jpg" width="480" height="189" /></p>
<p>Check the status of the 3 IDOCs in WE05</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051534.jpg" alt="200910051534.jpg" width="480" height="102" /></p>
<h2>Example: Changing IDOCs Status To Repost</h2>
<p>It is also possible to use this program to reset an IDOC so that it can be reprocessed.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051549.jpg" alt="200910051549.jpg" width="480" height="222" /></p>
<p>With the following selection we are going to reset the IDOCs with status 68 marked for deletion back to status 64 to try and reprocess them.</p>
<p>Execute the program <img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051529.jpg" alt="200910051529.jpg" width="25" height="20" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/2009100515291.jpg" alt="200910051529.jpg" width="480" height="189" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/10/200910051548.jpg" alt="200910051548.jpg" width="480" height="97" /></p>
<p>As you can see, program RC1_IDOC_SET_STATUS is very helpful, but please be careful when you use it!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/10/mass-status-change-sap-idoc/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configuring SAP NetWeaver to send Email Externally – SAP Connect</title>
		<link>http://www.dataxstream.com/2009/09/configuring-sap-connect/</link>
		<comments>http://www.dataxstream.com/2009/09/configuring-sap-connect/#comments</comments>
		<pubDate>Thu, 03 Sep 2009 04:00:51 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[.Net Connector]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[Basis/Netweaver]]></category>
		<category><![CDATA[NetWeaver]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP Connect]]></category>
		<category><![CDATA[SAP Email]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Timothy Yates]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/2020/12/configuring-sap-netweaver-to-send-email-externally-sap-connect/</guid>
		<description><![CDATA[<p>SAP Connect has been around for quite sometime. I am sure there are plenty of documented procedures on setting it up. I recently had to configure it. I have not done this in a long time, so I figured I would capture the setup as well as point out some things to watch for.</p>
<p>SAP Connect can be configured for a number of different message relaying purposes. This blog post will only cover sending E-mail from SAP externally.</p>
]]></description>
			<content:encoded><![CDATA[<p>SAP Connect has been around for quite sometime. I am sure there are plenty of documented procedures on setting it up. I recently had to configure it. I have not done this in a long time, so I figured I would capture the setup as well as point out some things to watch for.</p>
<p>SAP Connect can be configured for a number of different message relaying purposes. This blog post will only cover sending E-mail from SAP externally.</p>
<p><strong>Some basic requirements and points:</strong></p>
<ul>
<li>SAP Connect configuration is client dependent. It has to be configured in each client where you want to use it.</li>
<li>SAP Connect requires an external SMTP server to send emails.</li>
<li>SAP Connect needs to be authorized to use the SMTP server to send emails.</li>
<li>You need to have applications configured in SAP that send external emails.</li>
</ul>
<p><strong>High level outline of process:</strong></p>
<ul>
<li>SMTP Server Details</li>
<li>Configuring SAP Connect INT Node</li>
<li>Configuring Routes For SAP Connect INT Node</li>
<li>Configuring SAP Connect Default Domain</li>
<li>Scheduling Send Process</li>
<li>Setting Up Your User ID with and External Email Address</li>
<li>Testing Your Configuration</li>
<li>Monitoring SAP Connect</li>
</ul>
<p><span id="more-1804"></span></p>
<p><strong>SMTP Server Details</strong></p>
<p>Let&#8217;s start with the most important piece of the puzzle. If you don&#8217;t get this part right, your configuration will not work. You need an external SMTP server to relay your outbound email messages. Most companies running SAP will have at least one SMTP server. It is also possible you might have several to choose from. So, you need to identify the appropriate SMTP server.</p>
<p>You will need to know the SMTP server Host Name as well as the Port. The default Port for SMTP is 25, but your administrator has the option to change this. Make sure you confirm the correct port number.</p>
<p>Identifying your SMTP server is the first piece of the puzzle. The next piece is to request permission to use it. Most corporate SMTP servers are protected&#8211;they only allow trusted servers / authenticated users to use them. You will most likely need to contact your email system&#8217;s administrator to request authorization for your SAP servers. If you will be using SAP Connect in your Development, Test, and Production environments, it is a good idea to request all of them at once. <em>NOTE: If you physically move your SAP server to new hardware in the future or change your servers IP address this authorization will most likely break.</em></p>
<p>The reason your corporate SMTP server is typically protected is to avoid internal / corporate spammers&#8211;both intentional and unintentional.</p>
<p><strong>Configuring SAP Connect INT Node</strong></p>
<p>Now that we have an SMTP server to talk to, we need to configure SAP Connect. The transaction in SAP is SCOT. Remember, SAP Connect is client dependent so you will need to repeat this procedure in all clients that require the ability to send email externally.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/SAPTransactionSCOT_1.jpg" alt="SAP Transaction SCOT" width="480" height="297" /></p>
<p>When you execute SCOT you should see a similar screen.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280904.jpg" alt="200907280904.jpg" width="480" height="269" /></p>
<p>You will need to select the INT entry, and from the &#8220;View&#8221; menu, select &#8220;Node&#8221;.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809041.jpg" alt="200907280904.jpg" width="480" height="256" /><br />
Select the INT entry again and click the create paper <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908151751.jpg" alt="200908151751.jpg" width="15" height="18" /> on the tool bar.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809051.jpg" alt="200907280905.jpg" width="480" height="416" /></p>
<ol>
<li>Fill out the Description field as desired.</li>
<li>Set the &#8220;Node in use&#8221; flag.</li>
<li>Fill out the Mail Host (Host Name or IP Address) &#8211; Host Name is recommended.</li>
<li>Fill out the Mail Port (Default 25)</li>
<li>The default Code Page will work for many implementations.</li>
<li>Next, click the SET button next to Internet in the Supported address types</li>
</ol>
<p>The following screen should appear:</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280905.jpg" alt="200907280905.jpg" width="480" height="436" /></p>
<p>Here we configure allowed routes for external emails. In this example we have configured a &#8220;*&#8221; which will allow any email address domain to be routed. It is also possible to only allow specific routes, like dataxstream.com or sap.com.</p>
<p>If your system manages HR data or patient data, it is a good idea to check with your compliance office to ensure external email policies are being adhered to in productive systems.</p>
<p>Additionally, you may also want to restrict certain routes in Test and Dev systems so your testing does not generate emails to external business partners.</p>
<p>After you click the green check your screen will look as follows.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280906.jpg" alt="200907280906.jpg" width="420" height="273" /></p>
<p><strong>Configuring SAP Connect Default Domain</strong></p>
<p>Now you need to configure a default domain for the server. From the settings menu select Default Domain.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280907.jpg" alt="200907280907.jpg" width="480" height="306" /></p>
<p>Add your company domain name.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809071.jpg" alt="200907280907.jpg" width="480" height="83" /></p>
<p><strong>Scheduling Send Process</strong></p>
<p>Messages are not relayed synchronously. They are relayed asynchronously via a scheduled background job. You must schedule this job for your messages to be relayed.</p>
<p>On the menu bar click the execute button <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260901.jpg" alt="200908260901.jpg" width="24" height="24" /> .</p>
<p>The following screen will pop up.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280913.jpg" alt="200907280913.jpg" width="480" height="184" /></p>
<p>Now click the the create button pulldown <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260903.jpg" alt="200908260903.jpg" width="39" height="22" />, and select &#8220;Schedule Job for INT&#8221;.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809141.jpg" alt="200907280914.jpg" width="480" height="84" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280914.jpg" alt="200907280914.jpg" width="329" height="232" /></p>
<p>Name your job. Remember, SAP Connect is client dependent so if you are in a multi client development or test system it is a good idea to include the client number in the name.</p>
<p>It will default address type to INT Internet Mail Address.</p>
<p>If you have a high volume of messages you will want to up the number of work processes as well as consider using a server group if you have them configured.</p>
<p>You will want to schedule with job with a system ID or background ID. In this case we are using BATCH-ID.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280915.jpg" alt="200907280915.jpg" width="446" height="386" /></p>
<p>Click Continue.</p>
<p>The following screen allows you to customize the setup of the background job. I have schedule this job to run every ten minutes on the two minute of the hour (e.g. xx:02, xx:12, xx:22, xx:32, xx:42, xx:52).</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809163.jpg" alt="200907280916.jpg" width="480" height="409" /></p>
<p>To adjust the period select <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260913.jpg" alt="200908260913.jpg" width="75" height="16" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809162.jpg" alt="200907280916.jpg" width="179" height="226" /></p>
<p>In this case we are picking a period more frequent than Hourly so select <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260914.jpg" alt="200908260914.jpg" width="128" height="24" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280916.jpg" alt="200907280916.jpg" width="175" height="267" /></p>
<p>Fill in the period that meets your requirement. Hit save <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260916.jpg" alt="200908260916.jpg" width="22" height="20" /> (you will need to do this several times to get to the next screen).</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809161.jpg" alt="200907280916.jpg" width="480" height="202" /></p>
<p>Hit save <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/2009082609161.jpg" alt="200908260916.jpg" width="22" height="20" /> one more time and it should return you to this screen.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809171.jpg" alt="200907280917.jpg" width="480" height="185" /></p>
<p>You can  review and make changes to your job with the SAP transaction SM36.</p>
<p><strong>Setting Up Your User ID with and External Email Address</strong></p>
<p>If you want SAP users to receive email notifications from SAP applications, you will need to make sure that their email address is correctly maintained on their user account in SAP Transaction SU01.</p>
<p>Please confirm that E-Mail is maintained for users in the Communication Section.<br />
<img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908260934.jpg" alt="200908260934.jpg" width="480" height="303" /></p>
<p><strong>Testing Your Configuration</strong></p>
<p>You can test your configuration using the SAP Business Workplace. The SAP Transaction to access your mailbox is SBWP.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280917.jpg" alt="200907280917.jpg" width="480" height="245" /></p>
<p>Click the New Message Button <img src="http://www.dataxstream.com/wp-content/uploads/2009/08/200908151825.jpg" alt="200908151825.jpg" width="88" height="22" /> .</p>
<p>Create a test message.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809221.jpg" alt="200907280922.jpg" width="480" height="448" /></p>
<p>To test, you need to select an external email address for the Recipient. Make sure the domain is allowed in the route you setup in the prior step. In this example, any external email address should work.</p>
<p>You can review the status of your message by viewing your outbox.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280922.jpg" alt="200907280922.jpg" width="480" height="136" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280924.jpg" alt="200907280924.jpg" width="480" height="299" /></p>
<p>Your message will be sent at the next execution of the mail-send job we just configured.</p>
<p>You can check the status to the send job with SAP transaction SM36.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907280926.jpg" alt="200907280926.jpg" width="480" height="145" /></p>
<p>Once the send program has executed, check the email inbox for the message recipient. You should see your test email.</p>
<p><strong>Monitoring SAP Connect</strong></p>
<p>To monitor you can use the SAP transaction SOST.</p>
<p>Here you will see all outbound messages and their current send status. You can also process the messages from the menu.</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072809261.jpg" alt="200907280926.jpg" width="480" height="218" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/09/configuring-sap-connect/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How To Configure UNIX Security To Allow SAP To Share A File System With Another UNIX Application</title>
		<link>http://www.dataxstream.com/2009/08/sap-fileshare-unix/</link>
		<comments>http://www.dataxstream.com/2009/08/sap-fileshare-unix/#comments</comments>
		<pubDate>Mon, 31 Aug 2009 20:30:27 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[AIX]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Interface Experts]]></category>
		<category><![CDATA[SAP Integration]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Timothy Yates]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/2020/12/how-to-configure-unix-security-to-allow-sap-to-share-a-file-system-with-another-unix-application/</guid>
		<description><![CDATA[<p>If we where to write an interface file to /transfer it would look something like this in UNIX. /transfer -rw-rw-r-- devadm sapsys sap_interface_file.txt Lets quickly jump over the fence and look at JD Edwards. ... So if we where to write an interface file to /transfer on JDE it would look something like this in UNIX. /transfer -rw-rw-r-- jdexe jdexe jde_interface_file.txt We now have two files in the directory.</p>
]]></description>
			<content:encoded><![CDATA[<p>I run into this requirement all the time at clients. My current client is implementing SAP and the development team has decided to build file based interfaces. In this particular case we are implementing interfaces between SAP and JD Edwards.</p>
<p>The basic requirement is as follows: SAP needs to be able to write files that JDE can read/delete and visa-versa JDE needs to write files that SAP can read/delete.  Both servers are running UNIX.</p>
<h3>High level outline of process:</h3>
<ol>
<li>Define Example Landscape</li>
<li>Create An Integration File System</li>
<li>Export File System and Mount</li>
<li>Example Issues / Scenarios</li>
<li>Creating A New UNIX Group</li>
<li>Set Integration Directory Group Ownership and Permissions</li>
<li>Adjusting The Umask</li>
</ol>
<p><span id="more-1754"></span></p>
<h3>Define Examples SAP and JD Edwards Landscape</h3>
<p>So let&#8217;s create an example landscape. In our example, we have an SAP development system with the SID DEV&#8211;we will call this system SAPDEV.  We also have a JDE development system that we will call JDEDEV.  In this example, we will only discuss the steps to integrate the two development servers.  You will need to repeat this process and/or modify this process to configure the rest of your landscape.  Please note DO NOT ever mount production systems to QA and DEV systems.</p>
<h3>Creating An Integration File System</h3>
<p>So, the first step in this process is to create seperate physical file system for your interfaces to use.  This file system is to be separate from the OS, SAP kernel, and SAP database. This is a very important step of the process.  I have been working with SAP customers for many years and I am always amazed that this step is often skipped.  It is important that you create a seperate file system because it is to easy to accidently fill up your file system with interface files.  You certainly don&#8217;t want your interface files sharing the same file system as the OS, SAP Kernal, or SAP DB.  Usually when these componets of the server run out of space bad things happen.</p>
<p>Next you may be wondering how big a file system is required, that answer certainly depends on a lot of project specific variables.  In general, a 10 gig file system should be a good starting point for most SAP projects.  However, an in-depth analysis is required to determine an appropriate amount of storage.</p>
<h3>Export File System and Mount</h3>
<p>In our example, we have created a 10 gigabyte file system for the interfaces and have mounted it to the root of the SAPDEV server as the folder <em>/transfer</em>. We have exported this folder from the SAPDEV host and created an NFS mount to the root of the JDEDEV server as the folder <em>/transfer</em>. Our servers now have a shared file system between them.</p>
<p>In AIX you can check your file systems by using the following command:</p>
<blockquote><p>df -g</p></blockquote>
<p>Or by reviewing the the filesystems file by using the following command:</p>
<blockquote><p>more /etc/filesystems</p></blockquote>
<h3>Example Issues / Scenarios</h3>
<p>So far in our example this has been a pretty straight forward exercise. Now comes the tricky part; making it so each server has the correct permissions to read and write to the files. Let&#8217;s also assume for this example that we are going to open this directory up completely from a permissions perspective.</p>
<p>From the root directory issue the following UNIX command to check the /transfer folders permissions.</p>
<blockquote><p>ls -l | grep transfer</p></blockquote>
<pre>drwxrwxrwx devadm sapsys 1000 Aug 28 2008   transfer</pre>
<p>If your permissions are different from the root director as user &lt;sid&gt;adm, issue the following command:</p>
<blockquote><p>chmod 777 transfer</p></blockquote>
<p>This will completely open up the permission on this directory.</p>
<p>In this example the directory was created by the SAP sidadm account (devadm). The sidadm account has a primary group of sapsys. The permissions on this directory are set to allow any user in any group to read, write, and execute from this directory.</p>
<p>When an ABAP program is developed to write a file, it will always write the file with the &lt;sid&gt;adm account (devadm in our example). When a file is written, it will use the default umask for the user to set the file&#8217;s permissions. If we were to write an interface file to /transfer it would look something like this in UNIX.</p>
<blockquote><p>(SAPDEV) /transfer</p></blockquote>
<blockquote>
<pre>-rw-r--r--  devadm  sapsys  256  Aug 28 2009  sap_interface_file.txt</pre>
</blockquote>
<p>Let&#8217;s quickly jump over the fence and look at JD Edwards. When a JDE program is developed to write a file, it will always write the file with the JDEXE account.  Like SAP, when the file is written it will use the default umask for the user to set the file&#8217;s permissions. If we where to write an interface file to /transfer on JDE it would look something like this in UNIX.</p>
<blockquote><p>(JDEDEV)/transfer</p></blockquote>
<blockquote>
<pre>-rw-r--r--  jdexe  jdexe  256  Aug 28 2009  jde_interface_file.txt
-rw-r--r--  devadm  sapsys  256  Aug 28 2009  sap_interface_file.txt</pre>
</blockquote>
<p>We now have two files in the directory. If you where to list the contents of the directory on either server you will see the two files.</p>
<blockquote><p>ls -l</p></blockquote>
<blockquote>
<pre>/transfer
-rw-r--r--  jdexe  jdexe  256  Aug 28 2009  jde_interface_file.txt
-rw-r--r--  devadm  sapsys  256  Aug 28 2009  sap_interface_file.txt</pre>
</blockquote>
<p>Simply mounting a file system between the two boxes is not enough to share files.  Neither devadm or jdexe can update, move, or delete the file written by the other server. Specifically, sap_interface_file.txt has <em>-rw-r&#8211;r&#8211;</em> for its permissions JDEXE can open and read this file but can not change it. Most SAP integration scenarios that are file based read the file and then archive/delete it. The same issue is true for jde_interface_file.txt &lt;sid&gt;adm can open and read this file but can not change it.</p>
<h3>The Easy Out &#8211; Scenario</h3>
<p>One simple solution would be to add jdexe to the sapsys group and devadm to the jdexe group. However, this is not a good option from a security perspective. This would give the JDE admin authorization to SAP and SAP admin authorization to JDE.</p>
<h3>More Secure &#8211; Scenario</h3>
<p>Create a new UNIX group on both servers to own the /transfer folder, add both &lt;sid&gt;adm and JDEXE as secondary group members, adjust the users Umasks, and set the GID bit on the folder.</p>
<h3>Let&#8217;s Create A New UNIX Group</h3>
<p>In our example lets call the group &#8220;transfer&#8221;. We need to add both &lt;sid&gt;adm and jdexe added to this group as a secondary group; althouh they both keep their primary groups, sapsys and jdexe respectively.</p>
<p>To see what groups are configured on your server issue the following UNIX command:</p>
<blockquote><p>more /etc/group</p></blockquote>
<blockquote>
<pre>...
owner:*:10:
everyone:*:12:
group:*:16:
staff:*:20:root
sapsys:*:200:adm
...</pre>
</blockquote>
<p>The group file contains all the groups configured for a server.  In my example, I am going to assume that there is no central user configuration on your UNIX servers.  Therefore, when this group is created on both the SAP and JDE server it is important that it is created with the same Group ID.  It is important that you pick a Group ID that is not used on either server.  On AIX you would use the SMITTY utility to create the group. For this example we will use the group ID 300.</p>
<p>To see the new transfer group created in SMITTY you can check the /etc/group file.</p>
<blockquote><p>more /etc/group</p></blockquote>
<blockquote>
<pre>...
owner:*:10:
everyone:*:12:
group:*:16:
staff:*:20:root
sapsys:*:200:adm
...
transfer:*:300:</pre>
</blockquote>
<h3>Set The Integration Directories Group Ownership and Permissions</h3>
<p>Next, we need to change the ownership on the <em>/transfer</em> folder to have the owner group be &#8220;transfer&#8221; and not &#8220;sapsys&#8221;.</p>
<blockquote><p>ls -l | grep transfer</p></blockquote>
<blockquote>
<pre>drwxrwxrwx devadm sapsys 1000 Aug 28 2008   transfer</pre>
</blockquote>
<p>To change the ownership we run the UNIX command:</p>
<blockquote><p>chown :transfer /transfer</p></blockquote>
<p>Let&#8217;s check our work:</p>
<blockquote><p>ls -l | grep transfer</p></blockquote>
<blockquote>
<pre>drwxrwxrwx devadm transfer 1000 Aug 28 2008   transfer</pre>
</blockquote>
<p>Notice the group is now &#8220;transfer&#8221;, not &#8220;sapsys&#8221;.</p>
<p>Next, we need to change the permissions on the <em>/transfer</em> folder to something a bit more secure, as well as set the GID bit.  From UNIX issue the following command:</p>
<blockquote><p>chmod 2770 /transfer</p></blockquote>
<p>Let&#8217;s check our work:</p>
<blockquote><p>ls -l | grep transfer</p></blockquote>
<blockquote>
<pre>drwxrws--- devadm transfer 1000 Aug 28 2008   transfer</pre>
</blockquote>
<p>Notice the &#8220;s&#8221;; that is the GID bit.  Setting this bit will force all files to adopt the group ownership of the parent directory not the primary group of the user.  We are almost there.  Let&#8217;s write another file from SAP and JDE and check that file&#8217; permissions.  From UNIX issue the following command after writting a file from SAP and JDE to the /transfer directory.</p>
<blockquote><p>ls -ltr</p></blockquote>
<blockquote>
<pre>/transfer
-rw-r--r--  jdexe  jdexe  256  Aug 28 2009 00:00  jde_interface_file.txt
-rw-r--r--  devadm  sapsys  256  Aug 28 2009  00:00 sap_interface_file.txt
-rw-r--r--  devadm  transfer  256  Aug 28 2009  00:00 sap_interface_file._2.txt
-rw-r--r--  jdexe  transfer  256  Aug 28 2009 00:00  jde_interface_file_2.txt</pre>
</blockquote>
<p>Notice the group on both files is now &#8220;transfer&#8221;. However, we have still not fixed our problem because both files were created with 6<em>4</em>4 permissions.  We need our permissions to be 6<em>6</em>4 for every file written to this directory.  We will, therefore, need to adjust the UMASK for &lt;sid&gt;adm and jdexe.</p>
<h3>Adjusting The UMASK</h3>
<p>To determine the UMASK to use, you must take the permission you want and subtract it from 777 to get your mask.  In our case we would like the files to have 664 permissions.</p>
<blockquote><p>777 &#8211; 664 = 113</p></blockquote>
<p>You will need to set the UMASK to 113 for both &lt;sid&gt;adm and jdexe.</p>
<p>Let&#8217;s run one more set of tests.  Let&#8217;s write another file from SAP and JDE and check those files out.  From UNIX, issue the following command after writting a file from SAP and JDE to the <em>/transfer</em> directory.</p>
<blockquote><p>ls -ltr</p></blockquote>
<blockquote>
<pre>/transfer
-rw-r--r--  jdexe  jdexe  256  Aug 28 2009 00:00  jde_interface_file.txt
-rw-r--r--  devadm  sapsys  256  Aug 28 2009  00:00 sap_interface_file.txt
-rw-r--r--  devadm  transfer  256  Aug 28 2009  00:00 sap_interface_file._2.txt
-rw-r--r--  jdexe  transfer  256  Aug 28 2009 00:00  jde_interface_file_2.txt
-rw-rw-r--  devadm  transfer  256  Aug 28 2009  00:00 sap_interface_file._3.txt
-rw-rw-r--  jdexe  transfer  256  Aug 28 2009 00:00  jde_interface_file_3.txt</pre>
</blockquote>
<p>Notice the 3rd set of files have both read and write privleges on the group.  This means that both of these files can be read and changed by both user ID&#8217;s because they are both part of the transfer group.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/08/sap-fileshare-unix/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing the UNIX user UID for the SAP Users sidadm and orasid</title>
		<link>http://www.dataxstream.com/2009/08/changeuidsidadm/</link>
		<comments>http://www.dataxstream.com/2009/08/changeuidsidadm/#comments</comments>
		<pubDate>Fri, 07 Aug 2009 04:00:56 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[AIX]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Oracle]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Timothy Yates]]></category>
		<category><![CDATA[UNIX]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/2009/07/changing-the-unix-user-uid-for-the-sap-users-adm-and-ora/</guid>
		<description><![CDATA[You may find it necessary to change the the UID of the sidadm and orasid accounts on your SAP server. The process is not difficult but there are a number of steps that must be followed for it to work correctly. The following is an outline of steps that I have followed in that past on AIX running oracle. Please note you should always test this on a test server to develop a proper procedure for your specific OS and installation. You should also confirm that you have a current backup just in case.]]></description>
			<content:encoded><![CDATA[<h2><span style="text-decoration: underline;">SAP System Administrator Unix User Accounts &lt;sid&gt;adm and ora&lt;sid&gt;</span></h2>
<p>You may find it necessary to change the the UID of the sidadm and orasid accounts on your SAP server. The process is not difficult but there are a number of steps that must be followed for it to work correctly. The following is an outline of steps that I have followed in that past on AIX running oracle. Please note you should always test this on a test server to develop a proper procedure for your specific OS and installation. You should also confirm that you have a current backup just in case.<br />
<span style="text-decoration: underline;"><strong>Lets Review The High Level Steps</strong></span></p>
<ul>
<li>Confirm backups are in place and current. Validate the restore procedure.</li>
<li>Review the current SAP UNIX user setup and develop list of required changes.</li>
<li>Backup the current passwd file.</li>
<li>Create a backup list of files owned by the user being changed.</li>
<li>Stop SAP System and processes owned by &lt;sid&gt;adm.</li>
<li>Stop Oracle and processes owned by ora&lt;sid&gt;.</li>
<li>Restart the server.</li>
<li>Change user UID mapping.</li>
<li>Change file ownership to new UID mapping.</li>
<li>Restart the server.</li>
<li>Restart SAP and Validate server started correctly.</li>
</ul>
<p><span id="more-1720"></span></p>
<p><span style="text-decoration: underline;"><strong>Reviewing UNIX Users and Outlining Changes</strong></span><br />
First let&#8217;s review the setup of the user accounts on the server. You will find the UNIX user accounts and their corresponding UID&#8217;s in the passwd file in the /etc/ directory. Let&#8217;s review the entries for &lt;sid&gt;adm and ora&lt;sid&gt;</p>
<p>dx1adm:!:207:203:SAP System Administrator:/home/dx1adm:/bin/csh</p>
<p>oradx1:!:208:204:SAP Database Administrator:/oracle/DX1:/bin/csh</p>
<p>So on the DX1 instance of SAP we see the following users are setup as follows dx1adm has a UID of 207 and oradx1 has a UID of 208. In this example let say we need to change dx1adm to 307 and oradx1 to 308.<br />
<span style="text-decoration: underline;"><strong>Backup the Current passwd File</strong></span></p>
<blockquote><p># cd /etc</p>
<p># cp passwd /home/xd1adm/passwd.bak</p></blockquote>
<p><span style="text-decoration: underline;"><strong>Create a Backup List of Files</strong></span><br />
In this case I am going to create 5 lists just to be safe. These lists are a snapshot of file and directory ownership before we make any change. All of the examples below are run from any directory. The backup lists are written to the /home/xd1adm.</p>
<p><strong>Create a list for: /usr/sap</strong></p>
<blockquote><p># ls -ltraR /usr/sap &gt; /home/xd1adm/usr_sap_list.txt</p></blockquote>
<p><strong>Create a list for: /sapmnt</strong></p>
<blockquote><p># ls -ltraR /sapmnt &gt; /home/xd1adm/sapmnt_list.txt</p></blockquote>
<p><strong>Create a list for all files owned by: xd1adm</strong></p>
<blockquote><p># find / -user 207 -exec ls -altr {} \; &gt; /home/xd1adm/xd1adm_list.txt</p></blockquote>
<p><strong>/oracle/XD1 (you need to su to oraxd1)</strong></p>
<blockquote><p># ls -ltraR /oracle/XD1 &gt; /oracle/XD1/oracle_XD1_list.txt</p></blockquote>
<p>(To put this file in the /home/xd1adm/ directory you will need to copy it there and then delete it from oraxd1 home)</p>
<p><strong>Create a list for all files owned by: oraxd1</strong></p>
<blockquote><p># find / -user 208 -exec ls -altr {} \; &gt; /oracle/XD1/xd1adm_list.txt</p></blockquote>
<p>(To put this file in the /home/xd1adm/ directory you will need to copy it there and then delete it from oraxd1 home)<br />
<span style="text-decoration: underline;"><strong>Stop SAP and Processes</strong></span><br />
Now we need to stop SAP and Oracle. We need to make sure that we stop all of the processes owned by &lt;sid&gt;adm and ora&lt;sid&gt;.</p>
<p>To stop SAP issue the following command as &lt;sid&gt;adm</p>
<blockquote><p># stopsap</p></blockquote>
<p>To stop the SAP OS collector issue the following command as &lt;sid&gt;adm</p>
<blockquote><p># saposcol -k</p></blockquote>
<p>To stop the Oracle listener issue the following command as ora&lt;sid&gt;</p>
<blockquote><p># lsnrctl stop</p></blockquote>
<p><span style="text-decoration: underline;"><strong>Restart The Server</strong></span><br />
This is just to be safe. (Please make sure that you don&#8217;t have SAP and Oracle setup to automatically start in your start scripts)<br />
<span style="text-decoration: underline;"><strong>Change The UID for &lt;sid&gt;adm and ora&lt;sid&gt;</strong></span><br />
In this example we will use smitty to make this change. You will want to be root on the server.</p>
<blockquote><p># smitty</p></blockquote>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907282002.jpg" alt="200907282002.jpg" width="480" height="341" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072820021.jpg" alt="200907282002.jpg" width="475" height="167" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907282003.jpg" alt="200907282003.jpg" width="480" height="162" /></p>
<p>In this case we will select the &lt;sid&gt;adm account</p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/2009072820031.jpg" alt="200907282003.jpg" width="480" height="107" /></p>
<p><img src="http://www.dataxstream.com/wp-content/uploads/2009/07/200907282004.jpg" alt="200907282004.jpg" width="480" height="136" /></p>
<p>Change the User ID field from 207 to 307 and save your change. Repeat this process for the ora&lt;sid&gt; account.<br />
<span style="text-decoration: underline;"><strong>Change File Ownership to New UID&#8217;s for &lt;sid&gt;adm and ora&lt;sid&gt;</strong></span><br />
In order to run this next command you will need to be root on the server.</p>
<p><strong>Change the &lt;sid&gt;adm file ownership to the new UID</strong></p>
<p>The following command will change the owner of all files that are owned by UID 207, the old &lt;sid&gt;adm UID, on a server to the new &lt;sid&gt;adm UID 307.</p>
<blockquote><p># find /! (proc | backup) -user 207 -exec chown 307 {} \;</p></blockquote>
<p>The following command will change the owner of all the symbolic links that are owned by UID 207, the old &lt;sid&gt;adm UID, on a server to the new &lt;sid&gt;adm UID 307.</p>
<blockquote><p># find /! (proc | backup) -user 207 -exec chown -h 307 {} \;</p></blockquote>
<p>You can verify that the ownership on all the files has been changed from 207 to 307 by running the following command. It should <span style="text-decoration: underline;">not</span> return any results.</p>
<blockquote><p># find / -user 207 -exec ls -altr {} \; &gt; /home/xd1adm/xd1adm_list.txt</p></blockquote>
<p><span style="text-decoration: underline;"><strong>Change the ora&lt;sid&gt; file ownership to the new UID</strong></span><br />
The following command will change the owner of all files that are owned by UID 208, the old ora&lt;sid&gt; UID, on a server to the new ora&lt;sid&gt; UID 308.</p>
<blockquote><p># find /! (proc | backup) -user 208 -exec chown 308 {} \;</p></blockquote>
<p>The following command will change the owner of all the symbolic links that are owned by UID 208, the old ora&lt;sid&gt; UID, on a server to the new ora&lt;sid&gt; UID 308.</p>
<blockquote><p># find /! (proc | backup) -user 208 -exec chown -h 308 {} \;</p></blockquote>
<p>You can verify that the ownership on all the files has been changed from 208 to 308 by running the following command. It should not return any results.</p>
<blockquote><p># find / -user 208 -exec ls -altr {} \; &gt; /home/xd1adm/xd1adm_list.txt</p></blockquote>
<p><span style="text-decoration: underline;"><strong>Restart The Server</strong></span><br />
This is just to be safe.<br />
<span style="text-decoration: underline;"><strong>Restart SAP Instance</strong></span><br />
Restart the Oracle Listener issue the following command as ora&lt;sid&gt;</p>
<blockquote><p># lsnrctl stop</p></blockquote>
<p>Restart SAP issue the following command as &lt;sid&gt;adm</p>
<blockquote><p># startsap</p></blockquote>
<p>Confirm you SAP instance has started correctly. I would also check the SAP startup log as well as transaction SM21 to see if there where any issues with starting the instance after making these changes. If you have issues with restarting you instance you can troubleshoot the issue from the startup logs and you also have the backup lists of the directories that show what the system looked like before you made any changes. Again make sure you test this procedure for your environment in a system it like a sandbox, <em>before</em> you implement on any productive instances.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/08/changeuidsidadm/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP ABAP Performance Tuning – High CPU Utilization, Low DB Activity</title>
		<link>http://www.dataxstream.com/2009/07/sap-abap-performance-tuning-high-cpu-utilization-low-db-activity/</link>
		<comments>http://www.dataxstream.com/2009/07/sap-abap-performance-tuning-high-cpu-utilization-low-db-activity/#comments</comments>
		<pubDate>Tue, 21 Jul 2009 12:57:06 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP ABAP Performance]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Basis Performance]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[consulting]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[Lessons Learned]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[Tim Yates]]></category>
		<category><![CDATA[Timothy Yates]]></category>
		<category><![CDATA[upgrades]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1517</guid>
		<description><![CDATA[So I have been working on a list of blog topics.  I actually have an outline that is 3 pages long, but I am not going to blog on any of the topics on the outline because my experience this week at the client site I think was useful and relevant.  We are at crunch [...]]]></description>
			<content:encoded><![CDATA[<p>So I have been working on a list of blog topics.  I actually have an outline that is 3 pages long, but I am not going to blog on any of the topics on the outline because my experience this week at the client site I think was useful and relevant.  We are at crunch time.  A lot of things have stacked up and as usual we are working to a very aggressive deadline.  In recent years I have typically held many leadership roles on SAP projects.  Usually heading up the technical team, working as the project architect or serving as the overall project manager for the SAP project.  In my current roll I heading up the Basis Team in a very hands on role.  I have been doing my best not to interfere with the development team.  The development team is headed up by a good friend of mine and a very talented senior SAP consultant. This week we have had a number of SAP performance defects logged.  Upon a quick initial analysis it was clear that the SAP performance issues were not  Basis related.  The development team is currently buried in the perfect storm of conversions finally coming together and the test team finally kicking the tires on the rest of the delivered development interface objects. This gave me the opportunity to pitch in get my hands dirty and look at some code and performance issues. We knocked off a significant SAP ABAP performance issue with a 100 fold improvement when all was said and done. Looking back on the problem it was obvious to me, but I missed a couple of clues that should have pointed me to the problem even sooner.  This is what this blog post is about.</p>
<p><span id="more-1517"></span></p>
<p>I started off staging a test to look at a performance issue related to an SAP customer load and ended up diagnosing a custom SAP invoice interface problem with Vistex.  We had staged a test to look at why SAP V2 update processes where significantly bottle necking when the customer load program ran.  Just before I pulled the trigger on the test.  I decided to fire up Topas on the AIX to look at how the SAP server was running.  That is when I saw something very interest.  A custom developed SAP invoice interface program had been running for nearly 16 hours and was consuming nearly 1/3 of the CPU capacity of the instance (3 Cores – 4 and change GHz processors).  I did a little checking and we were processing a file with approximately 47,000 invoices.  Now that just ain’t right!  You should be able to process 100’s of thousands of invoices an hour on an SAP instances configured as we are configured.</p>
<p>It was a programming problem and just using Topas, I should have been able to predict the problem and known where to look.  I will explain why I should have known where the problem was and then go into how I actually figured out the issue.  The smoking gun should have been the following clues.  The SAP server we are testing on is a 2 box instance, separate SAP CI and DB.  Topas was reporting one SAP batch process on the CI was consuming 1/3 of the CPU capacity on the box, that process was consuming a pretty normal amount of memory and was stable.  The SAP DB server throughout the process was under no visible load. There was also no real network activity to be measured. The interface program reads a file, formats the data and passes the data to a standard SAP posting function.  We were posting an invoice approximately once every 2 seconds.</p>
<p>Given just the above information what do we know?  Experience tells me that my server should be sized to handle hundreds of thousands of invoices an hour, we are processing 2 per second.  My process is consuming significant CPU. My process is stable from a memory perspective.  My process is not hitting the DB.  What is my process doing?  It is crunching though ABAP. More specifically it is crunch through ABAP and it is not doing DB operations.</p>
<p>So what was the problem?  We had 3 nested loops. The outer loop had 50k rows, the next loop had 150k rows, and the final loop had 800k rows.  That is a lot of looping.  In testing the developer used small files maybe 20 invoices max in the tests.  While the code was still broken during unit testing it would not be visible with small test files. So how did I go about finding the problem?  I kicked off a SQL trace using ST01 and could see that for each invoice we had about 2000 microseconds of operations.  I then reviewed the code, selection screen, file import, and then processing.  It took less than a minute to import the file and start the processing routine.  I commented out the call to the posting function module (AKA the heavy lifting) and replaced it with a write statement.  It was taking approximately 2 seconds per write still.  The problem therefore lied in the routine that formatted the data from the file to present it to the posting function.  As soon as I opened that part of the code it was obvious we had nested loops and looking at the counts on the internal tables it was pretty clear why it was running so long.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/07/sap-abap-performance-tuning-high-cpu-utilization-low-db-activity/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Moving  SAP transports in batch using SCC1</title>
		<link>http://www.dataxstream.com/2009/07/rscc_scc1_batch/</link>
		<comments>http://www.dataxstream.com/2009/07/rscc_scc1_batch/#comments</comments>
		<pubDate>Wed, 08 Jul 2009 10:00:26 +0000</pubDate>
		<dc:creator>Tim Yates</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP Basis Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[Integration]]></category>
		<category><![CDATA[RSCC_SCC1_BATCH]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SCC1]]></category>
		<category><![CDATA[Transports]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=1283</guid>
		<description><![CDATA[The other day I ran into an issue with a test client missing transports in one of my clients QA systems. Upon reviewing the logs I determined that the entire basis team was not on the same page when importing client dependent transports. I now had missing transports and a sequencing issue. Another consultant on [...]]]></description>
			<content:encoded><![CDATA[<p>The other day I ran into an issue with a test client missing transports in one of my clients QA systems.  Upon reviewing the logs I determined that the entire basis team was not on the same page when importing client dependent transports.  I now had missing transports and a sequencing issue.  Another consultant on the team suggested I use the bulk transport program to clean up the client.  Since I was not aware of this program which has been around for quite sometime.  I decided that others might find it useful.</p>
<p>This program lets you pick a point in time in one client and synch its configuration changes from that point to another client.  The program is RSCC_SCC1_BATCH.  You can find more details on the specifics of this program in SAP OSS: Note 645846 &#8211; CC-ADMIN: Collective Customizing copy with SCC1.</p>
<p>Program Features:</p>
<ul>
<li>Bulk Import Customizing Changes From One Client To Another</li>
<li>Selections Of SAP Transports By: Transport Number, Owner, Point In Time</li>
<li>Program Has A Test Mode</li>
<li>Program Has Ability To Merge Transport Into One New Large Transport</li>
<li>Program Can Be Schedules To Run As A Periodic Job</li>
</ul>
<p>The program selection screen is pretty straight forward:<br />
<a href="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-1.png" rel="shadowbox[sbpost-1283];player=img;"><img class="size-full wp-image-1284 alignnone" title="RSCC_SCC1_BATCH Selection Screen" src="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-1.png" alt="RSCC_SCC1_BATCH Selection Screen" width="649" height="467" /></a></p>
<p>I was most interested in the changes since date.  I had performed a client copy on May 19th and was already missing transports by the 20th.  There was too much testing setup to redo the client copy so we had to get the configuration corrected.</p>
<p>Results:</p>
<ul>
<li>In my testing the program typically runs 600 + seconds.</li>
<li>SAP suggests you use the Merge Requests:  This takes all the request that is selects and merges them into one big request.  (Even in test mode it creates the request it just does not import it.)</li>
<li>The merged request contains a list of the merged transports in the comments section.</li>
<li>I was pulling changes from client 400 (Golden Client in QA) to 431 test client.  The transports originated in our development system client 100 so I had to turn off the (Check Request Source Client) Flag</li>
<li>Configuration was correctly synchronized.</li>
</ul>
<p>The program creates a spool report:</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-21.png" rel="shadowbox[sbpost-1283];player=img;"><img class="size-full wp-image-1286 alignnone" title="RSCC_SCC1_BATCH Spool Report" src="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-21.png" alt="RSCC_SCC1_BATCH Spool Report" width="608" height="627" /></a></p>
<p>The report contains summary details of the execution.  You can see the number of the newly created merge transport at the bottom.</p>
<p>The merge transport contains the list of merged transport in the comment section:</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-3.png" rel="shadowbox[sbpost-1283];player=img;"><img class="size-full wp-image-1287 alignnone" title="Merge Transport From RSCC_SCC1_BATCH" src="http://www.dataxstream.com/wp-content/uploads/2009/07/Picture-3.png" alt="Merge Transport From RSCC_SCC1_BATCH" width="594" height="243" /></a></p>
<p>Transport is not release unless you set the release flag.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/07/rscc_scc1_batch/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

