<?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 Integration Experts - DataXstream &#187; SAP programming</title>
	<atom:link href="http://www.dataxstream.com/tag/sap-programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.dataxstream.com</link>
	<description>SAP Certified Consultants</description>
	<lastBuildDate>Sat, 24 Jul 2010 11:29:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>SAP Data Migration &#8211; Answering the Important Questions (Part 1)</title>
		<link>http://www.dataxstream.com/2010/07/sap-data-migration-and-data-conversion-1/</link>
		<comments>http://www.dataxstream.com/2010/07/sap-data-migration-and-data-conversion-1/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 14:00:20 +0000</pubDate>
		<dc:creator>Mike Salvo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP Project Management]]></category>
		<category><![CDATA[SAP Strategy]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[SAP Testing]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Data Migration]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[Mike Salvo]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[SAP testing]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=5138</guid>
		<description><![CDATA[It is data migration time on your SAP business project.  Whether your project is implementation, acquisition, or merger, the goal is pretty much the same: the seamless inbound acquisition of master and transactional data from one or more external data sources while ensuring that this activity has minimal impact on the rest of the business.  [...]]]></description>
			<content:encoded><![CDATA[<p>It is data migration time on your SAP business project.  Whether your project is implementation, acquisition, or merger, the goal is pretty much the same: the seamless inbound acquisition of master and transactional data from one or more external data sources while ensuring that this activity has minimal impact on the rest of the business.  This is where we attempt to move years of neglected master and transactional data from a loosely structured, anything-goes legacy system into a very tightly integrated and highly structured SAP system.  You must consider the likelihood that the concept of master data management had not been invented yet when the legacy or source system providing your data was implemented.</p>
<p>How much data to move? How much data to leave behind? What to automate, and what to execute manually?  How to gracefully orchestrate and execute a data migration cutover from one system to another?  Where and how to fit the data migration plan into the overall business implementation plan?  How to continue to run the business during the data migration phase of the business project implementation? These questions are all part of the planning fun!</p>
<p><span id="more-5138"></span></p>
<h2>Data Migration Testing</h2>
<p>Processes that we have exercised and continue to exercise on a regular basis are no big deal, do not cause anxiety, or raise any blood pressures.  The daily report, the custom transaction, the interface that runs several hundred times a week – they are all second nature now.  They happen, and no one notices.</p>
<p>But reflect back to the very first time these processes went live.  This is precisely where you are with data migration.  For most, it is a once in a lifetime event.  It is important, then, to raise confidence levels, and reduce anxiety levels surrounding this activity.  This is achieved by practice, practice, practice.</p>
<p>Typically, I like to see at least three data migration test cycles executed in an isolated data migration client.  This allows for several attempts at exercising and fine-tuning the data migration plan; collecting nominal run time statistics to have some idea of how long the data migration might take; identifying and fixing any data migration program object defects; identifying and fixing any data mapping and content defects; and identifying and fixing any functional configuration issues. Each of these tasks are done with the goal of significantly improving the fallout rate with each data migration test cycle.  These data migration test cycles also give us the opportunity to practice our legacy extract skills, our fallout analysis skills, and our fallout manual cleanup skills.</p>
<h2>Source Data Quality</h2>
<p>Each data migration test cycle begins with the legacy or source data extract.  An important activity between data migration test cycles is the cleanup of the legacy or source data.  The data migration process will most likely discover many data problems.  Customer and vendor address data alone are enough to bring your bolt-on tax jurisdiction determination software to its knees – that zip code that is too short, too long, or just plain incorrect when combined with the associated city and state; the various abbreviations used in place of the actual city name; the city and state entered in the same field when they should have been entered into separate fields; etc.   If the source data is not fixed, your data migration test cycles will begin to look like the movie Groundhog Day.</p>
<p>Source data provisioning and cleanup could very well be problematic, especially in an acquisition or merger scenario where the providers are part of a different organization and have no incentive to participate in your project.  If you encounter this scenario, you will most likely need to engage the appropriate management level from your organization to have a serious discussion with the appropriate management level from the providing organization.  Recognize this, be in control, and raise that flag early.    Do not sit around for several days waiting for data to arrive, as this will only set your project behind schedule.</p>
<h2>Data Migration Support for Other Testing</h2>
<p>In any business project scenario, the development team will salivate at the thought of testing their customizations against your real data in the conversion test cycle box.  Likewise, the functional team will be chomping at the bit to use your real data to test configuration scenarios.  And the interface team and the data warehouse team can’t ever get enough data to play with.</p>
<p>While working within your three data migration test cycles, just say NO.  You absolutely need a controlled environment for data migration test cycles, and these other teams will not respect that.  They have a different focus and purpose which requires changing and manipulating degrees of freedom that you need held constant.</p>
<p>But, we are all on the same team trying to move the project to the finish line within the expected project timeline.  So to help your other team members, plan for additional data migration cycles to provide this data to these teams.  That’s more data migration practice for you, and it gives everyone else what they need.</p>
<h2>The Perfect World of Data Migration</h2>
<p>In a perfect world, for each data object to be converted:</p>
<ol>
<li>The functional specification and mapping documents are well-written and clear.</li>
<li>A data load file is built exactly in conformity to the well-written functional specification and mapping documents.</li>
<li>The data migration ABAP objects are built exactly as specified by the well-written functional specification and data mapping documents.</li>
<li>No one is insisting that we move a square peg into a round hole.</li>
</ol>
<p>In a perfect world, for each set of data that is to be migrated:</p>
<ol>
<li>The legacy system data has been thoroughly cleansed.</li>
<li>The providers of the legacy data are genuinely interested in providing accurate data on time.</li>
<li>Server-resident load files in a Unicode system are correctly encoded to UTF-8.</li>
<li>A delimiter other than comma has been specified for the load file.</li>
</ol>
<p>In a perfect world, the data migration test cycle client:</p>
<ol>
<li>Is built in a box that is not the development box.</li>
<li>Is configured exactly like the client where the data migration ABAP objects were built and tested.</li>
<li>Is not open for configuration, unless by design.</li>
<li>Is not part of a transport path. to prevent the current cycle of conversion testing from being blindsided by any new configuration changes.</li>
<li>Is locked down so that only data migration and data validation tasks can be performed.</li>
<li>Is configured to handle a more background and update processes and fewer dialog processes.</li>
<li>Is built in a box that has enough disk space to be the repository for the primary load files and any intermediate processing files needed.</li>
</ol>
<p>In a perfect world, at the project level:</p>
<ol>
<li>There is an overall business cutover or implementation plan into which you can assimilate your data migration plan.</li>
<li>The data migration plan integrates nicely into the overall business cutover plan.</li>
<li>There is a strategy in place to bring the data current between the time the cutover freeze is enforced and the implementation date.</li>
</ol>
<h2>Stay Tuned!</h2>
<p>In the real world, the fun is just beginning.  Those perfect world scenarios just never seem to happen.   But stay tuned!  In my next blog post in this series, I will discuss the details of the Data Migration Plan.  After that, in subsequent posts, I will drill down into some real world scenarios that I have encountered and discuss how I dealt with them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/07/sap-data-migration-and-data-conversion-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Using Native SQL in an ABAP Proxy</title>
		<link>http://www.dataxstream.com/2010/05/using-native-sql-in-an-abap-proxy/</link>
		<comments>http://www.dataxstream.com/2010/05/using-native-sql-in-an-abap-proxy/#comments</comments>
		<pubDate>Thu, 13 May 2010 13:30:22 +0000</pubDate>
		<dc:creator>Mike Salvo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP PI Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[ABAP development]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[Mike Salvo]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP ABAP]]></category>
		<category><![CDATA[SAP programming]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=4929</guid>
		<description><![CDATA[To implement a case-insensitive WHERE clause in ABAP, you simply needed to use the native SQL UPPER() construct. The database system that is being used is Microsoft SQL Server, but the UPPER() function and its syntax is similar across different database platforms. This seemed like an easy nut to crack. But, as I soon found out, I actually had a lot to learn.]]></description>
			<content:encoded><![CDATA[<p>Recently, I was looking at a requirements document to build an interface to an external system that wants to query customer master data by the customer first name and last name.  As I read this, there were a cacophony of thoughts, all demanding equal attention, racing through my head:</p>
<blockquote>
<ul>
<li><span style="color: #0000ff;">How will I ever match the inbound interface parameter &#8220;Tom&#8221; with &#8220;TOM&#8221;, or &#8220;tom&#8221;?</span></li>
<li><span style="color: #0000ff;">How will I ever match the inbound interface parameter &#8220;Smith&#8221; with &#8220;SMITH&#8221; or &#8220;smith&#8221;?</span></li>
<li><span style="color: #0000ff;">The ABAP WHERE clause is <strong>not</strong> case-INsensitive.</span></li>
<li><span style="color: #0000ff;">There could be hundreds of customers named Tom Smith.</span></li>
<li><span style="color: #0000ff;">KNA1-NAME1 and KNA1-NAME2 are not indexed fields.</span></li>
<li><span style="color: #0000ff;">And no, we are not storing any portion of either first or last name in an existing indexed field like SORTL.</span></li>
<li><span style="color: #0000ff;">There are well over one million customers in the database.</span></li>
<li><span style="color: #0000ff;">We have already decided to use PI for all interfaces.</span></li>
<li><span style="color: #0000ff;">I will have to buy the BASIS team a case of beer to get them to agree to create indices on the fields KNA1-NAME1 and KNA1-NAME2 in a table with over one million records</span>.</li>
</ul>
</blockquote>
<p>I arrived at the conclusion that I need a case-insensitive database query, along with database indices created for the fields KNA1-NAME1 and KNA1-NAME2.</p>
<p>But, what is a case-insensitive WHERE clause?  A little research and help from colleagues revealed that many had gone before me, and this was nothing new.  To implement a case-insensitive WHERE clause in ABAP, you simply needed to use the native SQL UPPER() construct.  The database system that is being used is Microsoft SQL Server, but the UPPER() function and its syntax is similar across different database platforms.  This seemed like an easy nut to crack.  But, as I soon found out, I actually had a lot to learn.
<span id="more-4929"></span></p>
<h3>Take 1</h3>
<p>The examples I found were very explicit, showing actual code snippets.  Using my research examples as a template, I built what was to be my first attempt at using native SQL in a ZTEST ABAP program:</p>
<pre style="background-color: #eaeaea; color: #222;">exec sql.
  select kunnr name1 name2
    from kna1
    into table i_cust
    where upper(name1) like :l_name1
      and upper(name2) like :l_name2
endexec.</pre>
<p>Well, as a native SQL rookie, I was stopped dead in my tracks.  Native SQL does not allow a select into a table – you can only select into a work area.</p>
<h3>Take 2</h3>
<p>In my ZTEST ABAP program, I changed the code to SELECT into a work area and append the work area to an internal table in a subroutine:</p>
<pre style="background-color: #eaeaea; color: #222;">exec sql performing append_cust.
  select kunnr, name1, name2
    from kna1
    into :wa_cust
    where upper(name1) like :l_name1
      and upper(name2) like :l_name2
endexec.

form append_cust.
  append wa_cust to i_cust.
endform.</pre>
<p>I really thought that this would work.  But, I was getting a syntax error from native SQL – the table name was not being recognized.  A little more research revealed that, in <em>some</em> cases, only UPPER CASE is valid for table names and field names.  OK.  I can handle that.</p>
<h3>Take 3</h3>
<p>I changed the native SQL statement to all UPPER CASE in my ZTEST ABAP program:</p>
<pre style="background-color: #eaeaea; color: #222;">EXEC SQL PERFORMING APPEND_CUST.
  SELECT KUNNR, NAME1, NAME2
    FROM KNA1
    INTO :WA_CUST
    WHERE UPPER(NAME1) LIKE :L_NAME1
      AND UPPER(NAME2) LIKE :L_NAME2
ENDEXEC.

form append_cust.
  append wa_cust to i_cust.
endform.</pre>
<p>This <em>appeared</em>to work just fine&#8230;  Except, I noticed that too many records were being returned.  A little more analysis showed that I was getting records from ALL clients, not just my logon client.</p>
<h3>Take 4</h3>
<p>Again, in my ZTEST ABAP program, specify the client:</p>
<pre style="background-color: #eaeaea; color: #222;">EXEC SQL PERFORMING APPEND_CUST.
  SELECT KUNNR, NAME1, NAME2
    FROM KNA1
    INTO :WA_CUST
    WHERE UPPER(NAME1) LIKE :L_NAME1
      AND UPPER(NAME2) LIKE :L_NAME2
      <span style="color: #ff0000;">AND MANDT = :L_MANDT</span>
ENDEXEC.

form append_cust.
  append wa_cust to i_cust.
endform.</pre>
<p>Now I was getting the results that I wanted!!!!  So, I pasted this ZTEST ABAP code into the ABAP proxy.</p>
<p>A syntax check of the code immediately rejected the use of subroutines &#8211; they are not allowed in OO ABAP.  I suppose I should have known that.  The error message indicated that I needed to use a cursor instead of the subroutine.  So, I started cursing – a lot!!!</p>
<h3>Take 5 (The Final Version)</h3>
<p>Here is the final version of the code which works for OO ABAP, and, hence, the ABAP proxy:</p>
<pre style="background-color: #eaeaea; color: #222;">EXEC SQL.
  OPEN CUSTCURSOR FOR
    SELECT KUNNR, NAME1, NAME2
      FROM KNA1
      WHERE UPPER(NAME1) LIKE :L_NAME1
        AND UPPER(NAME2) LIKE :L_NAME2
        AND MANDT = :L_MANDT
ENDEXEC.

DO.
  EXEC SQL.
    FETCH NEXT CUSTCURSOR INTO :WA_CUST
  ENDEXEC.

  IF SY-SUBRC NE 0.
    EXIT.
  ELSE.
    APPEND WA_CUST TO I_CUST.
  ENDIF.
ENDDO.

EXEC SQL.
  CLOSE CUSTCURSOR
ENDEXEC.</pre>
<p>Well, I finally got it right after five tries.  As mentioned before, I found many explicit code examples, but none were for OO ABAP with a database  requiring UPPER CASE be used, so that the table and field names would be recognized in the native SQL SELECT statement.</p>
<p>I learned something new about SAP.  I hope that I never stop learning.  I also hope that this blog might save someone a bit of distress in trying to work through a similar situation.  Now, I just need to figure out what kind of beer to buy the BASIS team to get those indexes created&#8230;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/05/using-native-sql-in-an-abap-proxy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Ergonomic User Interface</title>
		<link>http://www.dataxstream.com/2010/03/the-ergonomic-user-interface/</link>
		<comments>http://www.dataxstream.com/2010/03/the-ergonomic-user-interface/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 14:00:53 +0000</pubDate>
		<dc:creator>Mike Salvo</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP Functional]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[build an interface]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[Mike Salvo]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP programming]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=4110</guid>
		<description><![CDATA[Every Monday morning I hop on a plane, arrive at my destination city, pick up a rental car, and drive to my client’s site.  The car rental company gives me a different make and model car every week.  And yet, somehow, I am successfully able to open the car, adjust the seat and mirrors, start [...]]]></description>
			<content:encoded><![CDATA[<p>Every Monday morning I hop on a plane, arrive at my destination city, pick up a rental car, and drive to my client’s site.  The car rental company gives me a different make and model car every week.  And yet, somehow, I am successfully able to open the car, adjust the seat and mirrors, start the car, shift gears, and drive.  I can also operate the radio, air conditioning, heat, windshield wipers, and headlights.</p>
<p>Now, put me behind a keyboard in front of a computer application which I have never seen before. My user experience is all over the map – somewhere in the continuum between most excellent and very poor.  Some application user interfaces are extremely intuitive, well-designed and easy to navigate, logically follow the business process flow, and provide real meaningful help when needed.  Other application user interfaces are extremely difficult to navigate, are not intuitive, do not follow a logical business process flow, and offer little or no meaningful help. And sometimes in these difficult user interfaces, not only has the location of the steering wheel been moved to a totally unsuspecting location, but its appearance has been changed so that, even when I see it, I do not even recognize it as being the application’s steering wheel.</p>
<p>A well-engineered user interface is no accident.  It doesn’t just magically happen.  It must be woven into the fabric of the design and the code; and it should never be shoe-horned into the application as an after-thought.   It takes a lot of up front planning, designing, testing, functional effort and technical effort to produce a really good application user interface.  And yes, designing, building, testing, and implementing a good user interface for your application will extend the delivery time of whatever it is that you are building.</p>
<p>Why is a well-designed and ergonomic user interface so important?  You could have built the best application ever developed.  But if it is unusable, it will never get very far.   Countless hours are lost every day as thousands of frustrated users spend extra time and effort wrestling with poorly designed user interfaces, rather than focusing on their jobs.  And when the frustration levels reach a certain trigger point, the users will seek out and find alternative ways to perform their duties.</p>
<p>Here are a few examples of some very interesting user interface experiences that I have personally encountered.</p>
<p><strong> </strong></p>
<p><strong> </strong></p>
<h2><span id="more-4110"></span>Let’s Punish the User</h2>
<p>I thought we had gotten over this one a long time ago, but I was bitten by it recently while I was completing a web form.  Here is the scenario:</p>
<p style="padding-left: 60px;">I am completing a screen form containing several fields, and I make an entry error in one of the fields.  When I try to submit the data, the application rejects the submission, and sends me a message indicating where the error field is, <strong>and then clears all of the fields on the screen and makes me re-enter all of</strong> <strong>the data again.</strong></p>
<p style="padding-left: 60px;"><span style="color: #3366ff;"> </span><em><span style="color: #3366ff;">Bad User!  And, because you made a mistake, you get to start the entire form all over again …   and again … and again … and again </span>&#8230; </em></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>When Help is not Help</h2>
<p>I am especially fond of this one.  I need help, so I look for the HELP ICON.  I find the HELP ICON (because it looks like a help icon should look, and it is located where a help icon is typically located … well, sometimes it is) and I press it.  The anticipation of actually getting the help I need is overwhelming.     And the help information finally appears on my screen and reads something like this:</p>
<p style="padding-left: 30px;">The exact details of what you want to know are located somewhere in our behemoth website.   Now, we could tell you exactly where and actually help you to solve your problem very quickly,    but we’re not going to, because then you won’t have spent hours wandering aimlessly through our website’s colossal labyrinth.  And while you are in there, don’t let the Minotaur get you!   Please go to <a href="http://www.needleinthehay.com/">www.needleinthehay.com</a>.</p>
<p>Well, at least they said “please”.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>The Errant Error Message</h2>
<p>I can’t tell you how many times I have made a data entry mistake, only to be “helped” by this not-so-helpful error message:</p>
<p><span style="color: #3366ff;"><strong> Incorrect Entry</strong></span></p>
<p>This is irritating.  If I don’t know <strong>why</strong> it is incorrect, I can’t fix it!  If the application is intelligent enough to determine that the entry is incorrect, it certainly is intelligent enough to tell me which of its check rules were violated (in plain user-oriented language please).</p>
<p>I really like this one:</p>
<p><span style="color: #3366ff;"><strong>Program Error 1776</strong></span></p>
<p>This truly tells me everything I need to know!!!  Maybe the developer knows what error 1776 is, but I don’t.  Maybe I can find the meaning of error 1776 at <a href="http://www.needleinthehay.com/">www.needleinthehay.com</a>. (I hope the answer is not too close to the Minotaur’s lair.)</p>
<p>Hey developer – can I have your phone number so I can call you every time I see one of these messages?  Maybe then you will get the hint and stop the madness!</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>I’ve fallen in and I can’t get out</h2>
<p>Sometimes, I manage to navigate to a screen that has no obvious means of escape.  So I’m trapped until I can figure out the top-secret mouse click or keystroke combination.  Should I place the blue orb on the green pedestal?  I guess I really should have left a breadcrumb trail.  Or maybe the developer was a ZORK player!  Let’s try XYZZY!!!</p>
<p><strong><span style="text-decoration: underline;"><strong><span style="text-decoration: underline;"> </span></strong></span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>Just Give me a Good Example</h2>
<p>Like pictures, a good example is worth a thousand words.  Good examples are worth their weight in gold.  A really good example can get me to where I want to be – understanding what I need to know – much more quickly than an entire chapter of words.  Good examples are hard to come by.  They require lots of thought and planning.</p>
<p>Here is an example of a bad example:</p>
<p>2  @  2   =  4         where ‘@’ is some arithmetic operation.</p>
<p>OK &#8211; did we add or multiply here?  Who knows?  This is totally ambiguous, and a bad example.</p>
<p>Here is an example of a better example:</p>
<p>2  @  3   =  5         where ‘@’ is some arithmetic operation.</p>
<p>It is obvious here that the “arithmetic operation” was addition.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>The Cluttered Screen</h2>
<p>One of my favorite games as a child was the type of puzzle where a group of objects is hidden somewhere in a very busy picture.  The names of the hidden objects are listed on the side of the page, and the object of this type of puzzle is to “find the hidden objects” that are on the list.</p>
<p>Some user interface designers and builders are very adept at hiding items on their incredibly busy user interface screens.   Perhaps in their youth, like me, they liked to play with “find the hidden objects” puzzles also.  The problem here is that they are designing “find the hidden objects” puzzles into their user interfaces!  Is it really necessary to squeeze in every data field and push button onto a single screen?  Is the perception here that a single screen, no matter how extremely busy, is somehow easier to use?</p>
<p>My end-user work instructions tell me that if I push the “show details” button, I will then know the meaning of life, the universe, and everything.  But where is the “show details” button?  I am really good at playing “Where’s Waldo”!  Just give me an hour or two and I will find it!</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>The Plethora of Scattered Screens</h2>
<p>The opposite of the tightly packing everything onto a single cluttered screen is the scattering of the user interface among way too many screens.  It becomes a memory exercise to remember the user interface elements that I have already touched, and a scavenger hunt to locate the interface elements that I haven’t found yet.  Let’s see … what was that part number that I entered on screen 152?  Or was it on screen 376?  And where do I go from here to get the order number?  Does anyone have a roadmap that I can follow?</p>
<p>Maybe if we could consolidate the enormous number of screens down to a few that represented logical work flow groupings, I could spend less time screen hopping and be more productive.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>Let’s Get Colorful and Fontsy</h2>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2020/12/userinterface.jpg" rel="shadowbox[post-4110];player=img;"><img class="aligncenter size-full wp-image-4356" title="userinterface" src="http://www.dataxstream.com/wp-content/uploads/2020/12/userinterface.jpg" alt="" width="660" height="75" /></a>
They use several different font styles, sizes, and colors.</p>
<p>I suppose that’s OK, isn’t it?  It really wasn’t too difficult to read the sentence above, was it?</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>Consistency is Key</h2>
<p>Let’s examine the rental car scenario that I posed at the beginning of this blog.  The reason that I am able to quickly enter the car and drive away is because a recognized user interface standard has been established and consistently applied to all automobile makes and models.  Among the various cars that I am faced with, the gas pedal always looks like a gas pedal, and is always located on the driver’s side floor to the right.  Likewise for the steering wheel, the brake pedal, and most other major user interface elements found in a car &#8211; they all adhere to standards of look and feel and placement.</p>
<p>It should not be too surprising then, that the not-so-ergonomic user interfaces that I have encountered do not even recognize that a standard might even exist. The really difficult user interfaces mix things up, and change the appearance, behavior, and location of controls from screen to screen.</p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<p><strong><span style="text-decoration: underline;"> </span></strong></p>
<h2>Summary</h2>
<p>The ergonomic user interface – the one that is intuitive, provides real help when needed, follows an organized logical workflow, and is easy to use are important components of a really great application that end users will want to use because it actually will be the best way to do their job.</p>
<p>Here are a few guidelines that I use whenever I build a user interface:</p>
<p>1)      Totally and completely understand what the business requirements are, and what the user needs to accomplish.  This is the first and most important step to building a good user interface.</p>
<p>2)      Design the user interface to follow the workflow.</p>
<p style="padding-left: 30px;">Organize and logically group functions together.</p>
<p>3)      Determine if standards exist and consistently use them everywhere.</p>
<p style="padding-left: 30px;">Position controls in expected and predictable locations.</p>
<p>4)      Give feedback to the user in a timely manner.</p>
<p style="padding-left: 30px;">Don’t wait until screen 3 to inform the user that there is a problem back on screen 1.</p>
<p>5)      Craft meaningful error messages in user-oriented language.</p>
<p style="padding-left: 30px;">Temper the messages appropriately – if everything is hot, then nothing is hot.</p>
<p>6)      Make sure that the “help” you provide really helps.</p>
<p style="padding-left: 30px;">Ask the user to confirm before deleting anything.</p>
<p style="padding-left: 30px;">Use list of values help whenever possible.</p>
<p>7)      Use default values whenever possible.</p>
<p style="padding-left: 30px;">This avoids potential data entry errors and makes the user interface more efficient.</p>
<p style="padding-left: 30px;">For example, if I work in warehouse 2, I should not have to enter that information every time I ship an item.</p>
<p style="padding-left: 30px;">Display default values in pre-populated, grayed-out fields; but add a pushbutton to allow for the rare occasion when the user must override the default value.</p>
<p>8)      Keep training documents current.</p>
<p style="padding-left: 30px;">As a developer, you may not own the training documents – but someone does.</p>
<p style="padding-left: 30px;">There is nothing more frustrating than a training document that does not match the actual program behavior screen for screen and mouse click for mouse click.</p>
<p style="padding-left: 30px;">
<p>I hope that this blog can provide some useful hints for building effective and efficient user interfaces.  Please reply to this blog if you have any most interesting user interface stories that you would like to share with our readers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/03/the-ergonomic-user-interface/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Implement Field-Level HRMD_A Reduction</title>
		<link>http://www.dataxstream.com/2010/02/how-to-implement-field-level-hrmd_a-reduction/</link>
		<comments>http://www.dataxstream.com/2010/02/how-to-implement-field-level-hrmd_a-reduction/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 13:08:42 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[ALE]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[HRMD_A]]></category>
		<category><![CDATA[IDOC]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[SAP programming]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=4289</guid>
		<description><![CDATA[I love ALE.  It is super-powerful and, once you get the hang of it, is a snap to configure.  Recently, I was setting up an HRMD_A interface for my client.  Everything was going smoothly until I ran into a requirement to filter out the social security number (PERID), birthdate (GBDAT), and gender (GESCH) for privacy [...]]]></description>
			<content:encoded><![CDATA[<p>I love ALE.  It is super-powerful and, once you get the hang of it, is a snap to configure.  Recently, I was setting up an HRMD_A interface for my client.  Everything was going smoothly until I ran into a requirement to filter out the social security number (PERID), birthdate (GBDAT), and gender (GESCH) for privacy reasons.  All of these fields are in segment E1P0002.  Initially, I thought that this requirement was easy enough to accomplish.  I just created a IDOC reduction in transaction BD53 and filtered out the three fields.  I soon found out that while entire segments were getting reduced from the IDOC as configured, the individually reduced fields were still showing up in the IDOC.  What&#8217;s going on?!?
<span id="more-4289"></span> Well, after some digging, I found <a href="https://service.sap.com/sap/bc/bsp/spn/sapnotes/index2.htm?numm=381766" target="_blank">OSS Note 381766</a>.  This note&#8217;s cause section states:</p>
<blockquote><p>The reduction at segment level (see also Note 301223) was facilitated in order to be able to copy message type HRMD_A. This involved setting the reduction at field level, which was not taken into account in the code because it is not possible to centrally determine which fields are mandatory and which are dependent for all country versions. In addition, for one info type there may several records for different periods of time, which may also cause a problem when you are reducing fields.</p></blockquote>
<p>So, in essence, field-level reduction isn&#8217;t supported for HRMD_A.  The solution supplied in the OSS note suggests creating user-exit code to filter out the unwanted fields.  I already have implemented BADI HRALE00OUTBOUND_IDOC to add some other processing logic (if you&#8217;re lucky I&#8217;ll cover that logic in this blog, too), so I have a module in which I can place the code. And while the code to loop through an IDOC and clear out all instances of E1P0002-PERID, E1P0002-GBDAT, and E1P0002-GESCH is very easy, I can&#8217;t help but think I can make the code more useful.  You see, I hate unitasking code.  I can see it now.  If I take the shortcut path and wrote the unitasking code to clear those 3 fields, the code won&#8217;t be in production for more than a month before the requirements change and now there is another field that needs to be filtered out as well.  With unitasking code, I would have to crack open the code, create a transport, unit test, transport to Q, integration test, wait for a transport window, blah, blah, blah.  Ugh!  What a waste of time for a minor change.  We can do better.</p>
<p>I decided to create a multi-tasking module that will work for HRMD_A message types.  The fields to be cleared will be stored in TVARV in the format &lt;SEGMENT&gt;-&lt;FIELD&gt; (e.g. E1P0002-PERID).  That way, whenever the HR functional team wanted to filter out a new field, all they had to do was to update a TVARV variable.</p>
<p>To implement the solution, I created a new method called CLEAR_IDOC_FIELDS in my class implementation for BADI HRALE00OUTBOUND_IDOC.  CLEAR_IDOC_FIELDS has the same method signature as IF_EX_HRALE00OUTBOUND_IDOC~IDOC_DATA_FOR_RECEIVER_MODIFY:</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/00-Method-Signature.jpg" rel="shadowbox[post-4289];player=img;"><img class="alignnone size-full wp-image-4293" title="00 Method Signature" src="http://www.dataxstream.com/wp-content/uploads/2010/02/00-Method-Signature.jpg" alt="" width="605" height="163" /></a></p>
<p>The code is pretty straight forward.  To allow multiple interfaces to coexist in method CLEAR_IDOC_FIELDS, the TVARV variable that stores the fields to clear is in the format &#8216;ZHR_CLR_&#8217; concatenated with the IDOC message type.</p>
<pre style="background-color: #eaeaea; color: #222;">METHOD CLEAR_IDOC_FIELDS .
*----------------------------------------------------------------------*
* Class:     ZCL_IM_HRALE00OUTBOUNDIDOC                                *
* Method:    CLEAR_IDOC_FIELDS                                         *
* Author:    Craig Stasila                                             *
*----------------------------------------------------------------------*

  TYPES: BEGIN OF TY_FILTER,
           TABNAME   TYPE DFIES-TABNAME,
           FIELDNAME TYPE DFIES-FIELDNAME,
           POSITION  TYPE DFIES-POSITION,
           OFFSET    TYPE DFIES-OFFSET,
           LENG      TYPE DFIES-LENG,
        END OF TY_FILTER.

  DATA: WA_FILTER      TYPE TY_FILTER,
        LT_FILTER      TYPE TABLE OF TY_FILTER,
        LS_TABNAME     TYPE DDOBJNAME,
        LS_SAV_TABNAME TYPE DDOBJNAME.

  DATA: LS_NAME   TYPE TVARV-NAME,
        LT_TVARVC TYPE TABLE OF TVARVC,
        WA_TVARVC TYPE TVARVC.

  DATA: LT_DFIES TYPE TABLE OF DFIES,
        WA_DFIES TYPE DFIES.

  DATA: LR_SEGNAM TYPE RANGE OF EDIDD-SEGNAM,
        WR_SEGNAM LIKE LINE OF LR_SEGNAM.

  FIELD-SYMBOLS: &lt;FS&gt; TYPE LINE OF EDIDD_TT.

* Fields to clear are in variable
  CONCATENATE 'ZHR_CLR_' MESTYP INTO LS_NAME.

* Get list of fields to clear from TVARV
  SELECT * FROM TVARVC
    INTO TABLE LT_TVARVC
   WHERE NAME = LS_NAME
     AND TYPE = 'S'.

  CHECK SY-SUBRC = 0.

* Build list of fields to clear
  LOOP AT LT_TVARVC INTO WA_TVARVC.
    CLEAR WA_FILTER.
    SPLIT WA_TVARVC-LOW AT '-' INTO WA_FILTER-TABNAME WA_FILTER-FIELDNAME.
    CHECK SY-SUBRC = 0.

    COLLECT WA_FILTER INTO LT_FILTER.
  ENDLOOP.

  SORT LT_FILTER BY TABNAME.
  CLASS CL_ABAP_CHAR_UTILITIES DEFINITION LOAD.

* Get field offsets
  LOOP AT LT_FILTER INTO WA_FILTER.
    LS_TABNAME = WA_FILTER-TABNAME.

    IF LS_TABNAME NE LS_SAV_TABNAME.

      CALL FUNCTION 'DDIF_NAMETAB_GET'
        EXPORTING
          TABNAME   = LS_TABNAME
        TABLES
          DFIES_TAB = LT_DFIES
        EXCEPTIONS
          NOT_FOUND = 1
          OTHERS    = 2.

      IF SY-SUBRC &lt;&gt; 0.
        CONTINUE.
      ENDIF.

      SORT LT_DFIES BY TABNAME FIELDNAME.

    ENDIF.

    LS_SAV_TABNAME = LS_TABNAME.

    READ TABLE LT_DFIES INTO WA_DFIES
         WITH KEY TABNAME   = WA_FILTER-TABNAME
                  FIELDNAME = WA_FILTER-FIELDNAME
         BINARY SEARCH.

    CHECK SY-SUBRC = 0.

    WA_FILTER-POSITION = WA_DFIES-POSITION.
    WA_FILTER-OFFSET   = WA_DFIES-OFFSET / CL_ABAP_CHAR_UTILITIES=&gt;CHARSIZE.
    WA_FILTER-LENG     = WA_DFIES-LENG.

    MODIFY LT_FILTER FROM WA_FILTER.

* Build segment name range
    IF SY-SUBRC = 0.
      WR_SEGNAM-SIGN   = 'I'.
      WR_SEGNAM-OPTION = 'EQ'.
      WR_SEGNAM-LOW    = WA_FILTER-TABNAME.
      COLLECT WR_SEGNAM INTO LR_SEGNAM.
    ENDIF.
  ENDLOOP.

* Loop at IDOC to clear fields
  LOOP AT IDOC_DATA ASSIGNING &lt;FS&gt;.
    IF &lt;FS&gt;-SEGNAM IN LR_SEGNAM.
      LOOP AT LT_FILTER INTO WA_FILTER WHERE TABNAME = &lt;FS&gt;-SEGNAM.
        CLEAR &lt;FS&gt;-SDATA+WA_FILTER-OFFSET(WA_FILTER-LENG).
      ENDLOOP.
    ENDIF.
  ENDLOOP.
ENDMETHOD.</pre>
<p>I also added the following code to IF_EX_HRALE00OUTBOUND_IDOC~IDOC_DATA_FOR_RECEIVER_MODIFY:</p>
<pre style="background-color: #eaeaea; color: #222;">* Clear IDOC fields
CALL METHOD ME-&gt;CLEAR_IDOC_FIELDS
  EXPORTING
     IDOC_CONTROL = IDOC_CONTROL
     RECEIVER     = RECEIVER
     MESTYP       = IDOC_CONTROL-MESTYP
  CHANGING
     IDOC_DATA    = IDOC_DATA.</pre>
<p>Finally, I maintained the following TVARV variable:</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2010/02/01-TVARV-Variable.jpg" rel="shadowbox[post-4289];player=img;"><img class="alignnone size-full wp-image-4311" title="01 TVARV Variable" src="http://www.dataxstream.com/wp-content/uploads/2010/02/01-TVARV-Variable.jpg" alt="" width="611" height="362" /></a></p>
<p>That&#8217;s all it takes!  Now individual field values can be easily be filtered from outbound HRMD_A IDOCs!.</p>
<p><em>UPDATE: </em>My colleague informed me that instead of using TVARV, I should continue to use BD53 to manage the IDOC reduction and change my code to look up the field reductions in TBD24.  This would be a great idea, but my full HRMD_A solution uses custom filter objects and a custom IDOC formatting function module.  <a href="http://www.dataxstream.com/2010/02/bd53-doesn%E2%80%99t-play-well-with-others/" target="_self">And BD53 does not play well with these customizations.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/02/how-to-implement-field-level-hrmd_a-reduction/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>SAP Basis Consultant</title>
		<link>http://www.dataxstream.com/2010/02/sap-basis-consultant-job/</link>
		<comments>http://www.dataxstream.com/2010/02/sap-basis-consultant-job/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 15:00:21 +0000</pubDate>
		<dc:creator>contentadmin</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[consulting career]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[IT careers]]></category>
		<category><![CDATA[IT consulting career]]></category>
		<category><![CDATA[IT consulting job]]></category>
		<category><![CDATA[IT jobs]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP career opportunities]]></category>
		<category><![CDATA[SAP careers]]></category>
		<category><![CDATA[sap consulting career]]></category>
		<category><![CDATA[SAP developer job]]></category>
		<category><![CDATA[SAP jobs]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[SAP programming job]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2903</guid>
		<description><![CDATA[Location: US-Multiple Locations Essential Duties and Responsibilities: Responsible for the installation, technical administration, tuning, and monitoring of SAP ERP (&#38; related) software including R/3 4.7, ECC 5.0 &#38; 6.0, BW, XI 3.0/PI 7.0 &#38; Solution Manager. Also Oracle and Microsoft SQL Server implementations on Windows platform Expertise in providing primary support for SAP R/3 related [...]]]></description>
			<content:encoded><![CDATA[<h3>Location: US-Multiple Locations</h3>
<h3>Essential Duties and Responsibilities:</h3>
<ul>
<li>Responsible for      the installation, technical administration, tuning, and monitoring of SAP      ERP (&amp; related) software including R/3 4.7, ECC 5.0 &amp; 6.0,      BW, XI 3.0/PI 7.0 &amp; Solution Manager.  Also Oracle and Microsoft      SQL Server implementations on Windows platform</li>
<li>Expertise in      providing primary support for SAP R/3 related systems</li>
<li>Apply support      packages, and add-ons</li>
<li>Provide 24&#215;7      hour support for mission critical system software, possible on call      schedule</li>
<li>Effectively      communicate and interact with technical personnel in solving complex      business and technical problems</li>
<li>Ability to      complete tasks within critical timelines and work well in a high-energy      environment</li>
</ul>
<ul>
<li>Prepare status      reports and attend status meetings</li>
<li>Research and      provide directions for SAP      software corrections including SAP      OSS notes and SAP support      packages</li>
<li>Manage the SAP router configuration for SAP support</li>
<li>Design and      document security administration policies and procedures (SOP) for the      production environment and train the Helpdesk to perform basic operations      tasks on SAP</li>
<li>Creation of      client landscapes and client copies</li>
<li>Create and      maintain RFC connections</li>
</ul>
<p><span id="more-2903"></span></p>
<h3>Qualifications:</h3>
<ul>
<li>Bachelors degree      in computing related field</li>
<li>3+ years Basis      administration experience working in a complex SAP environment. R/3 and      middleware experience preferred</li>
<li>Experience      supporting and working in a project development and support environment      with ability to diagnose and solve problems quickly</li>
<li>Thorough      understanding and skill in database concepts (Oracle preferred)</li>
<li>Good coding,      testing, and documentation skills required</li>
<li>Have an      analytical mind and the ability to delve into detail, but also have an      interest in broader business issues</li>
<li>Exceptional communications      (written and oral), change leadership and customer service skills</li>
</ul>
<ul>
<li>Experience in      managing SAP environment      changes and upgrades</li>
<li>Forward looking      approach that anticipates overall project and engagement needs</li>
<li>Demonstrated      customer service skills/attitude</li>
<li>Demonstrated      value added expertise in special areas of SAP technology</li>
<li>Demonstrated      ability to author technical specifications, presentations, and other      documentation</li>
</ul>
<h3>Additional Requirements:</h3>
<ul>
<li>100% travel to      client sites may be required</li>
<li>US      citizens/permanent residents only</li>
</ul>
<div class="mmf" id="mmf-f2-p2903-o1">
<form action="/tag/sap-programming/feed/?p=2903#mmf-f2-p2903-o1" method="post" class="mmf-form" enctype="multipart/form-data"><input type="hidden" name="_mmf" value="2" /><input type="hidden" name="_mmf_success_url" value="http://www.dataxstream.com/dataxstream-job-submit-success/" /><input type="hidden" name="_mmf_failure_url" value="http://www.dataxstream.com/dataxstream-job-submit-failure/" /><input type="hidden" name="_mmf_unit_tag" value="mmf-f2-p2903-o1" /><input type="hidden" name="page_post_id" value="2903" /><input type="hidden" name="page_post_title" value="SAP Basis Consultant" /><input type="hidden" name="loggedin_user_email" value="" /><input type="hidden" name="loggedin_user_name" value="" />
<h2>Apply For This Job</h2>
<blockquote>
<h3>Personal Information</h3>
<ul>
<li><label for="name-first">First Name</label><span class="mmf-form-control-wrap name-first">&nbsp;<input type="text"  name="name-first" value="" id="NAME_FIRST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="name-last">Last Name</label><span class="mmf-form-control-wrap name-last">&nbsp;<input type="text"  name="name-last" value="" id="NAME_LAST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="city">City</label><span class="mmf-form-control-wrap city">&nbsp;<input type="text"  name="city" value="" id="CITY" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="state">State</label><span class="mmf-form-control-wrap state">&nbsp;<input type="text"  name="state" value="" id="REGION" class="mmf-validates-as-required" size="3" maxlength="3" /></span> *</li>
<li><label for="postal-code">Postal Code</label><span class="mmf-form-control-wrap postal-code">&nbsp;<input type="text"  name="postal-code" value="" id="POST_CODE1" class="mmf-validates-as-required" size="10" maxlength="10" /></span> *</li>
</ul>
<ul>
<h3>Contact Information</h3>
<li><label for="phone-number">Phone Number</label><span class="mmf-form-control-wrap phone-number">&nbsp;<input type="text"  name="phone-number" value="" id="TEL_NUMBER" class="mmf-validates-as-required" size="30" maxlength="30" /></span> *</li>
<li><label for="email2">Email</label><span class="mmf-form-control-wrap email2">&nbsp;<input type="text"  name="email2" value="" id="email2" class="mmf-validates-as-required" size="60" maxlength="80" /></span> *</li>
</ul>
<ul>
<h3>Online Information</h3>
<li><label for="website">Website</label><span class="mmf-form-control-wrap website">&nbsp;<input type="text"  name="website" value="" id="WEBSITE" size="60" maxlength="241" /></span></li>
<li><label for="blog">Blog</label><span class="mmf-form-control-wrap blog">&nbsp;<input type="text"  name="blog" value="" id="BLOG" size="60" maxlength="241" /></span></li>
<li><label for="linkedin">Linkedin Profile</label><span class="mmf-form-control-wrap linkedin-profile">&nbsp;<input type="text"  name="linkedin-profile" value="" id="LINKEDIN" size="60" maxlength="241" /></span></li>
</ul>
<ul>
<h3>Job Information</h3>
<li><label for="date-available-to-work">Date Available To Work* </label><span class="mmf-form-control-wrap date-available-to-work">&nbsp;<input type="text" id="date-available-to-work" name="date-available-to-work"  value="" length="10" /><img src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/calendar.png" class="calendarButton" onClick="displayDatePicker('date-available-to-work');" onMouseOver="this.style.cursor='pointer'" /> </span></li>
<li><label for="work-status">Work Status* </label><span class="mmf-form-control-wrap work-status"><select name="work-status" id="WORK_STATUS" class="mmf-validates-as-required"><option value="US Citizen">US Citizen</option><option value="Greencard Holder">Greencard Holder</option><option value="H1-B">H1-B</option><option value="Other">Other</option></select></span></li>
<li><label for="travel-preference">Travel Preference* </label><span class="mmf-form-control-wrap travel-preference"><select name="travel-preference" id="TRAVEL_PREFERENCE" class="mmf-validates-as-required"><option value="0%">0%</option><option value="25%">25%</option><option value="50%">50%</option><option value="75%">75%</option><option value="100%">100%</option></select></span></li>
<li><label for="willing-to-relocate">Willing To Relocate* </label><span class="mmf-form-control-wrap willing-to-relocate"><select name="willing-to-relocate" id="WILLING_TO_RELOCATE" class="mmf-validates-as-required"><option value="Yes">Yes</option><option value="No">No</option></select></span></li>
<li><label for="job-type">JobType*</label><span class="mmf-form-control-wrap job-type"><span id="JOB_TYPE" class="mmf-validates-as-required mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Full-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Full-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Part-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Part-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Full-time" />&nbsp;<span class="mmf-list-item-label">Full-time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Part-Time" />&nbsp;<span class="mmf-list-item-label">Part-Time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Contract" />&nbsp;<span class="mmf-list-item-label">Contract</span></span></span></span></li>
<h3>How Did You Hear About This Position?</h3>
<li><label for="candidate_source"></label><span class="mmf-form-control-wrap candidate_source"><span id="CANDIDATE_SOURCE" class="mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Twitter" />&nbsp;<span class="mmf-list-item-label">Twitter</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Facebook" />&nbsp;<span class="mmf-list-item-label">Facebook</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Linkedin" />&nbsp;<span class="mmf-list-item-label">Linkedin</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Craigslist" />&nbsp;<span class="mmf-list-item-label">Craigslist</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="DataXstream" />&nbsp;<span class="mmf-list-item-label">DataXstream</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Other" />&nbsp;<span class="mmf-list-item-label">Other</span></span></span></span>
<p><label for="candidate_source_other">Other</label><span class="mmf-form-control-wrap candidate_source_other">&nbsp;<input type="text"  name="candidate_source_other" value="" id="CANDIDATE_SOURCE_OTHER" size="40" maxlength="40" /></span></p>
</ul>
<h3>Additional Information</h3>
<p><label for="additional-information"></label><span class="mmf-form-control-wrap additional-information"><textarea name="additional-information" cols="40" rows="6"></textarea></span></p>
<h3>Submit Resume</h3>
<p><label for="submit-resume"></label><input type="hidden" id="uploaded-file-submit-resume" name="uploaded-file-submit-resume" value="none" />
				<input type="hidden" id="thumb_image-submit-resume">
				<iframe width="0" height="0" style="visibility: hidden">
						 </iframe>				
<iframe id="bfile" name="bfile" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/ajaxfileupload.php?ufiletypes=.doc, .pdf, .txt, .rtf&#038;maxfilesize=2000&#038;fieldname=submit-resume" scrolling="no" frameborder="0" width="350" height="30"></iframe>
* (Required Fields)
</p></blockquote>
<p><label for="submit-application"></label><input type="submit" value="Submit-Application" /> <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/ajax-loader.gif" /></p>
</form>
<div class="mmf-response-output"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2010/02/sap-basis-consultant-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Changing The Function Interface of Web Service Enabled Functions</title>
		<link>http://www.dataxstream.com/2009/11/changing-the-function-interface-of-web-service-enabled-functions/</link>
		<comments>http://www.dataxstream.com/2009/11/changing-the-function-interface-of-web-service-enabled-functions/#comments</comments>
		<pubDate>Tue, 03 Nov 2009 18:11:44 +0000</pubDate>
		<dc:creator>Craig Stasila</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[SAP ABAP Blog]]></category>
		<category><![CDATA[SAP Interface Blog]]></category>
		<category><![CDATA[SAP Technical]]></category>
		<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Craig Stasila]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[Interface]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP ABAP]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[web service]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=3160</guid>
		<description><![CDATA[Today, I got an email from one of my co-workers at my client with a very good question.  This developer had created an ABAP function to return SAP data.  Then, he exposed this function as a web service. Due to changes in functional scope, he had to change the function interface.  After he made all [...]]]></description>
			<content:encoded><![CDATA[<p>Today, I got an email from one of my co-workers at my client with a very good question.  This developer had created an ABAP function to return SAP data.  Then, he exposed this function as a web service. Due to changes in functional scope, he had to change the function interface.  After he made all his changes and unit tested the ABAP code, he was surprised to find that his web service was still adhering to the old function interface.  He tried deleting and recreating the web service, but ran in to problems.  He was stuck in a pickle and needed a little push in the right direction.</p>
<p><span id="more-3160"></span></p>
<p>My colleague, Steve Park, wrote a two part blog explaining how to turn any ABAP function into a web service.  (<a href="http://www.dataxstream.com/2009/09/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-1/" target="_blank">Find Part 1 here</a>.  <a href="http://www.dataxstream.com/2009/10/turn-any-sap-remote-enabled-function-module-into-a-web-service-%E2%80%93-part-2/" target="_blank">Find Part 2 here</a>.)  But, what happens when you change the function module interface as my friend in the above example did?  SAP does not automatically update the web service interface (called the virtual interface).  You have to manually rectify this conflict.  There are two main options to do this.  Both are quite easy.  Which option you choose depends on how the external systems consuming the web service are handling changes.</p>
<p><em>Note: The examples listed below are for ECC 5.0.</em></p>
<h3>Option 1: Update Virtual Interface</h3>
<p>In cases where all systems consuming the web service will be using the new function/web service interface, when the underlying structure of complex data type changes, or when mandatory fields of a function interface are added or removed, it is best to change web service virtual interface.  The consuming application may have to re-import the WSDL to</p>
<p>In transaction SE80, navigate to the virtual interface for the function whose interface has changed.  Right click on the virtual interface and select &#8220;Change&#8221;.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-01.jpg" rel="shadowbox[post-3160];player=img;"><img class="alignnone size-full wp-image-3161" title="Change Virtual Interface 01" src="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-01.jpg" alt="Change Virtual Interface 01" width="443" height="361" /></a></p>
<p>SAP will compare the virtual interface to the function interface.  If the interfaces are different, SAP will display the following prompt.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-02.jpg" rel="shadowbox[post-3160];player=img;"><img class="alignnone size-full wp-image-3162" title="Change Virtual Interface 02" src="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-02.jpg" alt="Change Virtual Interface 02" width="338" height="142" /></a></p>
<p>Simply select &#8220;Yes&#8221; and SAP will update the virtual interface to match the function interface.  Once you have activated your changes, you can check the WSDL to ensure that the function interface changes have been successfully migrated to the web service virtual interface.</p>
<h3>Option 2: Create new virtual interface version</h3>
<p>In cases where optional fields are added to the existing function interface and/or when some of the web service consumers will NOT need to use the new function interface, it is possible to create a new virtual interface version.  This is possible only in cases where the <em>old</em> virtual interface can still execute the function module with the <em>new</em> interface without causing syntax errors.</p>
<p>In transaction SE80, navigate to the virtual interfaces for the function whose interface has changed.  Right click on the virtual interface node and select &#8220;Create&#8221;.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-03.jpg" rel="shadowbox[post-3160];player=img;"><img class="alignnone size-full wp-image-3163" title="Change Virtual Interface 03" src="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-03.jpg" alt="Change Virtual Interface 03" width="486" height="181" /></a></p>
<p>In the ensuing dialog, create a new virtual interface version with the endpoint mapped to the  function module.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-04.jpg" rel="shadowbox[post-3160];player=img;"><img class="alignnone size-full wp-image-3164" title="Change Virtual Interface 04" src="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-04.jpg" alt="Change Virtual Interface 04" width="590" height="257" /></a></p>
<p>Now that the virtual interface is created, create a new version of the web service.</p>
<p><a href="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-05.jpg" rel="shadowbox[post-3160];player=img;"><img class="alignnone size-full wp-image-3166" title="Change Virtual Interface 05" src="http://www.dataxstream.com/wp-content/uploads/2009/11/Change-Virtual-Interface-05.jpg" alt="Change Virtual Interface 05" width="597" height="152" /></a></p>
<h3>Conclusion</h3>
<p>Changing the web service virtual interface to match changes in the underlying function module interface is easy. Whether you choose to create a new virtual interface version, or if you choose to update the virtual interface to match the new functional interface, the process is quick and easy.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/11/changing-the-function-interface-of-web-service-enabled-functions/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SAP Interface Developer</title>
		<link>http://www.dataxstream.com/2009/10/sap-interface-developer-job/</link>
		<comments>http://www.dataxstream.com/2009/10/sap-interface-developer-job/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:00:49 +0000</pubDate>
		<dc:creator>contentadmin</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[IT careers]]></category>
		<category><![CDATA[IT jobs]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP career opportunities]]></category>
		<category><![CDATA[SAP careers]]></category>
		<category><![CDATA[SAP developer job]]></category>
		<category><![CDATA[SAP jobs]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[SAP programming job]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2905</guid>
		<description><![CDATA[Location: US &#8211; Multiple Locations Essential Duties and Responsibilities: Manages day-to-day maintenance of applications &#38; interfaces Develop, maintain and support interface scenarios Manage technical design and functional specifications for interface scenarios, identify user requirements, use critical thinking to analyze &#38; suggest alternative designs Utilizes various methods and processes to determine requirements and design formal solutions [...]]]></description>
			<content:encoded><![CDATA[<h3>Location: US &#8211; Multiple Locations</h3>
<h3>Essential Duties and Responsibilities:</h3>
<ul>
<li>Manages day-to-day      maintenance of applications &amp; interfaces</li>
<li>Develop,      maintain and support interface scenarios</li>
<li>Manage technical      design and functional specifications for interface scenarios, identify      user requirements, use critical thinking to analyze &amp; suggest      alternative designs</li>
<li>Utilizes various      methods and processes to determine requirements and design formal      solutions in response to those requirements</li>
<li>Develop test      cases, conduct informal and formal testing and document test results      appropriately</li>
<li>Utilize      technical expertise with various interfacing technologies, including      IDOCs, BAPIs, ALE, EDI and applications such as XI, WebSphere DataStage TX      (formerly known as Mercator), Gentran, MQ-Series, Seeberger, iWay etc.</li>
<li>Provide      essential knowledge transfer to junior consultants and provide ad hoc guidance</li>
<li>Prepare status      reports for project management and attend status meetings</li>
<li>Provide      guidance and expertise with SAP&#8217;s      development and integration technologies including: ALE design and      implementation; transport layer, environment planning, upgrades, and risk      mitigation</li>
<li>work with the      Basis team and SAP on all      aspects of system builds</li>
</ul>
<p><span id="more-2905"></span></p>
<h3>Qualifications:</h3>
<ul>
<li>Bachelors degree      in computing related field</li>
<li>2-4      Years technical (hands-on) experience in SAP related interface      technologies</li>
<li>Experience with      IDOCs, BAPIs, ALE, EDI &amp; RFC&#8217;s</li>
<li>ABAP development      experience</li>
<li>Excellent      ability to problem solve and analyze complex issues</li>
<li>Ability to work      as a team player and also handle individual responsibilities</li>
<li>Experience      working in complex environments with defined documentation and development      methodologies</li>
<li>Excellent verbal      and written communication skills</li>
<li>Experience with      SAP 4.6 or higher required.</li>
<li>Very strong      knowledge/expertise with SAP      and ABAP</li>
<li> Functional expertise in core SAP module,      e.g. SD,MM or FICO, highly desirable</li>
<li>SAP      implementation and upgrade (desirable) experience</li>
<li>Hands-on      experience and technical proficiency in Object Oriented ABAP (OOPs) with      expertise in RICEFW development</li>
<li>Well-versed in      analysis the performance and efficiency of programs and codes using the SAP tools SQL Trace &amp; Runtime      Analysis for Performance tuning</li>
<li>Technical      proficiency in use of OSS Notes</li>
<li>Experience with      defining and coding conversions and interfaces using LSMW, BAPI, IDOC,      BDC, and call transaction update methods</li>
<li>Hands-on      experience and technical proficiency in User Exits (Field Exits, Menu      Exits, Function Exits, Screen Exits, Conversion Exits, BADIs)</li>
</ul>
<h3>Additional Requirements:</h3>
<ul>
<li>100% travel to      client sites may be required</li>
<li>US      citizens/permanent residents only</li>
</ul>
<div class="mmf" id="mmf-f2-p2905-o1">
<form action="/tag/sap-programming/feed/?p=2905#mmf-f2-p2905-o1" method="post" class="mmf-form" enctype="multipart/form-data"><input type="hidden" name="_mmf" value="2" /><input type="hidden" name="_mmf_success_url" value="http://www.dataxstream.com/dataxstream-job-submit-success/" /><input type="hidden" name="_mmf_failure_url" value="http://www.dataxstream.com/dataxstream-job-submit-failure/" /><input type="hidden" name="_mmf_unit_tag" value="mmf-f2-p2905-o1" /><input type="hidden" name="page_post_id" value="2905" /><input type="hidden" name="page_post_title" value="SAP Interface Developer" /><input type="hidden" name="loggedin_user_email" value="" /><input type="hidden" name="loggedin_user_name" value="" />
<h2>Apply For This Job</h2>
<blockquote>
<h3>Personal Information</h3>
<ul>
<li><label for="name-first">First Name</label><span class="mmf-form-control-wrap name-first">&nbsp;<input type="text"  name="name-first" value="" id="NAME_FIRST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="name-last">Last Name</label><span class="mmf-form-control-wrap name-last">&nbsp;<input type="text"  name="name-last" value="" id="NAME_LAST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="city">City</label><span class="mmf-form-control-wrap city">&nbsp;<input type="text"  name="city" value="" id="CITY" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="state">State</label><span class="mmf-form-control-wrap state">&nbsp;<input type="text"  name="state" value="" id="REGION" class="mmf-validates-as-required" size="3" maxlength="3" /></span> *</li>
<li><label for="postal-code">Postal Code</label><span class="mmf-form-control-wrap postal-code">&nbsp;<input type="text"  name="postal-code" value="" id="POST_CODE1" class="mmf-validates-as-required" size="10" maxlength="10" /></span> *</li>
</ul>
<ul>
<h3>Contact Information</h3>
<li><label for="phone-number">Phone Number</label><span class="mmf-form-control-wrap phone-number">&nbsp;<input type="text"  name="phone-number" value="" id="TEL_NUMBER" class="mmf-validates-as-required" size="30" maxlength="30" /></span> *</li>
<li><label for="email2">Email</label><span class="mmf-form-control-wrap email2">&nbsp;<input type="text"  name="email2" value="" id="email2" class="mmf-validates-as-required" size="60" maxlength="80" /></span> *</li>
</ul>
<ul>
<h3>Online Information</h3>
<li><label for="website">Website</label><span class="mmf-form-control-wrap website">&nbsp;<input type="text"  name="website" value="" id="WEBSITE" size="60" maxlength="241" /></span></li>
<li><label for="blog">Blog</label><span class="mmf-form-control-wrap blog">&nbsp;<input type="text"  name="blog" value="" id="BLOG" size="60" maxlength="241" /></span></li>
<li><label for="linkedin">Linkedin Profile</label><span class="mmf-form-control-wrap linkedin-profile">&nbsp;<input type="text"  name="linkedin-profile" value="" id="LINKEDIN" size="60" maxlength="241" /></span></li>
</ul>
<ul>
<h3>Job Information</h3>
<li><label for="date-available-to-work">Date Available To Work* </label><span class="mmf-form-control-wrap date-available-to-work">&nbsp;<input type="text" id="date-available-to-work" name="date-available-to-work"  value="" length="10" /><img src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/calendar.png" class="calendarButton" onClick="displayDatePicker('date-available-to-work');" onMouseOver="this.style.cursor='pointer'" /> </span></li>
<li><label for="work-status">Work Status* </label><span class="mmf-form-control-wrap work-status"><select name="work-status" id="WORK_STATUS" class="mmf-validates-as-required"><option value="US Citizen">US Citizen</option><option value="Greencard Holder">Greencard Holder</option><option value="H1-B">H1-B</option><option value="Other">Other</option></select></span></li>
<li><label for="travel-preference">Travel Preference* </label><span class="mmf-form-control-wrap travel-preference"><select name="travel-preference" id="TRAVEL_PREFERENCE" class="mmf-validates-as-required"><option value="0%">0%</option><option value="25%">25%</option><option value="50%">50%</option><option value="75%">75%</option><option value="100%">100%</option></select></span></li>
<li><label for="willing-to-relocate">Willing To Relocate* </label><span class="mmf-form-control-wrap willing-to-relocate"><select name="willing-to-relocate" id="WILLING_TO_RELOCATE" class="mmf-validates-as-required"><option value="Yes">Yes</option><option value="No">No</option></select></span></li>
<li><label for="job-type">JobType*</label><span class="mmf-form-control-wrap job-type"><span id="JOB_TYPE" class="mmf-validates-as-required mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Full-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Full-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Part-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Part-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Full-time" />&nbsp;<span class="mmf-list-item-label">Full-time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Part-Time" />&nbsp;<span class="mmf-list-item-label">Part-Time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Contract" />&nbsp;<span class="mmf-list-item-label">Contract</span></span></span></span></li>
<h3>How Did You Hear About This Position?</h3>
<li><label for="candidate_source"></label><span class="mmf-form-control-wrap candidate_source"><span id="CANDIDATE_SOURCE" class="mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Twitter" />&nbsp;<span class="mmf-list-item-label">Twitter</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Facebook" />&nbsp;<span class="mmf-list-item-label">Facebook</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Linkedin" />&nbsp;<span class="mmf-list-item-label">Linkedin</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Craigslist" />&nbsp;<span class="mmf-list-item-label">Craigslist</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="DataXstream" />&nbsp;<span class="mmf-list-item-label">DataXstream</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Other" />&nbsp;<span class="mmf-list-item-label">Other</span></span></span></span>
<p><label for="candidate_source_other">Other</label><span class="mmf-form-control-wrap candidate_source_other">&nbsp;<input type="text"  name="candidate_source_other" value="" id="CANDIDATE_SOURCE_OTHER" size="40" maxlength="40" /></span></p>
</ul>
<h3>Additional Information</h3>
<p><label for="additional-information"></label><span class="mmf-form-control-wrap additional-information"><textarea name="additional-information" cols="40" rows="6"></textarea></span></p>
<h3>Submit Resume</h3>
<p><label for="submit-resume"></label><input type="hidden" id="uploaded-file-submit-resume" name="uploaded-file-submit-resume" value="none" />
				<input type="hidden" id="thumb_image-submit-resume">
				<iframe width="0" height="0" style="visibility: hidden">
						 </iframe>				
<iframe id="bfile" name="bfile" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/ajaxfileupload.php?ufiletypes=.doc, .pdf, .txt, .rtf&#038;maxfilesize=2000&#038;fieldname=submit-resume" scrolling="no" frameborder="0" width="350" height="30"></iframe>
* (Required Fields)
</p></blockquote>
<p><label for="submit-application"></label><input type="submit" value="Submit-Application" /> <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/ajax-loader.gif" /></p>
</form>
<div class="mmf-response-output"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/10/sap-interface-developer-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP ABAP Developer</title>
		<link>http://www.dataxstream.com/2009/10/sap-abap-developer-job/</link>
		<comments>http://www.dataxstream.com/2009/10/sap-abap-developer-job/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:00:42 +0000</pubDate>
		<dc:creator>contentadmin</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[IT careers]]></category>
		<category><![CDATA[IT job postings]]></category>
		<category><![CDATA[IT jobs]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP career opportunities]]></category>
		<category><![CDATA[SAP careers]]></category>
		<category><![CDATA[SAP developer job]]></category>
		<category><![CDATA[SAP job postings]]></category>
		<category><![CDATA[SAP jobs]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[SAP programming job]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2898</guid>
		<description><![CDATA[Location: US &#8211; Multiple Locations Required Skills Summary 5+ years in SAP ABAP software development Strong ABAP skills with significant version experience in SAP 4.6c and higher At least 5 full lifecycle SAP implementations Full understanding of the SAP transport process High level understanding of business processes in multiple SAP functional modules, e.g. FI, SD, [...]]]></description>
			<content:encoded><![CDATA[<h3>Location: US &#8211; Multiple Locations</h3>
<h3>Required Skills Summary</h3>
<ul>
<li>5+ years in SAP ABAP software development</li>
<li>Strong ABAP skills with significant version experience in SAP 4.6c and higher</li>
<li>At least 5 full lifecycle SAP implementations</li>
<li>Full understanding of the SAP transport process</li>
<li>High level understanding of business processes in multiple SAP functional modules, e.g. FI, SD, MM, PP, HR, PS, PM, WM</li>
<li>Experience with Enterprise Portal, Web Dynpro, and Web Methods</li>
<li>SAP ABAP Certification</li>
<li>Experience with 3rd party applications within SAP, e.g. Sabrix, Vistex, Vertex, etc</li>
</ul>
<p><span id="more-2898"></span></p>
<h3>Primary Responsibilities</h3>
<ul>
<li>Involved in the lifecycle of critical projects from design through go-live</li>
<li>Provide technical designs from functional designs with high level coding designs</li>
<li>Assist functional team with technical direction to design high quality solutions</li>
<li>Code, test and implement ABAP programs and modifications based upon specifications</li>
<li>Provide robust, scalable, error free and efficient technical solutions with the minimum of management supervision</li>
<li>Troubleshoot, identify and resolve day to day problems that occur with programs or software</li>
<li>Provide production support and technical assistance</li>
<li>Assist in identifying and resolving SAP issues across multiple functional areas</li>
<li>Provide problem resolution for SAP support issues to internal business partners and maintain support logs and technical documentation</li>
<li>Establish coding and development standards for portal technologies</li>
<li>Facilitate code reviews and identify opportunities to improve existing programs</li>
<li>Resolve issues with programs that are causing system performance problems</li>
<li>Research SAP/OSS notes to resolve issues</li>
<li>Assist with OSS note, upgrade and support pack evaluation, installation and testing</li>
<li>Prepare development estimates that will be used for project planning purposes</li>
<li>Strong experience in at least one SAP functional area and/or end-to-end business process, e.g. quote to cash, procure to pay</li>
</ul>
<h3>Qualifications</h3>
<ul>
<li>5+ years in SAP ABAP software development</li>
<li>At least five full life cycle SAP project implementations</li>
<li>ABAP development and workbench experience in SAP releases 4.6c, 4.7, ECC 5.0 and ECC 6.0</li>
<li>Technical skills including: interfaces/integration, BAPIs, BADIs, parallel processing, screen and dialog programming, ALV reporting, table control, user exit / customer enhancements, transaction VOFM, custom application design, performance optimization, techniques for investigating performance issues, BI, SAPscript, Smartforms, Adobe Forms, Barcoding output, EDI/IDOC/XI</li>
<li>Familiarity with the SAP data dictionary in a broad range of SAP modules</li>
<li>Experience creating dynamic reports and subroutine pools for dynamic programming in ABAP</li>
<li>Experience with ETL concepts and implementation</li>
<li>Design skills including: proven ability to take defined business needs and create designs, propose and evaluate alternatives, estimate development hours, test plans, execute positive and negative tests and validate test results</li>
<li>Proven ability to execute technical design reviews and code reviews</li>
</ul>
<h3>Additional Desirable Skills</h3>
<ul>
<li>Strong troubleshooting and code debugging skills</li>
<li>Able to work with business users directly as well as technical resources in a cross-functional multidisciplinary environment</li>
<li>Excellent written and verbal communication skills</li>
<li>Experience with SAP version ECC 6.0 and NetWeaver Developer / Development tools (NWDS, NWDI)</li>
<li>Experience with BI Explorer (Bex) Objects</li>
<li>Consuming 3rd party remote systems using ABAP proxies / Web Services</li>
<li>Exposing RFC-enabled function modules as a Web Service</li>
</ul>
<div class="mmf" id="mmf-f2-p2898-o1">
<form action="/tag/sap-programming/feed/?p=2898#mmf-f2-p2898-o1" method="post" class="mmf-form" enctype="multipart/form-data"><input type="hidden" name="_mmf" value="2" /><input type="hidden" name="_mmf_success_url" value="http://www.dataxstream.com/dataxstream-job-submit-success/" /><input type="hidden" name="_mmf_failure_url" value="http://www.dataxstream.com/dataxstream-job-submit-failure/" /><input type="hidden" name="_mmf_unit_tag" value="mmf-f2-p2898-o1" /><input type="hidden" name="page_post_id" value="2898" /><input type="hidden" name="page_post_title" value="SAP ABAP Developer" /><input type="hidden" name="loggedin_user_email" value="" /><input type="hidden" name="loggedin_user_name" value="" />
<h2>Apply For This Job</h2>
<blockquote>
<h3>Personal Information</h3>
<ul>
<li><label for="name-first">First Name</label><span class="mmf-form-control-wrap name-first">&nbsp;<input type="text"  name="name-first" value="" id="NAME_FIRST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="name-last">Last Name</label><span class="mmf-form-control-wrap name-last">&nbsp;<input type="text"  name="name-last" value="" id="NAME_LAST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="city">City</label><span class="mmf-form-control-wrap city">&nbsp;<input type="text"  name="city" value="" id="CITY" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="state">State</label><span class="mmf-form-control-wrap state">&nbsp;<input type="text"  name="state" value="" id="REGION" class="mmf-validates-as-required" size="3" maxlength="3" /></span> *</li>
<li><label for="postal-code">Postal Code</label><span class="mmf-form-control-wrap postal-code">&nbsp;<input type="text"  name="postal-code" value="" id="POST_CODE1" class="mmf-validates-as-required" size="10" maxlength="10" /></span> *</li>
</ul>
<ul>
<h3>Contact Information</h3>
<li><label for="phone-number">Phone Number</label><span class="mmf-form-control-wrap phone-number">&nbsp;<input type="text"  name="phone-number" value="" id="TEL_NUMBER" class="mmf-validates-as-required" size="30" maxlength="30" /></span> *</li>
<li><label for="email2">Email</label><span class="mmf-form-control-wrap email2">&nbsp;<input type="text"  name="email2" value="" id="email2" class="mmf-validates-as-required" size="60" maxlength="80" /></span> *</li>
</ul>
<ul>
<h3>Online Information</h3>
<li><label for="website">Website</label><span class="mmf-form-control-wrap website">&nbsp;<input type="text"  name="website" value="" id="WEBSITE" size="60" maxlength="241" /></span></li>
<li><label for="blog">Blog</label><span class="mmf-form-control-wrap blog">&nbsp;<input type="text"  name="blog" value="" id="BLOG" size="60" maxlength="241" /></span></li>
<li><label for="linkedin">Linkedin Profile</label><span class="mmf-form-control-wrap linkedin-profile">&nbsp;<input type="text"  name="linkedin-profile" value="" id="LINKEDIN" size="60" maxlength="241" /></span></li>
</ul>
<ul>
<h3>Job Information</h3>
<li><label for="date-available-to-work">Date Available To Work* </label><span class="mmf-form-control-wrap date-available-to-work">&nbsp;<input type="text" id="date-available-to-work" name="date-available-to-work"  value="" length="10" /><img src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/calendar.png" class="calendarButton" onClick="displayDatePicker('date-available-to-work');" onMouseOver="this.style.cursor='pointer'" /> </span></li>
<li><label for="work-status">Work Status* </label><span class="mmf-form-control-wrap work-status"><select name="work-status" id="WORK_STATUS" class="mmf-validates-as-required"><option value="US Citizen">US Citizen</option><option value="Greencard Holder">Greencard Holder</option><option value="H1-B">H1-B</option><option value="Other">Other</option></select></span></li>
<li><label for="travel-preference">Travel Preference* </label><span class="mmf-form-control-wrap travel-preference"><select name="travel-preference" id="TRAVEL_PREFERENCE" class="mmf-validates-as-required"><option value="0%">0%</option><option value="25%">25%</option><option value="50%">50%</option><option value="75%">75%</option><option value="100%">100%</option></select></span></li>
<li><label for="willing-to-relocate">Willing To Relocate* </label><span class="mmf-form-control-wrap willing-to-relocate"><select name="willing-to-relocate" id="WILLING_TO_RELOCATE" class="mmf-validates-as-required"><option value="Yes">Yes</option><option value="No">No</option></select></span></li>
<li><label for="job-type">JobType*</label><span class="mmf-form-control-wrap job-type"><span id="JOB_TYPE" class="mmf-validates-as-required mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Full-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Full-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Part-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Part-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Full-time" />&nbsp;<span class="mmf-list-item-label">Full-time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Part-Time" />&nbsp;<span class="mmf-list-item-label">Part-Time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Contract" />&nbsp;<span class="mmf-list-item-label">Contract</span></span></span></span></li>
<h3>How Did You Hear About This Position?</h3>
<li><label for="candidate_source"></label><span class="mmf-form-control-wrap candidate_source"><span id="CANDIDATE_SOURCE" class="mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Twitter" />&nbsp;<span class="mmf-list-item-label">Twitter</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Facebook" />&nbsp;<span class="mmf-list-item-label">Facebook</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Linkedin" />&nbsp;<span class="mmf-list-item-label">Linkedin</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Craigslist" />&nbsp;<span class="mmf-list-item-label">Craigslist</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="DataXstream" />&nbsp;<span class="mmf-list-item-label">DataXstream</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Other" />&nbsp;<span class="mmf-list-item-label">Other</span></span></span></span>
<p><label for="candidate_source_other">Other</label><span class="mmf-form-control-wrap candidate_source_other">&nbsp;<input type="text"  name="candidate_source_other" value="" id="CANDIDATE_SOURCE_OTHER" size="40" maxlength="40" /></span></p>
</ul>
<h3>Additional Information</h3>
<p><label for="additional-information"></label><span class="mmf-form-control-wrap additional-information"><textarea name="additional-information" cols="40" rows="6"></textarea></span></p>
<h3>Submit Resume</h3>
<p><label for="submit-resume"></label><input type="hidden" id="uploaded-file-submit-resume" name="uploaded-file-submit-resume" value="none" />
				<input type="hidden" id="thumb_image-submit-resume">
				<iframe width="0" height="0" style="visibility: hidden">
						 </iframe>				
<iframe id="bfile" name="bfile" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/ajaxfileupload.php?ufiletypes=.doc, .pdf, .txt, .rtf&#038;maxfilesize=2000&#038;fieldname=submit-resume" scrolling="no" frameborder="0" width="350" height="30"></iframe>
* (Required Fields)
</p></blockquote>
<p><label for="submit-application"></label><input type="submit" value="Submit-Application" /> <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/ajax-loader.gif" /></p>
</form>
<div class="mmf-response-output"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/10/sap-abap-developer-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP Middleware Developer</title>
		<link>http://www.dataxstream.com/2009/10/sap-middleware-developer-job/</link>
		<comments>http://www.dataxstream.com/2009/10/sap-middleware-developer-job/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 20:00:22 +0000</pubDate>
		<dc:creator>contentadmin</dc:creator>
				<category><![CDATA[Jobs]]></category>
		<category><![CDATA[careers]]></category>
		<category><![CDATA[DataXstream]]></category>
		<category><![CDATA[IT careers]]></category>
		<category><![CDATA[IT jobs]]></category>
		<category><![CDATA[SAP]]></category>
		<category><![CDATA[SAP career opportunities]]></category>
		<category><![CDATA[SAP careers]]></category>
		<category><![CDATA[SAP developer job]]></category>
		<category><![CDATA[SAP jobs]]></category>
		<category><![CDATA[SAP programming]]></category>
		<category><![CDATA[SAP programming job]]></category>

		<guid isPermaLink="false">http://www.dataxstream.com/?p=2907</guid>
		<description><![CDATA[Location: US-Multiple Locations Essential Duties and Responsibilities: Manages (where applicable) day-to-day configuration/maintenance of middleware technologies, including SAP PI/XI, WebSphere DataStage TX (formerly known as Mercator) &#38; Gentran Manage middleware basis configuration Responsible for designing, coding, testing and implementing middleware interfaces Manages technical design and functional specifications for middleware technologies, identify user requirements, use critical thinking [...]]]></description>
			<content:encoded><![CDATA[<h3>Location: US-Multiple Locations</h3>
<h3>Essential Duties and Responsibilities:</h3>
<ul>
<li>Manages (where      applicable) day-to-day configuration/maintenance of middleware      technologies, including SAP PI/XI, WebSphere DataStage TX (formerly known as      Mercator) &amp; Gentran</li>
<li>Manage      middleware basis configuration</li>
<li>Responsible for      designing, coding, testing and implementing middleware interfaces</li>
<li>Manages      technical design and functional specifications for middleware      technologies, identify user requirements, use critical thinking to analyze      &amp; make alternative suggestions, where applicable</li>
<li>Work within      guidelines and broadly defined direction</li>
<li>Provide      day-to-day direction to multiple team members. Tendency for functional-      and tools- specialization in 1-3 different areas. Ability to effectively      deal with 2-3 projects concurrently</li>
<li>Prepare status      reports and attend status meetings</li>
</ul>
<p><span id="more-2907"></span></p>
<h3>Qualifications:</h3>
<ul>
<li>Bachelors degree      in computing related field</li>
<li>2-4 Years      technical (hands-on) experience in middleware technogies</li>
<li>Technical expertise      with at least one of SAP PI/XI, WebSphere DataStage TX (formerly known as      Mercator) or Gentran</li>
<li>Experience with      at least one of the following &#8211; IDOCs, BAPIs, ALE, EDI &amp; RFCs</li>
<li>ABAP development      experience</li>
<li>Excellent      ability to problem solve and analyze complex issues</li>
<li>Ability to work      as a team player and also handle individual responsibilities</li>
<li>Experience in      working in complex environments with defined documentation and development      methodologies</li>
<li>Excellent verbal      and written communication skills</li>
</ul>
<h3>Additional Requirements:</h3>
<ul>
<li>100% travel to      client sites may be required</li>
<li>US      citizens/permanent residents only</li>
</ul>
<div class="mmf" id="mmf-f2-p2907-o1">
<form action="/tag/sap-programming/feed/?p=2907#mmf-f2-p2907-o1" method="post" class="mmf-form" enctype="multipart/form-data"><input type="hidden" name="_mmf" value="2" /><input type="hidden" name="_mmf_success_url" value="http://www.dataxstream.com/dataxstream-job-submit-success/" /><input type="hidden" name="_mmf_failure_url" value="http://www.dataxstream.com/dataxstream-job-submit-failure/" /><input type="hidden" name="_mmf_unit_tag" value="mmf-f2-p2907-o1" /><input type="hidden" name="page_post_id" value="2907" /><input type="hidden" name="page_post_title" value="SAP Middleware Developer" /><input type="hidden" name="loggedin_user_email" value="" /><input type="hidden" name="loggedin_user_name" value="" />
<h2>Apply For This Job</h2>
<blockquote>
<h3>Personal Information</h3>
<ul>
<li><label for="name-first">First Name</label><span class="mmf-form-control-wrap name-first">&nbsp;<input type="text"  name="name-first" value="" id="NAME_FIRST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="name-last">Last Name</label><span class="mmf-form-control-wrap name-last">&nbsp;<input type="text"  name="name-last" value="" id="NAME_LAST" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="city">City</label><span class="mmf-form-control-wrap city">&nbsp;<input type="text"  name="city" value="" id="CITY" class="mmf-validates-as-required" size="40" maxlength="40" /></span> *</li>
<li><label for="state">State</label><span class="mmf-form-control-wrap state">&nbsp;<input type="text"  name="state" value="" id="REGION" class="mmf-validates-as-required" size="3" maxlength="3" /></span> *</li>
<li><label for="postal-code">Postal Code</label><span class="mmf-form-control-wrap postal-code">&nbsp;<input type="text"  name="postal-code" value="" id="POST_CODE1" class="mmf-validates-as-required" size="10" maxlength="10" /></span> *</li>
</ul>
<ul>
<h3>Contact Information</h3>
<li><label for="phone-number">Phone Number</label><span class="mmf-form-control-wrap phone-number">&nbsp;<input type="text"  name="phone-number" value="" id="TEL_NUMBER" class="mmf-validates-as-required" size="30" maxlength="30" /></span> *</li>
<li><label for="email2">Email</label><span class="mmf-form-control-wrap email2">&nbsp;<input type="text"  name="email2" value="" id="email2" class="mmf-validates-as-required" size="60" maxlength="80" /></span> *</li>
</ul>
<ul>
<h3>Online Information</h3>
<li><label for="website">Website</label><span class="mmf-form-control-wrap website">&nbsp;<input type="text"  name="website" value="" id="WEBSITE" size="60" maxlength="241" /></span></li>
<li><label for="blog">Blog</label><span class="mmf-form-control-wrap blog">&nbsp;<input type="text"  name="blog" value="" id="BLOG" size="60" maxlength="241" /></span></li>
<li><label for="linkedin">Linkedin Profile</label><span class="mmf-form-control-wrap linkedin-profile">&nbsp;<input type="text"  name="linkedin-profile" value="" id="LINKEDIN" size="60" maxlength="241" /></span></li>
</ul>
<ul>
<h3>Job Information</h3>
<li><label for="date-available-to-work">Date Available To Work* </label><span class="mmf-form-control-wrap date-available-to-work">&nbsp;<input type="text" id="date-available-to-work" name="date-available-to-work"  value="" length="10" /><img src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/calendar.png" class="calendarButton" onClick="displayDatePicker('date-available-to-work');" onMouseOver="this.style.cursor='pointer'" /> </span></li>
<li><label for="work-status">Work Status* </label><span class="mmf-form-control-wrap work-status"><select name="work-status" id="WORK_STATUS" class="mmf-validates-as-required"><option value="US Citizen">US Citizen</option><option value="Greencard Holder">Greencard Holder</option><option value="H1-B">H1-B</option><option value="Other">Other</option></select></span></li>
<li><label for="travel-preference">Travel Preference* </label><span class="mmf-form-control-wrap travel-preference"><select name="travel-preference" id="TRAVEL_PREFERENCE" class="mmf-validates-as-required"><option value="0%">0%</option><option value="25%">25%</option><option value="50%">50%</option><option value="75%">75%</option><option value="100%">100%</option></select></span></li>
<li><label for="willing-to-relocate">Willing To Relocate* </label><span class="mmf-form-control-wrap willing-to-relocate"><select name="willing-to-relocate" id="WILLING_TO_RELOCATE" class="mmf-validates-as-required"><option value="Yes">Yes</option><option value="No">No</option></select></span></li>
<li><label for="job-type">JobType*</label><span class="mmf-form-control-wrap job-type"><span id="JOB_TYPE" class="mmf-validates-as-required mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Full-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Full-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Intern (Part-Time)" />&nbsp;<span class="mmf-list-item-label">Intern (Part-Time)</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Full-time" />&nbsp;<span class="mmf-list-item-label">Full-time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Part-Time" />&nbsp;<span class="mmf-list-item-label">Part-Time</span></span><span class="mmf-list-item"><input type="checkbox" name="job-type[]" value="Contract" />&nbsp;<span class="mmf-list-item-label">Contract</span></span></span></span></li>
<h3>How Did You Hear About This Position?</h3>
<li><label for="candidate_source"></label><span class="mmf-form-control-wrap candidate_source"><span id="CANDIDATE_SOURCE" class="mmf-checkbox"><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Twitter" />&nbsp;<span class="mmf-list-item-label">Twitter</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Facebook" />&nbsp;<span class="mmf-list-item-label">Facebook</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Linkedin" />&nbsp;<span class="mmf-list-item-label">Linkedin</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Craigslist" />&nbsp;<span class="mmf-list-item-label">Craigslist</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="DataXstream" />&nbsp;<span class="mmf-list-item-label">DataXstream</span></span><span class="mmf-list-item"><input type="checkbox" name="candidate_source[]" value="Other" />&nbsp;<span class="mmf-list-item-label">Other</span></span></span></span>
<p><label for="candidate_source_other">Other</label><span class="mmf-form-control-wrap candidate_source_other">&nbsp;<input type="text"  name="candidate_source_other" value="" id="CANDIDATE_SOURCE_OTHER" size="40" maxlength="40" /></span></p>
</ul>
<h3>Additional Information</h3>
<p><label for="additional-information"></label><span class="mmf-form-control-wrap additional-information"><textarea name="additional-information" cols="40" rows="6"></textarea></span></p>
<h3>Submit Resume</h3>
<p><label for="submit-resume"></label><input type="hidden" id="uploaded-file-submit-resume" name="uploaded-file-submit-resume" value="none" />
				<input type="hidden" id="thumb_image-submit-resume">
				<iframe width="0" height="0" style="visibility: hidden">
						 </iframe>				
<iframe id="bfile" name="bfile" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/ajaxfileupload.php?ufiletypes=.doc, .pdf, .txt, .rtf&#038;maxfilesize=2000&#038;fieldname=submit-resume" scrolling="no" frameborder="0" width="350" height="30"></iframe>
* (Required Fields)
</p></blockquote>
<p><label for="submit-application"></label><input type="submit" value="Submit-Application" /> <img class="ajax-loader" style="visibility: hidden;" alt="ajax loader" src="http://www.dataxstream.com/wp-content/plugins/mm-forms/images/ajax-loader.gif" /></p>
</form>
<div class="mmf-response-output"></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.dataxstream.com/2009/10/sap-middleware-developer-job/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
