<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-35436366</id><updated>2009-10-17T03:44:55.594-07:00</updated><title type='text'>SAP Public sector implementation</title><subtitle type='html'>SAP Public sector implementation notes and the difficulties faced during the implementation. It also has a detailed technical information that I'd like to share to the SAP development community.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>24</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35436366.post-8419475405847841658</id><published>2008-09-05T13:45:00.000-07:00</published><updated>2008-09-05T13:45:05.964-07:00</updated><title type='text'></title><content type='html'>             &lt;p id="b92s" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="a.gs" size="4"&gt;&lt;b id="b92s0"&gt;&lt;font id="b92s2" face="Calibri, sans-serif"&gt;&lt;font id="b92s3" color="#000000"&gt;Step 1: Deactivate the &amp;amp;* functions and operation &lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/font&gt; &lt;/p&gt; &lt;p id="b92s4" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s5"&gt; &lt;/p&gt; &lt;p id="b92s6" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s7" face="Calibri, sans-serif"&gt;&lt;font id="b92s8" size="2"&gt;&lt;font id="b92s9" size="3"&gt;1. Transaction PE04&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s10" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s11" src="http://docs.google.com/File?id=dhs6z73_70c8nd84gt_b" name="graphics1" width="551" align="bottom" border="0" height="374"&gt;&lt;/p&gt; &lt;p id="b92s12" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s13"&gt; &lt;/p&gt; &lt;p id="b92s14" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s15" face="Calibri, sans-serif"&gt;&lt;font id="b92s16" size="2"&gt;&lt;font id="b92s17" size="3"&gt;And select the &amp;amp;* entries&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s18" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s19" src="http://docs.google.com/File?id=dhs6z73_71dc4rhwdz_b" name="graphics2" width="598" align="bottom" border="0" height="423"&gt;&lt;/p&gt; &lt;p id="b92s20" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s21" face="Calibri, sans-serif"&gt;&lt;font id="b92s22" size="2"&gt;&lt;font id="b92s23" size="3"&gt;Other than &amp;amp;DECI, please follow the steps as follows. In this document I’ll show the steps for &amp;amp;CURR.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s24" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s25" face="Calibri, sans-serif"&gt;&lt;font id="b92s26" size="2"&gt;&lt;font id="b92s27" size="3"&gt;Select &amp;amp;CURR and Enter:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s28" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s29" src="http://docs.google.com/File?id=dhs6z73_72gpm4b6hn_b" name="graphics3" width="518" align="bottom" border="0" height="365"&gt;&lt;/p&gt; &lt;p id="b92s30" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s31" face="Calibri, sans-serif"&gt;&lt;font id="b92s32" size="2"&gt;&lt;font id="b92s33" size="3"&gt;Press Change and acknowledge the information:&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s34" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s35" src="http://docs.google.com/File?id=dhs6z73_73hrjb2dgr_b" name="graphics4" width="460" align="bottom" border="0" height="165"&gt;&lt;/p&gt; &lt;p id="b92s36" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s37" size="2"&gt;&lt;font id="b92s38" face="Calibri, sans-serif"&gt;&lt;font id="b92s39" color="#000000"&gt;In the Country assignment, Scroll down and you will see the entry Non profit Organization Checked.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s40" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s41" src="http://docs.google.com/File?id=dhs6z73_74ddc5rgdh_b" name="graphics5" width="600" align="bottom" border="0" height="517"&gt;&lt;/p&gt; &lt;p id="b92s42" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s43" face="Calibri, sans-serif"&gt;&lt;font id="b92s44" size="2"&gt;&lt;font id="b92s45" size="3"&gt;Uncheck the entries.  It should look like&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s46" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="b92s47" src="http://docs.google.com/File?id=dhs6z73_75htbhnwdf_b" name="graphics6" width="600" align="bottom" border="0" height="553"&gt;&lt;/p&gt; &lt;p id="b92s48" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s49"&gt; &lt;/p&gt; &lt;p id="b92s50" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s51" face="Calibri, sans-serif"&gt;&lt;font id="b92s52" size="2"&gt;&lt;font id="b92s53" size="3"&gt;Save and Exit.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s54" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s55"&gt; &lt;/p&gt; &lt;p id="b92s56" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s57" size="2"&gt;&lt;font id="b92s58" face="Calibri, sans-serif"&gt;&lt;font id="b92s59" color="#000000"&gt;After repeating this step for all &amp;amp;* Entries, go to transaction SE38, and check the program HUNCALC0. This program should not have any syntax error. If it has any then the deactivation of one &amp;amp;* feature is not done correctly. Please repeat the steps.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s60" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s61"&gt; &lt;/p&gt; &lt;p id="b92s62" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s63" face="Calibri, sans-serif"&gt;&lt;font id="b92s64" size="2"&gt;&lt;b id="b92s65"&gt;&lt;span id="b92s66" style="background: rgb(255, 255, 0) none repeat scroll 0% 0%"&gt;Note: Do not deactivate &amp;amp;DECI&lt;/span&gt;&lt;/b&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s67" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s68"&gt; &lt;/p&gt; &lt;p id="b92s69" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s70" size="4" face="Calibri, sans-serif"&gt;&lt;b id="b92s72"&gt;Step II: Regenerate all $TMP objects to make them Unicode compliant.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s73" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s74"&gt; &lt;/p&gt; &lt;p id="b92s75" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s76" size="2"&gt;&lt;font id="b92s77" face="Calibri, sans-serif"&gt;&lt;font id="b92s78" color="#000000"&gt;Transaction SE38 and execute report RPUMKG00 (Based on the note 573044) &lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/p&gt; &lt;p id="b92s79" class="western" style="margin-bottom: 0in;"&gt;  &lt;/p&gt; &lt;p id="b92s80" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="b92s81" face="Calibri, sans-serif"&gt;&lt;font id="b92s82" size="2"&gt;&lt;font id="b92s83" size="3"&gt;That’s all.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="b92s84" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s85"&gt; &lt;/p&gt; &lt;p id="b92s86" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s87"&gt; &lt;/p&gt; &lt;p id="b92s88" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="b92s89"&gt; &lt;/p&gt; &lt;br id="b92s90"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-8419475405847841658?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/8419475405847841658/comments/default' title='Post Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/8419475405847841658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/8419475405847841658'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-1983507809609267366</id><published>2008-09-04T06:58:00.000-07:00</published><updated>2008-09-04T07:01:08.320-07:00</updated><title type='text'></title><content type='html'>             &lt;p id="bima" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima0" face="Trebuchet MS, sans-serif"&gt;&lt;b id="bima1"&gt;If the data transfer Workbench (SXDA) does not have the necessary structure.&lt;/b&gt;&lt;/font&gt;&lt;/p&gt; &lt;p id="bima2" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima3"&gt; &lt;/p&gt; &lt;p id="bima4" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima5" face="Trebuchet MS, sans-serif"&gt;To correct this we need to maintain entries in the following two tables: SXDA2 (SAPDXfer: Structure Info for Data Transfer Object) and SXDA3 (SAPDXfer: Field Info for Data Transfer Object). Once you have the entries here these tables, the data transfer programs will start recognizing and parsing the input structures accordingly.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima6" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima7"&gt; &lt;/p&gt; &lt;p id="bima8" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima9" face="Trebuchet MS, sans-serif"&gt;Let’s see the step by step procedure for maintaining the infotype 1080 in the SAP HR module. The corresponding structure is E1P1080. For this purpose, the Key for data transfer object is 0777. How did we find that out? By debugging the upload program and I will check if there is any better way to do this.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima10" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima11"&gt; &lt;/p&gt; &lt;p id="bima12" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima13" face="Trebuchet MS, sans-serif"&gt;Since these structures are not available, all we have to do this is to add this structure in the SXDA2 table and the key fields in the SXDA3 table.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima14" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima15"&gt; &lt;/p&gt; &lt;p id="bima16" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima17" face="Trebuchet MS, sans-serif"&gt;For SXDA2 table, let’s see the available components in the 0777 key. The way to see is transaction SM30 and maintain the list with key 0777.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima18" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima19" src="http://docs.google.com/File?id=dck3hpd7_38gh5jq7dt_b" name="graphics1" width="554" align="bottom" border="0" height="324"&gt;&lt;/p&gt; &lt;p id="bima20" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima21" src="http://docs.google.com/File?id=dck3hpd7_39frdcwz49_b" name="graphics2" width="458" align="bottom" border="0" height="143"&gt;&lt;/p&gt; &lt;p id="bima22" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima23"&gt; &lt;/p&gt; &lt;p id="bima24" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima25" src="http://docs.google.com/File?id=dck3hpd7_40fc7zmbzb_b" name="graphics3" width="600" align="bottom" border="0" height="206"&gt;&lt;/p&gt; &lt;p id="bima26" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima27"&gt; &lt;/p&gt; &lt;p id="bima28" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima29" face="Trebuchet MS, sans-serif"&gt;The last position was 83 and the structure was E1P1063.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima30" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima31" face="Trebuchet MS, sans-serif"&gt;To add, press the ‘New Entries’&lt;/font&gt;&lt;/p&gt; &lt;p id="bima32" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima33" src="http://docs.google.com/File?id=dck3hpd7_41cqpzkrct_b" name="graphics4" width="599" align="bottom" border="0" height="157"&gt;&lt;/p&gt; &lt;p id="bima34" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima35"&gt; &lt;/p&gt; &lt;p id="bima36" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima37" face="Trebuchet MS, sans-serif"&gt;And Add the new info type like the following:&lt;/font&gt;&lt;/p&gt; &lt;p id="bima38" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima39" src="http://docs.google.com/File?id=dck3hpd7_42fb2q7qgq_b" name="graphics5" width="462" align="bottom" border="0" height="437"&gt;&lt;/p&gt; &lt;p id="bima40" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima41" face="Trebuchet MS, sans-serif"&gt;And press the Active button.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima42" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima43" face="Trebuchet MS, sans-serif"&gt;And confirm the following message.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima44" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima45" src="http://docs.google.com/File?id=dck3hpd7_43d4396vd3_b" name="graphics6" width="291" align="bottom" border="0" height="29"&gt;&lt;/p&gt; &lt;p id="bima46" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima47"&gt; &lt;/p&gt; &lt;p id="bima48" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima49" face="Trebuchet MS, sans-serif"&gt;In the same way do the changes to the SXDA3 table, which is going to have the key elements. Use transaction SM30 and maintain SXDA3.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima50" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima51" src="http://docs.google.com/File?id=dck3hpd7_44gzk3j9gp_b" name="graphics7" width="538" align="bottom" border="0" height="329"&gt;&lt;/p&gt; &lt;p id="bima52" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima53" face="Trebuchet MS, sans-serif"&gt;Confirm the following message:&lt;/font&gt;&lt;/p&gt; &lt;p id="bima54" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima55" src="http://docs.google.com/File?id=dck3hpd7_452xgx2xcs_b" name="graphics8" width="461" align="bottom" border="0" height="141"&gt;&lt;/p&gt; &lt;p id="bima56" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima57" face="Trebuchet MS, sans-serif"&gt;Position on the key 0777 and the item 83 (Which was the one we identified as the last item existed in SXDA2 before our addition. We added item 84)&lt;/font&gt;&lt;/p&gt; &lt;p id="bima58" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima59" src="http://docs.google.com/File?id=dck3hpd7_46hr9cpzfk_b" name="graphics9" width="600" align="bottom" border="0" height="154"&gt;&lt;/p&gt; &lt;p id="bima60" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima61" face="Trebuchet MS, sans-serif"&gt;Create ‘New Entries’ as below:&lt;/font&gt;&lt;/p&gt; &lt;p id="bima62" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima63" src="http://docs.google.com/File?id=dck3hpd7_47ddxtdzd4_b" name="graphics10" width="418" align="bottom" border="0" height="371"&gt;&lt;/p&gt; &lt;p id="bima64" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima65" face="Trebuchet MS, sans-serif"&gt;Remember to check the Active box. Save the entries confirming the following:&lt;/font&gt;&lt;/p&gt; &lt;p id="bima66" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima67" src="http://docs.google.com/File?id=dck3hpd7_48dpmd5wdj_b" name="graphics11" width="306" align="bottom" border="0" height="34"&gt;&lt;/p&gt; &lt;p id="bima68" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima69" face="Trebuchet MS, sans-serif"&gt;Save the changes in a transport.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima70" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima71" src="http://docs.google.com/File?id=dck3hpd7_49hhwpbwhc_b" name="graphics12" width="526" align="bottom" border="0" height="167"&gt;&lt;/p&gt; &lt;p id="bima72" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima73" face="Trebuchet MS, sans-serif"&gt;Repeat the same for the following key fields:&lt;/font&gt;&lt;/p&gt; &lt;p id="bima74" class="western" style="margin-bottom: 0in;"&gt;&lt;img id="bima75" src="http://docs.google.com/File?id=dck3hpd7_50g3pb3kfm_b" name="graphics13" width="579" align="bottom" border="0" height="204"&gt;&lt;/p&gt; &lt;p id="bima76" class="western" style="margin-bottom: 0in;"&gt;&lt;font id="bima77" face="Trebuchet MS, sans-serif"&gt;That’s all. The whole process can be repeated for any new structure that needs to be used in the data transfer workbench.&lt;/font&gt;&lt;/p&gt; &lt;p id="bima78" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima79"&gt; &lt;/p&gt; &lt;p id="bima80" class="western" style="margin-bottom: 0in;"&gt;  &lt;/p&gt; &lt;p id="bima81" class="western" style="margin-bottom: 0in;"&gt;&lt;br id="bima82"&gt; &lt;/p&gt; &lt;br id="bima83"&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-1983507809609267366?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/1983507809609267366/comments/default' title='Post Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/1983507809609267366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/1983507809609267366'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-6667678254910832175</id><published>2008-08-15T13:23:00.000-07:00</published><updated>2008-08-15T13:40:46.811-07:00</updated><title type='text'>Implicit enhancement points - Changing standard SAP code using the implict enhamcement code points</title><content type='html'>Implicit enhancement points are basically points within ABAP code where an enhancement point is implied, and in which case can be created. Examples of implicit enhancement points are at the beginning and end of FORM’s, at the end of a program, include or function module etc. Below is a step by step demonstration of how to create and implicit enhancement point.&lt;br /&gt;&lt;br /&gt;Step 1 - Activate the enhancement functionality&lt;br /&gt;Within SE80 open up the program/include you want to enhance and click on the enhancement button (show below)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://www.sapdevelopment.co.uk/enhance/eframework/image1.PNG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px;" src="http://www.sapdevelopment.co.uk/enhance/eframework/image1.PNG" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 - Enhancement functionality activated&lt;br /&gt;The SE80 screen will now look something like below!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXmrGWNRTI/AAAAAAAAAHI/8UXaBIeGC-A/s1600-h/image2.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXmrGWNRTI/AAAAAAAAAHI/8UXaBIeGC-A/s320/image2.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234843770000590130" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 - Show implict enhancement points&lt;br /&gt;Goto menu 'edit-&gt;Enhamcement Operations-&gt;Show Implicit Enhancement Options' to display implicit enhancement points within the ABAP code&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXnoK4kLVI/AAAAAAAAAHQ/XBkS9_PlOnE/s1600-h/image3.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXnoK4kLVI/AAAAAAAAAHQ/XBkS9_PlOnE/s320/image3.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234844819190459730" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 4 - Enhancement points with the code&lt;br /&gt;Once you have done this you will be able to see all the implicit enhancement points available within you code, these are denoted by the line of quotation marks and the black arrow at the start. In this example there are enhancement points at the start and end of each form and one at the very end of the include.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXoMmRf4hI/AAAAAAAAAHY/2FLEZOunaoA/s1600-h/image4.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXoMmRf4hI/AAAAAAAAAHY/2FLEZOunaoA/s320/image4.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845445018083858" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXoNEXCxAI/AAAAAAAAAHg/58LKTWfkXio/s1600-h/image5.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXoNEXCxAI/AAAAAAAAAHg/58LKTWfkXio/s320/image5.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845453094405122" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 5 - Create an implicit enhamcement point&lt;br /&gt;Inorder to implement an implicit enhancement point simply right click on the required enhamcement point and select 'Enhancement Implementation-&gt;create'.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXoNbLFfmI/AAAAAAAAAHo/TwTq8TQq2NM/s1600-h/image6.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXoNbLFfmI/AAAAAAAAAHo/TwTq8TQq2NM/s320/image6.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845459218267746" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 6 - Enhamcement point type&lt;br /&gt;Next click on the code button to create a code implementation&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXoNVyj6TI/AAAAAAAAAHw/RQFl14Qzm2o/s1600-h/image7.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXoNVyj6TI/AAAAAAAAAHw/RQFl14Qzm2o/s320/image7.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845457773226290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 7 - Name and description&lt;br /&gt;Next give the enhancement point a name and description. Click the green tick&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXoNtE6McI/AAAAAAAAAH4/qSKEdj0ucm4/s1600-h/image8.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXoNtE6McI/AAAAAAAAAH4/qSKEdj0ucm4/s320/image8.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845464024199618" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Step 8 - Change request&lt;br /&gt;Assign change to a change request in the usual way&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXooHPN8vI/AAAAAAAAAIA/DYtC_oJEnnI/s1600-h/image9.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXooHPN8vI/AAAAAAAAAIA/DYtC_oJEnnI/s320/image9.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845917723357938" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 9 - Enhancement point created&lt;br /&gt;The enhamcement point will now have been created in the appropriate place. Denoted by the ENHANCEMENT...ENDENHANCEMENT tags&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXooGTeMYI/AAAAAAAAAII/aEAhXFC114E/s1600-h/image10.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_LoTgRpuhfFc/SKXooGTeMYI/AAAAAAAAAII/aEAhXFC114E/s320/image10.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845917472764290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 10 - Enter code into enhancement&lt;br /&gt;You can now enter your own code into the enhancement point!&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXooX-rIrI/AAAAAAAAAIQ/tgjQnx5qP1U/s1600-h/image11.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_LoTgRpuhfFc/SKXooX-rIrI/AAAAAAAAAIQ/tgjQnx5qP1U/s320/image11.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845922217370290" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 11 - Activate the enhancement point&lt;br /&gt;Click the 'Activate Enhancements' button to activate it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXoohm_sDI/AAAAAAAAAIY/3gcGm2u1SXc/s1600-h/image12.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXoohm_sDI/AAAAAAAAAIY/3gcGm2u1SXc/s320/image12.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845924802408498" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Step 12 - Turn enhancement mode off&lt;br /&gt;Now click the 'Active &lt;-&gt; inactive' button to turn enhancement mode off and return to standard SE80&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_LoTgRpuhfFc/SKXoomq1nOI/AAAAAAAAAIg/UG9IgJ9Jll4/s1600-h/image13.PNG"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_LoTgRpuhfFc/SKXoomq1nOI/AAAAAAAAAIg/UG9IgJ9Jll4/s320/image13.PNG" border="0" alt=""id="BLOGGER_PHOTO_ID_5234845926160702690" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-6667678254910832175?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/6667678254910832175/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=6667678254910832175' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6667678254910832175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6667678254910832175'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2008/08/implicit-enhancement-points-changing.html' title='Implicit enhancement points - Changing standard SAP code using the implict enhamcement code points'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_LoTgRpuhfFc/SKXmrGWNRTI/AAAAAAAAAHI/8UXaBIeGC-A/s72-c/image2.PNG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-4141083220072609368</id><published>2008-08-06T18:14:00.000-07:00</published><updated>2008-08-06T18:32:53.712-07:00</updated><title type='text'>vacation</title><content type='html'>Day 1    &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;*  Julius Sturgis Pretzel Bakery&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Julius Sturgis Pretzel Bakery Description&lt;br /&gt;&lt;br /&gt;What's better than being handed a big, squishy wad of dough and being taught how to twist it into a pretzel? That's what happens at the start of the Julius Sturgis Pretzel Bakery tour. The tour explores the large space where Sturgis started the first pretzel bakery in the U.S. back in the late 1700s. The guides are animated and enthusiastic, and at only 20 minutes or so the tour's short enough to hold the interest of most kids. Children will get some giggles out of the see-saw-like device used to knead pretzel dough.&lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: The pretzel dough is just like that other kind of dough that gets in your carpet. Ward off tantrums by warning kids that they don't get to keep it.&lt;br /&gt;Just the Facts&lt;br /&gt;&lt;br /&gt;Hours: Bakery Tours Mon.-Sat. 9:30a.m.-4:30 p.m. Closed Sunday Bakery Store Mon.-Sat. 9 a.m.-5 p.m. Closed Sunday&lt;br /&gt;&lt;br /&gt;Fees: Under $10&lt;br /&gt;&lt;br /&gt;Planned Time: Less than 1 hour&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;* Abe's Buggy Rides&lt;/span&gt;&lt;br /&gt;Abe's Buggy Rides Description&lt;br /&gt;&lt;br /&gt;Abe's is a combination buggy ride provider, petting zoo, and miniature snack bar. Catering primarily to families, you can choose to ride in authentic Amish buggies of varying sizes for 20 to 75 minutes. Any ride longer than 20 minutes will take you under a covered bridge and past Amish farms and houses. Have your driver sign your feedback card upon your return and you'll get a homemade cookie or whoopee pie. &lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: Animals, a buggy ride, and a big pond with koi fish. Need we say more?&lt;br /&gt;&lt;br /&gt;Just the Facts&lt;br /&gt;Hours: Mon.-Sat., 9 a.m.-6 p.m.&lt;br /&gt;Fees: $10 - $20&lt;br /&gt;Planned Time: 1 to 2 hours&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;*    Hands-On House Children Museum&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hands-On House Children's Museum Description&lt;br /&gt;&lt;br /&gt;"Don't touch that" are words you will not hear at the Hands-On House Children's Museum. While it's obviously big on hands-on, interactive elements, the museum also has a distinct Lancaster County flavor, with fun exhibits about machinery and farming. While the museum is on the small side, its interactive focus keeps kids happy and engaged.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: Perfect place to let little ones run around safely.&lt;br /&gt;&lt;br /&gt;Just the Facts&lt;br /&gt;Hours: Vary by season.&lt;br /&gt;Fees: Under $10&lt;br /&gt;Planned Time: 1 to 2 hours&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Day 2&lt;br /&gt;    * Dutch Wonderland Family Amusement Park&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Dutch Wonderland Family Amusement Park Description&lt;br /&gt;&lt;br /&gt;The excitement starts when you walk through the big castle faÃ§ade into Dutch Wonderland. With about 30 rides, this meandering, shady park isn't overwhelmingly large, but there's plenty of fun for kids up to age 12. Mini-theaters throughout the park provide short, entertaining shows and skits that will excite kids and give parents a chance to sit for a bit. Kids will love the royal treatment -- you might even see the Dutch Wonderland Princess or Duke, who regularly appear at events and sometimes even wander the park doing meet-and-greets with children&lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: A selection of gentle attractions ensure that little ones can get equal time on the rides. &lt;br /&gt;&lt;br /&gt;Just the Facts&lt;br /&gt;Hours: Park is closed January through April. Hours vary by month. For specifics, visit http://www.dutchwonderland.com/hours/index.html.&lt;br /&gt;Fees: $20 - $30&lt;br /&gt;Planned Time: Full day&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;* Plain and Fancy Restaurant and Farm&lt;/span&gt;&lt;br /&gt;Plain and Fancy Restaurant and Farm Description&lt;br /&gt;&lt;br /&gt;When you're given the choice between ordering the Amish Farm Feast or off the menu, go for the feast. You'll be seated at a table with people you don't know, but that makes it more fun to pass around the heaping platters of fried chicken, ham, turkey, buttered noodles, green beans, and so much more that will come your way. Save room for dessert -- your kids will love the apple and shoo-fly pies topped with ice cream and whipped cream. &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;&lt;br /&gt;Day 3&lt;br /&gt;* Strasburg Rail Road&lt;/span&gt;&lt;br /&gt;Strasburg Rail Road Description&lt;br /&gt;&lt;br /&gt;It's almost impossible not to get excited when you hear the steam train's booming horn as it closes in on the station. Larger than life, the coal-fueled steam engine is lovingly restored. Children will delight in riding the rails to Paradise (Pennsylvania, that is) while listening to the conductor note points of interest, such as the Amish farms and the Red Caboose Motel (which features real train cars as sleeping rooms). At the end of the route, your kids will love shouting and cheering for the engineers who will hook up an engine to the "back" of the train and take it on its 20-minute ride to the station.&lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: Windows can be opened, and are just the right height to climb up to (and through!). Remind little ones to keep their hands in the car.&lt;br /&gt;&lt;br /&gt;Just the Facts&lt;br /&gt;Hours: Changes frequently. Best to check the online calendar at www.strasburgrailroad.com.&lt;br /&gt;Fees: $10 - $20&lt;br /&gt;Recommended Time: 1 to 2 hours&lt;br /&gt;    &lt;br /&gt;&lt;span style="font-weight:bold;"&gt;* Cherry-Crest Adventure Farm&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cherry-Crest Adventure Farm Description&lt;br /&gt;&lt;br /&gt;Get a good night's sleep before you visit Cherry-Crest Adventure Farm and its five-acre corn maze, the Amazing Maize Maze. With more than 2.5 miles of trails, the best-case scenario is that it's going to take you an hour to get through, although some have taken five hours. That's OK -- there's a snack shack and bathrooms inside the maze, plus a few places to sit and rest.&lt;br /&gt;&lt;br /&gt;In addition to the maze, there are dozens more attractions on the farm, including a petting zoo, the Barnyard Jump bouncy "pillow," obstacle courses, hayrides, pumpkin tosses, the Lil' Farmers Playground, and a singing chicken show. The fudge shop and Home Cookin' Cafe keep everyone fueled for maximum play time. Or, bring a picnic and enjoy it under the tents in the Barnyard area.&lt;br /&gt;&lt;br /&gt;Toddlers &amp; Pre-K: There is a tiny version of the maze set up with hay bales. Forego the big maze and enjoy the other activities on the farm, including a stuffed animal workshop.&lt;br /&gt;&lt;br /&gt;School-Age Kids: Run, run, run! When they get tired, you can always take the emergency exit out of the maze. Still, you may be surprised at the motivation of making it all the way through. &lt;br /&gt;Just the Facts&lt;br /&gt;&lt;br /&gt;Hours: Vary by month and day. Check the website at https://www.cherrycrestfarm.com/schedule.asp&lt;br /&gt;Fees: $10 - $20&lt;br /&gt;Recommended Time: 2 to 4 hours&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight:bold;"&gt;* Amish Farm and House&lt;/span&gt;&lt;br /&gt;Amish Farm and House Description&lt;br /&gt;&lt;br /&gt;Yes, it's right off the highway behind Target, but don't pass by this delightful and authentic stop in Pennsylvania Dutch Country. Complete with a covered bridge and deeded by William Penn, the farm is almost exactly like it was in 1805, the year it was built. A one-room school house on the property gives a glimpse of how many Amish children are schooled to this day. Kids will love the super-cool 1805 Conestoga wagon, animals -- including horses, pigs, cows and goats -- and lots of space to run around.&lt;br /&gt;Toddlers &amp; Pre-K: There are goats to pet and a playground to be conquered. Life is good on the Amish Farm.&lt;br /&gt;&lt;br /&gt;Just the Facts&lt;br /&gt;Hours: Vary by season.&lt;br /&gt;Fees: Under $10&lt;br /&gt;Recommended Time: 2 to 4 hours&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-4141083220072609368?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/4141083220072609368/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=4141083220072609368' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/4141083220072609368'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/4141083220072609368'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2008/08/vacation.html' title='vacation'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-7667717570301240417</id><published>2008-05-13T07:37:00.000-07:00</published><updated>2008-05-13T07:39:34.994-07:00</updated><title type='text'>Working with Workflow container macros</title><content type='html'>  &lt;h3 style="font-family: trebuchet ms;"&gt;Working with Workflow container macros:&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Macros for accessing objects&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Accessing objects in the business object repository is currently supported by a set of macros. These macros are described in more detail in the following.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;All macros are comprised in the Include &lt;cntn01&gt;. This Include is contained in the Include &lt;object&gt;, therefore making these macros automatically available in all object type implementations. Client programs which work with objects should use &lt;cntn01&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;If the macros are used in ABAP Objects classes, use the includes &lt;cntn02&gt; and &lt;cntn03&gt; . &lt;cntn02&gt; contains the actual macro definitions; include it in the macro section of the class. Some attributes addressed from &lt;cntn02&gt; are defined in &lt;cntn03&gt;. &lt;cntn03&gt; must be included in the type section of the class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Container&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Containers are used for dynamic transfer of parameters and result values. The following macros are available for processing them:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="background: rgb(254, 254, 238) none repeat scroll 0% 50%; -moz-background-clip: -moz-initial; -moz-background-origin: -moz-initial; -moz-background-inline-policy: -moz-initial; font-family: trebuchet ms;" border="0" cellpadding="0"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Macro&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="padding: 0.75pt;"&gt;   &lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Description&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_container Declare a container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_create_container Create a new container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_release_container Release a container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_clear_container Clear a container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_create_element Create element in container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_set_element Insert element in container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_set_table Insert multiline element in container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_get_element Read element from container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_get_table Read multiline element from container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;swc_delete_element Delete element from container&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;A detailed documentation of the container macros is provided in the SAP Library under: (Basis -&gt; Business Management -&gt; SAP Business Workflow Navigation -&gt; Business Object Builder -&gt; Programming in Implementation Program).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Object references&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h3&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Declaration&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;DATA: &lt;object&gt; TYPE SWC_OBJECT&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Variables which contain object references are defined with the type SWC_OBJECT. A special case within the object implementation is the system variable SELF, which contains a reference to itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Create&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_CREATE_OBJECT &lt;object&gt; &lt;object&gt; &lt;key&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Object references are created using the macro SWC_CREATE_OBJECT. The first parameter received by the macro is the variable in which the reference is returned, the second parameter the type of object which is to be created, and the third parameter the key of the object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Delete&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_FREE_OBJECT &lt;object&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_FREE_OBJECT can be used to release existing object references. The macro receives the reference to be released as input.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Read type and key&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_GET_OBJECT_TYPE &lt;object&gt; &lt;object&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_GET_OBJECT_TYPE can be used to read the object type belonging to the object reference. The first parameter received by the macro is the object reference, the second parameter the return parameter containing the respective object type after the call. The field SWOTOBJID-OBJTYPE can be used as the data type reference for the object type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_GET_OBJECT_KEY &lt;object&gt; &lt;object&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_GET_OBJECT_KEY can be used to read the key of an object. The macro is passed the reference of the object whose key is to be read as the first parameter and returns the key in the second parameter as the result. The field SWOTOBJID-OBJKEY can be used as the data type reference for the object type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Method access&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_CALL_METHOD &lt;object&gt; &lt;method&gt; &lt;container&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_CALL_METHOD can be used to call methods of objects. The first parameter contains the object reference, the second the name of the method. The container holding all input values is passed in the third parameter. If the call is successful, the result (container element _RESULT) and the export parameters of the method call are stored in the container. If the invoked method raises an exception, the number of the exception is contained in the system variable SY-SUBRC and other values in the variables SY-MSGV1, ..., SY-MSGV4.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;Attribute access&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Read&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_GET_[TABLE_]PROPERTY &lt;object&gt; &lt;attribute&gt;&lt;br /&gt;&lt;attribute&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macros SWC_GET_PROPERTY or SWC_GET_TABLE_PROPERTY can be used to access the attributes of an object. Both macros receive the object reference in the first parameter and the name of the attribute which is to be accessed in the second parameter. Both macros return the value of the attribute in the third parameter as the result. SWC_GET_PROPERTY returns single attribute values, SWC_GET_TABLE_PROPERTY returns multiline attribute values as internal tables.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;Refresh&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_REFRESH_OBJECT &lt;object&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Attributes which are references to database fields are only read from the database for the first access. To refresh attribute values, the macro SWC_REFRESH_OBJECT can be called, causing the database to be read again the next time the attribute is accessed. The macro contains the object reference as an input parameter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;Trigger events&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_RAISE_EVENT &lt;object&gt; &lt;event&gt; &lt;container&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_RAISE_EVENT can be used to trigger events of object types. The reference to the object is passed to the macro as input in the first parameter, the name of the event in the second, and the container with the parameters for the event in the third parameter.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Special features within object type implementations&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;In addition to the macros listed above, &lt;object&gt; contains macros which can be used within object type implementations.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Object reference to self&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;An own instance within the object type reference can be referenced with the variable SELF. This reference can be used to request attribute values of the current instance with SWC_GET_[TABLE_]PROPERTY.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Set object key&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;SWC_SET_OBJECTKEY &lt;object&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The macro SWC_SET_OBJECTKEY can be used to set the key of the object within method implementations. This is practical for methods such as create or find which link an object reference to a persistent object - which may be newly created.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;Raise exceptions&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;EXIT_RETURN &lt;exception&gt; &lt;var1&gt; &lt;var2&gt; &lt;var3&gt; &lt;var4&gt;&lt;/span&gt;&lt;a href="javascript:void(0)" tabindex="10" onclick="return false;"&gt;&lt;span&gt;Publish Post&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;Within object type implementations, methods can raise exceptions which are defined in the method interface. To do this, the macro EXIT_RETURN is called which is passed the number of the exception and four result values as input. The result values can also be SPACE if they are empty.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;h3 style="font-family: trebuchet ms;"&gt;&lt;span style="font-size:85%;"&gt;Example&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/h3&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The following example is an extract from the example program RSWOCLNT. It uses the object types SCHEDULE, DOMINANT und APPOINTMENT from the SAP appointment calendar (transaction SSC1).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;The program first lists the dominants (attribute DominantOfToday) and the appointments of the day (attribute AppointmentsOfToday), and then the appointments of the last and the next 5 days (method AppointmentsGet). Before the program is executed, appointments should be created in the calendar (SSC1).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;"&gt;&lt;span style="font-size: 9pt; color: black;"&gt;REPORT RSWOCLNT.&lt;br /&gt;&lt;br /&gt;***** use of container macros&lt;br /&gt;INCLUDE &lt;cntn01&gt;.&lt;br /&gt;&lt;br /&gt;***** object reference declaration&lt;br /&gt;DATA: SCHEDULE TYPE SWC_OBJECT.&lt;br /&gt;&lt;br /&gt;***** object reference creation&lt;br /&gt;SWC_CREATE_OBJECT SCHEDULE 'SCHEDULE' SY-UNAME.&lt;br /&gt;IF &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;SY-SUBRC&lt;/st1:City&gt; &lt;st1:state st="on"&gt;NE&lt;/st1:State&gt;&lt;/st1:place&gt; 0.&lt;br /&gt;  .....&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;***** access to attribute&lt;br /&gt;DATA: DOMINANT TYPE SWC_OBJECT.&lt;br /&gt;SWC_GET_PROPERTY SCHEDULE 'DominantOfToday' DOMINANT.&lt;br /&gt;IF &lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;SY-SUBRC&lt;/st1:City&gt; &lt;st1:state st="on"&gt;NE&lt;/st1:State&gt;&lt;/st1:place&gt; 0.&lt;br /&gt;  .....&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;***** access to mulitline attribute&lt;br /&gt;DATA: APPOINTMENTS TYPE SWC_OBJECT OCCURS 0.&lt;br /&gt;DATA: APP TYPE SWC_OBJECT.&lt;br /&gt;SWC_GET_TABLE_PROPERTY SCHEDULE 'AppointmentsOfToday' APPOINTMENTS.&lt;br /&gt;IF SY-SUBRC = 0.&lt;br /&gt;  &lt;st1:place st="on"&gt;LOOP&lt;/st1:place&gt; AT APPOINTMENTS INTO APP.&lt;br /&gt;  .....&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;***** method invocation&lt;br /&gt;DATEFROM = SY-DATUM - 5.&lt;br /&gt;DATETO   = SY-DATUM + 5.&lt;br /&gt;*        create container&lt;br /&gt;SWC_CONTAINER CONTAINER.&lt;br /&gt;*        fill container&lt;br /&gt;SWC_SET_ELEMENT CONTAINER 'DateFrom' DATEFROM.&lt;br /&gt;SWC_SET_ELEMENT CONTAINER 'DateTo' DATETO.&lt;br /&gt;*    call method&lt;br /&gt;SWC_CALL_METHOD SCHEDULE 'AppointmentsGet' CONTAINER.&lt;br /&gt;IF SY-SUBRC = 0.&lt;br /&gt;  REFRESH APPOINTMENTS.&lt;br /&gt;*    read method result&lt;br /&gt;  SWC_GET_TABLE CONTAINER '_RESULT' APPOINTMENTS.&lt;br /&gt;  &lt;st1:place st="on"&gt;LOOP&lt;/st1:place&gt; AT APPOINTMENTS INTO APP.&lt;br /&gt;  .....&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDIF.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="font-family: trebuchet ms;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-7667717570301240417?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/7667717570301240417/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=7667717570301240417' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/7667717570301240417'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/7667717570301240417'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2008/05/working-with-workflow-container-macros.html' title='Working with Workflow container macros'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-6744200144050018465</id><published>2008-03-25T10:40:00.001-07:00</published><updated>2008-03-25T10:40:48.139-07:00</updated><title type='text'>Common workflow issue</title><content type='html'>&lt;h1&gt;&lt;span style="font-size:85%;"&gt;No Administrator Found for the task&lt;/span&gt;&lt;/h1&gt; &lt;p&gt;This is a common error faced by many people during execution of the work  items. In such cases, do the following:&lt;/p&gt; &lt;ol&gt;&lt;li&gt;Execute SWU_OBUF to reset the buffers. If the problem still persists, go      to step 2.&lt;/li&gt;&lt;li&gt; SO01--&gt; settings --&gt; workflow settings--&gt;refresh                     organization environment&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-6744200144050018465?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/6744200144050018465/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=6744200144050018465' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6744200144050018465'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6744200144050018465'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2008/03/common-workflow-issue.html' title='Common workflow issue'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-9050064812317763440</id><published>2008-02-10T12:50:00.000-08:00</published><updated>2008-05-13T07:37:04.298-07:00</updated><title type='text'></title><content type='html'>&lt;h1&gt;&lt;center&gt;ABAP Review Check List&lt;/center&gt;&lt;/h1&gt;  &lt;center&gt;This is a work in process. Please feel free to ask questions, make suggestions &amp;amp; correct misinformation!&lt;br&gt;Siva Kumar at sthiagarajan@unicef.org&lt;br&gt;&lt;a href="mailto:fuller@mit.edu"&gt;&lt;/a&gt;&lt;/center&gt;  &lt;h2&gt;&lt;center&gt;Mandatory Checks&lt;/center&gt;&lt;/h2&gt;  &lt;h3&gt;I. Documentation&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;&lt;a title="Program documentation" target="_blank" href="View?docID=dhs6z73_43fqs5bvf5&amp;amp;revision=_latest"&gt;Program documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="Function Module documentation" target="_blank" href="#FMdoc" id="yzrx"&gt;Function Module documentation&lt;/a&gt; &lt;/li&gt; &lt;li&gt;&lt;a title="Include documentation" href="#INdoc"&gt;Include documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="In source    documentation" href="View?docID=dhs6z73_44hc5d46d2&amp;amp;revision=_latest" id="g12y"&gt;In source    documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a target="_blank" title="Beginning block    of source code documentation" href="View?docid=dhs6z73_44hc5d46d2"&gt;Beginning block    of source code documentation&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;II. Naming Conventions&lt;/h3&gt;  &lt;blockquote&gt;&lt;h4&gt;Variable Names&lt;/h4&gt;&lt;/blockquote&gt;  &lt;ol&gt;&lt;li&gt;Selection options = &lt;b&gt;s_ &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Internal tables (global) = &lt;b&gt;t_ &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Internal tables (local) = &lt;b&gt;lt_ &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Constants = &lt;b&gt;c_ &lt;/b&gt;&lt;/li&gt;&lt;li&gt;Ranges = &lt;b&gt;r_&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Form parameter = &lt;b&gt;p_&lt;/b&gt; (Used    in the actual form not the Perform statement.)&lt;/li&gt;&lt;li&gt;Screen Parameters = &lt;b&gt;a_&lt;/b&gt; or &lt;b&gt;p_&lt;/b&gt;        &lt;h4&gt;Program &amp;amp; Function Group Names&lt;/h4&gt;&lt;/li&gt;&lt;li&gt;&lt;a title="UNICEF SAP development guidelines" target="_blank" href="http://www.intranet.unicef.org/IRM/SAPFLSTeamEplace.nsf/b66986d423cc086185256e5a0057fd1a/2c202d946cedb5d0852573e9005838ee?OpenDocument" id="pdkl"&gt;UNICEF SAP development guidelines&lt;/a&gt; &lt;a href="http://web.mit.edu/fss/dev/devstand5.html#APPENDIXB"&gt;&lt;font style="font-family: Arial;" color="#000000"&gt;Appendix    B (You need to log in to Unicef's intranet to get this document)&lt;/font&gt;&lt;br&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;        &lt;p&gt;ABAP programs (reports), function groups and module pools all    use a 2 character application name abbreviation. The list of    current UNICEF applications will be maintained in &lt;a href="http://web.mit.edu/fss/dev/devstand5.html#APPENDIXB"&gt;&lt;u&gt;Appendix    B&lt;/u&gt;&lt;/a&gt;&lt;u&gt;.&lt;/u&gt;&lt;/p&gt;    &lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;III. Attributes&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;Authorization Group in attributes    - Programs that can be executed by all UNICEF users must be    configured using the Authorization Group 'ZOPN2ALL' for    Application '*'.&lt;/li&gt;&lt;li&gt;Development Class needs to be application specific. This    standard is a work in process.&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;IV. Return Codes&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;&lt;a title="Test return codes" href="View?docID=dhs6z73_46c65tg8f9&amp;amp;revision=_latest"&gt;Test return codes&lt;/a&gt;    (sy-subrc) for success and failure after any I/O and calls to    function modules (database selects, internal table reads, call    transactions, I/O to UNIX or workstation files, etc)&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;V. Transaction Code assigned to executable programs&lt;/h3&gt; &lt;blockquote&gt;   &lt;p&gt;Every type "executable program" must have an assigned transaction   code which is used to execute the program. &lt;/p&gt; &lt;/blockquote&gt; &lt;h3&gt;VI. Authorization Checks for HR custom programs&lt;/h3&gt; &lt;blockquote&gt;   &lt;p&gt;Methods to accomplish authorization checks for HR are illustrated below:&lt;/p&gt;   &lt;p&gt;1. Use function module "HR_READ_INFOTYPE" instead of direct SELECT&lt;br&gt;     statements when reading a specific infotype.&lt;/p&gt;   &lt;p&gt;2. Use logical database PNP to leverage SAP authorizations (caveat:&lt;br&gt;     performance can be slow)&lt;/p&gt;   &lt;p&gt;3. SELECT statements should only be used when the SAP documented data&lt;br&gt;     interfaces which incorporate the SAP authorization checks (Logical&lt;br&gt;     DataBases, function modules, and BAPI's) cannot provide the functionality&lt;br&gt;     required. If it is necessary to use SELECT's, then you must perform your&lt;br&gt;     own AUTHORITY-CHECK on the data selected.&lt;/p&gt;   &lt;p&gt;4. Place a strict authorization group at the program (transaction)&lt;br&gt;     level. If a wide variety of data for a large group of individuals is&lt;br&gt;     needed in a single program, then this program must have a very strict&lt;br&gt;     authorization on who can run it (definitely not on any menu path).&lt;/p&gt; &lt;/blockquote&gt; &lt;h3&gt;VII. Parameter, P_BOUNCED_EMAIL, should be passed to Z_SENDMAIL&lt;/h3&gt; &lt;blockquote&gt;   &lt;p&gt;In order of preference, please provide one of the following for P_BOUNCED_EMAIL   :&lt;/p&gt;   &lt;ol&gt;&lt;li&gt;A mailing list of people from the business process side who can recognize       and have the ability to resolve the issue of a bounced mail (e.g. CAO maintains       a master email list of cost object approvers).&lt;/li&gt;&lt;li&gt;A mailing list of people       from an Admin Computing support or project team who can resolve the bounced       mail.&lt;/li&gt;&lt;li&gt;"sap-bounces.unicef@gmail.com". This mail will go to Siva Kumar, Amina Alavi and Victor Lee for resolution. &lt;/li&gt;&lt;/ol&gt; &lt;/blockquote&gt; &lt;h3&gt;VIII. Separate &lt;a href="http://web.mit.edu/sapr3/graphics/dialog.gif"&gt;Dialog Program   Includes&lt;/a&gt;&lt;/h3&gt; &lt;ol&gt;&lt;li&gt;PBO&lt;/li&gt;&lt;li&gt;PAI&lt;/li&gt;&lt;li&gt;Global data&lt;/li&gt;&lt;li&gt;Forms&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;IX. Standards&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;Development&lt;/li&gt;&lt;li&gt;Quality    Assurance&lt;/li&gt;&lt;li&gt;Change    Request&lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;&lt;center&gt;Strongly Recommended Practices&lt;/center&gt;&lt;/h2&gt;  &lt;h3&gt;I. Non Database Performance&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;Dead Code (Program -&amp;gt; Check -&amp;gt; Extended Prog.    Check) - unused subroutines appear as warnings under PERFORM/FORM    interfaces. - unused variables appear as warnings under Field    attributes. Transaction code is &lt;b&gt;SLIN&lt;/b&gt;. This will also catch    literals (section III below).&lt;/li&gt;&lt;li&gt;When possible use &lt;b&gt;MOVE&lt;/b&gt; instead of    &lt;b&gt;MOVE-CORRESPONDING&lt;/b&gt; (move bseg to *bseg or move    t_prps[] to t_prps2[] if you want to copy entire    table or t_prps to t_prps2 if you only want to copy header    line.)&lt;/li&gt;&lt;li&gt;Code executed more than once should be placed in a form    routine.&lt;/li&gt;&lt;li&gt;&lt;a title="http://docs.google.com/View?docID=dhs6z73_45f5r2q9fd&amp;amp;revision=_latest" target="_blank" href="View?docID=dhs6z73_45f5r2q9fd&amp;amp;revision=_latest"&gt;http://docs.google.com/View?docID=dhs6z73_45f5r2q9fd&amp;amp;revision=_latest&lt;/a&gt; when possible    especially against non-buffered    table (Data Dictionary -&amp;gt; Technical Info)&lt;/li&gt;&lt;li&gt;&lt;a title="SORT tables BY    fields" target="_blank" href="View?docid=dhs6z73_45f5r2q9fd"&gt;&lt;b&gt;SORT tables BY    fields&lt;/b&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Append"&gt;Avoid unnecessary moves to    table header areas.&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#typed"&gt;Subroutine parameters should    be typed&lt;/a&gt; for efficiency and to help prevent coding and runtime    errors.&lt;/li&gt;&lt;/ol&gt;  &lt;h3&gt;II. Database Performance&lt;/h3&gt;  &lt;ol&gt;&lt;li&gt;Avoid &lt;b&gt;ORDER BY&lt;/b&gt; unless there is index on the columns - sort internal      table instead&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Select%20Single"&gt;&lt;b&gt;SELECT&lt;/b&gt; &lt;b&gt;SINGLE&lt;/b&gt;&lt;/a&gt;      when possible&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Select%20fields"&gt;&lt;b&gt;SELECT &lt;/b&gt;fields&lt;b&gt; FROM&lt;/b&gt;      database table INTO TABLE t_tab&lt;/a&gt; (an &lt;a href="http://web.mit.edu/sapr3/dev/select_examples.htm#Internal%20Table%20Definitions"&gt;&lt;b&gt;internal&lt;/b&gt;      table&lt;/a&gt;) - &lt;a href="http://web.mit.edu/sapr3/dev/discussion.htm"&gt;Lengthy discussion&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/covp.htm"&gt;&lt;b&gt;Views&lt;/b&gt;&lt;/a&gt; (inner join) are a fast way to access      information from multiple tables. Be aware that the result set only includes      rows that appear in &lt;b&gt;both&lt;/b&gt; tables.&lt;/li&gt;&lt;li&gt;Use &lt;a href="http://fuller.mit.edu/hr/complex_subquery.html"&gt;subqueries&lt;/a&gt;      when possible.&lt;/li&gt;&lt;li&gt;"&lt;a name="FOR ALL ENTRIES IN"&gt;&lt;/a&gt;&lt;a title="Sample Code" target="_blank" href="View?docid=dhs6z73_45f5r2q9fd"&gt;Sample Code&lt;/a&gt;" (outer join) are very fast but keep in the mind      the special features and 3 &lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#pitfalls"&gt;pitfalls&lt;/a&gt;      of using it.&lt;br&gt;     &lt;b&gt;(a) Duplicates are removed from the answer set as if you had specified      "SELECT DISTINCT"...&lt;/b&gt; So unless you intend for duplicates to be deleted      &lt;font color="#006600"&gt;&lt;b&gt;include the unique key&lt;/b&gt;&lt;/font&gt; of the detail line      items in your select statement. In the data dictionary (SE11) the fields belonging      to the unique key are marked with an "X" in the key column.&lt;br&gt;     &lt;b&gt;(b) If the "one" table (the table that appears in the clause FOR ALL ENTRIES      IN) is empty, all rows in the "many" table (the table that appears in the      SELECT INTO clause ) are selected.&lt;/b&gt; Therefore make sure you check that      the "one" table has rows before issuing a select with the "FOR ALL ENTRIES      IN..." clause.&lt;br&gt;     &lt;b&gt;(c) If the 'one' table (the table that appears in the clause FOR ALL ENTRIES      IN)&lt;/b&gt; &lt;b&gt;is very large there is performance degradation&lt;/b&gt;      Steven Buttiglieri created &lt;a href="http://web.mit.edu/sapr3/dev/no_all_entries_in.htm"&gt;sample      code&lt;/a&gt; to illustrate this.&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/select_examples.htm#optimizer%20quirk"&gt;Where clause should be in      order of index&lt;/a&gt; &lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#rules%20based"&gt;See example&lt;/a&gt;.&lt;br&gt;     This is important when there are multiple indexes for a table and you want      to make sure a specific index is used. This will change when we convert from      a "rules based" Oracle optimizer to a "cost based" Oracle optimizer. You should      be aware of a bug in Oracle, lovingly referred to as the "&lt;a href="http://web.mit.edu/sapr3/dev/3rd_column_blues.htm"&gt;3rd      Column Blues&lt;/a&gt;". Click &lt;a href="http://web.mit.edu/sapr3/dev/select_examples.htm#Indexes"&gt;here&lt;/a&gt; for      more information on indexes.&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/select_examples.htm#Select%20Statement%20Where%20Clause%20a"&gt;Where clause      should contain &lt;b&gt;key&lt;/b&gt; fields in an appropriate &lt;b&gt;db index&lt;/b&gt;&lt;/a&gt; or      &lt;a href="http://web.mit.edu/sapr3/dev/sap_table_types.htm#Buffered%20Tables"&gt;&lt;b&gt;buffered&lt;/b&gt; tables&lt;/a&gt;.      As long as we are using the Oracle Cost Based Optimizer, be aware fo the "&lt;a href="http://web.mit.edu/sapr3/dev/3rd_column_blues.htm"&gt;Third      Column Blues&lt;/a&gt;", an Oracle bug.&lt;/li&gt;&lt;li&gt;Avoid nested SELECTs (SELECT...ENDSELECT within another SELECT...ENDSELECT).      Load data in internal tables instead. See item 3 above.&lt;/li&gt;&lt;li&gt;Use &lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#statistical%20functions"&gt;SQL statistical functions&lt;/a&gt;      when possible (&lt;b&gt;max&lt;/b&gt;, &lt;b&gt;sum&lt;/b&gt;, ...)&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Delete"&gt;Delete all rows from a table&lt;/a&gt;. A where      clause is mandatory. Specifying the client is the most efficient way.&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#check"&gt;Put &lt;b&gt;Check&lt;/b&gt; statements into where clause&lt;/a&gt;      - caveat: Make sure that the index is still being used after you add the additional      selection criteria. If the select statement goes from using an index to doing      a db scan (reading each row in the database without going through an index)      get it out of the where clause and go back to using "Check"!&lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;III. Literals&lt;/h2&gt;  &lt;ol&gt;&lt;li&gt;Codes ('MD') should use contants (c_medical)&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#text%20elements"&gt;Longer text should use    text elements&lt;/a&gt;. Sample code is a good example because it uses    the text element in conjunction with the hard coded text. This    documents the text element and provides for the possibility of    multi-language support.&lt;/li&gt;&lt;/ol&gt;  &lt;h2&gt;IV. Miscellaneous&lt;/h2&gt;  &lt;ol&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Case%20Statement"&gt;Use CASE statement    instead of IF...ELSEIF&lt;/a&gt; when possible (It is only possible in    equality tests)&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Nested%20If"&gt;&lt;b&gt;Nested If &lt;/b&gt;&lt;/a&gt;-    encounter most likely to fail first (specific to general)&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#And"&gt;&lt;b&gt;And&lt;/b&gt;&lt;/a&gt; - encounter most    likely to fail first (specific to general)&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#OR"&gt;&lt;b&gt;OR's&lt;/b&gt;&lt;/a&gt; - encounter most    likely to succeed first (general to specific)&lt;/li&gt;&lt;li&gt;Variables should use Like when possible&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Decision"&gt;Subroutine usage - don't    place decision to execute in the subroutine&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;If not ( t_prps[] is initial&lt;/b&gt; ) (instead of    describe table t_prps lines sy-tfill, if sy-tfill &amp;gt; 0...)&lt;/li&gt;&lt;li&gt;New document types confirmed with the configuration team via UNICEF-ABAP mail list prior to coding a report to access the    data.&lt;/li&gt;&lt;li&gt;&lt;a href="http://web.mit.edu/sapr3/dev/sample_code.htm#Handling%20Dates"&gt;Dates need to be    properly formatted using the user's default settings&lt;/a&gt;.    &lt;a href="http://web.mit.edu/sapr3/dev/newdevstand.html#BDC:%20Formatting%20date%20fields%20to%20be%20compatible%20with%20user%20preferences"&gt;For    the explanation of the BDC example check out the developer's    standards&lt;/a&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;br&gt;&lt;a id="uf8n" name="FMdoc"&gt;&lt;/a&gt;&lt;span style="font-family: Georgia;"&gt;&lt;b&gt;Function Module documentation&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;h1&gt;&lt;center&gt;ZFUNCDOC&lt;/center&gt;&lt;/h1&gt;  &lt;pre&gt;REPORT ZFUNCDOC.&lt;br&gt;************************************************************************&lt;br&gt;*  INSTRUCTIONS FOR COPYING DOCUMENTATION TEMPLATE                     *&lt;br&gt;************************************************************************&lt;br&gt;*1) SELECT THE ENTIRE TEMPLATE BY PLACING THE CURSOR IN THE FIRST&lt;br&gt;*   COLUMN double clicking three times on the Select button.&lt;br&gt;*&lt;br&gt;*2) SELECT COPY.&lt;br&gt;*&lt;br&gt;*3) GO TO THE FUNCTION YOU ARE DOCUMENTING. SELECT DOCUMENTATION AND&lt;br&gt;*   CHANGE. PRESS BUTTON 'FUNCTION MOD. DOC F9'.The documentation window&lt;br&gt;*   appears, showing the SAP default documentation&lt;br&gt;*&lt;br&gt;*4) DELETE THE DEFAULT TEXT. PASTE THE TEMPLATE INTO THE WINDOW USING&lt;br&gt;*   PASTE. The template and text formatting tags appear.&lt;br&gt;*&lt;br&gt;***************** TIPS FOR ENTERING INFORMATION ************************&lt;br&gt;*&lt;br&gt;* IF YOU WANT TO AVOID ACCIDENTALLY DELETING FORMATTING TAGS, START EACH&lt;br&gt;* LINE of your documentation on a new line.&lt;br&gt;*&lt;br&gt;* At the end of each line you type, press return; otherwise, your text&lt;br&gt;* will spill into the first column, which is used only for paragraph&lt;br&gt;* formatting.&lt;br&gt;*&lt;br&gt;************************************************************************&lt;br&gt;*                         END OF INSTRUCTIONS                          *&lt;br&gt;************************************************************************&lt;br&gt;&lt;br&gt;&lt;span style="font-family: Georgia;"&gt;&lt;b&gt;&lt;a id="tkrc" name="INdoc"&gt;&lt;/a&gt; Include  documentation&lt;br&gt;&lt;br&gt;&lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;h1&gt;&lt;center&gt;   ZDOCUINM &lt;/center&gt;&lt;/h1&gt;  &lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;**       INSTRUCTIONS FOR COPYING DOCUMENTATION TEMPLATE              **&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;* Updated on 05/27/2007.                                               *&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*1- Place cursor beneath the INCLUDE comment.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*2- Click on the Pattern soft button.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*3- Select the "Other pattern" radio button.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*4- Enter ZDOCUINM in the search box beneath this button.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*5- Follow instructions in the pattern copied to your program (below).&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************ &lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;* Instructions: 1. When inserting this template in your source code,&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*                  please replace only the angle brackets and the text&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*                  between them.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*               2. If it is not applicable simply enter N/A.&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*               3. If you need more space, use additional lines starting&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*                  with an asterisk ONLY and kindly indent. Thanks!&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*               4. Lastly, remove these instructions from your include&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*                  documentation block. Thanks!&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Written By      : &amp;lt;Author&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Date Written    : &amp;lt;Date&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Include Name    : &amp;lt;Name of the include&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Used in Programs: &amp;lt;Programs referencing this include&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ System Name     : &amp;lt;System name/application area&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Purpose         : &amp;lt;Form routines, PAI/PBO modules, data declarations&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*                    &amp;lt;Kindly indent subsequent lines&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Other Considerations: &amp;lt;anything else a developer might find helpful&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;**--------------------------------------------------------------------**&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Maintenance History (latest on top)&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Date: &amp;lt;MM/DD/YY&amp;gt;  Author: &amp;lt;USERID&amp;gt;       Transport: &amp;lt;Transport #&amp;gt;&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*^ Description of Change:&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;*&lt;/span&gt;&lt;br style="font-family: Courier New;"&gt;&lt;span style="font-family: Courier New;"&gt;************************************************************************&lt;/span&gt;&lt;pre&gt;&lt;span style="font-family: Georgia;"&gt;&lt;b&gt;&lt;br&gt;&lt;/b&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;br&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-9050064812317763440?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/9050064812317763440/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=9050064812317763440' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/9050064812317763440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/9050064812317763440'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2008/02/abap-review-check-list-this-is-work-in.html' title=''/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-4105027318763303597</id><published>2007-11-23T07:20:00.000-08:00</published><updated>2007-11-23T07:22:53.841-08:00</updated><title type='text'>Access to the change request database from VPN</title><content type='html'>Please follow this link:&lt;br /&gt;&lt;a href="http://docs.google.com/View?docID=dck3hpd7_25hmmxz5&amp;amp;revision=_latest"&gt;CRDB access via VPN&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-4105027318763303597?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/4105027318763303597/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=4105027318763303597' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/4105027318763303597'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/4105027318763303597'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/11/access-to-change-request-database-from.html' title='Access to the change request database from VPN'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-8680205681747869511</id><published>2007-10-29T07:30:00.000-07:00</published><updated>2007-10-29T07:35:40.922-07:00</updated><title type='text'>Change SAP logo in top right hand corner of SAP client</title><content type='html'>I was a little bored to do heavy duty technical stuff, and ended up doing this small thing. But it is interesting and worth the time spent.&lt;br /&gt;&lt;br /&gt;The following steps demonstrates how to replace the SAP logo in top right hand corner with a dancing penguin. If you look at the penguin image in paint you will see that it is basically a collection of slightly different still images next to each other. Therefore if you have got the time and patience you can insert any moving picture you want.&lt;br /&gt;&lt;br /&gt;1.    Open field directory C:\Program Files\SAP\FrontEnd\SAPgui\themes\HighCont&lt;br /&gt;2.    Rename file sapalogo to sapalogo_tmp&lt;br /&gt;3.    Right click on the following &lt;a href="http://www.sapdevelopment.co.uk/tips/sapalogo.bmp"&gt;file&lt;/a&gt; and select ‘Save Target As’, save  to above directory&lt;br /&gt;4.     Repeat for directory C:\Program Files\SAP\FrontEnd\SAPgui\themes\enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-8680205681747869511?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/8680205681747869511/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=8680205681747869511' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/8680205681747869511'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/8680205681747869511'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/10/change-sap-logo-in-top-right-hand.html' title='Change SAP logo in top right hand corner of SAP client'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-7169847423823326507</id><published>2007-09-04T06:28:00.001-07:00</published><updated>2007-09-04T06:36:51.288-07:00</updated><title type='text'>Importance in Business Intelligence: Types of BI</title><content type='html'>&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;The first step &lt;/span&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;in Business Intelligence is the process of transforming data into information. There are many ways of extracting the data and formulation into information, but in reality, the type of information needed is dependent on the type of the people who are expecting it. There could be people who might be working in the operational activities such as customer service representatives, and then there could be people who might be working in the tactical leave such as the lower and middle level management and those who are responsible for the strategy of an organization, such as senior and the executive management. Base on this classification, the BI component can be classified as:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;1. Operational BI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;2. Tactical BI and &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;3. Strategic BI&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;Based on the nature of the needs of their own field of working, the nature of the information also varies. See the following picture, which is referred as the BI pyramid depicts the nature of the information required by each user group. The pyramid is used to explain this as the number of users is less as we move from operational to strategic BI needs. This is the classical way of explain the types of BI and is religiously shown in all BI presentations:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:323.25pt;" ole=""&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\STHIAG~1\LOCALS~1\Temp\msohtml1\01\clip_image001.emz" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/Rt1fLqMu_aI/AAAAAAAAAGQ/Kr9TJk7UcjY/s1600-h/BI+pyramid.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/Rt1fLqMu_aI/AAAAAAAAAGQ/Kr9TJk7UcjY/s320/BI+pyramid.jpg" alt="" id="BLOGGER_PHOTO_ID_5106342206418910626" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:oleobject type="Embed" progid="Visio.Drawing.11" shapeid="_x0000_i1025" drawaspect="Content" objectid="_1250403502"&gt;  &lt;/o:OLEObject&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;The senior management who needs the strategic gives the information as a global overview of the entire business. In olden days it was referred as the Executive information system (EIS) and now evolved as dashboards as they are indicators of the actual performance of the critical indices.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;The middle management who is very much working on the tactical issues, needs more flexible and detailed reports to improve their decision making. The information can be quickly assembled into useable form using ad-hoc queries. They are not the pre defined dash boards, but flexible and modular set of queries, which can slice and dice the data cubes for the discovery.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;In the operational level, the requirement is with standardized, detailed, preformatted reports provided by an automatic report engine. Typically these reports are of the type of spreadsheets, and can be taken offline to format and regroup using standard software like Microsoft Excel.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;Given the types of the BI that are needed for any organization, now-a-days most of the BI software packages do come with a variety of tools that addresses each section of the BI pyramid, though there are some inconsistencies on the definition of each layer. The only important thing that is missing in this pyramid is the data mining, which is for a special set of people who are specializing in that activity. Data mining is itself a huge subject and we can discuss this later as a separate topic. I recently read one very detailed paper (draft) by one of my colleague on the data mining explaining its relevance and importance to UNICEF. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;Let’s now get into the practical side of the BI and the way in which is it used:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;It is very hard to see a senior manager that is content with an overview of the business activities - unless he or she is incompetent. Any I’m sure the every competent senior manager will always need detailed data for some or many specific operations - and often on a regular basis. My honest opinion is that the dashboards are great for management meetings, but whoever runs an organization based on this alone, may at times will feel short of information that are required to make effective decisions. This is due to the very nature of the dashboard and the lack of details in it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;I have yet to see the middle managers that indulge in On-Line Analytical Processing (OLAP) and ad hoc querying more than others in the organization. Middle managers especially non-IT organizations are not more computer literate than anyone else. And OLAP and ad hoc querying do demand more computer skills from these managers. The very notion of using tools like this will drive them away from using them or try to move that work under them to operational group. Practically they get the information from the operations team, whose mind set is still in the preformatted reports. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;Finally, who on an operational level feels happy about only having standardized and detailed reports? First problem is that they do not always agree with the standard form of reports, secondly the time taken to create &amp; download the reports, thirdly the repetitive nature of the report generation creates boredom and finally they had to convert all the reports to spreadsheets for them to use it. We should not forget the fact that the use of spreadsheets is grown more then the legacy systems, ever after the implementation of all the new dimensions products such as ERP and BI.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;Going back to my previous statement about the popular BI pyramid, which looks nice - especially when it comes in fancy colors - but it is rather imperfect and too far from what is practiced. As a result, more and more BI solution providers are beginning to realize that the reality is a bit more multidimensional than the BI pyramid: Strategic users also want detailed data and operational staff wants to have the overall picture. The middle managers want and need both detail and overview, and they are not more likely than anyone else to decide to spend and afternoon doing their own ad hoc queries in their office.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;After a decade of BI evolution, some, but not all, have finally realized that BI is as complicated as anything else. The users are as irrational in their needs as they are with anything else. Many of them do like the colorful BI pyramid though and, given its inclusion in BI presentations, it will probably stay on for some years.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="text-align: center;" align="center"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style="'width:325.5pt;height:222.75pt'" ole=""&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\STHIAG~1\LOCALS~1\Temp\msohtml1\01\clip_image003.emz" title=""&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/Rt1fTqMu_bI/AAAAAAAAAGY/tOS_2C7oaRo/s1600-h/BI+pyramid+modified.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/Rt1fTqMu_bI/AAAAAAAAAGY/tOS_2C7oaRo/s320/BI+pyramid+modified.jpg" alt="" id="BLOGGER_PHOTO_ID_5106342343857864114" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;o:oleobject type="Embed" progid="Visio.Drawing.11" shapeid="_x0000_i1026" drawaspect="Content" objectid="_1250403503"&gt;  &lt;/o:OLEObject&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="color: rgb(41, 48, 59);font-family:Verdana;font-size:85%;"  &gt;If allowed, I’d refine the BI pyramid by adding a group called systems analyst, which will be the central focus of the BI function, who will closely work with the three different user groups. They are the core set of people who knows how to use the BI tools effectively and efficiently and they are not the IT people. There is always the involvement of IT in this whole picture which is ideally the provider of BI infrastructure and not the provider of BI itself.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-7169847423823326507?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/7169847423823326507/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=7169847423823326507' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/7169847423823326507'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/7169847423823326507'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/09/importance-in-business-intelligence.html' title='Importance in Business Intelligence: Types of BI'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_LoTgRpuhfFc/Rt1fLqMu_aI/AAAAAAAAAGQ/Kr9TJk7UcjY/s72-c/BI+pyramid.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-5204300594338063837</id><published>2007-09-03T06:18:00.001-07:00</published><updated>2007-09-03T06:19:35.364-07:00</updated><title type='text'>birthday cake</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_LoTgRpuhfFc/RtwJ3aMu_XI/AAAAAAAAAF4/Z8kRF9qBHeQ/s1600-h/mack.JPG"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_LoTgRpuhfFc/RtwJ3aMu_XI/AAAAAAAAAF4/Z8kRF9qBHeQ/s400/mack.JPG" alt="" id="BLOGGER_PHOTO_ID_5105966925061487986" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;After long search, I found this as the character acceptable by my son for his 4th birthdat party cake!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-5204300594338063837?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/5204300594338063837/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=5204300594338063837' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/5204300594338063837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/5204300594338063837'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/09/birthday-cake.html' title='birthday cake'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_LoTgRpuhfFc/RtwJ3aMu_XI/AAAAAAAAAF4/Z8kRF9qBHeQ/s72-c/mack.JPG' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-6615626370742888744</id><published>2007-07-05T12:19:00.001-07:00</published><updated>2007-07-05T12:20:52.449-07:00</updated><title type='text'>One ERP versus One Ecosystem</title><content type='html'>One ERP versus One Ecosystem&lt;br /&gt;&lt;br /&gt;The one thing that has been reverberating in the Information Technology circles at UNICEF is about One Enterprise Resource Planning (ERP). This is based on a very strong recommendation that came out from the Business Process reengineering (BPR) by Dalburg and accenture was to have a &lt;a href="http://www.intranet.unicef.org/exd/Review360.nsf/0/1B9E66831576509C852571E2005A155B/$FILE/060707_UNICEF%203%20July%20Steering%20Committee%20Meeting_v6.ppt"&gt;true ERP environment in UNICEF &lt;/a&gt;.This has been a very controversial at the same time political decision that involves a whole a lot of resources in terms of money and people. Please go to the following link to see the entire recommendation.&lt;br /&gt;&lt;br /&gt;There are two different aspects to effectively achieve the true ERP system. They are having One ERP system implemented and followed worldwide so the Head Quarters (HQ) and the Country Offices (CO) see the same information in the same way. The other way is to build an Eco system, as I call it, which will comprise of one ERP, combined with one or more systems distributed worldwide with proper interfaces.&lt;br /&gt;&lt;br /&gt;Before getting in to the discussion of going right in to the True ERP discussion, we need to look at the evolution of the software during the past fifteen years. When people started using computers for business, it was towards simple applications such as financials, simple automation of the documents using word processors and spreadsheets. Then was the use at the manufacturing such as Material requirement Planning (MRP), Inventory maintenance, accounting involving Accounts payable and Receivables, etc. Even though this was of great help, there was no value addition in the decision making process. Then came the wave of adding more value to the computerization, and integrating the common functions such as Material requirement, Inventory, Purchasing, Financials, Costing, Sales, etc. This evolution is termed as MRP-II and a lot of software development focused on these integrated issue. Even though there was a lot of resistance to these MRP II software packages, they gained steady ground over a period of two to three years, when the managers felt the automation process lead to the formation of Islands of automaton and needed more integration to be able to make effective decisions. This gave birth to the Enterprise Resource Planning (ERP) software. SAP is one among the leader and very popular ERP software with others like PeopleSoft (Oracle) and SAS.&lt;br /&gt;&lt;br /&gt;These ERP solutions blended the business and technology so well, that it was very difficult to differentiate them from one another. But in almost all cases, the ERP initiative was driven by the business and would have been supported by the IT section of the organization. However, there were clear overlaps as the technical personal were also equally responsible for the improvement of the business as they know the customizing of the software better than the business user.&lt;br /&gt;&lt;br /&gt;This ERP philosophy brought all applications together and tightly integrated. The entire business community was very happy to embrace it for its integrated functions. Added to that because of the Y2K fear, many corporations jumped in to the ERP bandwagon and started their implementation. The ERP as designed brought in the tight integration between different components of the business, at cost of flexibility. As a result, the implementation resulted in huge changes in the way the business was run before. Change management team was a critical element in each implementation and eventually the organizations that were implementing the ERP solutions, started customizing the system to suit their businesses. This was more like cutting their own foot to fit the shoe size. This process of custom development led the ERP software makers to think of their benefit and they themselves started delivering different products for different sectors such as Public sector, Apparel and foot ware, Beverages, Banking, Insurance, etc.&lt;br /&gt;&lt;br /&gt;In spite of the different product lines, the organizations did not leave their quest to customize the software to their need, as against critically evaluating their current business process. Reengineering was taken out of the list and Refitting was added. The software systems which were based on the best practice processes were bent to fit to the processes existing in the organization. This has greatly influenced the gains that were projected to happen with the ERP implementations. This in addition to the technological development in the internet era, the software companies, started adding more functionality, options and catchy front ends as bolt-on features shifting from their own integrated architecture.&lt;br /&gt;&lt;br /&gt;The convergence of the processes now took the divergence once again. This process led the organizations to use various set of software tools to cater to each specific functions such as Customer Relations Management (CRM), Business Intelligence (BI), Supplier Relationship Management (SRM), etc in addition to the core ERP application.&lt;br /&gt;&lt;br /&gt;This will lead to the debate of using one ERP software solution and the respective bolt-on function versus the use of ERP system and to use the working legacy system or third party cheaper software and interfacing them effectively. The second method can be referred as building one Ecosystem in which the processes and the business views in all individual systems are maintained consistently. The Ecosystem approach is very common in private sector based mainly on the implementation cost and to leverage the cost invested in the legacy systems.&lt;br /&gt;&lt;br /&gt;The main advantage of the one ERP is that the implementation is fairly simple and the future upgrades could be smoother. The business logic and the process integrity are well established and you can have a seamless support from the software vendor. The major disadvantage could be the cost. Traditionally the solutions provided by the ERP systems are very expensive and also demand a reliable and established infrastructure to operate.&lt;br /&gt;&lt;br /&gt;On the other hand, building one eco system will be a very cost effective method, but the ownership to design, develop and maintain the software needs to be addressed in house. Keeping up with the technology will be a big challenge in this case.&lt;br /&gt;&lt;br /&gt;Either of the two solutions can be adopted strategically to any organization. In this moment UNICEF is in cross road to make a decision on going one way or another. This strategic decision will be a key to the success of the organization’s mission in the coming years.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-6615626370742888744?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/6615626370742888744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=6615626370742888744' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6615626370742888744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6615626370742888744'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/07/one-erp-versus-one-ecosystem.html' title='One ERP versus One Ecosystem'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-1860145400327378107</id><published>2007-05-22T08:17:00.000-07:00</published><updated>2007-05-22T08:22:34.378-07:00</updated><title type='text'>RFC Calls for Manipulating Internal Tables</title><content type='html'>&lt;b style="font-family: verdana;"&gt;  &lt;font color="#000080" size="4"&gt;  &lt;/font&gt;&lt;/b&gt;&lt;font size="2"&gt;&lt;span style="font-family: verdana;"&gt;One of my friend had asked to explain the process of manipulating the internal tables with the RFC calls from SAP. The RFC is enabled by the function interface that is part of the RFC library provided by SAP.&lt;/span&gt;&lt;/font&gt;  &lt;font style="font-family: verdana;" face="Arial" size="2"&gt;  &lt;/font&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;These functions allow processing of ABAP internal tables in C.&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;ABAP internal tables follow the model of a relational database table.&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;ABAP internal tables consist of identical rows. When it is created, a table is empty. In ABAP you can fill rows into a table by the statements ‘Insert’ or ‘Append’. You can access a row by ‘Read Table’, and you can delete a row by ‘Delete’. You can free a table by ‘Free Table’, and you can receive information about tables by ‘Describe’.&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;These language constructs correspond to the following C routines:&lt;/font&gt;&lt;/p&gt;&lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItCreate&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;creates a new internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ITAB_H&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;handle of an internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItDelete&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;deletes the content of a complete internal table and frees storage&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItGetLine&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;reads a line from an internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItInsLine&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;inserts a line into the given position of an internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItAppLine&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;appends a line at the end of an internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItDelLine&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;deletes a line from an internal table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItGupLine&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;reads a line for update&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItFree&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;resets an internal table to initial state&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItFill&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;dir style="font-family: verdana;"&gt;&lt;p&gt;&lt;font size="2"&gt;returns the number of lines in a table&lt;/font&gt;&lt;/p&gt;&lt;/dir&gt;  &lt;ul style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;li&gt;&lt;b&gt;ItLeng&lt;/b&gt;&lt;/li&gt;&lt;/font&gt;&lt;/ul&gt;  &lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;returns the width of a table, i.e. the size of a row of the table&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;&lt;img src="http://help.sap.com/saphelp_46c/helpdata/de/images/hinweis.gif"&gt;&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;The syntax and semantics of the above RFC calls are identical for all platforms supported. &lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;The syntax of the RFC calls is described in &lt;b&gt;saprfc.h&lt;/b&gt;.  The syntax of the RFC calls for manipulating internal tables is described in &lt;b&gt;sapitab.h&lt;/b&gt;.&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;Creating and filling a new internal table with the following example&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p style="font-family: verdana;"&gt;&lt;b&gt;&lt;font size="1"&gt;const int myTableSize = 200;&lt;br /&gt;ITAB_H handle;&lt;br /&gt;void * ptr;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;b&gt;&lt;font size="1"&gt;handle = IitCreate("MyTable", myTableSize, 0,0);&lt;br /&gt;if(handle == ITAB_NULL)&lt;br /&gt;{&lt;br /&gt;... error&lt;br /&gt;}&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;b&gt;&lt;font size="1"&gt;do&lt;br /&gt;{&lt;br /&gt; ptr = ItAppLine(handle);;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;b&gt;&lt;font size="1"&gt;  if(ptr != NULL)&lt;br /&gt; {&lt;br /&gt;    memcpy(ptr,..., myTableSize);&lt;br /&gt; }&lt;br /&gt; while(ptr != NULL);&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="2"&gt;More help is available in the SAP help site:&lt;/font&gt;&lt;/p&gt;&lt;p style="font-family: verdana;"&gt;&lt;font size="1"&gt;http://help.sap.com/saphelp_46c/helpdata/de/22/043074488911d189490000e829fbbd/frameset.htm&lt;/font&gt;&lt;b&gt;&lt;font size="1"&gt;&lt;br /&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-1860145400327378107?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/1860145400327378107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=1860145400327378107' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/1860145400327378107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/1860145400327378107'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/05/rfc-calls-for-manipulating-internal.html' title='RFC Calls for Manipulating Internal Tables'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-3078417235005779717</id><published>2007-01-25T10:41:00.000-08:00</published><updated>2007-05-07T03:14:12.773-07:00</updated><title type='text'></title><content type='html'> &lt;span style="font-weight: bold;"&gt; Programming with Substitution&lt;/span&gt;&lt;br&gt;&lt;br&gt;Substitution is a very powerful tool that SAP delivers with most of the application module. Let's first see what is substitution. A substitution is a configuration step, that allows a process (or a step) of replacing values as they are being entered into the SAP R/3 system using a transaction. For example in this case, we take up the substitution use in the Work Breakdown Structure (WBS). When the users are creating or modifying a particular WBS element (using transactions CJ01 or CJ02), we can change certain values behind the scenes based on certain required logic. This values can be either for standard fields or for customer fields (CI Structures). To know more about the CI structures, please see my blog on the CI structures.&lt;br&gt;&lt;br&gt;And also remember, the entered values are checked against a user-defined Boolean statement  (prerequisite). If the statement is true, the system replaces the specified  values. Substitution occurs before data is written to the original database.&lt;br&gt;&lt;br&gt;Even though in most of the cases substitution may be simple, in some cases it could be  really tricky. This document is intended to address those cases. In this example, I'm going to demonstrate a custom field to show the entire process of substitution in a WBS structure.&lt;br&gt;&lt;br&gt;&lt;span style="font-weight: bold;"&gt;Displaying substitution&lt;/span&gt;&lt;br&gt;For the project system, we open the IMG (transaction SPRO) and navigate to the following path:&lt;br&gt;&lt;img alt=""&gt;&lt;img style="height: 271px; width: 468px;" src="http://docs.google.com/File?id=dck3hpd7_2hj6bdb" align="middle"&gt;&lt;br&gt;Maintain substitutions and on the left frame go to the WBS element node&lt;br&gt;&lt;img style="height: 289px; width: 343px;" src="http://docs.google.com/File?id=dck3hpd7_37sh5qs"&gt;&lt;br&gt;Go to the menu Extras -&amp;gt; Substitution Fields&lt;br&gt;&lt;img style="height: 156px; width: 400px;" src="http://docs.google.com/File?id=dck3hpd7_4f7pj7h"&gt;&lt;br&gt;This will show the list of the fields that are substitutable. In the standard system, most (or all) of the table related to the WBS (PRPS) will be available. As we discussed earlier even the customer fields in the CI_PRPS structure can also be used. In my case I needed to have a bunch of Z fields and they were added to the CI_PRPS structure and in turn to the PRPS table&lt;br&gt;&lt;img style="height: 377px; width: 476px;" src="http://docs.google.com/File?id=dck3hpd7_5fs3d7z"&gt;&lt;br&gt;By adding it to the CI_PRPS structure, these fields are available for me to enhance the screen for the WBS create/change transaction. To do this you need to create a project using CMOD and include the component CNEX0007. Use the screen exit to create a screen and the Function exit to add logic. Fine, now let's go back to the substitution.&lt;br&gt;SAP has a very basic common structure for all substitution related processes. The underlying table is GB01. This table contains all the tbles and fields that can be substituted based on the class type ('S' for substitution). Here is the screen shot of table GB01.&lt;br&gt;&lt;img style="height: 268px; width: 756px;" src="http://docs.google.com/File?id=dck3hpd7_7cfqdtp"&gt;&lt;br&gt;Once we decide the substitution field, we need to insert it in to this table. SAP does not provide you any means to do that. So  use the following routine to add the entries&lt;br&gt;Program: &lt;a title="Source code" target="blank_" href="http://docs.google.com/View?docid=dck3hpd7_87zgxrc"&gt;ZNFI_UPDATE_TABLE_GB01&lt;/a&gt; &lt;br&gt;Copy the source code, and execute the program and add the fields as required into the table GB01.&lt;br&gt;&lt;img style="height: 177px; width: 648px;" src="http://docs.google.com/File?id=dck3hpd7_9twzj2t"&gt;&lt;br&gt;After running this report for a set of Z values, the table GB01 looks like this:&lt;br&gt;&lt;img style="height: 177px; width: 506px;" src="http://docs.google.com/File?id=dck3hpd7_10fjsvdb"&gt;&lt;br&gt;Once this is done, then the substitution structures should be regenerated. Without this step that added fields in GB01 will not ba available for substitution. To do this we need to run the SAP program RGUGBR00.&lt;br&gt;&lt;img style="height: 383px; width: 465px;" src="http://docs.google.com/File?id=dck3hpd7_11c67fc8"&gt;&lt;br&gt;Once you complete the regeneration, let's go to the actual substitution area to create and implement one.&lt;br&gt;In the example, I've created a substitution under WBS and under the node WBS_ELM&lt;br&gt;&lt;img style="height: 301px; width: 906px;" src="http://docs.google.com/File?id=dck3hpd7_12dkgz5t"&gt;&lt;br&gt;This document assumes that you know the substitution basics and the prerequisite. In this case my prerequisite is to check the project profile before carrying out the substitution. Then an user exit code is added U0500. Double clicking on this will take you to the code. Add the code to move the values to the PRPS structure based on the WBS level.&lt;br&gt;&lt;img style="height: 357px; width: 666px;" src="http://docs.google.com/File?id=dck3hpd7_14ck95rn"&gt;&lt;br&gt;As usual, any comments welcome.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-3078417235005779717?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/3078417235005779717/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=3078417235005779717' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3078417235005779717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3078417235005779717'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2007/01/programming-with-substitution.html' title=''/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-3314033442851683812</id><published>2006-12-18T06:39:00.001-08:00</published><updated>2006-12-18T06:39:34.088-08:00</updated><title type='text'>Multimedia message</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://photos1.blogger.com/x/blogger2/1046/63245972746872/1600/931531/bm-image-774089.jpg"&gt;&lt;img src="http://photos1.blogger.com/x/blogger2/1046/63245972746872/320/496593/bm-image-774089.jpg" width="320"/&gt;&lt;/a&gt;&lt;/p&gt;Cutie pie&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-3314033442851683812?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/3314033442851683812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=3314033442851683812' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3314033442851683812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3314033442851683812'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/12/multimedia-message.html' title='Multimedia message'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-3464270689765843632</id><published>2006-12-18T06:30:00.001-08:00</published><updated>2006-12-18T06:30:55.872-08:00</updated><title type='text'></title><content type='html'>&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-3464270689765843632?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/3464270689765843632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=3464270689765843632' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3464270689765843632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3464270689765843632'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/12/blog-post.html' title=''/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-6885836710239934130</id><published>2006-12-14T11:58:00.000-08:00</published><updated>2006-12-14T12:46:42.262-08:00</updated><title type='text'>HTML control used as a web browser</title><content type='html'>This is an interesting piece of development. This uses the HTML control to create a  web browser. I've used the HTML related function modules in this example shown below. In order for this example to work, you need to create a WWW document Id and then call it in your main program. In this example, I've created a document id ZSIVA_BLOG.&lt;br /&gt;&lt;br /&gt;1. Go to transaction SMW0&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGuEO_EtII/AAAAAAAAADw/VlJA08-U7bM/s1600-h/www-001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGuEO_EtII/AAAAAAAAADw/VlJA08-U7bM/s200/www-001.jpg" alt="" id="BLOGGER_PHOTO_ID_5008475648378057858" border="0" /&gt;&lt;/a&gt;2. click on the HTML template for WebRFC applications and execute&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYGuW-_EtJI/AAAAAAAAAD4/VI74sKdHn0M/s1600-h/www-002.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYGuW-_EtJI/AAAAAAAAAD4/VI74sKdHn0M/s200/www-002.jpg" alt="" id="BLOGGER_PHOTO_ID_5008475970500605074" border="0" /&gt;&lt;/a&gt;3. Create new entries and enter the attributes&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGvjO_EtKI/AAAAAAAAAEA/0CFUPim5xqI/s1600-h/www-003.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGvjO_EtKI/AAAAAAAAAEA/0CFUPim5xqI/s200/www-003.jpg" alt="" id="BLOGGER_PHOTO_ID_5008477280465630370" border="0" /&gt;&lt;/a&gt;4. The entry will be created as below:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGvjO_EtLI/AAAAAAAAAEI/ou3Izk-_kDE/s1600-h/www-004.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGvjO_EtLI/AAAAAAAAAEI/ou3Izk-_kDE/s200/www-004.jpg" alt="" id="BLOGGER_PHOTO_ID_5008477280465630386" border="0" /&gt;&lt;/a&gt;5. Then click on the detail function and assign the basic HTML page that needs to be loaded when your HTML control loads:&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYGvje_EtMI/AAAAAAAAAEQ/tx_0FTGDmtU/s1600-h/www-005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYGvje_EtMI/AAAAAAAAAEQ/tx_0FTGDmtU/s200/www-005.jpg" alt="" id="BLOGGER_PHOTO_ID_5008477284760597698" border="0" /&gt;&lt;/a&gt;6. Instead you can use the import/export parameters as well from the menu.&lt;br /&gt;&lt;br /&gt;7. Then click on the glasses (to display), you can see the base page in a browser.&lt;br /&gt;&lt;br /&gt;To enable the web browser, copy the following code into a new executable program:&lt;br /&gt;&lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Report  ZNUT_WEB_BROWSER_NEW                                                    *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* Sample program to demonstrate the HTML Control be used as a WEB BROWSER&lt;br /&gt;* Siva Thiagarajan&lt;br /&gt;&lt;br /&gt;REPORT  ZNUT_WEB_BROWSER_NEW.&lt;br /&gt;&lt;br /&gt;INCLUDE &lt;ctldef&gt;.&lt;br /&gt;INCLUDE CNHTINCL.&lt;br /&gt;&lt;br /&gt;DATA: H_HTML_CONTROL TYPE CNTL_HANDLE.&lt;br /&gt;DATA: B_INIT TYPE C.&lt;br /&gt;DATA: PROG_REPID LIKE SY-REPID.&lt;br /&gt;DATA: FCODE LIKE SY-UCOMM.&lt;br /&gt;DATA: URL(1024).&lt;br /&gt;&lt;br /&gt;SET SCREEN 100.&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0100 OUTPUT.&lt;br /&gt;SET PF-STATUS 'TESTHTM1'.&lt;br /&gt;SET TITLEBAR '001'.&lt;br /&gt;&lt;br /&gt;IF B_INIT IS INITIAL.&lt;br /&gt;CALL FUNCTION 'CONTROL_INIT'.&lt;br /&gt;PROG_REPID = SY-REPID.&lt;br /&gt;CALL FUNCTION 'HTMLCNTL_CREATE'&lt;br /&gt;     EXPORTING&lt;br /&gt;          OWNER_REPID = PROG_REPID&lt;br /&gt;          LINK_REPID  = PROG_REPID&lt;br /&gt;          DYNNR       = '0100'&lt;br /&gt;          CONTAINER   = 'HTML_CONTAINER'&lt;br /&gt;     CHANGING&lt;br /&gt;          HANDLE      = H_HTML_CONTROL.&lt;br /&gt;&lt;br /&gt;B_INIT = 'x'.&lt;br /&gt;CALL FUNCTION 'HTMLCNTL_INIT'&lt;br /&gt;     EXPORTING&lt;br /&gt;          H_CONTROL                  = H_HTML_CONTROL&lt;br /&gt;          REGISTER_EVENT_ON_NAVIGATE = 'x'&lt;br /&gt;          CB_FORM_NAVIGATE_COMPLETE = 'ON_CONTROL_EVENT'.&lt;br /&gt;&lt;br /&gt;PERFORM LOAD_HOME_PAGE.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'CONTROL_FLUSH'.&lt;br /&gt;ENDIF.&lt;br /&gt;ENDMODULE.                             " STATUS_0100  OUTPUT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;MODULE USER_COMMAND_0100 INPUT.&lt;br /&gt;CASE FCODE.&lt;br /&gt;WHEN 'BACK'.&lt;br /&gt;  IF NOT B_INIT IS INITIAL.&lt;br /&gt;    CALL FUNCTION 'HTMLCNTL_DESTROY'&lt;br /&gt;         CHANGING&lt;br /&gt;              H_CONTROL = H_HTML_CONTROL&lt;br /&gt;         EXCEPTIONS&lt;br /&gt;              OTHERS    = 1.&lt;br /&gt;    CALL FUNCTION 'CONTROL_FLUSH'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  LEAVE PROGRAM.&lt;br /&gt;&lt;br /&gt;WHEN 'HHOM'.                       " show the home page&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GO_HOME'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GET_CURRENT_URL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL&lt;br /&gt;       IMPORTING&lt;br /&gt;            URL       = URL.&lt;br /&gt;&lt;br /&gt;WHEN 'HBAK'.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GO_BACK'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GET_CURRENT_URL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL&lt;br /&gt;       IMPORTING&lt;br /&gt;            URL       = URL.&lt;br /&gt;&lt;br /&gt;WHEN 'HFWD'.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GO_FORWARD'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GET_CURRENT_URL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL&lt;br /&gt;       IMPORTING&lt;br /&gt;            URL       = URL.&lt;br /&gt;&lt;br /&gt;WHEN 'HRFR'.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_DO_REFRESH'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_GET_CURRENT_URL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL&lt;br /&gt;       IMPORTING&lt;br /&gt;            URL       = URL.&lt;br /&gt;&lt;br /&gt;WHEN 'HNAV'.&lt;br /&gt;  CALL FUNCTION 'HTMLCNTL_SHOW_URL'&lt;br /&gt;       EXPORTING&lt;br /&gt;            H_CONTROL = H_HTML_CONTROL&lt;br /&gt;            URL       = URL.&lt;br /&gt;&lt;br /&gt;WHEN OTHERS.&lt;br /&gt;  CALL FUNCTION 'CONTROL_DISPATCH'&lt;br /&gt;       EXPORTING&lt;br /&gt;            FCODE = FCODE.&lt;br /&gt;ENDCASE.&lt;br /&gt;CLEAR FCODE.&lt;br /&gt;ENDMODULE.                             " USER_COMMAND_0100  INPUT&lt;br /&gt;&lt;br /&gt;* Callback form for the event 'NavigateComplete'&lt;br /&gt;callback on_control_event.&lt;br /&gt;CALL FUNCTION 'CONTROL_GET_EVENT_PARAM'&lt;br /&gt; EXPORTING&lt;br /&gt;      H_CONTROL = H_HTML_CONTROL&lt;br /&gt;      PARAM_ID  = 0&lt;br /&gt; CHANGING&lt;br /&gt;      RETURN    = URL.&lt;br /&gt;&lt;br /&gt;endcallback.&lt;br /&gt;&lt;br /&gt;* Homepage form&lt;br /&gt;FORM LOAD_HOME_PAGE.&lt;br /&gt;DATA: DOC_URL(80).&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'HTMLCNTL_LOAD_HTML_DOCUMENT'&lt;br /&gt;   EXPORTING&lt;br /&gt;        H_CONTROL    = H_HTML_CONTROL&lt;br /&gt;        DOCUMENT_ID  = 'ZSIVA_BLOG'&lt;br /&gt;   IMPORTING&lt;br /&gt;        ASSIGNED_URL = DOC_URL&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;        OTHERS       = 1.&lt;br /&gt;&lt;br /&gt;IF SY-SUBRC EQ 0.&lt;br /&gt;CALL FUNCTION 'HTMLCNTL_SHOW_DATA'&lt;br /&gt;     EXPORTING&lt;br /&gt;          H_CONTROL = H_HTML_CONTROL&lt;br /&gt;          URL       = DOC_URL.&lt;br /&gt;ENDIF.&lt;br /&gt;ENDFORM.                               " LOAD_HOME_PAGE&lt;br /&gt;&lt;br /&gt;Fine print:&lt;br /&gt;&lt;br /&gt;1. Please create a pf-status TESTHTM1&lt;br /&gt;&lt;br /&gt;&lt;/ctldef&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYG3J-_EtPI/AAAAAAAAAFA/MkkZp7ciqKc/s1600-h/www-007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYG3J-_EtPI/AAAAAAAAAFA/MkkZp7ciqKc/s320/www-007.jpg" alt="" id="BLOGGER_PHOTO_ID_5008485642766955762" border="0" /&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;2. Create a screen 100 like this:&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtQI/AAAAAAAAAFI/q49lBGPEt2M/s1600-h/www-008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtQI/AAAAAAAAAFI/q49lBGPEt2M/s320/www-008.jpg" alt="" id="BLOGGER_PHOTO_ID_5008486183932835074" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtRI/AAAAAAAAAFQ/_VBYgEaYLYM/s1600-h/www-009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtRI/AAAAAAAAAFQ/_VBYgEaYLYM/s320/www-009.jpg" alt="" id="BLOGGER_PHOTO_ID_5008486183932835090" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtSI/AAAAAAAAAFY/ruqu-7AzVH0/s1600-h/www-010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYG3pe_EtSI/AAAAAAAAAFY/ruqu-7AzVH0/s320/www-010.jpg" alt="" id="BLOGGER_PHOTO_ID_5008486183932835106" border="0" /&gt;&lt;/a&gt;&lt;span style="color: rgb(51, 102, 255);"&gt;3.&lt;/span&gt; &lt;span style="color: rgb(51, 102, 255);font-size:85%;" &gt;The PBO and PAI modules are already handled in the main program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-6885836710239934130?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/6885836710239934130/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=6885836710239934130' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6885836710239934130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/6885836710239934130'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/12/html-control-used-as-web-browser.html' title='HTML control used as a web browser'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_LoTgRpuhfFc/RYGuEO_EtII/AAAAAAAAADw/VlJA08-U7bM/s72-c/www-001.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-3913469379280129882</id><published>2006-12-14T10:41:00.000-08:00</published><updated>2006-12-14T10:55:37.242-08:00</updated><title type='text'>BDT Development - II</title><content type='html'>The following is the step by step instruction on how to use the BDT to create enhancments to the Grants master screen. Using BDT development to creating a new Tab on the grants management master data transaction (GMGRANT). Please make a note that unlike the common logistics transactions which will have the four part transaction set such as create, Chage, Display and Delete, the grants transaction is one maintanence transaction which includes all the above mentioned functions. All the customizing we do using BDT has to keep this concept in mind during the development&lt;br /&gt;&lt;br /&gt;- Execute grants management BDT development transaction (GRANT_CUSTOMIZE)&lt;br /&gt;- Grant Master BDT Customizing-&gt; Screen layout and select ‘Field groups’(GMS2)&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYGbN-_Es1I/AAAAAAAAAAM/Wj9ywJeM-uk/s1600-h/BDT-001.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYGbN-_Es1I/AAAAAAAAAAM/Wj9ywJeM-uk/s200/BDT-001.jpg" alt="" id="BLOGGER_PHOTO_ID_5008454925160854354" border="0" /&gt;&lt;/a&gt;- Click on ‘New Entries’. Try to maintain the field grouping number more than 500, to make sure it is in the customer name space and will not accidentaly interfear with SAP's standard values.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_LoTgRpuhfFc/RYGbou_Es6I/AAAAAAAAAA0/fTp75MgxYEU/s1600-h/BDT-008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_LoTgRpuhfFc/RYGbou_Es6I/AAAAAAAAAA0/fTp75MgxYEU/s200/BDT-008.jpg" alt="" id="BLOGGER_PHOTO_ID_5008455384722355106" border="0" /&gt;&lt;/a&gt;- Go back to main field group screen, select your new entry and double click on the&lt;br /&gt;‘Field Group-&gt; Fields’ folder option from the left column. Now enter your fields, for this example I have created some new entries which will be added as part of a new tab.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGccO_Es8I/AAAAAAAAABE/AREUQbY_wuE/s1600-h/BDT-004.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGccO_Es8I/AAAAAAAAABE/AREUQbY_wuE/s200/BDT-004.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456269485618114" border="0" /&gt;&lt;/a&gt;In order to create the custom fields, we nned to go to the table GMGR, and double click on the extension structure CI_GMGR. This is the structure that will hold all custom created fields and will automatically get appended to the BAPI extension structure. When you want to use the BAPI for accessing the Grants master data, we can use the extension_in and extension_out methods.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYGboe_Es3I/AAAAAAAAAAc/B5tsvq1Xr0I/s1600-h/BDT-005.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYGboe_Es3I/AAAAAAAAAAc/B5tsvq1Xr0I/s200/BDT-005.jpg" alt="" id="BLOGGER_PHOTO_ID_5008455380427387762" border="0" /&gt;&lt;/a&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYGboe_Es4I/AAAAAAAAAAk/NS1Kx-8Xl7k/s1600-h/BDT-006.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYGboe_Es4I/AAAAAAAAAAk/NS1Kx-8Xl7k/s200/BDT-006.jpg" alt="" id="BLOGGER_PHOTO_ID_5008455380427387778" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;- Return to main BDT customizing screen and select ‘Views’(GMS3). Then click the ’New Entries’ button. In this example I've created a view called ZMG007 (Internal information ). The View is the important part of this development as majority of the development happens here in this place. The view is a logical collection of field group and is a screen by itself. You will have a screen developed which will have a PBO and PAI routines. In addition to that we will have three place holders in which we can have our own routined to perform the requiredtasks. They are:&lt;br /&gt;  (a) Before screen call-up&lt;br /&gt;  (b) Before Output&lt;br /&gt;  (c) After Entry&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYGc--_Es9I/AAAAAAAAABM/Hx_rB1PhrWk/s1600-h/BDT-007.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYGc--_Es9I/AAAAAAAAABM/Hx_rB1PhrWk/s200/BDT-007.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456866486072274" border="0" /&gt;&lt;/a&gt;For this example I've used three custom function modules that will be used in the above mentioned place gholders. Then double click on the field group (from the left frame), and enter the field group we created in the earlier step&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_Es-I/AAAAAAAAABU/v_yBPlivK-k/s1600-h/BDT-008.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_Es-I/AAAAAAAAABU/v_yBPlivK-k/s200/BDT-008.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456870781039586" border="0" /&gt;&lt;/a&gt;One more interesting note is that the option of having 'Further check'. Click on the further check from the left frame and here you can have one more routine, to do any sort of validations that can be performed after the view. This is in addition to the PAI routine for the screen and the function module at 'After Entry'. This further check is very useful in the case if you are required to some validations in the SAP provided views. I'll give an example we had done to add some validations to the grants currency for certain types of grants.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_Es_I/AAAAAAAAABc/zuFH5z3j4yU/s1600-h/BDT-009.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_Es_I/AAAAAAAAABc/zuFH5z3j4yU/s200/BDT-009.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456870781039602" border="0" /&gt;&lt;/a&gt;- Return to main BDT customizing screen and select ‘Sections’(GMS4).&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_EtAI/AAAAAAAAABk/_nbYDvPGTOE/s1600-h/BDT-010.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_LoTgRpuhfFc/RYGc_O_EtAI/AAAAAAAAABk/_nbYDvPGTOE/s200/BDT-010.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456870781039618" border="0" /&gt;&lt;/a&gt;Then click the ’New Entries’ button and enter the views that are required in the section. A section is a collection of one or more views. And go back to main Sections screen, select your new entry and double click on the Section-&gt; Views folder option from the left column. Now enter the new view you created previously.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYGc_e_EtBI/AAAAAAAAABs/_z6qoGFgpv0/s1600-h/BDT-012.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYGc_e_EtBI/AAAAAAAAABs/_z6qoGFgpv0/s200/BDT-012.jpg" alt="" id="BLOGGER_PHOTO_ID_5008456875076006930" border="0" /&gt;&lt;/a&gt;The last step in this process is to create the screen. A screen is a collection of one or more sections.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp0.blogger.com/_LoTgRpuhfFc/RYGdhe_EtCI/AAAAAAAAAB0/5rAkgBy2AN0/s1600-h/BDT-014.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp0.blogger.com/_LoTgRpuhfFc/RYGdhe_EtCI/AAAAAAAAAB0/5rAkgBy2AN0/s200/BDT-014.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457459191559202" border="0" /&gt;&lt;/a&gt;Select 'New Entries' and enter the attributes for the screen. We have a lot of options in this place, but will discuss it later in detail.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtDI/AAAAAAAAAB8/L9SF2blxQdA/s1600-h/BDT-016.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtDI/AAAAAAAAAB8/L9SF2blxQdA/s200/BDT-016.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457463486526514" border="0" /&gt;&lt;/a&gt;Click on the Sections from the left side frame and start additng the sections that are required for this screen.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtEI/AAAAAAAAACE/LZW2k5N_vSc/s1600-h/BDT-015.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtEI/AAAAAAAAACE/LZW2k5N_vSc/s200/BDT-015.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457463486526530" border="0" /&gt;&lt;/a&gt;Once the screens are developed, it is time to work on the sequence in which they will be displayed. The next transaction qill tell you how to order the screens both SAP delivered and the custom developed screens.&lt;br /&gt;&lt;br /&gt;Return to main BDT customizing screen and select ‘Screen Sequence’(GMS6). Then select the screen sequence entry and double click on the Screen Sequence -&gt; Screens folder option from the left column.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtFI/AAAAAAAAACM/mcJ7xxyroTI/s1600-h/BDT-017.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp1.blogger.com/_LoTgRpuhfFc/RYGdhu_EtFI/AAAAAAAAACM/mcJ7xxyroTI/s200/BDT-017.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457463486526546" border="0" /&gt;&lt;/a&gt;Then create a screen &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_0"&gt;sequence&lt;/span&gt; (or) modify he existing one.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYGdh-_EtGI/AAAAAAAAACU/O_QHBmXk-sU/s1600-h/BDT-018.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYGdh-_EtGI/AAAAAAAAACU/O_QHBmXk-sU/s200/BDT-018.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457467781493858" border="0" /&gt;&lt;/a&gt;The final step is to generate the screen &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_1"&gt;sequence&lt;/span&gt; to reflect the final changes.&lt;br /&gt;&lt;br /&gt;Execute transaction &lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;BUSP&lt;/span&gt; (click on option from main grant customizing menu), new screen will now appear as tab on grant master transaction ‘&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;GMGRANT&lt;/span&gt;’&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp2.blogger.com/_LoTgRpuhfFc/RYGd2-_EtHI/AAAAAAAAACc/yHa7cctFZEc/s1600-h/BDT-020.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp2.blogger.com/_LoTgRpuhfFc/RYGd2-_EtHI/AAAAAAAAACc/yHa7cctFZEc/s200/BDT-020.jpg" alt="" id="BLOGGER_PHOTO_ID_5008457828558746738" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span onclick="BLOG_clickHandler(this)" class="blsp-spelling-corrected" id="SPELLING_ERROR_4"&gt;That's&lt;/span&gt; All!!!! As usual if in doubt, please post your comments.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-3913469379280129882?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/3913469379280129882/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=3913469379280129882' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3913469379280129882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/3913469379280129882'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/12/bdt-development-ii.html' title='BDT Development - II'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_LoTgRpuhfFc/RYGbN-_Es1I/AAAAAAAAAAM/Wj9ywJeM-uk/s72-c/BDT-001.jpg' height='72' width='72'/><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-116282939843199031</id><published>2006-11-06T06:57:00.000-08:00</published><updated>2006-11-06T08:09:58.900-08:00</updated><title type='text'>Generic Object Services</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;Generic Object Services – Linking IDoc to the Business object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;Overview: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The business object and its related services can be linked using Generic object services. This is a very clean way of seeing thing right from the application which can be either master data or transactions. This document explains the ways to link the objects that are created in the customer name space. Most of the SAP’s standard services are pre built to perform this action.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;When you publish the custom Business object using the function module ‘&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;color:black;"   &gt;SWU_OBJECT_PUBLISH’ , &lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;a object service toolbox appears for the related business object in its business transaction.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The following services can be started in the toolbox, &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;table class="MsoNormalTable" style="border: 1pt solid windowtext; width: 100%;" border="1" cellpadding="0" cellspacing="1" width="100%"&gt;  &lt;tbody&gt;&lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;" &gt;Toolbox Entry&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;" &gt;Submenu&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;b&gt;&lt;span style=";font-family:Verdana;" &gt;Link to Description&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td rowspan="5" style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;    &lt;v:stroke joinstyle="miter"&gt;    &lt;v:formulas&gt;     &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;     &lt;v:f eqn="sum @0 1 0"&gt;     &lt;v:f eqn="sum 0 0 @1"&gt;     &lt;v:f eqn="prod @2 1 2"&gt;     &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;     &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;     &lt;v:f eqn="sum @0 0 1"&gt;     &lt;v:f eqn="prod @6 1 2"&gt;     &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;     &lt;v:f eqn="sum @8 21600 0"&gt;     &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;     &lt;v:f eqn="sum @10 21600 0"&gt;    &lt;/v:formulas&gt;    &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;    &lt;o:lock ext="edit" aspectratio="t"&gt;   &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" alt="" style="'width:24pt;"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Create...&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Create Attachment&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Appending a PC Document to an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Create Note&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Creating a Note for an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Create External Document (URL)&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Appending a Link to a Web Page&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Store Business Document&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Appending and Archiving a PC Document to an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Enter Bar Code&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Assigning an Object the Bar Code of a Document&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Attachment List&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Displaying Attachments&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Personal Note&lt;/i&gt; &lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Creating a Personal Note for an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td rowspan="2" style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Send Object with Note&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Send Object with Note&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Sending an Object with a Note&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Object Outbox&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Displaying the Object Outbox&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Display Relationships&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Displaying Relationships&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td rowspan="3" style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Workflow&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Workflow Overview&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td rowspan="2" style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Displaying Workflows for an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Archived Workflows&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Start Workflow&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Starting a Workflow for an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td rowspan="2" style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1031" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;My Objects&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Add to My Objects&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Adding Object to your Favorites&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;i&gt;&lt;span style=";font-family:Verdana;" &gt;Subscribe/Cancel Object&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Subscribing to Messages About Changes to an Object&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1032" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Telephony&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Telephony&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt;  &lt;tr style=""&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 22%;" valign="top" width="22%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1033" type="#_x0000_t75" alt="" style="'width:24pt;height:24pt'/"&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;!--[endif]--&gt; &lt;i&gt;Actions&lt;/i&gt;&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;/td&gt;   &lt;td style="border: 1pt solid windowtext; padding: 5.25pt; width: 39%;" valign="top" width="39%"&gt;   &lt;p&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Activating PPF Actions&lt;/span&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;   &lt;/td&gt;  &lt;/tr&gt; &lt;/tbody&gt;&lt;/table&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;In this example document, We will try to demonstrate the incoming and outgoing Idocs can be linked to the Business object and they can be viewed using the relationship service in the toolbox from within the application. The scenario here will be like theis:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The Idocs are created in a separate ALE distribution program and not in the same business transaction. The objective is to link the Idocs created in the separate program to its corresponding business object and should be made available in the relationship service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The following steps are involved for linking the Idoc to its corresponding Business object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;For illustration let us link the outbound and inbound Idocs to the customized business object ‘Bank account’ (ZUNBANK).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Before linking the Idoc with the business object, the relationship service in the tool box appears disabled as below, meaning that the system cannot show or display the related service objects.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-001.0.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/320/GOS-001.0.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;For Outbound Idoc:&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;span class="on" style="display: block;" id="formatbar_Add_Image" title="Add Image" onmouseover="ButtonHoverOn(this);" onmouseout="ButtonHoverOff(this);" onmouseup="addImage();" onmousedown="CheckFormatting(event);;ButtonMouseDown(this);"&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Step 1: BDA4: Link the Idoc message type to the Business object type. In this example the message type, the idoc and the business objects are all in the customer name space.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-002.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-002.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The Idoc message type is linked to the object type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Step 2:BD95: Define the ALE object type. This is just an object definition and link this to the master table and the key field.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-003.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-003.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Step 3: BD57: Define the link object type for the message type.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-004.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-004.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Step 4: BD59: Assignment of object type to message &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-005.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-005.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p style="text-align: center;" class="MsoNormal"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-006.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-006.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Step 5: Execute the corresponding ALE distribution program and create the Idoc.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;Now the relationship service in the toolbox is enabled.&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-007.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-007.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1040" type="#_x0000_t75" style="'width:6in;height:198pt'"&gt;  &lt;v:imagedata src="file:///C:\DOCUME~1\STHIAG~1\LOCALS~1\Temp\msohtml1\01\clip_image013.jpg" title="GOS-007"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The corresponding Idoc is displayed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="text-align: center;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/GOS-008.jpg"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/3184/3943/200/GOS-008.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;For Inbound Idoc:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;The inbound idoc linking is a little bit trickier than the outbound. In the case of the outbound, the file creation is in our hands and we can establish the linkage as we create and distribute the file, whereas in the inbound the same needs to be accomplished in the inbound function module. Though it is only a single step action, I’ll try to put in my next posting. &lt;/span&gt;&lt;span style="font-size:100%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;Thanks to my colleague Praveen Antony for his contributions for this document preparation.&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;br /&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size:85%;"&gt;&lt;b style=""&gt;&lt;span style=";font-family:Verdana;" &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Verdana;font-size:85%;"  &gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt; &lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-116282939843199031?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/116282939843199031/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=116282939843199031' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116282939843199031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116282939843199031'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/11/generic-object-services.html' title='Generic Object Services'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-116247744332200415</id><published>2006-11-02T06:03:00.000-08:00</published><updated>2006-11-02T06:24:03.346-08:00</updated><title type='text'>BDT development</title><content type='html'>&lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;Business Data Toolkit (BDT) is the new way of programming in SAP. This is available in  IS-PS (public sector) solution and  I guess this is available in some other IS solutions such as insurance  etc., This is a concept in which SAP provides you all the development components with which you can build your own screens and fields and weave it nicely within the existing SAP application. This is available mostly for the master data maintenance.&lt;br /&gt;&lt;br /&gt;Given this input, I'll try to explain the concept in which I understood. Every SAP transaction can be thought in abstract to have the following components:&lt;br /&gt;1. Data element &amp; Domains&lt;br /&gt;2. Screen fields&lt;br /&gt;3. Field grouping (functional set of fields)&lt;br /&gt;4. Views (Combination of one or more field group)&lt;br /&gt;5. Sections (Combination of one or more views)&lt;br /&gt;6. Screen (Combination of one or more sections)&lt;br /&gt;7. Transaction (With one or more screen in a pre determined sequence)&lt;br /&gt;&lt;br /&gt;If this above concept is clear, then it is very easy to understand and can even start development using BDT. For those who do not have enough exposure to the Grants or other modules that have BDT, I’ll try to give an analogy using the customer master record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;In the customer master the fields that are in the KNA1 table are the data elements and domains. The screen fields are the same as the data element, but the screen needs to be built and the definition of the screen specific parameters was defined in SAP’s delivered screen itself. For example the customer name is the data element AD_NAME1 and the related screen field is ADDR1_DATA-NAME1 (Program SAPMF02D/Screen 7000)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;The field grouping is the group of functionally related screen fields, which can be turned as Required, Optional or Hidden using the configuration. In this case it could be the set of fields that cover the Street address&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;The views can be Street address and the PO Box address together&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;And the Section may be the combination of Name, Search term, Street address and the PO Box address.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;The screen could be the Address, Control Data, etc.,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;The screen sequence is defined and the transaction XK01/02/03 is created.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-size: 10pt; font-family: Verdana;"&gt;With the same idea in mind SAP had given the same concept as a development tool. This eliminates the need of extending the SAP’s standard table by appending structure. And also it gives you the flexibility to append two dimensional objects such as tables as well. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-116247744332200415?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/116247744332200415/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=116247744332200415' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116247744332200415'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116247744332200415'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/11/bdt-development.html' title='BDT development'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-116241299311927306</id><published>2006-11-01T12:21:00.000-08:00</published><updated>2006-11-01T12:29:53.130-08:00</updated><title type='text'>interesting problem</title><content type='html'>Eventhough you work for a long time in programming, say in ABAP, it is very difficult to keep in touch with all the evolving technoloagy and the concepts. and practical requirements are pretty simple and that do not need much of the complex programming techniques.&lt;br /&gt;&lt;br /&gt;Most of the trivial programming requiremets are such as GUI operations, MS office interface, etc., can be easily built using the standard functions and can be kept as a tool kit. This will obviously be a effective methadology, as you don't have to dig over and over for the most common jobs.&lt;br /&gt;&lt;br /&gt;Let me start posting the ABAP routines, I've developed, which can be used in any implementation. &lt;br /&gt;&lt;br /&gt;The first posting will be a reading Excel file from the presentation server. This upload will take care of the excel files which contain macros as well.&lt;br /&gt;&lt;br /&gt;Try and let's know if you are having fun&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZZ_TEST_EXCEL_LOAD                                          *&lt;br /&gt;*&amp;                                                                     *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;                                                                     *&lt;br /&gt;*&amp;                                                                     *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT  ZZ_TEST_EXCEL_LOAD                      .&lt;br /&gt;&lt;br /&gt;TYPE-POOLS: truxs.&lt;br /&gt;&lt;br /&gt;PARAMETERS: p_file TYPE  rlgrap-filename.&lt;br /&gt;&lt;br /&gt;TYPES: BEGIN OF t_datatab,&lt;br /&gt;      col1(30)    TYPE c,&lt;br /&gt;      col2(30)    TYPE c,&lt;br /&gt;      col3(30)    TYPE c,&lt;br /&gt;      END OF t_datatab.&lt;br /&gt;DATA: it_datatab type standard table of t_datatab,&lt;br /&gt;      wa_datatab type t_datatab.&lt;br /&gt;&lt;br /&gt;DATA: it_raw TYPE truxs_t_text_data.&lt;br /&gt;&lt;br /&gt;* At selection screen&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.&lt;br /&gt;  CALL FUNCTION 'F4_FILENAME'&lt;br /&gt;    EXPORTING&lt;br /&gt;      field_name = 'P_FILE'&lt;br /&gt;    IMPORTING&lt;br /&gt;      file_name  = p_file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***********************************************************************&lt;br /&gt;*START-OF-SELECTION.&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'&lt;br /&gt;    EXPORTING&lt;br /&gt;*     I_FIELD_SEPERATOR        =&lt;br /&gt;      i_line_header            =  'X'&lt;br /&gt;      i_tab_raw_data           =  it_raw       " WORK TABLE&lt;br /&gt;      i_filename               =  p_file&lt;br /&gt;    TABLES&lt;br /&gt;      i_tab_converted_data     = it_datatab[]    "ACTUAL DATA&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;      conversion_failed        = 1&lt;br /&gt;      OTHERS                   = 2.&lt;br /&gt;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno&lt;br /&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;***********************************************************************&lt;br /&gt;* END-OF-SELECTION.&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;  LOOP AT it_datatab INTO wa_datatab.&lt;br /&gt;    WRITE:/ wa_datatab-col1,&lt;br /&gt;            wa_datatab-col2,&lt;br /&gt;            wa_datatab-col3.&lt;br /&gt;  ENDLOOP.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-116241299311927306?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/116241299311927306/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=116241299311927306' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116241299311927306'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116241299311927306'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/11/interesting-problem.html' title='interesting problem'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-116010427510634412</id><published>2006-10-05T20:02:00.000-07:00</published><updated>2006-10-05T20:12:48.606-07:00</updated><title type='text'>Let's go to the business</title><content type='html'>&lt;a href="http://www.sap.com/global/images/saplogo.gif"&gt;&lt;img style="display:block; margin:0px auto 10px; text-align:center;cursor:pointer; cursor:hand;width: 200px;" src="http://www.sap.com/global/images/saplogo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;SAP Public sector is not so different from others in majority of the aspects. The functional structure of the module makes it differ with the mainstream SAP solutions.&lt;br /&gt;&lt;br /&gt;In IS-PS the existance of Funds Management (FM), rants Management (GM) and Budget control system (BCS) are the three major new areas that available in addition to the common logistics, FI, CO modules. Even HR can be very similar only if your organization is so unique as United Nations and whichhas its own est of rules and procedures. And SAP is also in the process of delivering UN specific HR module soon.&lt;br /&gt;&lt;br /&gt;In the next coming days we can discuss more in detail on Funds andGrants module and also follow up on the Budget Control System. I'll try to give as much as functional background and technical information to make the reading easier.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-116010427510634412?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/116010427510634412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=116010427510634412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116010427510634412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/116010427510634412'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/10/lets-go-to-business.html' title='Let&apos;s go to the business'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-115996931304845062</id><published>2006-10-04T06:33:00.000-07:00</published><updated>2006-11-06T08:13:48.876-08:00</updated><title type='text'>My current assignment</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: verdana;"&gt;I'm currently working with a large public sector in New York. Here we have SAP R/3 implemented for the last eight years. We are the ramp-up customers for the SAP IS-PS solution. we started implementing Grants and Budget control system as a part of the public sector solution.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;We have a team of three functional members and a team of five ABAP programmers supporting this project. I'm very happy to work with this team as the members are so knowledgeable and bring in to the team a lot of value addition.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;In the programming most of the concepts are new and we learned a lot along the implementation. I'll soon request my team  members to share their valuable ideas.&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-115996931304845062?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/115996931304845062/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=115996931304845062' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/115996931304845062'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/115996931304845062'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/10/my-current-assignment.html' title='My current assignment'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-35436366.post-115988227837938411</id><published>2006-10-03T06:26:00.000-07:00</published><updated>2006-11-17T12:34:20.330-08:00</updated><title type='text'>About Me</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/3184/3943/1600/Img2104_edited.0.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 99px; height: 99px;" src="http://photos1.blogger.com/blogger/3184/3943/200/Img2104_edited.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I started my SAP career back in 1995 in India. And I assume, I'd have been the one of the first set of people who had an opportunity to learn and work on SAP. After my initial training in SAP for about one year, I came to US eying for a project and in all practical sense a real life experience.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/694243/about-001.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/300854/about-001.jpg" alt="" border="0" /&gt;&lt;/a&gt;My first project was with a fortune 500 apparel and leather goods manufacturer in New Jersey. I've been told to develop some sapscript, which was considered to be very difficult by the analysts from ICS consulting (later they were bought by Deloitte consulting). I completed it in a jiff and got a good reputation right away. I was &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/647462/about-008.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/68110/about-008.jpg" alt="" border="0" /&gt;&lt;/a&gt;given master data load (material master and customer master) then was slowly involved in EDI and other related technologies.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My next project was at Phillips automotive electronics at Auburn, Indiana. This is a very small &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/235442/about-002.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/273026/about-002.jpg" alt="" border="0" /&gt;&lt;/a&gt;town close to Fort Wayne. This was an ASAP implantation. I was involved in the master data upload and the EDI implementation. The transactions I did was the Inbound/Outbound Orders and the outbound ASN. this was a terrific experience as the customer implemented the SAP formats as such without altering a lot. This project was only 3 months and I learned a lot in this three months.&lt;br /&gt;&lt;br /&gt;My next stop was at Nash Finch Company at Edina, Minnesota. I was working for&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/97046/about-003.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/235087/about-003.jpg" alt="" border="0" /&gt;&lt;/a&gt;  Ernest&amp;Young Consulting. I was in the EDI group and focussed solely on the EDI transactions including ASN, PO, delivery and also in the preparation of the implementation guide for the EDI transactions. This was a eight month &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/608508/about-007.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/212387/about-007.jpg" alt="" border="0" /&gt;&lt;/a&gt;project ans the great thing about it is that I had an opportunity to lean ice scatting. My winter experience with Minnesota was not that bad, as 1997 winter was really mild, and we were playing Tennis during the month of September.&lt;br /&gt;&lt;br /&gt;Next assignment was at Maxtor Corporation at Longmont, Denver. I was working for Pricewater house (not  PWC at that time!).  I was taken as the team lead for the EDI team till the&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/699973/about-004.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/344989/about-004.jpg" alt="" border="0" /&gt;&lt;/a&gt; time, they get a PWC staff to lead the team. The project was done at two places like Longmont in Denver as well as in San Jose in California. I did &lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/533913/about-006.jpg"&gt;&lt;img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/943577/about-006.jpg" alt="" border="0" /&gt;&lt;/a&gt;almost all EDI transactions such as Orders, ASN, delivery and was worked on the workflow on the purchasing documents. I completed this project by middle of 1998, and wanted to go back to India so badly (Home sick!). the skills I leaned were a little golfing, Hiking on the beautiful Rockie Mountains. By June 1998, I booked my tickets to India and flew back.&lt;br /&gt;&lt;br /&gt;I got in to my next project with Wicto Corporation as I got the interview done in India and flew in and joined the project after my one month vacation in India. I was in charge of all EDI&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/x/blogger2/5966/4325/1600/628485/about-005.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer;" src="http://photos1.blogger.com/x/blogger2/5966/4325/320/988976/about-005.jpg" alt="" border="0" /&gt;&lt;/a&gt; development including the workflow development and administration. I also did a lot of shell programming and did a lot of innovative things in this project. I also developed a self standing product in SAP for the purposes od divestiture. I built it based on ABAP and ALE technology. This company was later bought by another and got it name changed to CK Witco. Then got renamed as Crompton Corporation. I worked here for almost six years. the company has changed its name after another merger into Chemtura.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;My next stop was to get in to a permanent position.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/35436366-115988227837938411?l=sapprogramming.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sapprogramming.blogspot.com/feeds/115988227837938411/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=35436366&amp;postID=115988227837938411' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/115988227837938411'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35436366/posts/default/115988227837938411'/><link rel='alternate' type='text/html' href='http://sapprogramming.blogspot.com/2006/10/about-me.html' title='About Me'/><author><name>Shiva</name><uri>http://www.blogger.com/profile/17425269095768453185</uri><email>noreply@blogger.com</email><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='OpenSocialUserId' value='07894314864079197991'/></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>