<?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' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8952827334369603967</id><updated>2012-01-30T20:22:16.124+05:30</updated><category term='EDI'/><category term='IDOC'/><category term='Smartforms'/><category term='ABAP Report'/><category term='ABAP performance factor'/><category term='SAP Script'/><category term='ALE'/><title type='text'>SAP Expert - All About SAP ABAP</title><subtitle type='html'>ABAP/4,ABAP report,Interactive Report Example,ALV grid Example,ALV list,IDOC,User Exit,RFC,Smartform,sapscript,ABAP Performance,Remote Function Module( RFC ),Function Module,ABAP Sample Code,ABAP tools,ALV report Generator,ABAP Interview Questions,BDC,BAPI,ALE,BADI,EDI,InternalTable,Data Structure,LSMW,Domain,DataElement,Basis and Administration,ABAP HR development,ABAPDebugger,BW,Exception Handling,Download FI, CO, MM, PP, SD, PM, PS, QM, SM, HR, BW, APO,ABAP Tutorial</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>81</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-759521304570136647</id><published>2008-05-05T20:21:00.002+05:30</published><updated>2008-05-05T20:34:22.916+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP Report'/><title type='text'>Events in Report</title><content type='html'>An event is a tag that identifies a section of code. The section of code associated with an event name and ends when a next name is encountered.&lt;br /&gt;&lt;br /&gt;Some of the events are:&lt;br /&gt;&lt;br /&gt;1. Initialization.&lt;br /&gt;2. At Selection-Screen.&lt;br /&gt;3. Start-of-Selection.&lt;br /&gt;4. Top-of-Page.&lt;br /&gt;5. end-of-Page.&lt;br /&gt;6. End-of-Selection.&lt;br /&gt;7. At line Selection&lt;br /&gt;8. At PFn.&lt;br /&gt;9. At User-command.&lt;br /&gt;&lt;br /&gt;SAP has a inbuilt program called Driver Program which controls another program in the R/3 System.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;DRIVER EVENTS:&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Initialization.&lt;br /&gt;At Selection-Screen.&lt;br /&gt;Start-of-selection.&lt;br /&gt;End-of Selection.&lt;br /&gt;USER EVENTS:&lt;br /&gt;At line-Selection&lt;br /&gt;At PFn.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;At User-Command. &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;PROGRAM EVENTS:&lt;/strong&gt;&lt;br /&gt;Top-of-Page.&lt;br /&gt;End-of-Page.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-759521304570136647?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/759521304570136647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=759521304570136647' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/759521304570136647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/759521304570136647'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/05/events-in-report.html' title='Events in Report'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1169837978806852174</id><published>2008-04-21T21:54:00.001+05:30</published><updated>2008-04-21T21:57:15.172+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>What is message type?</title><content type='html'>&lt;div align="justify"&gt;The message type defines the semantic context of an IDoc. The message type tells&lt;br /&gt;the processing routines, how the message has to be interpreted.&lt;br /&gt;The same IDoc data can be sent with different message types. E.g. The same IDoc&lt;br /&gt;structure which is used for a purchase order can also be used for transmitting a sales&lt;br /&gt;order. Imagine the situation that you receive a sales order from your clients and in&lt;br /&gt;addition you receive copies of sales orders sent by an subsidiary of your company.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1169837978806852174?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1169837978806852174/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1169837978806852174' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1169837978806852174'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1169837978806852174'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/what-is-message-type.html' title='What is message type?'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3045430912142181318</id><published>2008-04-21T21:48:00.001+05:30</published><updated>2008-04-21T21:53:29.196+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>Example: The IDoc Type ORDERS01</title><content type='html'>&lt;div align="justify"&gt;To allow an interference, here is a sample of IDoc type ORDERS01 which is used for purchase&lt;br /&gt;orders and sales orders.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Purchasing and sales orders naturally share the same IDoc type because what is a&lt;br /&gt;purchase order on the sender side will become a sales order on the receiver side.&lt;br /&gt;Other than MATMAS01, the IDoc type ORDERS01 does not reflect the structure of&lt;br /&gt;the underlying RDB entity, neither the one of SD (VA01) nor the one of MM&lt;br /&gt;(ME21). The structure is rather derived from the EDI standards used in the&lt;br /&gt;automobile industry. Unfortunately, this does not make it easier to read.&lt;br /&gt;Note: With transaction WE05 you can monitor, if there are already any IDocs in&lt;br /&gt;your system.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;You can call transaction WE30 to display the structure of the IDoc type of the found&lt;br /&gt;IDoc&lt;br /&gt;If this IDoc would have been written to a file, the file content would have looked&lt;br /&gt;similar to this:&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;ORDERS01 DEVCLNT100 INTERNAL...&lt;br /&gt;...E1EDKA1 ....and here the data&lt;br /&gt;...E1EDKA2 ....and here the data&lt;br /&gt;...E1EDP19 ....and here the data&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3045430912142181318?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3045430912142181318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3045430912142181318' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3045430912142181318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3045430912142181318'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/example-idoc-type-orders01.html' title='Example: The IDoc Type ORDERS01'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1044996782031702287</id><published>2008-04-21T21:00:00.001+05:30</published><updated>2008-04-21T21:03:12.739+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>Basic Configuration in IDOC</title><content type='html'>Define a new internal RFC destination INTERNAL&lt;br /&gt;Explore both the transactions WEDI and SALE and adjust the settings as necessary&lt;br /&gt;Use transaction BALE to generate an arbitrary IDoc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You can access most of the transactions used in the example below in the menu&lt;br /&gt;WEDI and SALE.&lt;br /&gt;&lt;br /&gt;We will assume, that we want to send material master data from the current system&lt;br /&gt;to a remote system. To simulate this scenario we do not need to have a second&lt;br /&gt;system. With a little trick, we can set up the system to send an IDoc back to the&lt;br /&gt;sending client.&lt;br /&gt;&lt;br /&gt;We will set up the system to use an RFC call to itself. Therefore we need to define&lt;br /&gt;an RFC remote destination, which points back to our own client. There is a virtual&lt;br /&gt;RFC destination called NONE which always refers to the calling client.&lt;br /&gt;RFC destinations are installed with the transaction SM59. Create a new R/3&lt;br /&gt;destination of type "L" (Logical destination) with the name INTERNAL and the&lt;br /&gt;destination NONE.&lt;br /&gt;&lt;br /&gt;Note: Do not use RFC type internal. Although you could create them manually, they&lt;br /&gt;are reserved for being automatically generated. However, there is the internal&lt;br /&gt;connection "NONE" or "BACK" which would do the same job as the destination we&lt;br /&gt;are creating now.&lt;br /&gt;&lt;br /&gt;The next step is defining a data port, which is referenced by the IDoc sending&lt;br /&gt;mechanism to send the IDoc through. Declaring the port is done by transaction&lt;br /&gt;WE21.&lt;br /&gt;We will now declare an ALE connection from our client to the partner INTERNAL.&lt;br /&gt;ALE uses IDocs to send data to a remote system. There is a convenient transaction&lt;br /&gt;to send material master data as IDocs via the ALE.&lt;br /&gt;&lt;br /&gt;The set up is done in transaction SALE. You first create a new ALE model, to avoid&lt;br /&gt;interfering with eventual existing definitions. Then you simply add the IDoc&lt;br /&gt;message MATMAS as a valid path from your client to INTERNAL.&lt;br /&gt;In order to send the IDoc, you call the transaction BALE and choose the distribution&lt;br /&gt;of material master data (BD10). Choose a material, enter INTERNAL as receiver&lt;br /&gt;and go.&lt;br /&gt;&lt;br /&gt;To see, which IDocs have been sent, you can use the transaction WE05. If you did&lt;br /&gt;everything as described above, you will find the IDocs with an error status of 29,&lt;br /&gt;meaning that there is no valid partner profile. This is true, because we have not&lt;br /&gt;defined one yet.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1044996782031702287?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1044996782031702287/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1044996782031702287' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1044996782031702287'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1044996782031702287'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/basic-configuration-in-idoc.html' title='Basic Configuration in IDOC'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-20729003637831058</id><published>2008-04-21T20:49:00.001+05:30</published><updated>2008-04-21T20:51:42.649+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>Program for Outbound IDOC</title><content type='html'>All IDoc data records are exchanged in a fixed format, regardless of the segment type. The&lt;br /&gt;segment’s true structure is stored in R/3’s repository as a DDic structure of the same name.&lt;br /&gt;The segment info tells the IDoc processor how the current segment data is structured&lt;br /&gt;and should be interpreted. The information, which is usually the only interest, is the&lt;br /&gt;name of the segment EDID4-SEGNAM.&lt;br /&gt;&lt;br /&gt;The segment name corresponds to a data dictionary structure with the same name,&lt;br /&gt;which has been created automatically when defining the IDoc segment definition&lt;br /&gt;with transaction WE31 .&lt;br /&gt;&lt;br /&gt;For most applications, the remaining information in the segment info can be ignored&lt;br /&gt;as being redundant. Some older, non-SAP-compliant partners may require it. E.g.&lt;br /&gt;the IDoc segment info will also store the unique segment number for systems, which&lt;br /&gt;require numeric segment identification.&lt;br /&gt;&lt;br /&gt;To have the segment made up for processing in an ABAP, it is usually wise to move&lt;br /&gt;the segment data into a structure, which matches the segment definition.&lt;br /&gt;For a segment of type e1maram the following coding is commonly used:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TABLES: e1maram.&lt;br /&gt;. . .&lt;br /&gt;MOVE edidd-sdata TO e1maram.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Then you can access the fields of the IDoc segment EDIDD-SDATA as fields of the&lt;br /&gt;structure e1maram .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;WRITE: e1maram-matnr.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The following coding sample, shows how you may read a MATMAS IDoc and&lt;br /&gt;extract the data for the MARA and MARC segments to some internal variables and&lt;br /&gt;tables.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: xmara LIKE e1maram.&lt;br /&gt;DATA: tmarc AS STANDARD TABLE OF e1marcm&lt;br /&gt;WITH HEADER LINE.&lt;br /&gt;LOOP AT edidd.&lt;br /&gt;CASE edidd-segnam.&lt;br /&gt;WHEN 'E1MARAM'.&lt;br /&gt;MOVE edidd-sdata TO xmara.&lt;br /&gt;WHEN 'E1MARCM'.&lt;br /&gt;MOVE edidd-sdata TO tmarc.&lt;br /&gt;APPEND tmarc.&lt;br /&gt;ENDCASE.&lt;br /&gt;ENDLOOP.&lt;br /&gt;now do something with xmara and tmarc.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-20729003637831058?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/20729003637831058/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=20729003637831058' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/20729003637831058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/20729003637831058'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/program-for-outbound-idoc.html' title='Program for Outbound IDOC'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5188453613908730114</id><published>2008-04-21T20:38:00.001+05:30</published><updated>2008-04-21T20:40:10.632+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>The IDoc Control Record</title><content type='html'>&lt;div align="justify"&gt;The very first record of an IDoc package is always a control record. The structure of this&lt;br /&gt;control record is the DDic structure EDIDC and describes the contents of the data contained in&lt;br /&gt;the package.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;The control record carries all the administrative information of the IDoc, such as its&lt;br /&gt;origin, its destination and a categorical description of the contents and context of&lt;br /&gt;the attached IDoc data. This is very much like the envelope or cover sheet that&lt;br /&gt;would accompany any paper document sent via postal mail.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;For R/3 inbound processing, the control record is used by the standard IDoc&lt;br /&gt;processing mechanism to determine the method for processing the IDoc. This&lt;br /&gt;method is usually a function module but may be a business object as well. The&lt;br /&gt;processing method can be fully customised.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;Once the IDoc data is handed over to a processing function module, you will no&lt;br /&gt;longer need the control record information. The function modules are aware of the&lt;br /&gt;individual structure of the IDoc type and the meaning of the data. In other words: for&lt;br /&gt;every context and syntax of an IDoc, you would write an individual function module&lt;br /&gt;or business object (note: a business object is also a function module in R/3) to deal&lt;br /&gt;with.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;The control record has a fixed pre-defined structure, which is defined in the data&lt;br /&gt;dictionary as EDIDC and can be viewed with SE11 in the R/3 data dictionary. The&lt;br /&gt;header of our example will tell us, that the IDoc has been received from a sender&lt;br /&gt;with the name PROCLNT100 and sent to the system with the name DEVCLNT100 .&lt;br /&gt;It further tells us that the IDoc is to be interpreted according to the IDoc definition&lt;br /&gt;called MATMAS01 .&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5188453613908730114?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5188453613908730114/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5188453613908730114' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5188453613908730114'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5188453613908730114'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/idoc-control-record.html' title='The IDoc Control Record'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8078165795563438450</id><published>2008-04-21T20:32:00.000+05:30</published><updated>2008-04-21T20:34:34.521+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>Structure of IDOC</title><content type='html'>IDocs are basically a small number of records in ASCII format, building a logical&lt;br /&gt;entity. It makes sense to see an IDoc as a plain and simple ASCII text file, even if it&lt;br /&gt;might be transported via other means.&lt;br /&gt;&lt;br /&gt;Any IDoc consists of two sections:&lt;br /&gt;&lt;strong&gt;the control record&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;which is always the first line of the file and provides the administrative information.&lt;br /&gt;the data record&lt;br /&gt;&lt;br /&gt;which contains the application dependent data, as in our example below the material&lt;br /&gt;master data.&lt;br /&gt;&lt;br /&gt;We will discuss the exchange of the material master IDoc MATMAS in the&lt;br /&gt;paragraphs that follow..&lt;br /&gt;&lt;br /&gt;The definition of the IDoc structure MATMAS01 is deposited in the data dictionary&lt;br /&gt;and can be viewed with WE30 .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8078165795563438450?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8078165795563438450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8078165795563438450' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8078165795563438450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8078165795563438450'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/structure-of-idoc.html' title='Structure of IDOC'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-904077879729082396</id><published>2008-04-21T20:24:00.001+05:30</published><updated>2008-04-21T20:28:51.261+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>What are IDocs?</title><content type='html'>&lt;div align="justify"&gt;IDocs are structured ASCII files (or a virtual equivalent). They are the file format used by SAP&lt;br /&gt;R/3 to exchange data with foreign systems.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;IDocs are simple ASCII data streams. When they are stored to a disk file, the IDocs&lt;br /&gt;are simple flat files with lines of text, where the lines are structured into data fields.&lt;br /&gt;The typical structured file has records, each record starting with a leading string that&lt;br /&gt;identifies the record type. Their specification is stored in the data dictionary.&lt;br /&gt;IDocs is the acronym for Interchange Document. This indicates a set of (electronic)&lt;br /&gt;information which builds a logical entity. An IDoc is e.g. all the data of a single&lt;br /&gt;customer in your customer master data file, or the IDoc is all the data of a single&lt;br /&gt;invoice.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;IDoc data is usually exchanged between systems and partners that are completely&lt;br /&gt;independent. Therefore, the data should be transmitted in a format that can easily be&lt;br /&gt;corrected by the computer operators. It is therefore mandatory to post the data in a&lt;br /&gt;human readable form.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;Nowadays, this means that data is coded in ASCII format, including numbers which&lt;br /&gt;are sent as a string of figures 0 to 9. Such data can easily be read with any text editor&lt;br /&gt;on any computer, be it a PC, Macintosh, UNIX System, S/390 or any internet&lt;br /&gt;browser.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;The information which is exchanged by IDocs is called a message and the IDoc is&lt;br /&gt;the physical representation of such a message. The name “messages” for the&lt;br /&gt;information sent via IDocs is used in the same ways as other EDI standards. .&lt;br /&gt;Everybody who has ever dealt with interface programming, will find IDocs very&lt;br /&gt;much like the hierarchical data files used in traditional data exchange.&lt;br /&gt;International standards like the ODETTE or VDA formats are designed in the same&lt;br /&gt;way as IDocs are.&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;Other EDI standards like XML, ANSI X.12 or EDIFACT/UN are based on a data&lt;br /&gt;description language. They differ principally from the IDocs concept, because they&lt;br /&gt;use a programming language syntax (e.g. like Postscript or HTML) to embed the&lt;br /&gt;data.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-904077879729082396?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/904077879729082396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=904077879729082396' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/904077879729082396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/904077879729082396'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/what-are-idocs.html' title='What are IDocs?'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6798178126220521345</id><published>2008-04-20T17:12:00.002+05:30</published><updated>2008-04-20T17:16:22.198+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><title type='text'>Download IDOC,ALE, EDI Book</title><content type='html'>Learn your self after downloading this book.Infact this book is very good for basic concept on IDOCs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.savefile.com/files/1512902"&gt;http://www.savefile.com/files/1512902&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6798178126220521345?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6798178126220521345/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6798178126220521345' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6798178126220521345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6798178126220521345'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/download-idocale-edi-book.html' title='Download IDOC,ALE, EDI Book'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8671683173383605607</id><published>2008-04-20T16:31:00.002+05:30</published><updated>2008-04-20T16:44:26.453+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALE'/><category scheme='http://www.blogger.com/atom/ns#' term='IDOC'/><category scheme='http://www.blogger.com/atom/ns#' term='EDI'/><title type='text'>Presentation on IDOC , ALE , EDI</title><content type='html'>Download a nice presentaion from this link given below.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.slideshare.net/shesagiri/ale-idoc-edi/"&gt;http://www.slideshare.net/shesagiri/ale-idoc-edi/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is a very nice presentation available on  net.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8671683173383605607?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8671683173383605607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8671683173383605607' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8671683173383605607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8671683173383605607'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/presentation-on-idoc-ale-edi.html' title='Presentation on IDOC , ALE , EDI'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3463608195274750270</id><published>2008-04-19T14:25:00.002+05:30</published><updated>2008-04-19T14:29:52.453+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP Script'/><title type='text'>Learn SAP Script Online</title><content type='html'>&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sample-sapscripts-label-printing.html"&gt;Sample Sapscripts Label Printing Program&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sample-sap-scripts-reports.html"&gt;A Sample SAP Scripts Reports&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/faq-for-sap-scripts.html"&gt;FAQ for Sap Scripts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/questions-on-po-sapscripts-medruck.html"&gt;Questions on PO SapScripts MEDRUCK&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sapscript-question.html"&gt;SapScript Question&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/details-information-about-sap-barcodes.html"&gt;Details information about SAP Barcodes&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/delete-load-program-for-sapscript.html"&gt;Delete Load program for SAPScript&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/picture-doesnt-show-in-print-preview.html"&gt;Picture doesn't show in Print Preview&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/importexport-sapscript-form-from-pc.html"&gt;Import/Export SapScript form from PC file How do you backup sapscript layout sets? Can you download and upload? How?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/how-to-upload-graphics-image-to-your.html"&gt;How to Upload graphics (IMAGE) to your Sapscript?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/how-to-convert-sapscript-spools-request_03.html"&gt;How to convert Sapscript spools request to PDF?&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sapscripts-developing-sapscript-in.html"&gt;SAPScripts - Developing SAPScript in different languages&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sapscripts-how-to-calculate-totals-and.html"&gt;SAPscripts How to calculate Totals and Subtotals&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/retrieving-data-without-modifying.html"&gt;Retrieving data without modifying the original called program&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/protectendprotect.html"&gt;Protect...Endprotect&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/orientations-in-sapscript.html"&gt;Orientations in SAPSCRIPT&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/print-footer-notes-only-on-last-page.html"&gt;Print Footer notes only on the last page&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/different-font-on-same-line.html"&gt;Different font on the same line&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sap-printer-commands-in-sapscripts.html"&gt;SAP Printer commands in SAPScripts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sap-scripts-boxeslinesshading.html"&gt;SAP Scripts Boxes/Lines/Shading&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/reading-text-in-sapscripts.html"&gt;Reading Text in SAPScripts&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sapscript-important-programs.html"&gt;SAPScript Important Programs&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sapscriptcode.blogspot.com/2007/05/sapscript-transaction-codes.html"&gt;SAPScript Transaction codes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3463608195274750270?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3463608195274750270/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3463608195274750270' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3463608195274750270'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3463608195274750270'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/learn-sap-script-online.html' title='Learn SAP Script Online'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7605502142931201735</id><published>2008-04-19T14:22:00.001+05:30</published><updated>2008-04-19T14:24:09.202+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP performance factor'/><title type='text'>SAP ABAP Performance tools</title><content type='html'>&lt;a href="http://learnabap.blogspot.com/2007/05/performance-tools.html"&gt;Performance Tools&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(i)&lt;a href="http://learnabap.blogspot.com/2007/05/runtime-analysis.html"&gt;Runtime Analysis &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://learnabap.blogspot.com/2007/05/sql-trace.html"&gt;(ii)  SQL Trace&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7605502142931201735?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7605502142931201735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7605502142931201735' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7605502142931201735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7605502142931201735'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/sap-abap-performance-tools.html' title='SAP ABAP Performance tools'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3863225835513576278</id><published>2008-04-19T11:46:00.001+05:30</published><updated>2008-04-19T14:19:27.368+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ABAP performance factor'/><title type='text'>SAP ABAP Performance factor :</title><content type='html'>(i ) &lt;a href="http://learnabap.blogspot.com/2007/05/runtime-analysis.html"&gt;Runtime Analysis&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(ii) &lt;a href="http://learnabap.blogspot.com/2007/05/sql-trace.html"&gt;SQL Trace&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(iii) &lt;a href="http://learnabap.blogspot.com/2007/05/internal-table-performance-improvements.html"&gt;Internal Table Performance Improvements&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(iv) &lt;a href="http://learnabap.blogspot.com/2007/05/performance-tuning-using-parallel.html"&gt;Performance Tuning using Parallel cursor&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;(v)&lt;a href="http://learnabap.blogspot.com/2007/05/performance-tuning-using-groupby.html"&gt;Performance tuning using GROUPBY&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3863225835513576278?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3863225835513576278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3863225835513576278' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3863225835513576278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3863225835513576278'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2008/04/sap-abap-performance-factor.html' title='SAP ABAP Performance factor :'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7775918662569769629</id><published>2007-10-20T14:20:00.001+05:30</published><updated>2008-04-19T14:30:57.876+05:30</updated><title type='text'>Concepts of Infotypes- Structure and Processing</title><content type='html'>&lt;p&gt;&lt;strong&gt;Infotypes:&lt;br /&gt;&lt;/strong&gt;An infotype represents a group of related data fields, provides information structure, facilitates data entry, and allows time dependent storage.&lt;br /&gt;&lt;br /&gt;In other words we can say infotypes are information units used to enter the time dependent data of the employee.&lt;br /&gt;&lt;br /&gt;Master data in HR is stored in infotypes. Each infotype pertains to a specific type of data.Each infotype has a database table associated with it.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time constraints:&lt;/strong&gt; Enable you to determine how the validity periods of infotype data records interact&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time constraint 1:&lt;/strong&gt; Exactly one valid data record of the infotype in question must exist for the entire time that the employee belongs to the enterprise.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time constraint 2:&lt;/strong&gt; No more than one valid data record of the infotype in question can exist at any one time.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Time constraint 3&lt;/strong&gt;: Any number of valid data records of the infotype in question can exist at any one time.&lt;br /&gt;&lt;br /&gt;The prerequisites for the existence of a personnel or applicant number are infotypes 0000 Actions, 0001 Organizational Assignment, 0002 Personal Data, and 0003 Payroll Status.&lt;br /&gt;&lt;br /&gt;Transparent tables for infotype&lt;br /&gt;&lt;br /&gt;Each infotype has a transparent table. Each logical field for an infotype has a corresponding physical field on the database.&lt;br /&gt;One physical table is stored on the database for each transparent table. The names of the physical table and logical table definition in the Dictionary are compatible.&lt;br /&gt;&lt;br /&gt;The following naming convention applies to infotype tables; nnnn stands for the infotype number: &lt;/p&gt;&lt;br /&gt;&lt;ul&gt;&lt;br /&gt;&lt;li&gt;PAnnnn for transparent tables in Personnel Administration &lt;/li&gt;&lt;br /&gt;&lt;li&gt;PBnnnn for transparent tables in Recruitment &lt;/li&gt;&lt;br /&gt;&lt;li&gt;HRPnnnn for transparent tables in Personnel Planning &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;Example: For Infotype 0000, the corresponding database table associated with it is PA0000&lt;br /&gt;&lt;br /&gt;Check and Control Tables for HR Infotypes&lt;br /&gt;&lt;br /&gt;Check and Control Tables for HR Infotypes&lt;br /&gt;&lt;br /&gt;Table T777D Infotypes - Dialog/Database Assignment is the central check table (domain&lt;br /&gt;INFOTYP) for all HR infotypes (Administration and planning infotypes). It is used to store the names of all infotype-dependent repository objects (tables, structures, programs, and so on).&lt;br /&gt;&lt;br /&gt;Table T77ID Infotypes: Enhancements to T777D is simply an enhancement of table T777D that exists for reasons of memory space.&lt;br /&gt;&lt;br /&gt;Table T582A Infotypes - Customer-Specific Settings is used for customer settings in&lt;br /&gt;Administration infotypes.&lt;br /&gt;&lt;br /&gt;Table T77CD Infotypes - Customer-Specific Settings is used for customer settings in planning&lt;br /&gt;infotypes.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;The primary key of transparent table PAnnnn consists of the following key fields:&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;PERNR: the personnel number is the only unique key within a client for identifying an&lt;br /&gt;employee. It is used to access the display and maintenance screens for an employee’s&lt;br /&gt;master data and working time data (infotypes).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SUBTY: subtypes are subdivisions of infotypes. An infotype’s subtypes can have different&lt;br /&gt;time constraints and form their own histories.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;OBJPS: the object identification is used to make a distinction between records with the&lt;br /&gt;same infotype, subtype, lock indicator, start date, and end date. For example, the child&lt;br /&gt;number in infotype 0021 Family/Related Person.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SPRPS: the lock indicator for HR master data is used to lock and unlock data records,&lt;br /&gt;which enables the “double verification principle” to be put into practice. In accordance with&lt;br /&gt;this principle, at least two users are involved in the process of writing an active data record&lt;br /&gt;to the database. One of the users creates a locked infotype record, and the other user&lt;br /&gt;unlocks - that is, activates - the data record.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDDA: end date.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;BEGDA: start date.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SEQNR: The Sequential Number is used to make a distinction between infotype records&lt;br /&gt;that have the same key and time constraint '3' (any number of valid infotype data records&lt;br /&gt;at any one time). Unlike the object identification, it is assigned by the system automatically.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Structure:&lt;br /&gt;&lt;br /&gt;The Data Dictionary contains a Pnnnn structure for each infotype nnnn. The infotype structure&lt;br /&gt;Pnnnn corresponds to the table PAnnnn. The Pnnnn structure of the infotype is used as the field&lt;br /&gt;structure for the infotype entry screen (Transaction code PA30).&lt;br /&gt;&lt;br /&gt;Basic form of an infotype:&lt;br /&gt;&lt;br /&gt;Infotypes nnnn [name c] [occurs m] [mode n] [valid from comp1 to comp2].&lt;br /&gt;nnnn can be 0000 to 9999.&lt;br /&gt;&lt;br /&gt;0000 – 0999 are HR Master Data infotypes.&lt;br /&gt;1000 – 1999 are HR Planning data infotypes.&lt;br /&gt;2000 – 2999 are HR time data infotypes.&lt;br /&gt;3000 – 8999 are not used&lt;br /&gt;9000 – 9999 are used for the custom infotypes&lt;br /&gt;&lt;br /&gt;Effect of the above syntax is&lt;br /&gt;&lt;br /&gt;It creates an internal table as below...&lt;br /&gt;&lt;br /&gt;DATA BEGIN OF c OCCURS m.&lt;br /&gt;INCLUDE STRUCTURE Pnnnn.&lt;br /&gt;DATA END OF c VALID BETWEEN comp1 AND comp2&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;If name option is not given in the syntax then the internal table will be created with the name&lt;br /&gt;p&lt;nnnn&gt;&lt;br /&gt;&lt;br /&gt;If occurs clause in not given then the size of an internal table would be 10 * size of the&lt;br /&gt;structure pnnnn. That is in the place of ‘m’ it would be 10.&lt;br /&gt;&lt;br /&gt;If valid clause is not given then the comp1 and comp2 values will be 01/01/1800 and&lt;br /&gt;31/12/9999 respectively.&lt;br /&gt;&lt;br /&gt;Mode n this clause can only be used with the LDB’s PCH and PNP. This addition stops this&lt;br /&gt;infotype being automatically filled at the GET PERNR command.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The infotype records can be processed using the infotype structure when the report is run.&lt;br /&gt;&lt;br /&gt;Processing Infotypes&lt;br /&gt;&lt;br /&gt;Processing Single Infotype Record&lt;br /&gt;&lt;br /&gt;We can process the Single records of an infotype using the following macros.&lt;br /&gt;&lt;br /&gt;1.RP_PROVIDE_FROM_LAST Pnnnn SPACE PN-BEGDA PN-ENDDA.&lt;br /&gt;This macro is used to retrieve the most recent record in the PN-BEGDA and PN-ENDDA data&lt;br /&gt;selection period available in the structure Pnnnn for infotype nnnn&lt;br /&gt;&lt;br /&gt;2. RP_PROVIDE_FROM_FIRST Pnnnn SPACE PN-BEGDA PN-ENDDA&lt;br /&gt;This macro retrieves the earliest record for the given selection period.&lt;br /&gt;If the infotype has subtypes, then replace SPACE with the subtype so, the data is retrieved based on&lt;br /&gt;that subtype. If the retrieval is successful then the return code PNP-SW-FOUND will be ‘1’.&lt;br /&gt;&lt;br /&gt;Processing All Infotype Records&lt;br /&gt;&lt;br /&gt;Syntax: PROVIDE * FROM Pnnnn BETWEEN PN-BEGDA AND PN-ENDDA.&lt;br /&gt;ENDPROVIDE&lt;br /&gt;&lt;br /&gt;nnnn stands for 4-digit infotype number. The relationship between the data and the selection period&lt;br /&gt;is established using the PN-BEGDA and PN- ENDDA variables.&lt;br /&gt;&lt;br /&gt;Infotype List &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7775918662569769629?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7775918662569769629/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7775918662569769629' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7775918662569769629'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7775918662569769629'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/concepts-of-infotypes-structure-and.html' title='Concepts of Infotypes- Structure and Processing'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2626336032688371413</id><published>2007-10-20T14:02:00.001+05:30</published><updated>2007-10-20T14:05:03.431+05:30</updated><title type='text'>Overview of PA and PD and  Integration between PA and PD</title><content type='html'>&lt;div align="justify"&gt;This explains how to use the ABAP programs, which set integration between PA and PD/OM. They are mainly used after data conversion, bulk updates or to correct errors caused by other programs.&lt;br /&gt;&lt;br /&gt;Each program is explained in detail so you can decide which ones you need to run. To set up/fix full integration between PA and PD, they should be run in this sequence:&lt;br /&gt;&lt;br /&gt;1. RHINTE00 – Transfer PA records into PD positions –batch&lt;br /&gt;2. RHINTE20 – Create OM objects in PA tables – Online&lt;br /&gt;3. RHINTE30 – Bulk update of infotype 0001&lt;br /&gt;4. RHINTECHECK – Program to check PA to PD&lt;br /&gt;5. RHCHECKV - Checks all inverse relationships&lt;br /&gt;&lt;br /&gt;Overview&lt;br /&gt;&lt;br /&gt;It is important to realize that in PA, there are tables that contain objects from OM, i.e. for those items displayed on infotype 0001 Organizational Assignment. Sometimes the tables can get ‘out of step’ with those in PD – table HRP1000.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The tables are:&lt;br /&gt;&lt;br /&gt;T513, T513S Object type C (Job)&lt;br /&gt;T528B, T528T Object types S (Position) and A (Work center)&lt;br /&gt;T527X Object type O (Organizational unit)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE00&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;This loops through all employees in PA by looking at positions on infotype 0001. It checks the&lt;br /&gt;corresponding person to position relationship exists in PD (A008), if not it is created.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE10&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Generally, the program RHINTE20 will be used instead of this one. This program loops through the PD table HRP1000. For each job, position, work centre and organization unit, corresponding entry is created in the PA tables, which are shown above. Run this with evaluation path o_s_p, which runs through Org units, jobs and positions or find a suitable alternative if you wish to update work centers also. The main difference with this program as opposed to RHINTE20 is that this one has the option to delete items from the PA tables, which no longer exist in PD.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE20&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This program loops through the PD table HRP1000. For each job, position, work centre and&lt;br /&gt;organization unit, corresponding entry is created in the PA tables, which are shown above. Run this with evaluation path o_s_p, which runs through Org units, jobs and positions or find a suitable alternative if you wish to update work centers also. An example output will show: &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2626336032688371413?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2626336032688371413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2626336032688371413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2626336032688371413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2626336032688371413'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/overview-of-pa-and-pd-and-integration.html' title='Overview of PA and PD and  Integration between PA and PD'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4531919338241910139</id><published>2007-10-20T14:02:00.000+05:30</published><updated>2007-10-20T14:19:59.802+05:30</updated><title type='text'>Overview of PA and PD and Integration between PA and PD</title><content type='html'>This explains how to use the ABAP programs, which set integration between PA and PD/OM. They are mainly used after data conversion, bulk updates or to correct errors caused by other programs.&lt;br /&gt;&lt;br /&gt;Each program is explained in detail so you can decide which ones you need to run. To set up/fix full integration between PA and PD, they should be run in this sequence:&lt;br /&gt;&lt;br /&gt;1. RHINTE00 – Transfer PA records into PD positions –batch&lt;br /&gt;2. RHINTE20 – Create OM objects in PA tables – Online&lt;br /&gt;3. RHINTE30 – Bulk update of infotype 0001&lt;br /&gt;4. RHINTECHECK – Program to check PA to PD&lt;br /&gt;5. RHCHECKV - Checks all inverse relationships&lt;br /&gt;&lt;br /&gt;Overview&lt;br /&gt;&lt;br /&gt;It is important to realize that in PA, there are tables that contain objects from OM, i.e. for those items displayed on infotype 0001 Organizational Assignment. Sometimes the tables can get ‘out of step’ with those in PD – table HRP1000.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;The tables are:&lt;br /&gt;&lt;br /&gt;T513, T513S Object type C (Job)&lt;br /&gt;T528B, T528T Object types S (Position) and A (Work center)&lt;br /&gt;T527X Object type O (Organizational unit)&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE00&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;This loops through all employees in PA by looking at positions on infotype 0001. It checks the&lt;br /&gt;corresponding person to position relationship exists in PD (A008), if not it is created.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE10&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Generally, the program RHINTE20 will be used instead of this one. This program loops through the PD table HRP1000. For each job, position, work centre and organization unit, corresponding entry is created in the PA tables, which are shown above. Run this with evaluation path o_s_p, which runs through Org units, jobs and positions or find a suitable alternative if you wish to update work centers also. The main difference with this program as opposed to RHINTE20 is that this one has the option to delete items from the PA tables, which no longer exist in PD.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE20&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This program loops through the PD table HRP1000. For each job, position, work centre and&lt;br /&gt;organization unit, corresponding entry is created in the PA tables, which are shown above. Run this with evaluation path o_s_p, which runs through Org units, jobs and positions or find a suitable alternative if you wish to update work centers also. An example output will show: &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5123335711171266306" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/__aUD213pS6o/Rxm-r0lvxwI/AAAAAAAAASc/sz6sTxkQ5EM/s320/list-526x230%5B1%5D.jpg" border="0" /&gt;&lt;br /&gt;Expand the tree items to display a list of objects that can be created:&lt;br /&gt;&lt;br /&gt;RHINTECHECK&lt;br /&gt;&lt;br /&gt;When the above programs have been run, use this check program, which looks through all employees and reports any inconsistencies found between PA and PD.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5123337317489035026" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RxnAJUlvxxI/AAAAAAAAASk/IGIAELbNBR0/s320/found-522x299%5B1%5D.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Tick each item that you wish to be created, or click on the text&lt;br /&gt;&lt;br /&gt;and click ‘select subtree’ to select them all then click to perform multiple updates. This program can prove to be ‘problematic’. If difficulties arise with it, try using RHINTE10 instead.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHINTE30&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This will create an infotype 0001 record with correct entries for org unit, job, position and work centre by looking through the organization structure. It creates a batch job, which must be run via SM35.&lt;br /&gt;&lt;br /&gt;More details to follow.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;RHCHECKV&lt;/strong&gt;&lt;br /&gt;This will check inverse relationships and create missing ones.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4531919338241910139?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4531919338241910139/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4531919338241910139' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4531919338241910139'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4531919338241910139'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/overview-of-pa-and-pd-and-integration_20.html' title='Overview of PA and PD and Integration between PA and PD'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/__aUD213pS6o/Rxm-r0lvxwI/AAAAAAAAASc/sz6sTxkQ5EM/s72-c/list-526x230%5B1%5D.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2728179529689232106</id><published>2007-10-20T14:00:00.000+05:30</published><updated>2007-10-20T14:02:11.860+05:30</updated><title type='text'>Learn ABAP HR Online-Overview &amp; Features in HR Programming</title><content type='html'>&lt;div align="justify"&gt;&lt;strong&gt;Overview &amp;amp; Features in HR Programming&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;The aim in the Human Resources component is to be able to process employee related data according to business requirements in an effective structure.The Human Resources module uses a system of data grouped together called infotypes.Infotypes mirror a quantity of connected data records; infotypes are identifiable through a four character numerical string [e.g. infotype Addresses (0006)] and a complete listing is included.You can save the infotypes as time-dependent to enable a retroactive evaluation ofEmployee data.The infotypes appear as an entry screen for the user, through which you can maintain infotype records. Infotypes can be processed individually or in fast entry mode.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Difference from conventional ABAP&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Advanced Business Application Programming ABAP is SAP's fourth generation language. All of R/3's applications and even parts of its basic system are developed in ABAP. ABAP is used for customization and modification of SAP applications.In HR ABAP use of select statements significantly less than in other areas of ABAP development, Logical databases have limited applications in other modules but are very useful in HR. Also, you really need to understand the infotype time constraint concept, When you cannot get the information that you need out of the logical DB look at the function modules starting with HR* and RH*. These function modules will provide you with multiple ways of accessing data to save time. Worst-case scenario, use a select statement.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2728179529689232106?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2728179529689232106/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2728179529689232106' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2728179529689232106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2728179529689232106'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/learn-abap-hr-online-overview-features.html' title='Learn ABAP HR Online-Overview &amp; Features in HR Programming'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7072009508918371014</id><published>2007-10-18T22:17:00.000+05:30</published><updated>2007-10-18T22:18:37.331+05:30</updated><title type='text'>Sample ABAP Program to Upload table using new function GUI_UPLOAD</title><content type='html'>*&amp; Report  ZUPLOAD                                                     *&lt;br /&gt;*&amp;                                                                     *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;   This program uses the new function GUI_UPLOAD                     *&lt;br /&gt;*&amp;   Input must be TAB delimited with a blank column at the start      *&lt;br /&gt;*&amp;        to allow for MANDT.                                          *&lt;br /&gt;*&amp;   To use this program for any Database Table replace ZTEST with     *&lt;br /&gt;*&amp;   new table name.                                                   *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;   AUTHOR: Sheila Titchener - abap at iconet-ltd.co.uk               *&lt;br /&gt;*&amp;   Date:   February 2004                                             *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT  zupload MESSAGE-ID bd.&lt;br /&gt;&lt;br /&gt;DATA: w_tab TYPE ZTEST.&lt;br /&gt;DATA: i_tab TYPE STANDARD TABLE OF ZTEST.&lt;br /&gt;&lt;br /&gt;DATA: v_subrc(2),&lt;br /&gt;      v_recswritten(6).&lt;br /&gt;&lt;br /&gt;PARAMETERS: p_file(80)&lt;br /&gt;       DEFAULT 'C:\Temp\ZTEST.TXT'.&lt;br /&gt;&lt;br /&gt;DATA: filename TYPE string,&lt;br /&gt;      w_ans(1) TYPE c.&lt;br /&gt;&lt;br /&gt;filename = p_file.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'POPUP_TO_CONFIRM'&lt;br /&gt;  EXPORTING&lt;br /&gt;   titlebar                    = 'Upload Confirmation'&lt;br /&gt;*   DIAGNOSE_OBJECT             = ' '&lt;br /&gt;    text_question               = p_file&lt;br /&gt;   text_button_1               = 'Yes'(001)&lt;br /&gt;*   ICON_BUTTON_1               = ' '&lt;br /&gt;   text_button_2               = 'No'(002)&lt;br /&gt;*   ICON_BUTTON_2               = ' '&lt;br /&gt;   default_button              = '2'&lt;br /&gt;*   DISPLAY_CANCEL_BUTTON       = 'X'&lt;br /&gt;*   USERDEFINED_F1_HELP         = ' '&lt;br /&gt;*   START_COLUMN                = 25&lt;br /&gt;*   START_ROW                   = 6&lt;br /&gt;*   POPUP_TYPE                  =&lt;br /&gt;*   IV_QUICKINFO_BUTTON_1       = ' '&lt;br /&gt;*   IV_QUICKINFO_BUTTON_2       = ' '&lt;br /&gt; IMPORTING&lt;br /&gt;   answer                      = w_ans&lt;br /&gt;* TABLES&lt;br /&gt;*   PARAMETER                   =&lt;br /&gt;* EXCEPTIONS&lt;br /&gt;*   TEXT_NOT_FOUND              = 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;CHECK w_ans = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'GUI_UPLOAD'&lt;br /&gt;  EXPORTING&lt;br /&gt;    filename                      = filename&lt;br /&gt;*    FILETYPE                      = 'ASC&lt;br /&gt;    has_field_separator           = 'X'&lt;br /&gt;*   HEADER_LENGTH                 = 0&lt;br /&gt;*   READ_BY_LINE                  = 'X'&lt;br /&gt;* IMPORTING&lt;br /&gt;*    FILELENGTH                    =&lt;br /&gt;*   HEADER                        =&lt;br /&gt;  TABLES&lt;br /&gt;    data_tab                      = i_tab&lt;br /&gt; EXCEPTIONS&lt;br /&gt;   file_open_error               = 1&lt;br /&gt;   file_read_error               = 2&lt;br /&gt;   no_batch                      = 3&lt;br /&gt;   gui_refuse_filetransfer       = 4&lt;br /&gt;   invalid_type                  = 5&lt;br /&gt;   no_authority                  = 6&lt;br /&gt;   unknown_error                 = 7&lt;br /&gt;   bad_data_format               = 8&lt;br /&gt;   header_not_allowed            = 9&lt;br /&gt;   separator_not_allowed         = 10&lt;br /&gt;   header_too_long               = 11&lt;br /&gt;   unknown_dp_error              = 12&lt;br /&gt;   access_denied                 = 13&lt;br /&gt;   dp_out_of_memory              = 14&lt;br /&gt;   disk_full                     = 15&lt;br /&gt;   dp_timeout                    = 16&lt;br /&gt;   OTHERS                        = 17.&lt;br /&gt;&lt;br /&gt;* SYST FIELDS ARE NOT SET BY THIS FUNCTION SO DISPLAY THE ERROR CODE *&lt;br /&gt;&lt;br /&gt;IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  v_subrc = sy-subrc.&lt;br /&gt;  MESSAGE e899 WITH 'File Open Error' v_subrc.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;INSERT ZTEST FROM TABLE i_tab.&lt;br /&gt;&lt;br /&gt;COMMIT WORK AND WAIT.&lt;br /&gt;&lt;br /&gt;MESSAGE i899 WITH sy-dbcnt 'Records Written to ZTEST'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7072009508918371014?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7072009508918371014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7072009508918371014' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7072009508918371014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7072009508918371014'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-upload-table.html' title='Sample ABAP Program to Upload table using new function GUI_UPLOAD'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4678870903254690789</id><published>2007-10-18T22:16:00.002+05:30</published><updated>2007-10-18T22:17:52.332+05:30</updated><title type='text'>Sample ABAP Program for Submitting report with selection table</title><content type='html'>REPORT submit_with_selection_table.&lt;br /&gt;TABLES QMSM.&lt;br /&gt;* Work area for internal table IQMSM&lt;br /&gt;DATA: BEGIN OF WQMSM,&lt;br /&gt;     QMNUM LIKE QMSM-QMNUM,&lt;br /&gt;     MNGRP LIKE QMSM-MNGRP,&lt;br /&gt;     MNCOD LIKE QMSM-MNCOD,&lt;br /&gt;     ZZSTAT LIKE QMSM-ZZSTAT,&lt;br /&gt;     END OF WQMSM.&lt;br /&gt;&lt;br /&gt;* WORK Area for internal table iseltab.&lt;br /&gt;DATA: WSELTAB LIKE RSPARAMS.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Internal tables&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* selection table to pass to RIQMEL30&lt;br /&gt;DATA: ISELTAB LIKE TABLE OF WSELTAB.&lt;br /&gt;* Table of notification numbers selected - will be passed to riqmel30&lt;br /&gt;DATA: IQMSM LIKE TABLE OF WQMSM.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;  REFRESH IQMSM.&lt;br /&gt;  SELECT QMNUM MNGRP MNCOD ZZSTAT&lt;br /&gt;               FROM  QMSM INTO CORRESPONDING FIELDS OF TABLE IQMSM&lt;br /&gt;         WHERE  MNGRP    = 'ACTION'&lt;br /&gt;         AND    MNCOD    = 'CALL'&lt;br /&gt;        and (   zzqmart  = 'ZE' or zzqmart = 'ZI' )&lt;br /&gt;         AND    ZZSTAT = ' '.&lt;br /&gt;&lt;br /&gt;* create selection table entries for field QMART&lt;br /&gt;&lt;br /&gt;  WSELTAB-SELNAME = 'QMART'.&lt;br /&gt;  WSELTAB-KIND    = 'S'.&lt;br /&gt;  WSELTAB-SIGN = 'I'.&lt;br /&gt;  WSELTAB-OPTION = 'EQ'.&lt;br /&gt;  WSELTAB-LOW = 'ZE'.&lt;br /&gt;  APPEND WSELTAB TO ISELTAB.&lt;br /&gt;  WSELTAB-LOW = 'ZI'.&lt;br /&gt;  APPEND WSELTAB TO ISELTAB.&lt;br /&gt;&lt;br /&gt;* Create selection table entries for QMNUM&lt;br /&gt;&lt;br /&gt;  CLEAR WSELTAB.&lt;br /&gt;  WSELTAB-SELNAME = 'QMNUM'.&lt;br /&gt;  WSELTAB-KIND    = 'S'.&lt;br /&gt;  WSELTAB-SIGN = 'I'.&lt;br /&gt;  WSELTAB-OPTION = 'EQ'.&lt;br /&gt;  LOOP AT IQMSM INTO WQMSM.&lt;br /&gt;    WSELTAB-LOW = WQMSM-QMNUM.&lt;br /&gt;    APPEND WSELTAB TO ISELTAB.&lt;br /&gt;  ENDLOOP&lt;br /&gt;*&lt;br /&gt;* SUBMIT program with parameters passed in table ISELTAB&lt;br /&gt;* Other parameters passed explicitly&lt;br /&gt;&lt;br /&gt;  SUBMIT RIQMEL30 WITH SELECTION-TABLE ISELTAB&lt;br /&gt;                   WITH MNGRP = 'ACTION'&lt;br /&gt;                   WITH MNCOD = 'CALL'&lt;br /&gt;                   WITH DATUV = '00000000'&lt;br /&gt;                   WITH DATUB = '99991231'&lt;br /&gt;                   WITH STAI1 = 'TSRL'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4678870903254690789?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4678870903254690789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4678870903254690789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4678870903254690789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4678870903254690789'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-submitting.html' title='Sample ABAP Program for Submitting report with selection table'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4514596193351324552</id><published>2007-10-18T22:16:00.001+05:30</published><updated>2007-10-18T22:16:54.331+05:30</updated><title type='text'>Sample ABAP Program for Sending SAP Mail</title><content type='html'>*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SEND_MAIL&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       send email to current user                                     *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM SEND_MAIL.&lt;br /&gt;&lt;br /&gt;* PARAMETERS FOR SO_NEW_DOCUMENT_SEND_API1&lt;br /&gt;  DATA: W_OBJECT_ID LIKE SOODK,&lt;br /&gt;        W_SONV_FLAG LIKE SONV-FLAG.&lt;br /&gt;  DATA: T_RECEIVERS LIKE SOMLRECI1 OCCURS 1 WITH HEADER LINE,&lt;br /&gt;        W_OBJECT_CONTENT LIKE SOLISTI1 OCCURS 1 WITH HEADER LINE,&lt;br /&gt;        W_DOC_DATA LIKE SODOCCHGI1 OCCURS 0 WITH HEADER LINE.&lt;br /&gt;*&lt;br /&gt;  DATA: W_DATE(10).&lt;br /&gt;  CLEAR T_RECEIVERS.&lt;br /&gt;  T_RECEIVERS-RECEIVER = SY-UNAME.&lt;br /&gt;  T_RECEIVERS-REC_TYPE = 'B'.&lt;br /&gt;  T_RECEIVERS-EXPRESS = ' '.&lt;br /&gt;  APPEND T_RECEIVERS.&lt;br /&gt;&lt;br /&gt;  W_DOC_DATA-OBJ_DESCR = 'Change Expiry date'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Delivery NO&lt;br /&gt;  CONCATENATE 'Delivery No' M_VMVMA-VBELN INTO W_OBJECT_CONTENT&lt;br /&gt;                             SEPARATED BY ' '.&lt;br /&gt;  APPEND W_OBJECT_CONTENT.&lt;br /&gt;* material Batch&lt;br /&gt;  CONCATENATE 'Material' ZGREC-MATNR 'Batch' ZGREC-CHARG&lt;br /&gt;                      INTO W_OBJECT_CONTENT SEPARATED BY ' '.&lt;br /&gt;  APPEND W_OBJECT_CONTENT.&lt;br /&gt;* Expiry date&lt;br /&gt;  WRITE B_VFDAT TO W_DATE DD/MM/YYYY.&lt;br /&gt;  CONCATENATE 'Change expiry date to' W_DATE&lt;br /&gt;                       INTO W_OBJECT_CONTENT SEPARATED BY ' '.&lt;br /&gt;  APPEND W_OBJECT_CONTENT.&lt;br /&gt;*&lt;br /&gt;  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'&lt;br /&gt;      EXPORTING&lt;br /&gt;           DOCUMENT_DATA           = W_DOC_DATA&lt;br /&gt;           PUT_IN_OUTBOX              = ' '&lt;br /&gt;      TABLES&lt;br /&gt;           OBJECT_CONTENT             = W_OBJECT_CONTENT&lt;br /&gt;           RECEIVERS                  = T_RECEIVERS&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;           TOO_MANY_RECEIVERS         = 1&lt;br /&gt;           DOCUMENT_NOT_SENT          = 2&lt;br /&gt;           DOCUMENT_TYPE_NOT_EXIST    = 3&lt;br /&gt;           OPERATION_NO_AUTHORIZATION = 4&lt;br /&gt;           PARAMETER_ERROR            = 5&lt;br /&gt;           X_ERROR                    = 6&lt;br /&gt;           ENQUEUE_ERROR              = 7&lt;br /&gt;           OTHERS                     = 8.&lt;br /&gt;ENDFORM.                               " SEND_MAIL&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4514596193351324552?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4514596193351324552/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4514596193351324552' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4514596193351324552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4514596193351324552'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-sending-sap.html' title='Sample ABAP Program for Sending SAP Mail'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-154461071063136194</id><published>2007-10-18T22:14:00.000+05:30</published><updated>2007-10-18T22:15:08.937+05:30</updated><title type='text'>Sample ABAP Program for Search Layout sets for given String</title><content type='html'>REPORT Ysearchl LINE-SIZE 132.&lt;br /&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;*&lt;br /&gt;* Program   :   Ysearchl&lt;br /&gt;* Authors   :   Chris Harrop  (chris.harrop@bigfoot.com)&lt;br /&gt;* Date      :   March 1999&lt;br /&gt;* Purpose   :   Searches all Y and Z layout sets for a given string&lt;br /&gt;*&lt;br /&gt;************************************************************************&lt;br /&gt;*&lt;br /&gt;* maintenance history&lt;br /&gt;*&lt;br /&gt;* date       author            purpose&lt;br /&gt;*&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;TABLES: STXL.&lt;br /&gt;&lt;br /&gt;PARAMETERS:&lt;br /&gt;  STRING(128).&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF TLINETAB OCCURS 0.&lt;br /&gt;        INCLUDE STRUCTURE TLINE.&lt;br /&gt;DATA: END OF TLINETAB,&lt;br /&gt;SUBRC LIKE SY-SUBRC.&lt;br /&gt;&lt;br /&gt;SELECT TDNAME FROM STXL INTO (STXL-TDNAME)&lt;br /&gt;    WHERE TDOBJECT = 'FORM' AND ( TDNAME LIKE 'Y%' OR TDNAME LIKE 'Z%' )&lt;br /&gt;    AND TDID = 'TXT'.&lt;br /&gt;&lt;br /&gt;  PERFORM DISPLAY_STATUS_TEXT USING STXL-TDNAME.&lt;br /&gt;&lt;br /&gt;  REFRESH TLINETAB.&lt;br /&gt;  PERFORM GET_TEXT_TABLE&lt;br /&gt;          TABLES TLINETAB&lt;br /&gt;          USING 'FORM' 'TXT' STXL-TDNAME&lt;br /&gt;          CHANGING SUBRC.&lt;br /&gt;  LOOP AT TLINETAB.&lt;br /&gt;    IF TLINETAB-TDLINE CS STRING.&lt;br /&gt;      WRITE : / STXL-TDNAME, TLINETAB-TDLINE.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDSELECT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Display a message on the status bar&lt;br /&gt;FORM DISPLAY_STATUS_TEXT USING VALUE(TEXT) TYPE C.&lt;br /&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;br /&gt;       EXPORTING&lt;br /&gt;            TEXT = TEXT.&lt;br /&gt;ENDFORM.&lt;br /&gt;*&lt;br /&gt;* Get the long texts for the object&lt;br /&gt;*&lt;br /&gt;FORM GET_TEXT_TABLE TABLES TLINETAB&lt;br /&gt;                    USING VALUE(TDOBJECT) LIKE THEAD-TDOBJECT&lt;br /&gt;                          VALUE(ID) LIKE THEAD-TDID&lt;br /&gt;                          VALUE(TDNAME) LIKE THEAD-TDNAME&lt;br /&gt;                    CHANGING SUBRC LIKE SY-SUBRC.&lt;br /&gt;&lt;br /&gt;  DATA: BEGIN OF XTHEAD OCCURS 0.&lt;br /&gt;          INCLUDE STRUCTURE THEAD.&lt;br /&gt;  DATA: END OF XTHEAD.&lt;br /&gt;&lt;br /&gt;  DATA: EINTRAEGE LIKE SY-TFILL.&lt;br /&gt;&lt;br /&gt;  DATA XTDNAME LIKE THEAD-TDNAME.&lt;br /&gt;  REFRESH XTHEAD.&lt;br /&gt;  CLEAR XTDNAME.&lt;br /&gt;  XTDNAME    = TDNAME.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'SELECT_TEXT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ID         = ID&lt;br /&gt;            LANGUAGE   = SY-LANGU&lt;br /&gt;            NAME       = TDNAME&lt;br /&gt;            OBJECT     = TDOBJECT&lt;br /&gt;       IMPORTING&lt;br /&gt;            ENTRIES    = EINTRAEGE&lt;br /&gt;       TABLES&lt;br /&gt;            SELECTIONS = XTHEAD.&lt;br /&gt;&lt;br /&gt;  REFRESH TLINETAB.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'READ_TEXT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ID              = ID&lt;br /&gt;            LANGUAGE        = SY-LANGU&lt;br /&gt;            NAME            = TDNAME&lt;br /&gt;            OBJECT          = TDOBJECT&lt;br /&gt;       IMPORTING&lt;br /&gt;            HEADER          = XTHEAD&lt;br /&gt;       TABLES&lt;br /&gt;            LINES           = TLINETAB&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            ID              = 01&lt;br /&gt;            LANGUAGE        = 02&lt;br /&gt;            NAME            = 03&lt;br /&gt;            NOT_FOUND       = 04&lt;br /&gt;            OBJECT          = 05&lt;br /&gt;            REFERENCE_CHECK = 06.&lt;br /&gt;  SUBRC = SY-SUBRC.&lt;br /&gt;ENDFORM.                               " FILL_ITEM_TEXT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-154461071063136194?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/154461071063136194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=154461071063136194' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/154461071063136194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/154461071063136194'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-search-layout.html' title='Sample ABAP Program for Search Layout sets for given String'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5813724244757635654</id><published>2007-10-18T22:13:00.000+05:30</published><updated>2007-10-18T22:14:07.194+05:30</updated><title type='text'>Sample ABAP Program for Sapscript PerForm Module</title><content type='html'>REPORT YLSD999A.&lt;br /&gt;DATA  W_LENGTH TYPE I.&lt;br /&gt;*   GENERAL PURPOSE SUBROUTINES FOR CALLING FROM SAPSCRIPTS&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;*----------------------------------------------------------------------&lt;br /&gt;FORM DISPLAY_POUND TABLES IN_TAB STRUCTURE ITCSY&lt;br /&gt;                          OUT_TAB STRUCTURE ITCSY.&lt;br /&gt;  DATA: COUNT TYPE P VALUE 16.&lt;br /&gt;  DATA: W_VALUE(17) TYPE C.        "defined as 7 chars to remove pence&lt;br /&gt;  DATA: W_CHAR TYPE C.&lt;br /&gt;  DATA: W_DUMMY TYPE C.&lt;br /&gt;  DATA: W_CURR(3) TYPE C.&lt;br /&gt;*    Get first  parameter in input table.&lt;br /&gt;  READ TABLE IN_TAB INDEX 1.&lt;br /&gt;  WRITE IN_TAB-VALUE TO W_VALUE .&lt;br /&gt;* get second parameter in input table&lt;br /&gt;  READ TABLE IN_TAB INDEX 2.&lt;br /&gt;  MOVE IN_TAB-VALUE TO W_CURR.&lt;br /&gt;  IF W_CURR = 'GBP'.&lt;br /&gt;    W_CURR = '£'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  W_LENGTH = STRLEN( W_CURR ).&lt;br /&gt;*    look for first space starting at right.&lt;br /&gt;  WHILE COUNT &gt; -1.&lt;br /&gt;    W_CHAR = W_VALUE+COUNT(1).&lt;br /&gt;*  W_CHAR = IN_TAB-VALUE+COUNT(1).&lt;br /&gt;    IF W_CHAR = ' '.&lt;br /&gt;      COUNT = COUNT - W_LENGTH + 1.&lt;br /&gt;      W_VALUE+COUNT(W_LENGTH) = W_CURR.&lt;br /&gt;      COUNT = -1.&lt;br /&gt;    ELSE.&lt;br /&gt;*     W_VALUE+COUNT(1) = W_CHAR.&lt;br /&gt;      COUNT = COUNT - 1.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDWHILE.&lt;br /&gt;* read only parameter in output table&lt;br /&gt;  READ TABLE OUT_TAB INDEX 1.&lt;br /&gt;  OUT_TAB-VALUE = W_VALUE.&lt;br /&gt;  MODIFY OUT_TAB INDEX SY-TABIX.&lt;br /&gt;ENDFORM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5813724244757635654?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5813724244757635654/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5813724244757635654' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5813724244757635654'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5813724244757635654'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-sapscript.html' title='Sample ABAP Program for Sapscript PerForm Module'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6477265485294565423</id><published>2007-10-18T22:11:00.000+05:30</published><updated>2007-10-18T22:13:07.881+05:30</updated><title type='text'>Sample ABAP Program for Create IDOC</title><content type='html'>FUNCTION Y_ISSUE_ROCO_IDOC.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local interface:&lt;br /&gt;*"       IMPORTING&lt;br /&gt;*"             VALUE(I_MODE) LIKE  Z1ROCO-ZMODE&lt;br /&gt;*"             VALUE(I_ROUTE) LIKE  Z1ROCO-ROUTE&lt;br /&gt;*"             VALUE(I_CUT_OFF) LIKE  Z1ROCO-CUT_OFF OPTIONAL&lt;br /&gt;*"             VALUE(I_BEZEI) LIKE  Z1ROCO-BEZEI OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_MON) LIKE  Z1ROCO-TROUTE_MON OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_TUE) LIKE  Z1ROCO-TROUTE_TUE OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_WED) LIKE  Z1ROCO-TROUTE_WED OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_THU) LIKE  Z1ROCO-TROUTE_THU OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_FRI) LIKE  Z1ROCO-TROUTE_FRI OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_SAT) LIKE  Z1ROCO-TROUTE_SAT OPTIONAL&lt;br /&gt;*"             VALUE(I_TROUTE_SUN) LIKE  Z1ROCO-TROUTE_SUN OPTIONAL&lt;br /&gt;*"             VALUE(I_PGI_IND) LIKE  Z1ROCO-PGI_IND OPTIONAL&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  DATA: W_EDIDC LIKE EDIDC OCCURS 5 WITH HEADER LINE,&lt;br /&gt;        W_Z1ROCO LIKE EDIDC,&lt;br /&gt;        L_EDIDC LIKE EDIDC,&lt;br /&gt;        L_SEND_FLAG,&lt;br /&gt;        W_SDATA LIKE EDIDD-SDATA.&lt;br /&gt;  DATA: T_BDI_MODEL LIKE BDI_MODEL OCCURS 0 WITH HEADER LINE.&lt;br /&gt;  DATA: T_EDIDC LIKE EDIDC OCCURS 0 WITH HEADER LINE.&lt;br /&gt;  DATA: T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;*- Call function module to determine if message is to be distributed&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'&lt;br /&gt;       EXPORTING&lt;br /&gt;            MESSAGE_TYPE           = 'ZZROCO'&lt;br /&gt;       IMPORTING&lt;br /&gt;            IDOC_MUST_BE_SENT      = L_SEND_FLAG&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 1&lt;br /&gt;            OTHERS                 = 2.&lt;br /&gt;&lt;br /&gt;*- Determine recipient systems&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_INFO_GET'&lt;br /&gt;       EXPORTING&lt;br /&gt;            MESSAGE_TYPE           = 'ZZROCO'&lt;br /&gt;*         RECEIVING_SYSTEM       = ' '&lt;br /&gt;*         SENDING_SYSTEM         = ' '&lt;br /&gt;*         VALIDDATE              = SY-DATUM&lt;br /&gt;       TABLES&lt;br /&gt;            MODEL_DATA             = T_BDI_MODEL&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            NO_MODEL_INFO_FOUND    = 1&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 2&lt;br /&gt;            OTHERS                 = 3.&lt;br /&gt;&lt;br /&gt;* 3.2&lt;br /&gt;*Call function 'L_IDOC_HEADER_CREATE'&lt;br /&gt;*     exporting&lt;br /&gt;*         i_mestyp = 'ZZROCO'&lt;br /&gt;*         i_mescod = ' '&lt;br /&gt;*         i_idoctp = 'ZSDROCO'&lt;br /&gt;*         i_rcvprn = 'Z_WMS'&lt;br /&gt;*    exceptions&lt;br /&gt;*         others   = 1.&lt;br /&gt;* 3.3&lt;br /&gt;  MOVE I_MODE       TO Z1ROCO-ZMODE.&lt;br /&gt;  MOVE I_ROUTE      TO Z1ROCO-ROUTE.&lt;br /&gt;  MOVE I_CUT_OFF    TO Z1ROCO-CUT_OFF.&lt;br /&gt;  MOVE I_BEZEI      TO Z1ROCO-BEZEI.&lt;br /&gt;  MOVE I_TROUTE_MON TO Z1ROCO-TROUTE_MON.&lt;br /&gt;  MOVE I_TROUTE_TUE TO Z1ROCO-TROUTE_TUE.&lt;br /&gt;  MOVE I_TROUTE_WED TO Z1ROCO-TROUTE_WED.&lt;br /&gt;  MOVE I_TROUTE_THU TO Z1ROCO-TROUTE_THU.&lt;br /&gt;  MOVE I_TROUTE_FRI TO Z1ROCO-TROUTE_FRI.&lt;br /&gt;  MOVE I_TROUTE_SAT TO Z1ROCO-TROUTE_SAT.&lt;br /&gt;  MOVE I_TROUTE_SUN TO Z1ROCO-TROUTE_SUN.&lt;br /&gt;  MOVE I_PGI_IND    TO Z1ROCO-PGI_IND.&lt;br /&gt;&lt;br /&gt;  MOVE Z1ROCO TO: W_SDATA, T_EDIDD-SDATA.&lt;br /&gt;  MOVE 'Z1ROCO' TO T_EDIDD-SEGNAM.&lt;br /&gt;  APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*call function 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;*     exporting&lt;br /&gt;*          i_segnam = 'Z1ROCO'&lt;br /&gt;*          i_sdata  = w_sdata&lt;br /&gt;*     exceptions&lt;br /&gt;*          others   = 1.&lt;br /&gt;&lt;br /&gt;*call function 'L_IDOC_SEND'&lt;br /&gt;*     tables&lt;br /&gt;*          t_comm_idoc           = w_edidc&lt;br /&gt;*     exceptions&lt;br /&gt;*          error_distribute_idoc = 1&lt;br /&gt;*          others                = 2.&lt;br /&gt;&lt;br /&gt;  READ TABLE T_BDI_MODEL INDEX 1.      " maximum 1 recipient&lt;br /&gt;  MOVE 'ZZROCO'   TO L_EDIDC-MESTYP.&lt;br /&gt;  MOVE 'ZSDROCO' TO L_EDIDC-IDOCTP.&lt;br /&gt;  MOVE 'LS'       TO L_EDIDC-RCVPRT.&lt;br /&gt;  MOVE T_BDI_MODEL-RCVSYSTEM TO L_EDIDC-RCVPRN.&lt;br /&gt;&lt;br /&gt;*- Distribute the iDoc&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' IN UPDATE TASK&lt;br /&gt;       EXPORTING&lt;br /&gt;            MASTER_IDOC_CONTROL            = L_EDIDC&lt;br /&gt;       TABLES&lt;br /&gt;            COMMUNICATION_IDOC_CONTROL     = W_EDIDC&lt;br /&gt;            MASTER_IDOC_DATA               = T_EDIDD&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            ERROR_IN_IDOC_CONTROL          = 01&lt;br /&gt;            ERROR_WRITING_IDOC_STATUS      = 02&lt;br /&gt;            ERROR_IN_IDOC_DATA             = 03&lt;br /&gt;            SENDING_LOGICAL_SYSTEM_UNKNOWN = 04.&lt;br /&gt;&lt;br /&gt;  COMMIT WORK.&lt;br /&gt;*E_RESPONSE = SY-SUBRC.&lt;br /&gt;ENDFUNCTION.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6477265485294565423?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6477265485294565423/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6477265485294565423' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6477265485294565423'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6477265485294565423'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-create-idoc.html' title='Sample ABAP Program for Create IDOC'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6164271738277185801</id><published>2007-10-18T22:10:00.000+05:30</published><updated>2007-10-18T22:11:47.517+05:30</updated><title type='text'>Sample ABAP Program for Output file to application server then send mail with Download details</title><content type='html'>*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  download_to_application&lt;br /&gt;*&amp; download to application server, attach to mail and send to user&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM download_to_application.&lt;br /&gt;&lt;br /&gt;data: l_title type SO_OBJ_DES.&lt;br /&gt;&lt;br /&gt;l_title = sy-repid.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'ZSEND_REPORT_MAIL'&lt;br /&gt;  EXPORTING&lt;br /&gt;    i_title               = l_title&lt;br /&gt;  tables&lt;br /&gt;    it_text_data          = it_download&lt;br /&gt; EXCEPTIONS&lt;br /&gt;   INVALID_USER          = 1&lt;br /&gt;   MAIL_SEND_ERROR       = 2&lt;br /&gt;   OPEN_FILE             = 3&lt;br /&gt;   FILE_GET_NAME         = 4&lt;br /&gt;   OTHERS                = 5&lt;br /&gt;          .&lt;br /&gt;IF sy-subrc &lt;&gt; 0.&lt;br /&gt; MESSAGE e368(00) with 'ZSEND_REPORT_MAIL fail -'&lt;br /&gt;                   sy-subrc.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " download_to_application&lt;br /&gt;===============================================================================&lt;br /&gt;&lt;br /&gt;FUNCTION Zsend_report_mail.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local interface:&lt;br /&gt;*"  IMPORTING&lt;br /&gt;*"     REFERENCE(I_UNAME) TYPE  SYUNAME DEFAULT SY-UNAME&lt;br /&gt;*"     REFERENCE(I_TITLE) TYPE  SO_OBJ_DES&lt;br /&gt;*"  TABLES&lt;br /&gt;*"      IT_TEXT_DATA&lt;br /&gt;*"  EXCEPTIONS&lt;br /&gt;*"      INVALID_USER&lt;br /&gt;*"      MAIL_SEND_ERROR&lt;br /&gt;*"      OPEN_FILE&lt;br /&gt;*"      FILE_GET_NAME&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* This function is used to store a file (report result) on the file&lt;br /&gt;* system of the application server and to send an "active" SAP mail&lt;br /&gt;* to the user.&lt;br /&gt;* The "active" SAP mail calls function ZMAIL_DOWNLOAD to&lt;br /&gt;* download the file to the presentation server.&lt;br /&gt;&lt;br /&gt;  DATA: ls_document_data LIKE sodocchgi1.&lt;br /&gt;  DATA: lt_object_para LIKE soparai1 OCCURS 5 WITH HEADER LINE.&lt;br /&gt;  DATA: lt_object_parb LIKE soparbi1 OCCURS 0 WITH HEADER LINE.&lt;br /&gt;  DATA: lt_object_cont LIKE solisti1 OCCURS 0 WITH HEADER LINE.&lt;br /&gt;  DATA: lt_reclist LIKE somlreci1 OCCURS 5 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA: l_filename(200) TYPE c.&lt;br /&gt;&lt;br /&gt;  CHECK NOT it_text_data[] IS INITIAL.&lt;br /&gt;&lt;br /&gt;* terminate if name not suitable.&lt;br /&gt;  IF i_uname IS INITIAL OR&lt;br /&gt;     i_uname = 'WF-BATCH' OR&lt;br /&gt;     i_uname = 'DDIC' OR&lt;br /&gt;     i_uname = 'SAP*'.&lt;br /&gt;    RAISE invalid_user.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;* get physical file from logical filename( optional)&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'FILE_GET_NAME'&lt;br /&gt;    EXPORTING&lt;br /&gt;      logical_filename              = 'MAILFILE'&lt;br /&gt;     parameter_1                   = sy-uname&lt;br /&gt;     parameter_2                   = sy-datum&lt;br /&gt;     parameter_3                   = sy-uzeit&lt;br /&gt;*   USE_PRESENTATION_SERVER       = ' '&lt;br /&gt;*   WITH_FILE_EXTENSION           = ' '&lt;br /&gt;*   USE_BUFFER                    = ' '&lt;br /&gt;*   ELEMINATE_BLANKS              = 'X'&lt;br /&gt;   IMPORTING&lt;br /&gt;*   EMERGENCY_FLAG                =&lt;br /&gt;*   FILE_FORMAT                   =&lt;br /&gt;     file_name                     = l_filename&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;     file_not_found                = 1&lt;br /&gt;     OTHERS                        = 2.&lt;br /&gt;  IF sy-subrc NE 0.&lt;br /&gt;    RAISE file_get_name.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;* save file&lt;br /&gt;  OPEN DATASET l_filename FOR OUTPUT IN TEXT MODE.&lt;br /&gt;  IF sy-subrc NE 0.&lt;br /&gt;    RAISE open_file.&lt;br /&gt;  ENDIF.&lt;br /&gt;  LOOP AT it_text_data. " into l_text_data.&lt;br /&gt;    TRANSFER it_text_data TO l_filename.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;  CLOSE DATASET l_filename.&lt;br /&gt;&lt;br /&gt;* SAP mail header (execute function)&lt;br /&gt;  CLEAR: ls_document_data.&lt;br /&gt;  ls_document_data-obj_descr = i_title.&lt;br /&gt;  ls_document_data-proc_type = 'F'.       " function call&lt;br /&gt;  ls_document_data-proc_name = 'ZMAIL_DOWNLOAD'.&lt;br /&gt;  ls_document_data-no_change = 'X'.&lt;br /&gt;* SAP mail receiver&lt;br /&gt;  REFRESH lt_reclist.&lt;br /&gt;  CLEAR lt_reclist.&lt;br /&gt;  lt_reclist-receiver = i_uname.&lt;br /&gt;  lt_reclist-rec_type = 'B'.&lt;br /&gt;*  gt_reclist-express = 'X'.&lt;br /&gt;  APPEND lt_reclist.&lt;br /&gt;* message text&lt;br /&gt;  REFRESH lt_object_cont.&lt;br /&gt;  CLEAR lt_object_cont.&lt;br /&gt;  lt_object_cont-line =&lt;br /&gt;                'The result of the following report has been saved.'.&lt;br /&gt;  APPEND lt_object_cont.&lt;br /&gt;* report name&lt;br /&gt;  lt_object_cont-line = 'Report:'.&lt;br /&gt;  lt_object_cont-line+15 = sy-cprog.&lt;br /&gt;  CONDENSE lt_object_cont-line.&lt;br /&gt;  APPEND lt_object_cont.&lt;br /&gt;* date &amp; time&lt;br /&gt;  lt_object_cont-line = 'Date/Time:'.&lt;br /&gt;  WRITE sy-datum TO  lt_object_cont-line+15.&lt;br /&gt;  WRITE sy-uzeit TO lt_object_cont-line+27.&lt;br /&gt;  CONDENSE lt_object_cont-line.&lt;br /&gt;  APPEND lt_object_cont.&lt;br /&gt;*&lt;br /&gt;  lt_object_cont-line =&lt;br /&gt;      'Please execute (Ctrl-F6) this mail to download the result.'.&lt;br /&gt;  APPEND lt_object_cont.&lt;br /&gt;&lt;br /&gt;* mail parameters&lt;br /&gt;  REFRESH lt_object_parb.&lt;br /&gt;  CLEAR lt_object_parb.&lt;br /&gt;  lt_object_parb-name = 'FUNCTION'.        " mail identifier&lt;br /&gt;  lt_object_parb-value = 'FILE_DOWNLOAD'.  " mail identifier&lt;br /&gt;  APPEND lt_object_parb.&lt;br /&gt;  lt_object_parb-name = 'FILENAME'.&lt;br /&gt;  lt_object_parb-value = l_filename.&lt;br /&gt;  APPEND lt_object_parb.&lt;br /&gt;&lt;br /&gt;*call SAPOffice API&lt;br /&gt;  CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'&lt;br /&gt;       EXPORTING&lt;br /&gt;            document_data              = ls_document_data&lt;br /&gt;       TABLES&lt;br /&gt;            object_content             = lt_object_cont&lt;br /&gt;            object_para                = lt_object_para&lt;br /&gt;            object_parb                = lt_object_parb&lt;br /&gt;            receivers                  = lt_reclist&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            too_many_receivers         = 1&lt;br /&gt;            document_not_sent          = 2&lt;br /&gt;            document_type_not_exist    = 3&lt;br /&gt;            operation_no_authorization = 4&lt;br /&gt;            parameter_error            = 5&lt;br /&gt;            x_error                    = 6&lt;br /&gt;            enqueue_error              = 7&lt;br /&gt;            OTHERS                     = 8.&lt;br /&gt;  IF sy-subrc NE 0.&lt;br /&gt;    RAISE mail_send_error.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFUNCTION.&lt;br /&gt;===========================================================================&lt;br /&gt;FUNCTION zmail_download.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local interface:&lt;br /&gt;*"  TABLES&lt;br /&gt;*"      MSGDIAL STRUCTURE  SOPARBI1&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;* This function is called in a SAP mail to download a file from the&lt;br /&gt;* application server file system.&lt;br /&gt;* Function ZSEND_REPORT_MAIL is used to save report result&lt;br /&gt;* on application server file system and to send SAP mail to user.&lt;br /&gt;* Based on UK COM solution by Damian Norton.&lt;br /&gt;&lt;br /&gt;  DATA: ls_msgdial TYPE soparbi1.&lt;br /&gt;  DATA: l_filename TYPE filep.&lt;br /&gt;*  DATA: l_filename_local TYPE filep.&lt;br /&gt;  DATA: l_operation(30) TYPE c.&lt;br /&gt;  DATA: BEGIN OF lt_text_data OCCURS 10,&lt;br /&gt;          line(2000),&lt;br /&gt;        END OF lt_text_data.&lt;br /&gt;&lt;br /&gt;* read parameters&lt;br /&gt;  LOOP AT msgdial INTO ls_msgdial.&lt;br /&gt;    CASE ls_msgdial-name.&lt;br /&gt;      WHEN 'FUNCTION'.&lt;br /&gt;        l_operation = ls_msgdial-value.&lt;br /&gt;      WHEN 'FILENAME'.&lt;br /&gt;        l_filename = ls_msgdial-value.&lt;br /&gt;      WHEN OTHERS.&lt;br /&gt;        MESSAGE e368(00) WITH 'Invalid parameter' ls_msgdial-name.&lt;br /&gt;    ENDCASE. " ls_msgdial-name&lt;br /&gt;  ENDLOOP. " msgdial&lt;br /&gt;&lt;br /&gt;  IF l_operation = 'FILE_DOWNLOAD'.&lt;br /&gt;* check, whether file exists on presentation server&lt;br /&gt;    REFRESH lt_text_data.&lt;br /&gt;    OPEN DATASET l_filename FOR INPUT IN TEXT MODE.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      DO.&lt;br /&gt;        READ DATASET l_filename INTO lt_text_data-line.&lt;br /&gt;        IF sy-subrc = 0.&lt;br /&gt;          APPEND lt_text_data.&lt;br /&gt;        ELSE.&lt;br /&gt;          EXIT.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDDO.&lt;br /&gt;      CLOSE DATASET l_filename.&lt;br /&gt;* request filename on presentation server - or GUI_DOWNLOAD??&lt;br /&gt;      CALL FUNCTION 'DOWNLOAD'&lt;br /&gt;           TABLES&lt;br /&gt;                data_tab                = lt_text_data&lt;br /&gt;           EXCEPTIONS&lt;br /&gt;                invalid_filesize        = 1&lt;br /&gt;                invalid_table_width     = 2&lt;br /&gt;                invalid_type            = 3&lt;br /&gt;                no_batch                = 4&lt;br /&gt;                unknown_error           = 5&lt;br /&gt;                gui_refuse_filetransfer = 6&lt;br /&gt;                customer_error          = 7&lt;br /&gt;                OTHERS                  = 8.&lt;br /&gt;      IF sy-subrc NE 0.&lt;br /&gt;        MESSAGE e688(00) WITH 'File download error' sy-subrc.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ELSE.&lt;br /&gt;      MESSAGE e398(00) WITH 'File open error' l_filename.&lt;br /&gt;    ENDIF. " sy-subrc = 0 (OPEN DATASET)&lt;br /&gt;  ENDIF. " l_operation = 'FILE_DOWNLOAD'&lt;br /&gt;&lt;br /&gt;ENDFUNCTION.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6164271738277185801?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6164271738277185801/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6164271738277185801' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6164271738277185801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6164271738277185801'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-output-file-to.html' title='Sample ABAP Program for Output file to application server then send mail with Download details'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8859118727773934029</id><published>2007-10-18T22:09:00.000+05:30</published><updated>2007-10-18T22:10:47.556+05:30</updated><title type='text'>Sample ABAP Program for Module Pool Skeleton</title><content type='html'>PROGRAM YMPSKEL MESSAGE-ID YL.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* DESCRIPTION&lt;br /&gt;* written by !&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;*  TABLES:&lt;br /&gt;&lt;br /&gt;DATA: OK_CODE(4),                          " ok code - screen 1&lt;br /&gt;      OK_CODE2(4).&lt;br /&gt;DATA  C LIKE SY-INDEX.                     " Index for screen loop&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*      process after input for screen 0100                            *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE USER_COMMAND_0100 INPUT.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'SAVE'.&lt;br /&gt;*&lt;br /&gt;    WHEN 'DISP'.&lt;br /&gt;*&lt;br /&gt;    WHEN 'LIST'.&lt;br /&gt;      C = 0.                          "reset loop control&lt;br /&gt;*&lt;br /&gt;    WHEN OTHERS.&lt;br /&gt;*&lt;br /&gt;  ENDCASE.&lt;br /&gt;  CLEAR OK_CODE.&lt;br /&gt;ENDMODULE.                             " USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       process before output for screen 0100                          *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0100 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'AMEND'.               " set gui status&lt;br /&gt;  SET TITLEBAR '100'.                  " set title&lt;br /&gt;ENDMODULE.                             " STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SAVE data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Save screen details&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM SAVE.&lt;br /&gt;*&lt;br /&gt;  CLEAR OK_CODE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  DISPLAY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM DISPLAY.&lt;br /&gt;*&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       exit commands are processed before validation                  *&lt;br /&gt;*       defined by E against function in menu painter(function list)&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE EXIT_COMMAND INPUT.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'EXIT'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'CANC'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'BACK'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                             " EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  list&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM LIST.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CLEAR OK_CODE. SET SCREEN 200. LEAVE SCREEN.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " LIST&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  EXIT_COMMAND_200  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       exit command processing for screen 200                     *&lt;br /&gt;*       defined by E against function in menu painter(function list)&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE EXIT_COMMAND_200 INPUT.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE2.&lt;br /&gt;    WHEN 'EXIT'. CLEAR OK_CODE2. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'CANC'. CLEAR OK_CODE2. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'BACK'. CLEAR OK_CODE2. SET SCREEN 100. LEAVE SCREEN.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                             " EXIT_COMMAND_200  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0200  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       process before output for screen 200                        *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0200 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'POPUP'.&lt;br /&gt;*  SET TITLEBAR 'xxx'.&lt;br /&gt;&lt;br /&gt;ENDMODULE.                             " STATUS_0200  OUTPUT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8859118727773934029?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8859118727773934029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8859118727773934029' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8859118727773934029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8859118727773934029'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-module-pool_18.html' title='Sample ABAP Program for Module Pool Skeleton'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1209559185691259834</id><published>2007-10-18T22:08:00.000+05:30</published><updated>2007-10-18T22:09:46.188+05:30</updated><title type='text'>Sample ABAP Program for Module Pool containing screen loop processing</title><content type='html'>PROGRAM YLSDM004.&lt;br /&gt;TABLES: LTAP,                          "Transfer order item&lt;br /&gt;        LIPS,                          "SD doc delivery: item data&lt;br /&gt;        MAKT,                          "material description&lt;br /&gt;        VEPO,                          "SD Document: Shipping Unit Item&lt;br /&gt;        VEKP,                         "SD Document: Shipping Unit Header&lt;br /&gt;        USR01,                         "USER defaults&lt;br /&gt;        ZPACKMAT,                      "Packing material table&lt;br /&gt;        T646M,                         "hazard class descriptions&lt;br /&gt;        ZCASHAZLAB.                    "SCasehazardous label table&lt;br /&gt;DATA: OK_CODE(4).&lt;br /&gt;&lt;br /&gt;DATA: C LIKE SY-INDEX,                 " cursor for case labels&lt;br /&gt;*      C1 LIKE SY-INDEX,                " cursor for storage class(haz)&lt;br /&gt;      C2 LIKE SY-INDEX.                " cursor for text&lt;br /&gt;* screen fields for selection screen 0100&lt;br /&gt;DATA: S_ZZTRACKING LIKE LTAP-ZZTRACKING,&lt;br /&gt;*    S_VENUM LIKE VEKP-VENUM,&lt;br /&gt;      S_EXIDV LIKE VEKP-EXIDV.&lt;br /&gt;*&lt;br /&gt;DATA W_MAKTX LIKE MAKT-MAKTX.&lt;br /&gt;* packaging materials&lt;br /&gt;DATA:  S_PACKMAT1 LIKE VEKP-ZZPACKMAT1,&lt;br /&gt;       S_BEZEI1 LIKE ZPACKMAT-BEZEI,&lt;br /&gt;       S_PACKMAT2 LIKE VEKP-ZZPACKMAT1,&lt;br /&gt;       S_BEZEI2 LIKE ZPACKMAT-BEZEI.&lt;br /&gt;* Case label codes and descriptions&lt;br /&gt;DATA: BEGIN OF LABELS OCCURS 5 ,&lt;br /&gt;      CODE LIKE VEKP-ZZCASELAB1,&lt;br /&gt;      TEXT LIKE ZCASHAZLAB-ZZCLB_TEXT,&lt;br /&gt;      END OF LABELS.&lt;br /&gt;* hazard class and descriptions&lt;br /&gt;DATA: BEGIN OF HAZ OCCURS 3,&lt;br /&gt;      CODE LIKE VEKP-ZZLAGKL,&lt;br /&gt;      TEXT LIKE T646M-LAGKT,&lt;br /&gt;      END OF HAZ.&lt;br /&gt;DATA: W_HAZ_TEXT1 LIKE T646M-LAGKT,&lt;br /&gt;      W_HAZ_TEXT2 LIKE T646M-LAGKT,&lt;br /&gt;      W_HAZ_TEXT3 LIKE T646M-LAGKT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA  T_LINES LIKE TLINE OCCURS 1 WITH HEADER LINE.&lt;br /&gt;DATA  T_HEADER LIKE THEAD.&lt;br /&gt;*DATA  W_INDEX LIKE SY-INDEX.&lt;br /&gt;* start line of the last screen of text lines&lt;br /&gt;DATA  W_MAX LIKE SY-INDEX.&lt;br /&gt;DATA  W_TIN_MAKTX LIKE MAKT-MAKTX.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       selection screen                                               *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0100 OUTPUT.&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'EXIT'. LEAVE TO SCREEN 0.&lt;br /&gt;    WHEN 'CANC'.&lt;br /&gt;&lt;br /&gt;      SELECT SINGLE * FROM  USR01&lt;br /&gt;             WHERE  BNAME       = SY-UNAME       .&lt;br /&gt;&lt;br /&gt;      LEAVE TO TRANSACTION USR01-STCOD.&lt;br /&gt;  ENDCASE.&lt;br /&gt;  SET PF-STATUS 'SELECT'.&lt;br /&gt;  CLEAR: VEKP,&lt;br /&gt;         LTAP.&lt;br /&gt;  SET TITLEBAR 'SEL'.&lt;br /&gt;&lt;br /&gt;ENDMODULE.                             " STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE USER_COMMAND_0100 INPUT.&lt;br /&gt;  C2 = 0.&lt;br /&gt;*                       Mandatory Fields&lt;br /&gt;  CHECK OK_CODE = 'EXEC'.&lt;br /&gt;*&lt;br /&gt;  CALL SCREEN '0110'.&lt;br /&gt;ENDMODULE.                             " USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  VAL_ZZTRACKING  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE VAL_ZZTRACKING INPUT.&lt;br /&gt;* MUST enter at least one value&lt;br /&gt;* IF S_ZZTRACKING = ' ' AND S_VENUM = ' ' AND S_EXIDV = ' '.&lt;br /&gt;  IF S_ZZTRACKING = ' ' AND S_EXIDV = ' '.&lt;br /&gt;    MESSAGE E001(YL).&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;* if tracking label entered other fields must be initial&lt;br /&gt;  IF S_ZZTRACKING NE ' '&lt;br /&gt;*  AND ( S_VENUM  NE ' ' OR S_EXIDV NE ' ' ).&lt;br /&gt;   AND S_EXIDV NE ' ' .&lt;br /&gt;    MESSAGE E083(YL).&lt;br /&gt;  ENDIF.&lt;br /&gt;* if tracking label number entered get record from LTAP&lt;br /&gt;&lt;br /&gt;  IF S_ZZTRACKING NE ' '.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  LTAP&lt;br /&gt;           WHERE  ZZTRACKING  = S_ZZTRACKING.&lt;br /&gt;    IF SY-SUBRC NE 0.&lt;br /&gt;      MESSAGE E022(YL) WITH S_ZZTRACKING.&lt;br /&gt;    ELSE.&lt;br /&gt;*--------------------------------------------------------------------&lt;br /&gt;*&lt;br /&gt;*     IF LTAP-VENUM NE ' '.&lt;br /&gt;*&lt;br /&gt;*       SELECT SINGLE * FROM  VEKP&lt;br /&gt;*              WHERE  VENUM       = LTAP-VENUM     .&lt;br /&gt;*&lt;br /&gt;      IF LTAP-EXIDV NE ' '.&lt;br /&gt;&lt;br /&gt;        SELECT SINGLE * FROM  VEKP&lt;br /&gt;               WHERE  EXIDV       = LTAP-EXIDV     .&lt;br /&gt;*---------------------------------------------------------------------&lt;br /&gt;        IF SY-SUBRC NE 0.&lt;br /&gt;          MESSAGE E022(YL) WITH LTAP-EXIDV.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDMODULE.                             " VAL_ZZTRACKING  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  VAL_VENUM  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*MODULE VAL_VENUM INPUT.&lt;br /&gt;*  SET CURSOR FIELD S_VENUM.&lt;br /&gt;*  IF S_VENUM NE ' '&lt;br /&gt;*   AND S_EXIDV NE ' '.&lt;br /&gt;*    MESSAGE E083(YL).&lt;br /&gt;*  ENDIF.&lt;br /&gt;*  IF S_VENUM NE ' '.&lt;br /&gt;*&lt;br /&gt;*    SELECT SINGLE * FROM  VEKP&lt;br /&gt;*           WHERE  VENUM       = S_VENUM.&lt;br /&gt;*    IF SY-SUBRC NE 0.&lt;br /&gt;*      MESSAGE E022(YL) WITH S_VENUM.&lt;br /&gt;*    ENDIF.&lt;br /&gt;*  ENDIF.&lt;br /&gt;*ENDMODULE.                             " VAL_VENUM  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE EXIT_COMMAND INPUT.&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'EXIT'. LEAVE TO SCREEN 0.&lt;br /&gt;    WHEN 'CANC'.&lt;br /&gt;      SELECT SINGLE * FROM  USR01&lt;br /&gt;             WHERE  BNAME       = SY-UNAME       .&lt;br /&gt;&lt;br /&gt;      LEAVE TO TRANSACTION USR01-STCOD.&lt;br /&gt;    WHEN 'BACK'. LEAVE TO SCREEN 0.&lt;br /&gt;  ENDCASE.&lt;br /&gt;&lt;br /&gt;ENDMODULE.                             " EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  VAL_EXIDV  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*     validate external shipping unit number exits on VEKP            *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE VAL_EXIDV INPUT.&lt;br /&gt;  IF S_EXIDV NE ' '.&lt;br /&gt;   CONCATENATE '00' S_EXIDV INTO VEKP-EXIDV.&lt;br /&gt;    SELECT SINGLE * FROM  VEKP&lt;br /&gt;           WHERE  EXIDV       = VEKP-EXIDV.&lt;br /&gt;    IF SY-SUBRC NE 0.&lt;br /&gt;      MESSAGE E022(YL) WITH S_EXIDV.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDMODULE.                             " VAL_EXIDV  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0110  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*      Display screen                                                  *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0110 OUTPUT.&lt;br /&gt;  IF OK_CODE = 'P+  ' OR OK_CODE = 'P-  ' OR OK_CODE = 'P++ '&lt;br /&gt;                      OR OK_CODE = 'P-- '.&lt;br /&gt;    EXIT.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-VENUM = ' '.&lt;br /&gt;* processing mode b&lt;br /&gt;    PERFORM DISP_DELIVERY.&lt;br /&gt;  ELSE.&lt;br /&gt;* processing mode a&lt;br /&gt;    PERFORM DISP_SHIP_UNIT.&lt;br /&gt;  ENDIF.&lt;br /&gt;* common processing&lt;br /&gt;* get mara details&lt;br /&gt;  CLEAR MAKT.&lt;br /&gt;*SELECT SINGLE * FROM  MARA&lt;br /&gt;*       WHERE  MATNR       = LIPS-MATNR .&lt;br /&gt;*IF SY-SUBRC = 0.&lt;br /&gt;* material description&lt;br /&gt;  SELECT SINGLE * FROM  MAKT&lt;br /&gt;         WHERE  MATNR       = LIPS-MATNR&lt;br /&gt;         AND    SPRAS       = SY-LANGU       .&lt;br /&gt;  DATA W_TDNAME LIKE THEAD-TDNAME.&lt;br /&gt;  W_TDNAME = LIPS-VBELN.&lt;br /&gt;  W_TDNAME+10 = LIPS-POSNR.&lt;br /&gt;  CLEAR T_LINES.&lt;br /&gt;  REFRESH T_LINES.&lt;br /&gt;  CALL FUNCTION 'READ_TEXT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            ID                      = 'Z034'&lt;br /&gt;            LANGUAGE                = SY-LANGU&lt;br /&gt;            NAME                    = W_TDNAME&lt;br /&gt;            OBJECT                  = 'VBBP'&lt;br /&gt;       IMPORTING&lt;br /&gt;            HEADER                  = T_HEADER&lt;br /&gt;       TABLES&lt;br /&gt;            LINES                   = T_LINES&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            ID                      = 1&lt;br /&gt;            LANGUAGE                = 2&lt;br /&gt;            NAME                    = 3&lt;br /&gt;            NOT_FOUND               = 4&lt;br /&gt;            OBJECT                  = 5&lt;br /&gt;            REFERENCE_CHECK         = 6&lt;br /&gt;            WRONG_ACCESS_TO_ARCHIVE = 7&lt;br /&gt;            OTHERS                  = 8.&lt;br /&gt;  LOOP AT T_LINES.&lt;br /&gt;    EXIT.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;  IF SY-TFILL &gt; 1.&lt;br /&gt;*   W_MAX = SY-TFILL - 5.&lt;br /&gt;    W_MAX = SY-TFILL - 1.&lt;br /&gt;  ELSE.&lt;br /&gt;    W_MAX = 1.&lt;br /&gt;  ENDIF.&lt;br /&gt;*&lt;br /&gt;  IF W_MAX &gt; 3 .&lt;br /&gt;    SET PF-STATUS 'DELIVERY'.&lt;br /&gt;  ELSE.&lt;br /&gt;    SET PF-STATUS 'ONE'.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDMODULE.                             " STATUS_0110  OUTPUT&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  DISP_DELIVERY&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*   Diplay delivery title - Read delivery item from LIPS&lt;br /&gt;*    processing mode B&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM DISP_DELIVERY.&lt;br /&gt;* SET PF-STATUS 'DELIVERY'.&lt;br /&gt;  SET TITLEBAR 'DEL'.&lt;br /&gt;  CLEAR LIPS.&lt;br /&gt;  SELECT SINGLE * FROM  LIPS&lt;br /&gt;         WHERE  VBELN       = LTAP-VBELN_VL&lt;br /&gt;         AND    POSNR       = LTAP-POSNR_VL     .&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " DISP_DELIVERY&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  DISP_SHIP_UNIT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*   Display Shipping unit title and read shipping details&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  Processing MODE a&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM DISP_SHIP_UNIT.&lt;br /&gt;&lt;br /&gt;* SET PF-STATUS 'DELIVERY'.&lt;br /&gt;  SET TITLEBAR 'SHP'.&lt;br /&gt;* vekp already read&lt;br /&gt;* read vepo&lt;br /&gt;* only one line per case&lt;br /&gt;  CLEAR VEPO.&lt;br /&gt;  CLEAR LIPS.&lt;br /&gt;  CLEAR W_MAKTX.&lt;br /&gt;  CLEAR W_TIN_MAKTX.&lt;br /&gt;  CLEAR ZPACKMAT.&lt;br /&gt;  CLEAR S_PACKMAT1.&lt;br /&gt;  CLEAR S_PACKMAT2.&lt;br /&gt;  CLEAR S_BEZEI1.&lt;br /&gt;  CLEAR S_BEZEI2.&lt;br /&gt;  CLEAR LABELS.&lt;br /&gt;  REFRESH LABELS.&lt;br /&gt;  SELECT SINGLE * FROM  VEPO&lt;br /&gt;         WHERE  VENUM       = VEKP-VENUM.&lt;br /&gt;  IF SY-SUBRC = 0.&lt;br /&gt;    SELECT SINGLE * FROM  LIPS&lt;br /&gt;           WHERE  VBELN       = VEPO-VBELN&lt;br /&gt;           AND    POSNR       = VEPO-POSNR     .&lt;br /&gt;  ENDIF.&lt;br /&gt;* packaging material&lt;br /&gt;  IF VEKP-ZZPACKMAT1 NE ' '.&lt;br /&gt;    SELECT SINGLE * FROM  ZPACKMAT&lt;br /&gt;           WHERE  ZZPACKMAT   = VEKP-ZZPACKMAT1.&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      S_PACKMAT1 = VEKP-ZZPACKMAT1.&lt;br /&gt;      S_BEZEI1 = ZPACKMAT-BEZEI.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  IF VEKP-ZZPACKMAT2 NE ' '.&lt;br /&gt;    SELECT SINGLE * FROM  ZPACKMAT&lt;br /&gt;           WHERE  ZZPACKMAT   = VEKP-ZZPACKMAT2.&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      S_PACKMAT2 = VEKP-ZZPACKMAT2.&lt;br /&gt;      S_BEZEI2 = ZPACKMAT-BEZEI.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;* hazard class x 3&lt;br /&gt;  CLEAR: W_HAZ_TEXT1, W_HAZ_TEXT2, W_HAZ_TEXT3.&lt;br /&gt;* REFRESH HAZ.&lt;br /&gt;  IF VEKP-ZZLAGKL NE ' '.&lt;br /&gt;*   HAZ-CODE = VEKP-ZZLAGKL.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  T646M&lt;br /&gt;           WHERE  SPRAS       = SY-LANGU&lt;br /&gt;           AND    LAGKL       = VEKP-ZZLAGKL .&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      W_HAZ_TEXT1 = T646M-LAGKT.&lt;br /&gt;    ENDIF.&lt;br /&gt;*    APPEND HAZ.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZLAGKL2 NE ' '.&lt;br /&gt;*   HAZ-CODE = VEKP-ZZLAGKL2.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  T646M&lt;br /&gt;           WHERE  SPRAS       = SY-LANGU&lt;br /&gt;           AND    LAGKL       = VEKP-ZZLAGKL2      .&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      W_HAZ_TEXT2 = T646M-LAGKT.&lt;br /&gt;    ENDIF.&lt;br /&gt;*    APPEND HAZ.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZLAGKL3 NE ' '.&lt;br /&gt;*    CLEAR HAZ.&lt;br /&gt;*   HAZ-CODE = VEKP-ZZLAGKL3.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  T646M&lt;br /&gt;           WHERE  SPRAS       = SY-LANGU&lt;br /&gt;           AND    LAGKL       = VEKP-ZZLAGKL3 .&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      W_HAZ_TEXT3 = T646M-LAGKT.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   APPEND HAZ.&lt;br /&gt;  ENDIF.&lt;br /&gt;* LOOP AT HAZ.&lt;br /&gt;*   EXIT.&lt;br /&gt;* ENDLOOP.&lt;br /&gt;&lt;br /&gt;* case label details&lt;br /&gt;  IF VEKP-ZZCASELAB1 NE ' '.&lt;br /&gt;    LABELS-CODE = VEKP-ZZCASELAB1.&lt;br /&gt;    APPEND LABELS.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZCASELAB2 NE ' '.&lt;br /&gt;    LABELS-CODE = VEKP-ZZCASELAB2.&lt;br /&gt;    APPEND LABELS.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZCASELAB3 NE ' '.&lt;br /&gt;    LABELS-CODE = VEKP-ZZCASELAB3.&lt;br /&gt;    APPEND LABELS.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZCASELAB4 NE ' '.&lt;br /&gt;    LABELS-CODE = VEKP-ZZCASELAB4.&lt;br /&gt;    APPEND LABELS.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF VEKP-ZZCASELAB5 NE ' '.&lt;br /&gt;    LABELS-CODE = VEKP-ZZCASELAB5.&lt;br /&gt;    APPEND LABELS.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  LOOP AT LABELS.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  ZCASHAZLAB&lt;br /&gt;           WHERE  ZZCASELAB   = LABELS-CODE    .&lt;br /&gt;    LABELS-TEXT = ZCASHAZLAB-ZZCLB_TEXT.&lt;br /&gt;    MODIFY LABELS.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;* tin material description&lt;br /&gt;  IF VEPO-ZZTINNR NE ' '.&lt;br /&gt;    SELECT SINGLE * FROM  MAKT&lt;br /&gt;           WHERE  MATNR       = VEPO-ZZTINNR&lt;br /&gt;           AND    SPRAS       = SY-LANGU   .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      W_TIN_MAKTX = MAKT-MAKTX.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* case material description&lt;br /&gt;  IF VEKP-VHILM NE ' '.&lt;br /&gt;    SELECT SINGLE * FROM  MAKT&lt;br /&gt;           WHERE  MATNR       = VEKP-VHILM&lt;br /&gt;           AND    SPRAS       = SY-LANGU   .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;      W_MAKTX = MAKT-MAKTX.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " DISP_SHIP_UNIT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0110  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE USER_COMMAND_0110 INPUT.&lt;br /&gt;* position text line cursor&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'P+ '.&lt;br /&gt;      C2 = C2 + 3.&lt;br /&gt;      IF C2 &gt; W_MAX.&lt;br /&gt;        C2 = W_MAX.&lt;br /&gt;      ENDIF.&lt;br /&gt;    WHEN 'P- '.&lt;br /&gt;      C2 = C2 - 3.&lt;br /&gt;      IF C2 &lt; 1.&lt;br /&gt;        C2 = 1.&lt;br /&gt;      ENDIF.&lt;br /&gt;    WHEN 'P++ '.&lt;br /&gt;      C2 = W_MAX.&lt;br /&gt;    WHEN 'P-- '.&lt;br /&gt;      C2 = 1.&lt;br /&gt;    WHEN 'VL02'.&lt;br /&gt;      SET PARAMETER ID 'VL ' FIELD LIPS-VBELN.&lt;br /&gt;      CALL TRANSACTION 'VL02'.&lt;br /&gt;&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                             " USER_COMMAND_0110  INPUT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1209559185691259834?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1209559185691259834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1209559185691259834' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1209559185691259834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1209559185691259834'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-module-pool.html' title='Sample ABAP Program for Module Pool containing screen loop processing'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-630937235282252967</id><published>2007-10-18T22:06:00.000+05:30</published><updated>2007-10-18T22:08:36.878+05:30</updated><title type='text'>Sample ABAP Program for MB1B Call Transaction</title><content type='html'>REPORT YMBIE096 LINE-SIZE 80.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  Program: YMBIE096&lt;br /&gt;*  Author:  Sheila Titchener&lt;br /&gt;*  Date:    Mar 1999&lt;br /&gt;*  Purpose: To move stock to new plant&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;TABLES: MCHB.&lt;br /&gt;&lt;br /&gt;* internal table&lt;br /&gt;DATA: BEGIN OF I_MCHB OCCURS 0,&lt;br /&gt;      MATNR LIKE MCHB-MATNR,&lt;br /&gt;      LGORT LIKE MCHB-LGORT,&lt;br /&gt;      CHARG LIKE MCHB-CHARG,&lt;br /&gt;      J_2CTRNR LIKE MCHB-J_2CTRNR,&lt;br /&gt;      J_2CELNG LIKE MCHB-J_2CELNG,&lt;br /&gt;      CLABS LIKE MCHB-CLABS,&lt;br /&gt;      END OF I_MCHB.&lt;br /&gt;&lt;br /&gt;*-----------------------new code smt nov 98-----------------------------&lt;br /&gt;* batch input tables&lt;br /&gt;DATA BEGIN OF BDCDATA OCCURS 100.&lt;br /&gt;        INCLUDE STRUCTURE BDCDATA.&lt;br /&gt;DATA END OF BDCDATA.&lt;br /&gt;&lt;br /&gt;DATA BEGIN OF MESSTAB OCCURS 10.&lt;br /&gt;        INCLUDE STRUCTURE BDCMSGCOLL.&lt;br /&gt;DATA END OF MESSTAB.&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;SELECT-OPTIONS S_MATNR FOR MCHB-MATNR.&lt;br /&gt;PARAMETERS: P_DISP AS CHECKBOX.&lt;br /&gt;DATA  W_MODE.&lt;br /&gt;DATA  W_MESSAGE LIKE MESSAGE.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;  SELECT  MATNR LGORT J_2CELNG CHARG CLABS J_2CTRNR FROM  MCHB&lt;br /&gt;         INTO CORRESPONDING FIELDS OF TABLE I_MCHB&lt;br /&gt;         WHERE  MATNR      IN S_MATNR&lt;br /&gt;         AND    WERKS       = 'BT'.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;  LOOP AT I_MCHB.&lt;br /&gt;    CHECK I_MCHB-J_2CELNG NE 0.&lt;br /&gt;    CHECK I_MCHB-J_2CELNG = I_MCHB-CLABS.&lt;br /&gt;    PERFORM MOVE_STOCK.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  MOVE_STOCK&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*      Call transaction MB1B to transfer stock&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM MOVE_STOCK.&lt;br /&gt;  DATA: W_QTY(10).&lt;br /&gt;  WRITE I_MCHB-J_2CELNG TO W_QTY DECIMALS 0.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  REFRESH: BDCDATA, MESSTAB.&lt;br /&gt;&lt;br /&gt;  PERFORM DYNPRO USING:&lt;br /&gt;             'X' 'SAPMM07M'       '0400',&lt;br /&gt;             ' ' 'RM07M-BWARTWA'  '301',&lt;br /&gt;             ' ' 'RM07M-WERKS'    'BT',&lt;br /&gt;             ' ' 'RM07M-LGORT'    I_MCHB-LGORT,&lt;br /&gt;             ' ' 'BDC_OKCODE'     '/0',&lt;br /&gt;&lt;br /&gt;             'X' 'SAPMM07M'       '0421',&lt;br /&gt;             ' ' 'MSEGK-UMWRK'    '94',&lt;br /&gt;             ' ' 'MSEGK-UMLGO'   I_MCHB-LGORT,&lt;br /&gt;             ' ' 'BDC_OKCODE'     'NLE',&lt;br /&gt;*CODING BLOCK&lt;br /&gt;             'X' 'SAPLKACB'   '0002',&lt;br /&gt;             ' ' 'BDC_OKCODE'   '/0',&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;             'X' 'SAPMM07M'       '0421',&lt;br /&gt;             ' ' 'MSEG-MATNR(1)'    I_MCHB-MATNR,&lt;br /&gt;             ' ' 'MSEG-ERFMG(1)'    W_QTY,&lt;br /&gt;             ' ' 'MSEG-CHARG(1)'    I_MCHB-CHARG,&lt;br /&gt;             ' ' 'BDC_OKCODE'     '/0',&lt;br /&gt;*CODING BLOCK&lt;br /&gt;             'X' 'SAPLKACB'   '0002',&lt;br /&gt;             ' ' 'BDC_OKCODE'   '/0',&lt;br /&gt;&lt;br /&gt;*CODING BLOCK&lt;br /&gt;             'X' 'SAPLKACB'   '0002',&lt;br /&gt;             ' ' 'BDC_OKCODE'   '/0',&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*           'X' 'SAPMM07M'       '0410',&lt;br /&gt;*            ' ' 'BDC_OKCODE'     '/0',&lt;br /&gt;*CODING BLOCK&lt;br /&gt;*            'X' 'SAPLKACB'   '0002',&lt;br /&gt;*            ' ' 'BDC_OKCODE'   '/8',&lt;br /&gt;&lt;br /&gt;*CODING BLOCK&lt;br /&gt;*            'X' 'SAPLKACB'   '0002',&lt;br /&gt;*            ' ' 'BDC_OKCODE'   '/8',&lt;br /&gt;&lt;br /&gt;            'X' 'SAPLJ2CW'       '0190',&lt;br /&gt;             ' ' 'J_5C7-UMCHA'   I_MCHB-CHARG,&lt;br /&gt;             ' ' 'BDC_OKCODE'     '/7',&lt;br /&gt;&lt;br /&gt;            'X' 'SAPMM07M'       '0421',&lt;br /&gt;             ' ' 'BDC_OKCODE'     '/11',&lt;br /&gt;*CODING BLOCK&lt;br /&gt;             'X' 'SAPLKACB'   '0002',&lt;br /&gt;             ' ' 'BDC_OKCODE'   '/0'.&lt;br /&gt;  IF P_DISP = 'X'.&lt;br /&gt;    W_MODE = 'A'.&lt;br /&gt;  ELSE.&lt;br /&gt;    W_MODE = 'N'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  CALL TRANSACTION 'MB1B'  USING BDCDATA  MODE W_MODE UPDATE 'S'&lt;br /&gt;                           MESSAGES INTO MESSTAB.&lt;br /&gt;&lt;br /&gt;  WRITE: / I_MCHB-MATNR, I_MCHB-CHARG, I_MCHB-LGORT,&lt;br /&gt;           I_MCHB-J_2CTRNR, I_MCHB-J_2CELNG.&lt;br /&gt;&lt;br /&gt;  IF SY-SUBRC NE 0.&lt;br /&gt;* what to do if there's an error????&lt;br /&gt;    LOOP AT MESSTAB.&lt;br /&gt;      SY-MSGNO = MESSTAB-MSGNR.&lt;br /&gt;      CALL FUNCTION 'WRITE_MESSAGE'&lt;br /&gt;           EXPORTING&lt;br /&gt;                MSGID   = MESSTAB-MSGID&lt;br /&gt;                MSGNO   = SY-MSGNO&lt;br /&gt;                MSGTY   = MESSTAB-MSGTYP&lt;br /&gt;                MSGV1   = MESSTAB-MSGV1&lt;br /&gt;                MSGV2   = MESSTAB-MSGV2&lt;br /&gt;                MSGV3   = MESSTAB-MSGV3&lt;br /&gt;                MSGV4   = MESSTAB-MSGV4&lt;br /&gt;                MSGV5   = MESSTAB-MSGV4&lt;br /&gt;           IMPORTING&lt;br /&gt;*              error   =&lt;br /&gt;                MESSG   = W_MESSAGE&lt;br /&gt;*              msgln   =&lt;br /&gt;           EXCEPTIONS&lt;br /&gt;                OTHERS  = 1.&lt;br /&gt;      WRITE: /   W_MESSAGE.&lt;br /&gt;*     message id messtab-msgid type 'I' number messtab-msgnr.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " CHANGE_BILLING_TYPE&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;*       FORM DYNPRO        - new form smt nov 1998&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;*    &gt;  DYNBEGIN&lt;br /&gt;*    &gt;  NAME&lt;br /&gt;*    &gt;  VALUE&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;*&lt;br /&gt;FORM DYNPRO USING DYNBEGIN NAME VALUE.&lt;br /&gt;&lt;br /&gt;  IF DYNBEGIN = 'X'.&lt;br /&gt;    CLEAR BDCDATA.&lt;br /&gt;    MOVE:  NAME      TO  BDCDATA-PROGRAM,&lt;br /&gt;           VALUE     TO  BDCDATA-DYNPRO,&lt;br /&gt;           'X'       TO  BDCDATA-DYNBEGIN.&lt;br /&gt;    APPEND BDCDATA.&lt;br /&gt;  ELSE.&lt;br /&gt;    CLEAR BDCDATA.&lt;br /&gt;    MOVE: NAME       TO  BDCDATA-FNAM,&lt;br /&gt;          VALUE      TO  BDCDATA-FVAL.&lt;br /&gt;    APPEND BDCDATA.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-630937235282252967?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/630937235282252967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=630937235282252967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/630937235282252967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/630937235282252967'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-for-mb1b-call.html' title='Sample ABAP Program for MB1B Call Transaction'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8315896480777944012</id><published>2007-10-18T22:03:00.000+05:30</published><updated>2007-10-18T22:05:42.886+05:30</updated><title type='text'>Sample ABAP Program of  Function Module to Convert Work Center into Personnel Number</title><content type='html'>FUNCTION z_get_pernr_from_wc.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local interface:&lt;br /&gt;*"  IMPORTING&lt;br /&gt;*"     VALUE(I_WORK_CENTRE) TYPE  ARBPL&lt;br /&gt;*"  EXPORTING&lt;br /&gt;*"     VALUE(E_PERSONNEL_NO) TYPE  PERNR&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;* Author: Sheila Titchener - www.iconet-ltd.co.uk&lt;br /&gt;* Date:   July 2005&lt;br /&gt;* Description: Convert Work Centre into Personnel Number&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;  DATA: l_hroid TYPE hrobjid,&lt;br /&gt;        l_sobid TYPE sobid.&lt;br /&gt;&lt;br /&gt;  SELECT SINGLE hroid FROM  crhd&lt;br /&gt;         INTO l_hroid&lt;br /&gt;         WHERE  objty  = 'A'&lt;br /&gt;         AND    arbpl  = i_work_centre.&lt;br /&gt;&lt;br /&gt;  CHECK sy-subrc = 0.&lt;br /&gt;&lt;br /&gt;  SELECT SINGLE sobid FROM  hrp1001&lt;br /&gt;         INTO l_sobid&lt;br /&gt;         WHERE  objid  = l_hroid&lt;br /&gt;         AND    sclas  = 'S'.&lt;br /&gt;&lt;br /&gt;  CHECK sy-subrc = 0.&lt;br /&gt;&lt;br /&gt;  SELECT SINGLE sobid FROM  hrp1001&lt;br /&gt;         INTO l_sobid&lt;br /&gt;         WHERE  otype  = 'S'&lt;br /&gt;         AND    objid  = l_sobid&lt;br /&gt;         AND    sclas  = 'P'.&lt;br /&gt;&lt;br /&gt;  CHECK sy-subrc = 0.&lt;br /&gt;&lt;br /&gt;  e_personnel_no = l_sobid.&lt;br /&gt;&lt;br /&gt;ENDFUNCTION.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8315896480777944012?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8315896480777944012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8315896480777944012' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8315896480777944012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8315896480777944012'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-function-module.html' title='Sample ABAP Program of  Function Module to Convert Work Center into Personnel Number'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7617281204145197726</id><published>2007-10-18T22:02:00.000+05:30</published><updated>2007-10-18T22:03:45.143+05:30</updated><title type='text'>Sample ABAP Program of  FTP Function Module</title><content type='html'>FUNCTION Y_FTP.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local interface:&lt;br /&gt;*"       IMPORTING&lt;br /&gt;*"             VALUE(USER)&lt;br /&gt;*"             VALUE(PWD)&lt;br /&gt;*"             VALUE(HOST)&lt;br /&gt;*"       TABLES&lt;br /&gt;*"              COMMANDS&lt;br /&gt;*"       EXCEPTIONS&lt;br /&gt;*"              NO_SUCH_FILE&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  DATA: W_USER(12) TYPE C ,&lt;br /&gt;          W_PWD(20) TYPE C ,&lt;br /&gt;           W_HOST(64) TYPE C.&lt;br /&gt;&lt;br /&gt;  DATA: HDL TYPE I,&lt;br /&gt;        KEY TYPE I VALUE 26101957,&lt;br /&gt;        DSTLEN TYPE I.&lt;br /&gt;&lt;br /&gt;  DATA: BEGIN OF RESULT OCCURS 0,&lt;br /&gt;        LINE(100) TYPE C,&lt;br /&gt;        END OF RESULT.&lt;br /&gt;&lt;br /&gt;  DESCRIBE FIELD PWD LENGTH DSTLEN.&lt;br /&gt;&lt;br /&gt;  CALL 'AB_RFC_X_SCRAMBLE_STRING'&lt;br /&gt;    ID 'SOURCE'      FIELD PWD    ID 'KEY'         FIELD KEY&lt;br /&gt;    ID 'SCR'         FIELD 'X'    ID 'DESTINATION' FIELD PWD&lt;br /&gt;    ID 'DSTLEN'      FIELD DSTLEN.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'FTP_CONNECT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            USER            = USER&lt;br /&gt;            PASSWORD        = PWD&lt;br /&gt;            HOST            = HOST&lt;br /&gt;            RFC_DESTINATION = 'SAPFTP'&lt;br /&gt;       IMPORTING&lt;br /&gt;            HANDLE          = HDL.&lt;br /&gt;&lt;br /&gt;  LOOP AT COMMANDS.&lt;br /&gt;    IF COMMANDS NE ' '.&lt;br /&gt;      CALL FUNCTION 'FTP_COMMAND'&lt;br /&gt;           EXPORTING&lt;br /&gt;                HANDLE        = HDL&lt;br /&gt;                COMMAND       = COMMANDS&lt;br /&gt;           TABLES&lt;br /&gt;                DATA          = RESULT&lt;br /&gt;           EXCEPTIONS&lt;br /&gt;                COMMAND_ERROR = 1&lt;br /&gt;                TCPIP_ERROR   = 2.&lt;br /&gt;      LOOP AT RESULT.&lt;br /&gt;        WRITE AT / RESULT-LINE.&lt;br /&gt;        IF RESULT CS 'error'.&lt;br /&gt;          RAISE NO_SUCH_FILE.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDLOOP.&lt;br /&gt;      REFRESH RESULT.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'FTP_DISCONNECT'&lt;br /&gt;       EXPORTING&lt;br /&gt;            HANDLE = HDL.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFUNCTION.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7617281204145197726?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7617281204145197726/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7617281204145197726' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7617281204145197726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7617281204145197726'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-ftp-function.html' title='Sample ABAP Program of  FTP Function Module'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8281774059105459997</id><published>2007-10-18T22:00:00.001+05:30</published><updated>2007-10-18T22:05:58.929+05:30</updated><title type='text'>Sample ABAP Program to EXPORT LIST TO MEMORY</title><content type='html'>************************************************************************&lt;br /&gt;*  Author  - Sheila Titchener                                          *&lt;br /&gt;*  Program - Report of orders with billing/delivery blocks&lt;br /&gt;*  Date    - October 1998                                              *&lt;br /&gt;*  Company - IconeT Services                                         *&lt;br /&gt;************************************************************************&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;REPORT YVREE024 LINE-SIZE 185 LINE-COUNT 63 NO STANDARD PAGE HEADING.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       DATA DECLARATIONS                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;TABLES:  VBAK, VBAP, VBEP, KNA1, TVFST, TVLST.&lt;br /&gt;&lt;br /&gt;* Selection screens.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* mandatory parameters&lt;br /&gt;SELECTION-SCREEN  BEGIN OF BLOCK PARAMETERS&lt;br /&gt;                  WITH FRAME&lt;br /&gt;                  TITLE TEXT-020 .&lt;br /&gt;PARAMETERS:       P_VKORG LIKE VBAK-VKORG OBLIGATORY ,&lt;br /&gt;                  P_VTWEG LIKE VBAK-VTWEG OBLIGATORY ,&lt;br /&gt;                  P_SPART LIKE VBAK-SPART OBLIGATORY .&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN  END OF BLOCK PARAMETERS.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* optional selection ranges&lt;br /&gt;SELECTION-SCREEN  BEGIN OF BLOCK SELECT_CRITERIA&lt;br /&gt;                  WITH FRAME&lt;br /&gt;                  TITLE TEXT-010 .&lt;br /&gt;SELECT-OPTIONS:&lt;br /&gt;                  S_VKBUR FOR VBAK-VKBUR,&lt;br /&gt;                  S_VKGRP FOR VBAK-VKGRP,&lt;br /&gt;                  S_KUNNR FOR VBAK-KUNNR.&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN  END OF BLOCK SELECT_CRITERIA .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Order header table.&lt;br /&gt;DATA: BEGIN OF I_VBAK OCCURS 0,&lt;br /&gt;      VBELN LIKE VBAK-VBELN,&lt;br /&gt;      KUNNR LIKE VBAK-KUNNR,&lt;br /&gt;      FAKSK LIKE VBAK-FAKSK,           "billing block&lt;br /&gt;      LIFSK LIKE VBAK-LIFSK,           "delivery block&lt;br /&gt;      END OF I_VBAK.&lt;br /&gt;* report table&lt;br /&gt;DATA: BEGIN OF ITAB OCCURS 0,&lt;br /&gt;           VBELN LIKE VBAP-VBELN,      " Order Number&lt;br /&gt;           KUNNR LIKE VBAK-KUNNR,      " Customer Number&lt;br /&gt;           NAME1 LIKE KNA1-NAME1,      " Customer Name&lt;br /&gt;           ERNAM LIKE VBAK-ERNAM,      " User created&lt;br /&gt;           POSNR LIKE VBAP-POSNR,      " Line Item&lt;br /&gt;           MATNR LIKE VBAP-MATNR,      " Material Number&lt;br /&gt;           KWMENG LIKE VBAP-KWMENG,    " Quantity&lt;br /&gt;           MEINS LIKE VBAP-MEINS,      " Unit of measure&lt;br /&gt;           NETWR LIKE VBAP-NETWR,      " value&lt;br /&gt;           FAKSP LIKE VBAP-FAKSP,      " billing block&lt;br /&gt;           LIFSP LIKE VBEP-LIFSP,      " delivery block&lt;br /&gt;END OF ITAB.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;INITIALIZATION .&lt;br /&gt;  GET PARAMETER ID 'VKO' FIELD P_VKORG.&lt;br /&gt;  GET PARAMETER ID 'VTW' FIELD P_VTWEG.&lt;br /&gt;  GET PARAMETER ID 'SPA' FIELD P_SPART.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  populate vbak table from selection criteria with headers that have&lt;br /&gt;*  billing or delivery blocks&lt;br /&gt;  PERFORM SELECT_DOCUMENTS.&lt;br /&gt;*  select blocked items from documents selected from vbak&lt;br /&gt;  PERFORM SELECT_BLOCKED_ITEMS.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;  SORT ITAB BY VBELN POSNR.&lt;br /&gt;&lt;br /&gt;*  print report from internal table&lt;br /&gt;  PERFORM PRINT_REPORT.&lt;br /&gt;&lt;br /&gt;* run report of orders with payment block on customer&lt;br /&gt;SUBMIT YVREE025  EXPORTING LIST TO MEMORY&lt;br /&gt;                AND RETURN&lt;br /&gt;                WITH P_VKORG = P_VKORG&lt;br /&gt;                WITH P_VTWEG = P_VTWEG&lt;br /&gt;                WITH P_SPART = P_SPART&lt;br /&gt;                WITH S_VKBUR IN S_VKBUR&lt;br /&gt;                WITH S_VKGRP IN S_VKGRP&lt;br /&gt;                WITH S_KUNNR IN S_KUNNR.&lt;br /&gt;&lt;br /&gt;DATA: ABAPLIST LIKE ABAPLIST OCCURS 0.&lt;br /&gt;* recover YVREE025 report and display&lt;br /&gt;CALL FUNCTION 'LIST_FROM_MEMORY'&lt;br /&gt;     TABLES&lt;br /&gt;          LISTOBJECT = ABAPLIST&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          NOT_FOUND  = 1&lt;br /&gt;          OTHERS     = 2.&lt;br /&gt;&lt;br /&gt;*if sy-batch = space.&lt;br /&gt;CALL FUNCTION 'DISPLAY_LIST'&lt;br /&gt;     EXPORTING&lt;br /&gt;          FULLSCREEN            = 'X'&lt;br /&gt;*         CALLER_HANDLES_EVENTS =&lt;br /&gt;     IMPORTING&lt;br /&gt;          USER_COMMAND          = SY-UCOMM&lt;br /&gt;     TABLES&lt;br /&gt;          LISTOBJECT            = ABAPLIST&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          EMPTY_LIST            = 1&lt;br /&gt;          OTHERS                = 2.&lt;br /&gt;*else.&lt;br /&gt;* using write_list duplicates yvree024 headings on yvree025 list&lt;br /&gt;* display_list prints ok in background as long as print immediately is&lt;br /&gt;* NOT switched off&lt;br /&gt;&lt;br /&gt;*call function 'WRITE_LIST'&lt;br /&gt;*     tables&lt;br /&gt;*          listobject = abaplist&lt;br /&gt;*     exceptions&lt;br /&gt;*          empty_list = 1&lt;br /&gt;*          others     = 2.&lt;br /&gt;*endif.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;TOP-OF-PAGE.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  write top of page title.&lt;br /&gt;  PERFORM WRITE_TITLE .&lt;br /&gt;*  write column headings.&lt;br /&gt;  PERFORM WRITE_HEADER.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SELECT_DOCUMENTS&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       select order header details from vbak depending on selection&lt;br /&gt;*       criteria entered&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM SELECT_DOCUMENTS.&lt;br /&gt;&lt;br /&gt;  SELECT VBELN KUNNR LIFSK FAKSK&lt;br /&gt;         FROM  VBAK INTO CORRESPONDING FIELDS OF TABLE I_VBAK&lt;br /&gt;         WHERE  VKORG       = P_VKORG&lt;br /&gt;         AND    VTWEG       = P_VTWEG&lt;br /&gt;         AND    SPART       = P_SPART&lt;br /&gt;         AND    VKGRP      IN S_VKGRP&lt;br /&gt;         AND    VKBUR      IN S_VKBUR&lt;br /&gt;         AND    KUNNR      IN S_KUNNR.&lt;br /&gt;ENDFORM.                               " SELECT_DOCUMENTS&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SELECT_BLOCKED_ITEMS&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       check extracted documents for blocks                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM SELECT_BLOCKED_ITEMS.&lt;br /&gt;* process oders selected&lt;br /&gt;  LOOP AT I_VBAK.&lt;br /&gt;* if order blocked at header level select all items&lt;br /&gt;    IF I_VBAK-FAKSK NE SPACE OR I_VBAK-LIFSK NE SPACE.&lt;br /&gt;      PERFORM SELECT_ALL_ITEMS.&lt;br /&gt;    ELSE.&lt;br /&gt;* check for block at item level&lt;br /&gt;      SELECT VBELN POSNR MATNR KWMENG MEINS NETWR FAKSP  ERNAM&lt;br /&gt;                FROM  VBAP INTO&lt;br /&gt;          (VBAP-VBELN,  VBAP-POSNR, VBAP-MATNR, VBAP-KWMENG, VBAP-MEINS,&lt;br /&gt;             VBAP-NETWR, VBAP-FAKSP, VBAP-ERNAM)&lt;br /&gt;             WHERE  VBELN       = I_VBAK-VBELN.&lt;br /&gt;        IF VBAP-FAKSP NE SPACE.&lt;br /&gt;          CLEAR ITAB.&lt;br /&gt;          MOVE-CORRESPONDING VBAP TO ITAB.&lt;br /&gt;          MOVE I_VBAK-KUNNR TO ITAB-KUNNR.&lt;br /&gt;          APPEND ITAB.&lt;br /&gt;        ELSE.&lt;br /&gt;* check for block at delivery level&lt;br /&gt;          SELECT LIFSP WMENG FROM  VBEP INTO&lt;br /&gt;                (VBEP-LIFSP, VBEP-WMENG)&lt;br /&gt;                 WHERE  VBELN       = I_VBAK-VBELN&lt;br /&gt;                 AND    POSNR       = VBAP-POSNR.&lt;br /&gt;            IF VBEP-LIFSP NE SPACE.&lt;br /&gt;              CLEAR ITAB.&lt;br /&gt;              MOVE-CORRESPONDING VBAP TO ITAB.&lt;br /&gt;              MOVE I_VBAK-KUNNR TO ITAB-KUNNR.&lt;br /&gt;* use schedule qty&lt;br /&gt;              MOVE VBEP-WMENG TO ITAB-KWMENG.&lt;br /&gt;* and reason&lt;br /&gt;              MOVE VBEP-LIFSP TO ITAB-LIFSP.&lt;br /&gt;* recalculate value&lt;br /&gt;              ITAB-NETWR = ITAB-NETWR / VBAP-KWMENG * VBEP-WMENG.&lt;br /&gt;              APPEND ITAB.&lt;br /&gt;            ENDIF.&lt;br /&gt;          ENDSELECT.&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDSELECT.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " SELECT_BLOCKED_ITEMS&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  PRINT_REPORT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM PRINT_REPORT.&lt;br /&gt;&lt;br /&gt;  DATA: W_REASON_TEXT(25).&lt;br /&gt;&lt;br /&gt;  LOOP AT ITAB.&lt;br /&gt;* get name&lt;br /&gt;    SELECT SINGLE NAME1 FROM  KNA1 INTO KNA1-NAME1&lt;br /&gt;           WHERE  KUNNR       = ITAB-KUNNR .&lt;br /&gt;* get reason text&lt;br /&gt;    IF ITAB-FAKSP NE SPACE.&lt;br /&gt;      SELECT SINGLE VTEXT  FROM  TVFST INTO W_REASON_TEXT&lt;br /&gt;             WHERE  SPRAS       = SY-LANGU&lt;br /&gt;             AND    FAKSP       = ITAB-FAKSP .&lt;br /&gt;    ELSE.&lt;br /&gt;&lt;br /&gt;      SELECT SINGLE VTEXT FROM  TVLST INTO W_REASON_TEXT&lt;br /&gt;             WHERE  SPRAS       = SY-LANGU&lt;br /&gt;             AND    LIFSP       = ITAB-LIFSP.&lt;br /&gt;    ENDIF.&lt;br /&gt;*&lt;br /&gt;    WRITE: / SY-VLINE , (10) ITAB-VBELN,&lt;br /&gt;            SY-VLINE , (10) ITAB-KUNNR,&lt;br /&gt;            SY-VLINE , (35) KNA1-NAME1,&lt;br /&gt;            SY-VLINE , (12) ITAB-ERNAM,&lt;br /&gt;            SY-VLINE , (6) ITAB-POSNR,&lt;br /&gt;            SY-VLINE , (18) ITAB-MATNR,&lt;br /&gt;            SY-VLINE , (10) ITAB-KWMENG DECIMALS 0,&lt;br /&gt;            SY-VLINE , (3) ITAB-MEINS,&lt;br /&gt;            SY-VLINE , (15) ITAB-NETWR,&lt;br /&gt;            SY-VLINE , (02) ITAB-LIFSP,&lt;br /&gt;            SY-VLINE , (02) ITAB-FAKSP,&lt;br /&gt;            SY-VLINE , (25) W_REASON_TEXT,&lt;br /&gt;            SY-VLINE .&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;  WRITE:/1(185) SY-ULINE.&lt;br /&gt;ENDFORM.                               " PRINT_REPORT&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM WRITE_TITLE                                              *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* Form to write top of page title.                                    *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_TITLE.&lt;br /&gt;&lt;br /&gt;  WRITE:/1(185) SY-ULINE.&lt;br /&gt;  WRITE:/   'Pirelli Cables Limited'      ,&lt;br /&gt;          40 SY-TITLE   ,              " Report title&lt;br /&gt;         120 'Date  :'  ,  130 SY-DATUM   .&lt;br /&gt;&lt;br /&gt;  WRITE:/120 'Page  :'  ,&lt;br /&gt;         130 SY-PAGNO   ,              " Page number of the report&lt;br /&gt;         160 'YV24 / YVREE024 /', SY-MANDT.&lt;br /&gt;  WRITE:/160 'Report 2 of 2'.&lt;br /&gt;  WRITE:/1(185) SY-ULINE.&lt;br /&gt;&lt;br /&gt;* format color col_heading intensified off.&lt;br /&gt;&lt;br /&gt;  WRITE:/(25) 'Report generated for; ',&lt;br /&gt;          'Sales Organisation:',&lt;br /&gt;          P_VKORG    ,&lt;br /&gt;         '        Distribution Channel:',&lt;br /&gt;           P_VTWEG,&lt;br /&gt;         '        Division:',&lt;br /&gt;           P_SPART.&lt;br /&gt;  WRITE: /27&lt;br /&gt;           'Sales Office:',&lt;br /&gt;            S_VKBUR-LOW.&lt;br /&gt;  IF S_VKBUR-HIGH NE SPACE.&lt;br /&gt;    WRITE: ' - ', S_VKBUR-HIGH.&lt;br /&gt;  ENDIF.&lt;br /&gt;  WRITE: 59 ' Sales Group:',&lt;br /&gt;             S_VKGRP-LOW.&lt;br /&gt;  IF S_VKGRP-HIGH NE SPACE.&lt;br /&gt;    WRITE: ' - ', S_VKGRP-HIGH.&lt;br /&gt;  ENDIF.&lt;br /&gt;  WRITE: 92 ' Customer:',&lt;br /&gt;              S_KUNNR-LOW.&lt;br /&gt;  IF S_KUNNR-HIGH NE SPACE.&lt;br /&gt;    WRITE: ' - ', S_KUNNR-HIGH.&lt;br /&gt;  ENDIF.&lt;br /&gt;  WRITE:/1(185) SY-ULINE.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM WRITE-HEADER                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*   Form to write Column headings                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_HEADER.&lt;br /&gt;&lt;br /&gt;  SKIP.&lt;br /&gt;&lt;br /&gt;  FORMAT COLOR COL_HEADING INTENSIFIED.&lt;br /&gt;&lt;br /&gt;  WRITE:/1(185) SY-ULINE.&lt;br /&gt;  WRITE:/&lt;br /&gt;          SY-VLINE , (10) '   Order  ' ,&lt;br /&gt;          SY-VLINE , (10) ' Customer ' ,&lt;br /&gt;          SY-VLINE , (35) ' Name     ' ,&lt;br /&gt;          SY-VLINE , (12) ' User created',&lt;br /&gt;          SY-VLINE , (06) ' Item '     ,&lt;br /&gt;          SY-VLINE , (18) '   Material',&lt;br /&gt;          SY-VLINE , (10) 'Quantity' CENTERED DECIMALS 0,&lt;br /&gt;          SY-VLINE , (03) 'UOM'        ,&lt;br /&gt;          SY-VLINE , (15) ' Value     ',&lt;br /&gt;          SY-VLINE , (02) 'DB',&lt;br /&gt;          SY-VLINE , (02) 'BB',&lt;br /&gt;          SY-VLINE , (25) ' Reason',&lt;br /&gt;          SY-VLINE .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SELECT_ALL_ITEMS&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*   select  all items for this  header when blocked at header level   *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM SELECT_ALL_ITEMS.&lt;br /&gt;&lt;br /&gt;  SELECT VBELN POSNR MATNR KWMENG MEINS NETWR ERNAM&lt;br /&gt;            FROM  VBAP INTO&lt;br /&gt;      (VBAP-VBELN,  VBAP-POSNR, VBAP-MATNR, VBAP-KWMENG, VBAP-MEINS,&lt;br /&gt;         VBAP-NETWR, VBAP-ERNAM)&lt;br /&gt;*  REMOVED                 appending corresponding fields of table itab&lt;br /&gt;         WHERE  VBELN       = I_VBAK-VBELN.&lt;br /&gt;    MOVE-CORRESPONDING VBAP TO ITAB.&lt;br /&gt;    MOVE I_VBAK-FAKSK TO ITAB-FAKSP.&lt;br /&gt;    MOVE I_VBAK-LIFSK TO ITAB-LIFSP.&lt;br /&gt;    MOVE I_VBAK-KUNNR TO ITAB-KUNNR.&lt;br /&gt;    APPEND ITAB.&lt;br /&gt;  ENDSELECT.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " SELECT_ALL_ITEMS&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8281774059105459997?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8281774059105459997/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8281774059105459997' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8281774059105459997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8281774059105459997'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-export-list-to_18.html' title='Sample ABAP Program to EXPORT LIST TO MEMORY'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3586054650749660190</id><published>2007-10-18T21:57:00.000+05:30</published><updated>2007-10-18T21:58:20.862+05:30</updated><title type='text'>Sample ABAP Program to Execute Unix command from within SAP</title><content type='html'>REPORT YSMT018A&lt;br /&gt; MESSAGE-ID YL.&lt;br /&gt;* ABAP to append ribesnsl to ribes&lt;br /&gt;* and remove input file using sxpg_command_execute&lt;br /&gt;&lt;br /&gt;DATA: FILE1(25) VALUE '/vmedata/???/file1nsl'.&lt;br /&gt;DATA: FILE2(25) VALUE '/vmedata/???/file2'.&lt;br /&gt;DATA: W_MESSAGE(50).&lt;br /&gt;DATA: RLBES LIKE RLBES.&lt;br /&gt;FILE1+9(3) = SY-SYSID.&lt;br /&gt;FILE2+9(3) = SY-SYSID.&lt;br /&gt;* sxpg_command_execute parameters&lt;br /&gt;DATA: REMOVE_FILE LIKE SXPGCOLIST-PARAMETERS.&lt;br /&gt;DATA: PROTOCOL LIKE BTCXPM OCCURS 0.&lt;br /&gt;*&lt;br /&gt;OPEN DATASET FILE2 FOR APPENDING  IN TEXT MODE MESSAGE W_MESSAGE.&lt;br /&gt;IF SY-SUBRC NE 0 .&lt;br /&gt;  MESSAGE E114 WITH FILE2 W_MESSAGE.&lt;br /&gt;ENDIF.&lt;br /&gt;OPEN DATASET FILE1 FOR INPUT IN TEXT MODE MESSAGE W_MESSAGE.&lt;br /&gt;IF SY-SUBRC NE 0.&lt;br /&gt;  MESSAGE E114 WITH FILE1 W_MESSAGE.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;DO.&lt;br /&gt;  READ DATASET FILE1 INTO RLBES.&lt;br /&gt;  IF SY-SUBRC NE 0.&lt;br /&gt;    EXIT.&lt;br /&gt;  ENDIF.&lt;br /&gt;  TRANSFER RLBES TO FILE2.&lt;br /&gt;  IF SY-SUBRC NE 0.&lt;br /&gt;    MESSAGE E009 WITH FILE2 SY-SUBRC.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDDO.&lt;br /&gt;&lt;br /&gt;MESSAGE I114 WITH FILE1 'appended'.&lt;br /&gt;***----------------------------------------------------------------****&lt;br /&gt;&lt;br /&gt;DATA: COMMAND3(60)&lt;br /&gt;*    VALUE 'rm /vmedata/???/rlbesnsl' .&lt;br /&gt;      VALUE 'rm /vmedata/???/file1nsl' .&lt;br /&gt;&lt;br /&gt;COMMAND3+12(3) = SY-SYSID.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*submit the unix command remove file1&lt;br /&gt;REMOVE_FILE = COMMAND3+3.&lt;br /&gt;* create y_remove command in sm69&lt;br /&gt;CALL FUNCTION 'SXPG_COMMAND_EXECUTE'&lt;br /&gt;     EXPORTING&lt;br /&gt;          COMMANDNAME                   = 'Y_REMOVE'&lt;br /&gt;*         OPERATINGSYSTEM               = SY-OPSYS&lt;br /&gt;*         TARGETSYSTEM                  = SY-HOST&lt;br /&gt;*         STDOUT                        = 'X'&lt;br /&gt;*         STDERR                        = 'X'&lt;br /&gt;*         TERMINATIONWAIT               = 'X'&lt;br /&gt;*         TRACE                         = ' '&lt;br /&gt;         ADDITIONAL_PARAMETERS         = REMOVE_FILE&lt;br /&gt;*    IMPORTING&lt;br /&gt;*         STATUS                        =&lt;br /&gt;     TABLES&lt;br /&gt;          EXEC_PROTOCOL                 = PROTOCOL&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          NO_PERMISSION                 = 1&lt;br /&gt;          COMMAND_NOT_FOUND             = 2&lt;br /&gt;          PARAMETERS_TOO_LONG           = 3&lt;br /&gt;          SECURITY_RISK                 = 4&lt;br /&gt;          WRONG_CHECK_CALL_INTERFACE    = 5&lt;br /&gt;          PROGRAM_START_ERROR           = 6&lt;br /&gt;          PROGRAM_TERMINATION_ERROR     = 7&lt;br /&gt;          X_ERROR                       = 8&lt;br /&gt;          PARAMETER_EXPECTED            = 9&lt;br /&gt;          TOO_MANY_PARAMETERS           = 10&lt;br /&gt;          ILLEGAL_COMMAND               = 11&lt;br /&gt;          WRONG_ASYNCHRONOUS_PARAMETERS = 12&lt;br /&gt;          CANT_ENQ_TBTCO_ENTRY          = 13&lt;br /&gt;          JOBCOUNT_GENERATION_ERROR     = 14&lt;br /&gt;          OTHERS                        = 15.&lt;br /&gt;&lt;br /&gt;IF SY-SUBRC = 0.&lt;br /&gt;  MESSAGE I114 WITH FILE1 'deleted'.&lt;br /&gt;ENDIF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3586054650749660190?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3586054650749660190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3586054650749660190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3586054650749660190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3586054650749660190'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-execute-unix.html' title='Sample ABAP Program to Execute Unix command from within SAP'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6195056124825361043</id><published>2007-10-18T21:55:00.000+05:30</published><updated>2007-10-18T21:57:21.634+05:30</updated><title type='text'>Sample ABAP Program to Get Output in EXCEL</title><content type='html'>REPORT YLMM015A&lt;br /&gt;&lt;br /&gt;  MESSAGE-ID YL.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;*   EDI FORECASTING INTERFACE - SHEILA TITCHENER JAN 1998&lt;br /&gt;&lt;br /&gt;*   L_IDOC_HEADER_CREATE, L_IDOC_SEGMENT_CREATE &amp; L_IDOC_SEND&lt;br /&gt;&lt;br /&gt;*   left idoc ready to send but did not send automatically.&lt;br /&gt;&lt;br /&gt;* these were replaced by ALE_MODEL_DETERMINE_IF_TO_SEND&lt;br /&gt;&lt;br /&gt;*                        ALE_MODEL_INFO_GET &amp; MASTER_IDOC_DISTRIBUTE&lt;br /&gt;&lt;br /&gt;* 'in update task'. This solved the problem. Records are set up in table&lt;br /&gt;&lt;br /&gt;* t_edidd.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* TABLES - Database                                                    *&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;TABLES: EORD,&lt;br /&gt;&lt;br /&gt;        MARC,&lt;br /&gt;&lt;br /&gt;        MARM,&lt;br /&gt;&lt;br /&gt;        EINA,&lt;br /&gt;&lt;br /&gt;        PLAF,&lt;br /&gt;&lt;br /&gt;        EBAN,&lt;br /&gt;&lt;br /&gt;        EDIDD.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* DATA - Work Fields&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;DATA: W_START_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_NEXT_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_THIRD_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_END_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_COMP_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_BEG_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_DESP_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_DAY LIKE HRVSCHED-DAYNR.&lt;br /&gt;&lt;br /&gt;DATA: W_DAY_TXT LIKE HRVSCHED-DAYTXT.&lt;br /&gt;&lt;br /&gt;DATA: W_INDEX LIKE SY-TABIX.&lt;br /&gt;&lt;br /&gt;DATA: W_TOTAL LIKE EBAN-MENGE.&lt;br /&gt;&lt;br /&gt;DATA: W_ITEM_NUMBER TYPE I.&lt;br /&gt;&lt;br /&gt;* IDOC DATA&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDK01_DATA LIKE E1EDK01.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDK03_DATA LIKE E1EDK03.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDKA1_DATA LIKE E1EDKA1.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP01_DATA LIKE E1EDP01.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP20_DATA LIKE E1EDP20.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP19_DATA LIKE E1EDP19.&lt;br /&gt;&lt;br /&gt;* DATA - INTERNAL TABLES&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* forecast buckets - 8/9 weekly for first 2 months then 10 monthly&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF FORECAST OCCURS 19,&lt;br /&gt;&lt;br /&gt;       DATE TYPE D,                    "start date of bucket&lt;br /&gt;&lt;br /&gt;       WEEK_MON,                       "weekly or monthly indicator&lt;br /&gt;&lt;br /&gt;       QTY LIKE EBAN-MENGE.            "accumulated qty&lt;br /&gt;&lt;br /&gt;DATA: END OF FORECAST.&lt;br /&gt;&lt;br /&gt;*DATA:  PRODUCTS LIKE EORD OCCURS 10 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;DATA:  BEGIN OF PRODUCTS OCCURS 10,&lt;br /&gt;&lt;br /&gt;      MATNR LIKE EORD-MATNR,&lt;br /&gt;&lt;br /&gt;      WERKS LIKE EORD-WERKS,&lt;br /&gt;&lt;br /&gt;      LIFNR LIKE EORD-LIFNR.&lt;br /&gt;&lt;br /&gt;DATA: END OF PRODUCTS.&lt;br /&gt;&lt;br /&gt;* planned orders table PLAF&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF T_PLAF OCCURS 10,&lt;br /&gt;&lt;br /&gt;      GSMNG LIKE PLAF-GSMNG,&lt;br /&gt;&lt;br /&gt;      PEDTR LIKE PLAF-PEDTR.&lt;br /&gt;&lt;br /&gt;DATA: END OF T_PLAF.&lt;br /&gt;&lt;br /&gt;* planned orders table EBAN&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF T_EBAN OCCURS 10,&lt;br /&gt;&lt;br /&gt;      MENGE LIKE EBAN-MENGE,&lt;br /&gt;&lt;br /&gt;      LFDAT LIKE EBAN-LFDAT.&lt;br /&gt;&lt;br /&gt;DATA: END OF T_EBAN.&lt;br /&gt;&lt;br /&gt;* IDOC _SEND parameter&lt;br /&gt;&lt;br /&gt;DATA: COMM_IDOC_CONTROL LIKE EDIDC OCCURS 1 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* new fields for new way of sending IDOC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  DATA: W_EDIDC LIKE EDIDC OCCURS 5 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;        L_EDIDC LIKE EDIDC,&lt;br /&gt;&lt;br /&gt;        L_SEND_FLAG,&lt;br /&gt;&lt;br /&gt;        W_SDATA LIKE EDIDD-SDATA.&lt;br /&gt;&lt;br /&gt;  DATA: T_BDI_MODEL LIKE BDI_MODEL OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA: T_EDIDC LIKE EDIDC OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA: T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE.&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;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* OUTPUT file layout&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF OUTREC,&lt;br /&gt;&lt;br /&gt;   MATNR LIKE EBAN-MATNR,&lt;br /&gt;&lt;br /&gt;   D1 VALUE '$',&lt;br /&gt;&lt;br /&gt;   IDNLF LIKE EINA-IDNLF,&lt;br /&gt;&lt;br /&gt;   D2 VALUE '$',&lt;br /&gt;&lt;br /&gt;   WEEK_MON,&lt;br /&gt;&lt;br /&gt;   D3 VALUE '$',&lt;br /&gt;&lt;br /&gt;   PERIOD LIKE SY-DATUM,&lt;br /&gt;&lt;br /&gt;   D4 VALUE '$',&lt;br /&gt;&lt;br /&gt;   QTY(8),&lt;br /&gt;&lt;br /&gt;    ENDOFLINE TYPE X  VALUE '0D',&lt;br /&gt;&lt;br /&gt;    END OF OUTREC.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* SELECT-OPTIONS&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT-OPTIONS P_LIFNR FOR EORD-LIFNR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* PARAMETERS                                                           *&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;PARAMETERS: P_PART LIKE EDIDC-RCVPRN DEFAULT 'EDIFCAST',&lt;br /&gt;&lt;br /&gt;            P_FILE(30) DEFAULT '/vmedata/XXX/mdafcstddmmyy' LOWER CASE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* INITIALIZATION.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;&lt;br /&gt;* move hoot name to output file name&lt;br /&gt;&lt;br /&gt;  P_FILE+9(3) = SY-SYSID.&lt;br /&gt;&lt;br /&gt;* move todays date to output file name&lt;br /&gt;&lt;br /&gt;  P_FILE+20(2) = SY-DATUM+6(2).&lt;br /&gt;&lt;br /&gt;  P_FILE+22(2) = SY-DATUM+4(2).&lt;br /&gt;&lt;br /&gt;  P_FILE+24(2) = SY-DATUM+2(2).&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* OPEN $ delimited file&lt;br /&gt;&lt;br /&gt;  OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.1 create header idoc&lt;br /&gt;&lt;br /&gt;* REPLACE function with alternative&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_HEADER_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_MESTYP = 'ORDERS'&lt;br /&gt;&lt;br /&gt;*           I_MESCOD = ' '&lt;br /&gt;&lt;br /&gt;*           I_IDOCTP = 'ORDERS01'&lt;br /&gt;&lt;br /&gt;*           I_RCVPRN = P_PART&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*- Call function module to determine if message is to be distributed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MESSAGE_TYPE           = 'ORDERS'&lt;br /&gt;&lt;br /&gt;       IMPORTING&lt;br /&gt;&lt;br /&gt;            IDOC_MUST_BE_SENT      = L_SEND_FLAG&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 1&lt;br /&gt;&lt;br /&gt;            OTHERS                 = 2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*- Determine recipient systems&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_INFO_GET'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MESSAGE_TYPE           = 'ORDERS'&lt;br /&gt;&lt;br /&gt;*         RECEIVING_SYSTEM       = ' '&lt;br /&gt;&lt;br /&gt;*         SENDING_SYSTEM         = ' '&lt;br /&gt;&lt;br /&gt;*         VALIDDATE              = SY-DATUM&lt;br /&gt;&lt;br /&gt;       TABLES&lt;br /&gt;&lt;br /&gt;            MODEL_DATA             = T_BDI_MODEL&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            NO_MODEL_INFO_FOUND    = 1&lt;br /&gt;&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 2&lt;br /&gt;&lt;br /&gt;            OTHERS                 = 3.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.2 - 4.5 create idoc segments&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  PERFORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.6 Set up forecast bucket dates&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* determine start of the next forecast month&lt;br /&gt;&lt;br /&gt;  W_START_MONTH = SY-DATUM.&lt;br /&gt;&lt;br /&gt;* 12 months ago&lt;br /&gt;&lt;br /&gt;*_LAST_12_MTH = SY-DATUM - 365.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  IF W_START_MONTH+4(2) = '12'.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH+4(2) = '01'.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH(4) = W_START_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;  ELSE.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH+4(2)  = W_START_MONTH+4(2) + '01'.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  W_START_MONTH+6 = '01'.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'RH_GET_DATE_DAYNAME'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            LANGU               = 'E'&lt;br /&gt;&lt;br /&gt;            DATE                = W_START_MONTH&lt;br /&gt;&lt;br /&gt;*         CHECK               =&lt;br /&gt;&lt;br /&gt;       IMPORTING&lt;br /&gt;&lt;br /&gt;            DAYNR               = W_DAY&lt;br /&gt;&lt;br /&gt;            DAYTXT              = W_DAY_TXT&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            NO_LANGU            = 1&lt;br /&gt;&lt;br /&gt;            NO_DATE             = 2&lt;br /&gt;&lt;br /&gt;            NO_DAYTXT_FOR_LANGU = 3&lt;br /&gt;&lt;br /&gt;            INVALID_DATE        = 4&lt;br /&gt;&lt;br /&gt;            OTHERS              = 5.&lt;br /&gt;&lt;br /&gt;  CASE W_DAY.&lt;br /&gt;&lt;br /&gt;    WHEN 1.&lt;br /&gt;&lt;br /&gt;    WHEN 2.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH - 1.&lt;br /&gt;&lt;br /&gt;    WHEN 3.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH - 2.&lt;br /&gt;&lt;br /&gt;    WHEN 4.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 4.&lt;br /&gt;&lt;br /&gt;    WHEN 5.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 3.&lt;br /&gt;&lt;br /&gt;    WHEN 6.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 2.&lt;br /&gt;&lt;br /&gt;    WHEN 7.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 1.&lt;br /&gt;&lt;br /&gt;  ENDCASE.&lt;br /&gt;&lt;br /&gt;* date of start of monthly forecasting&lt;br /&gt;&lt;br /&gt;  W_THIRD_MONTH = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  IF W_START_MONTH+4(2) &lt; '11'.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH+4(2) = W_THIRD_MONTH+4(2) + '02'.&lt;br /&gt;&lt;br /&gt;  ELSE.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH+4(2) = W_THIRD_MONTH+4(2) - '10'.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH(4) = W_THIRD_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;* day will be the first&lt;br /&gt;&lt;br /&gt;  W_THIRD_MONTH+6 = '01'.&lt;br /&gt;&lt;br /&gt;* find nearest monday - removed&lt;br /&gt;&lt;br /&gt;*CALL FUNCTION 'RH_GET_DATE_DAYNAME'&lt;br /&gt;&lt;br /&gt;*     EXPORTING&lt;br /&gt;&lt;br /&gt;*          LANGU               = 'E'&lt;br /&gt;&lt;br /&gt;*          DATE                = W_THIRD_MONTH&lt;br /&gt;&lt;br /&gt;**         CHECK               =&lt;br /&gt;&lt;br /&gt;*     IMPORTING&lt;br /&gt;&lt;br /&gt;*          DAYNR               = W_DAY&lt;br /&gt;&lt;br /&gt;*          DAYTXT              = W_DAY_TXT&lt;br /&gt;&lt;br /&gt;*     EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*          NO_LANGU            = 1&lt;br /&gt;&lt;br /&gt;*          NO_DATE             = 2&lt;br /&gt;&lt;br /&gt;*          NO_DAYTXT_FOR_LANGU = 3&lt;br /&gt;&lt;br /&gt;*          INVALID_DATE        = 4&lt;br /&gt;&lt;br /&gt;*          OTHERS              = 5.&lt;br /&gt;&lt;br /&gt;*CASE W_DAY.&lt;br /&gt;&lt;br /&gt;*  WHEN 1.&lt;br /&gt;&lt;br /&gt;*  WHEN 2.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH - 1.&lt;br /&gt;&lt;br /&gt;*  WHEN 3.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH - 2.&lt;br /&gt;&lt;br /&gt;*  WHEN 4.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 4.&lt;br /&gt;&lt;br /&gt;*  WHEN 5.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 3.&lt;br /&gt;&lt;br /&gt;*  WHEN 6.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 2.&lt;br /&gt;&lt;br /&gt;*  WHEN 7.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 1.&lt;br /&gt;&lt;br /&gt;*ENDCASE.&lt;br /&gt;&lt;br /&gt;* set up all dates in table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  DO.&lt;br /&gt;&lt;br /&gt;    IF SY-INDEX = 1.&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;      W_NEXT_MONTH = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;    ELSE.&lt;br /&gt;&lt;br /&gt;* if this takes us into the third month set to monthly&lt;br /&gt;&lt;br /&gt;      IF W_NEXT_MONTH GE W_THIRD_MONTH.&lt;br /&gt;&lt;br /&gt;          IF W_NEXT_MONTH+4(2) = '12'.             " add 1 month&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH+4(2) = '01'.&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH(4) = W_NEXT_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;          ELSE.&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH+4(2) = W_NEXT_MONTH+4(2) + '01'.&lt;br /&gt;&lt;br /&gt;          ENDIF.&lt;br /&gt;&lt;br /&gt;*       W_NEXT_MONTH = W_NEXT_MONTH + 28.&lt;br /&gt;&lt;br /&gt;*       IF W_NEXT_MONTH+4(2) = FORECAST-DATE+4(2).&lt;br /&gt;&lt;br /&gt;*         W_NEXT_MONTH = W_NEXT_MONTH + 7.&lt;br /&gt;&lt;br /&gt;*       ENDIF.&lt;br /&gt;&lt;br /&gt;      ELSE.&lt;br /&gt;&lt;br /&gt;* add 1 week&lt;br /&gt;&lt;br /&gt;      W_NEXT_MONTH = W_NEXT_MONTH + 7.&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE = W_NEXT_MONTH.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    IF FORECAST-DATE GE W_THIRD_MONTH.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE+6(2) = '01'.                     "set start day to 1&lt;br /&gt;&lt;br /&gt;      FORECAST-WEEK_MON = '2'.&lt;br /&gt;&lt;br /&gt;    ELSE.&lt;br /&gt;&lt;br /&gt;      FORECAST-WEEK_MON = '1'.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;* year complete?&lt;br /&gt;&lt;br /&gt;    IF FORECAST-DATE+4(2) = W_START_MONTH+4(2)&lt;br /&gt;&lt;br /&gt;      AND FORECAST-DATE(4) &gt; W_START_MONTH(4).&lt;br /&gt;&lt;br /&gt;      W_END_DATE = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;      EXIT.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    APPEND FORECAST.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  ENDDO.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*     Start of selection processing&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.7 select records from Purchasing Source list&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  SELECT MATNR WERKS LIFNR FROM EORD INTO  TABLE PRODUCTS&lt;br /&gt;&lt;br /&gt;         WHERE LIFNR IN P_LIFNR&lt;br /&gt;&lt;br /&gt;          AND FLIFN = 'X'&lt;br /&gt;&lt;br /&gt;          AND  VDATU LE SY-DATUM&lt;br /&gt;&lt;br /&gt;          AND  BDATU GE SY-DATUM.&lt;br /&gt;&lt;br /&gt;* check within selection range&lt;br /&gt;&lt;br /&gt;* CHECK  P_LIFNR.&lt;br /&gt;&lt;br /&gt;* add to table&lt;br /&gt;&lt;br /&gt;*  APPEND PRODUCTS.&lt;br /&gt;&lt;br /&gt;*ENDSELECT.&lt;br /&gt;&lt;br /&gt;* delete duplicates products&lt;br /&gt;&lt;br /&gt;* table already in product code sequence&lt;br /&gt;&lt;br /&gt;  DELETE ADJACENT DUPLICATES FROM PRODUCTS COMPARING MATNR.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* process selected vendors materials&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  LOOP AT PRODUCTS.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.7 access material master&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  MARC&lt;br /&gt;&lt;br /&gt;           WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;           AND    WERKS       = PRODUCTS-WERKS .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    CHECK MARC-DISMM = 'PD' OR MARC-DISMM = 'P3'&lt;br /&gt;&lt;br /&gt;       OR MARC-DISMM = 'ZD' OR MARC-DISMM = 'Z3'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.8 access purchasing info record&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  EINA&lt;br /&gt;&lt;br /&gt;           WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;        AND    LIFNR       = PRODUCTS-LIFNR.&lt;br /&gt;&lt;br /&gt;* record found?&lt;br /&gt;&lt;br /&gt;    CHECK SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;* vendor's material number begins with 45?&lt;br /&gt;&lt;br /&gt;   CHECK EINA-IDNLF(2) = '45'.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.10 clear forecast quantities&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      FORECAST-QTY = 0.&lt;br /&gt;&lt;br /&gt;      MODIFY FORECAST TRANSPORTING QTY.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.10&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* calculate start &amp; end dates&lt;br /&gt;&lt;br /&gt;    W_COMP_DATE = W_END_DATE  + 9.&lt;br /&gt;&lt;br /&gt;*   W_BEG_DATE = W_START_MONTH + MARC-WEBAZ + 9.&lt;br /&gt;&lt;br /&gt;* read all matching material records from planned orders table PLAF&lt;br /&gt;&lt;br /&gt;SELECT GSMNG PEDTR FROM  PLAF INTO CORRESPONDING FIELDS OF TABLE T_PLAF&lt;br /&gt;&lt;br /&gt;                                    WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;                                              AND PEDTR &lt; W_COMP_DATE.&lt;br /&gt;&lt;br /&gt;*                     AND PEDTR &gt; W_BEG_DATE.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.11 process any records found&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;      LOOP AT T_PLAF.&lt;br /&gt;&lt;br /&gt;        W_DESP_DATE = T_PLAF-PEDTR - 9.&lt;br /&gt;&lt;br /&gt;* IF date is &lt; first date add to first date&lt;br /&gt;&lt;br /&gt;        READ TABLE FORECAST INDEX 1.&lt;br /&gt;&lt;br /&gt;        IF FORECAST-DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;          W_INDEX = 1.&lt;br /&gt;&lt;br /&gt;        ELSE.&lt;br /&gt;&lt;br /&gt;* find first slot where date &gt; despatch date.&lt;br /&gt;&lt;br /&gt;          LOOP AT FORECAST&lt;br /&gt;&lt;br /&gt;            WHERE DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;            W_INDEX = SY-TABIX.&lt;br /&gt;&lt;br /&gt;            EXIT.&lt;br /&gt;&lt;br /&gt;          ENDLOOP.&lt;br /&gt;&lt;br /&gt;* read previous entry.&lt;br /&gt;&lt;br /&gt;          W_INDEX = W_INDEX - 1.&lt;br /&gt;&lt;br /&gt;          READ TABLE FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* convert to purchasing unit of measure&lt;br /&gt;&lt;br /&gt;        IF  EINA-UMREZ NE 0.&lt;br /&gt;&lt;br /&gt;          T_PLAF-GSMNG = T_PLAF-GSMNG * EINA-UMREN / EINA-UMREZ.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;        FORECAST-QTY = FORECAST-QTY + T_PLAF-GSMNG.&lt;br /&gt;&lt;br /&gt;        MODIFY FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;      ENDLOOP.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.12 read all matching material records from planned orders table EBAN&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;SELECT MENGE LFDAT FROM  EBAN INTO CORRESPONDING FIELDS OF TABLE T_EBAN&lt;br /&gt;&lt;br /&gt;             WHERE  MATNR = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;                AND LFDAT &lt; W_COMP_DATE.&lt;br /&gt;&lt;br /&gt;*                                 AND LFDAT &gt; W_BEG_DATE.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.13 process any records found&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;      LOOP AT T_EBAN.&lt;br /&gt;&lt;br /&gt;        W_DESP_DATE = T_EBAN-LFDAT - 9.&lt;br /&gt;&lt;br /&gt;* IF date is &lt; first date add to first date&lt;br /&gt;&lt;br /&gt;        READ TABLE FORECAST INDEX 1.&lt;br /&gt;&lt;br /&gt;        IF FORECAST-DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;          W_INDEX = 1.&lt;br /&gt;&lt;br /&gt;        ELSE.&lt;br /&gt;&lt;br /&gt;* find first slot where date &gt; despatch date.&lt;br /&gt;&lt;br /&gt;          LOOP AT FORECAST&lt;br /&gt;&lt;br /&gt;            WHERE DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;            W_INDEX = SY-TABIX.&lt;br /&gt;&lt;br /&gt;            EXIT.&lt;br /&gt;&lt;br /&gt;          ENDLOOP.&lt;br /&gt;&lt;br /&gt;* read previous entry.&lt;br /&gt;&lt;br /&gt;          W_INDEX = W_INDEX - 1.&lt;br /&gt;&lt;br /&gt;          READ TABLE FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* convert to purchasing unit of measure&lt;br /&gt;&lt;br /&gt;        IF  EINA-UMREZ NE 0.&lt;br /&gt;&lt;br /&gt;          T_EBAN-MENGE = T_EBAN-MENGE * EINA-UMREN / EINA-UMREZ.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* add to table&lt;br /&gt;&lt;br /&gt;        FORECAST-QTY = FORECAST-QTY + T_EBAN-MENGE.&lt;br /&gt;&lt;br /&gt;        MODIFY FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;      ENDLOOP.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14  total all forecast buckets&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_TOTAL = 0.&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      W_TOTAL = W_TOTAL + FORECAST-QTY.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;    CHECK W_TOTAL NE 0.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;*  create idocs for material forecast&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_ITEM_NUMBER = W_ITEM_NUMBER + 1.&lt;br /&gt;&lt;br /&gt;    IF W_ITEM_NUMBER &gt; 80.&lt;br /&gt;&lt;br /&gt;      W_ITEM_NUMBER = 1.&lt;br /&gt;&lt;br /&gt;      PERFORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14.3 create idoc E1EDP01&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_E1EDP01_DATA-POSEX = W_ITEM_NUMBER.&lt;br /&gt;&lt;br /&gt;    WRITE W_TOTAL TO W_E1EDP01_DATA-MENGE DECIMALS 0.&lt;br /&gt;&lt;br /&gt;*   EDIDD-SDATA = W_E1EDP01_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP01_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP01_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP01'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*    CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*         EXPORTING&lt;br /&gt;&lt;br /&gt;*              I_SEGNAM = 'E1EDP01'&lt;br /&gt;&lt;br /&gt;*              I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*         EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*              OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14.4 create idoc E1EDP20&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      IF FORECAST-QTY NE 0.&lt;br /&gt;&lt;br /&gt;        WRITE FORECAST-QTY TO W_E1EDP20_DATA-WMENG DECIMALS 0.&lt;br /&gt;&lt;br /&gt;        W_E1EDP20_DATA-AMENG = FORECAST-WEEK_MON.&lt;br /&gt;&lt;br /&gt;        W_E1EDP20_DATA-EDATU = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;*       EDIDD-SDATA = W_E1EDP20_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP20_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP20_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP20'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*       CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*            EXPORTING&lt;br /&gt;&lt;br /&gt;*                 I_SEGNAM = 'E1EDP20'&lt;br /&gt;&lt;br /&gt;*                 I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*            EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*                 OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* write record to $ delimited file&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;        OUTREC-MATNR = PRODUCTS-MATNR.&lt;br /&gt;&lt;br /&gt;        OUTREC-IDNLF = EINA-IDNLF.&lt;br /&gt;&lt;br /&gt;        OUTREC-WEEK_MON = FORECAST-WEEK_MON.&lt;br /&gt;&lt;br /&gt;        OUTREC-PERIOD = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;        WRITE FORECAST-QTY TO  OUTREC-QTY DECIMALS 0.&lt;br /&gt;&lt;br /&gt;        TRANSFER OUTREC TO P_FILE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;* 4.14.5 End of this product&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    W_E1EDP19_DATA-IDTNR = EINA-IDNLF.&lt;br /&gt;&lt;br /&gt;*   EDIDD-SDATA = W_E1EDP19_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP19_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP19_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP19'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*   CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*        EXPORTING&lt;br /&gt;&lt;br /&gt;*             I_SEGNAM = 'E1EDP19'&lt;br /&gt;&lt;br /&gt;*             I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*        EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*             OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* end of all products&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* REPLACE WITH MASTER_IDOC_DISTRIBUTE&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEND'&lt;br /&gt;&lt;br /&gt;*      TABLES&lt;br /&gt;&lt;br /&gt;*           T_COMM_IDOC           = COMM_IDOC_CONTROL&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           ERROR_DISTRIBUTE_IDOC = 1&lt;br /&gt;&lt;br /&gt;*           OTHERS                = 2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  READ TABLE T_BDI_MODEL INDEX 1.      " maximum 1 recipient&lt;br /&gt;&lt;br /&gt;  MOVE 'ORDERS'   TO L_EDIDC-MESTYP.&lt;br /&gt;&lt;br /&gt;  MOVE 'ORDERS01' TO L_EDIDC-IDOCTP.&lt;br /&gt;&lt;br /&gt;  MOVE 'LS'       TO L_EDIDC-RCVPRT.&lt;br /&gt;&lt;br /&gt;* MOVE T_BDI_MODEL-RCVSYSTEM TO L_EDIDC-RCVPRN.&lt;br /&gt;&lt;br /&gt;* partner profile parameter&lt;br /&gt;&lt;br /&gt; MOVE P_PART TO L_EDIDC-RCVPRN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*- Distribute the iDoc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' IN UPDATE TASK&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MASTER_IDOC_CONTROL            = L_EDIDC&lt;br /&gt;&lt;br /&gt;       TABLES&lt;br /&gt;&lt;br /&gt;            COMMUNICATION_IDOC_CONTROL     = COMM_IDOC_CONTROL&lt;br /&gt;&lt;br /&gt;            MASTER_IDOC_DATA               = T_EDIDD&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            ERROR_IN_IDOC_CONTROL          = 01&lt;br /&gt;&lt;br /&gt;            ERROR_WRITING_IDOC_STATUS      = 02&lt;br /&gt;&lt;br /&gt;            ERROR_IN_IDOC_DATA             = 03&lt;br /&gt;&lt;br /&gt;            SENDING_LOGICAL_SYSTEM_UNKNOWN = 04.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  COMMIT WORK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CLOSE DATASET P_FILE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;FORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.2 Create idoc segment E1EDK01&lt;br /&gt;&lt;br /&gt;  W_E1EDK01_DATA-BELNR = 'EDI FORECAST'.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDK01_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDK01_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDK01_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDK01'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDK01'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.3 Create idoc segments E1EDK03&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;  W_E1EDK03_DATA-IDDAT = '002'.&lt;br /&gt;&lt;br /&gt;  W_E1EDK03_DATA-DATUM = SY-DATUM.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDK03_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDK03_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDK03_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDK03'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDK03'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.4 Create idco E1EDKA1&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;  W_E1EDKA1_DATA-PARVW = 'LI'.&lt;br /&gt;&lt;br /&gt;  W_E1EDKA1_DATA-PARTN = P_PART.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDKA1_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDKA1_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDKA1_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDKA1'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDKA1'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6195056124825361043?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6195056124825361043/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6195056124825361043' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6195056124825361043'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6195056124825361043'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-get-output-in.html' title='Sample ABAP Program to Get Output in EXCEL'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7038568347586777961</id><published>2007-10-18T21:54:00.000+05:30</published><updated>2007-10-18T21:55:51.100+05:30</updated><title type='text'>Sample ABAP Program to Implement EDI</title><content type='html'>REPORT YLMM015A&lt;br /&gt;&lt;br /&gt;  MESSAGE-ID YL.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;*   EDI FORECASTING INTERFACE - SHEILA TITCHENER JAN 1998&lt;br /&gt;&lt;br /&gt;*   L_IDOC_HEADER_CREATE, L_IDOC_SEGMENT_CREATE &amp; L_IDOC_SEND&lt;br /&gt;&lt;br /&gt;*   left idoc ready to send but did not send automatically.&lt;br /&gt;&lt;br /&gt;* these were replaced by ALE_MODEL_DETERMINE_IF_TO_SEND&lt;br /&gt;&lt;br /&gt;*                        ALE_MODEL_INFO_GET &amp; MASTER_IDOC_DISTRIBUTE&lt;br /&gt;&lt;br /&gt;* 'in update task'. This solved the problem. Records are set up in table&lt;br /&gt;&lt;br /&gt;* t_edidd.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* TABLES - Database                                                    *&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;TABLES: EORD,&lt;br /&gt;&lt;br /&gt;        MARC,&lt;br /&gt;&lt;br /&gt;        MARM,&lt;br /&gt;&lt;br /&gt;        EINA,&lt;br /&gt;&lt;br /&gt;        PLAF,&lt;br /&gt;&lt;br /&gt;        EBAN,&lt;br /&gt;&lt;br /&gt;        EDIDD.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* DATA - Work Fields&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;DATA: W_START_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_NEXT_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_THIRD_MONTH LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_END_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_COMP_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_BEG_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_DESP_DATE LIKE SY-DATUM.&lt;br /&gt;&lt;br /&gt;DATA: W_DAY LIKE HRVSCHED-DAYNR.&lt;br /&gt;&lt;br /&gt;DATA: W_DAY_TXT LIKE HRVSCHED-DAYTXT.&lt;br /&gt;&lt;br /&gt;DATA: W_INDEX LIKE SY-TABIX.&lt;br /&gt;&lt;br /&gt;DATA: W_TOTAL LIKE EBAN-MENGE.&lt;br /&gt;&lt;br /&gt;DATA: W_ITEM_NUMBER TYPE I.&lt;br /&gt;&lt;br /&gt;* IDOC DATA&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDK01_DATA LIKE E1EDK01.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDK03_DATA LIKE E1EDK03.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDKA1_DATA LIKE E1EDKA1.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP01_DATA LIKE E1EDP01.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP20_DATA LIKE E1EDP20.&lt;br /&gt;&lt;br /&gt;DATA: W_E1EDP19_DATA LIKE E1EDP19.&lt;br /&gt;&lt;br /&gt;* DATA - INTERNAL TABLES&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* forecast buckets - 8/9 weekly for first 2 months then 10 monthly&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF FORECAST OCCURS 19,&lt;br /&gt;&lt;br /&gt;       DATE TYPE D,                    "start date of bucket&lt;br /&gt;&lt;br /&gt;       WEEK_MON,                       "weekly or monthly indicator&lt;br /&gt;&lt;br /&gt;       QTY LIKE EBAN-MENGE.            "accumulated qty&lt;br /&gt;&lt;br /&gt;DATA: END OF FORECAST.&lt;br /&gt;&lt;br /&gt;*DATA:  PRODUCTS LIKE EORD OCCURS 10 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;DATA:  BEGIN OF PRODUCTS OCCURS 10,&lt;br /&gt;&lt;br /&gt;      MATNR LIKE EORD-MATNR,&lt;br /&gt;&lt;br /&gt;      WERKS LIKE EORD-WERKS,&lt;br /&gt;&lt;br /&gt;      LIFNR LIKE EORD-LIFNR.&lt;br /&gt;&lt;br /&gt;DATA: END OF PRODUCTS.&lt;br /&gt;&lt;br /&gt;* planned orders table PLAF&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF T_PLAF OCCURS 10,&lt;br /&gt;&lt;br /&gt;      GSMNG LIKE PLAF-GSMNG,&lt;br /&gt;&lt;br /&gt;      PEDTR LIKE PLAF-PEDTR.&lt;br /&gt;&lt;br /&gt;DATA: END OF T_PLAF.&lt;br /&gt;&lt;br /&gt;* planned orders table EBAN&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF T_EBAN OCCURS 10,&lt;br /&gt;&lt;br /&gt;      MENGE LIKE EBAN-MENGE,&lt;br /&gt;&lt;br /&gt;      LFDAT LIKE EBAN-LFDAT.&lt;br /&gt;&lt;br /&gt;DATA: END OF T_EBAN.&lt;br /&gt;&lt;br /&gt;* IDOC _SEND parameter&lt;br /&gt;&lt;br /&gt;DATA: COMM_IDOC_CONTROL LIKE EDIDC OCCURS 1 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* new fields for new way of sending IDOC&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  DATA: W_EDIDC LIKE EDIDC OCCURS 5 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;        L_EDIDC LIKE EDIDC,&lt;br /&gt;&lt;br /&gt;        L_SEND_FLAG,&lt;br /&gt;&lt;br /&gt;        W_SDATA LIKE EDIDD-SDATA.&lt;br /&gt;&lt;br /&gt;  DATA: T_BDI_MODEL LIKE BDI_MODEL OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA: T_EDIDC LIKE EDIDC OCCURS 0 WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;  DATA: T_EDIDD LIKE EDIDD OCCURS 0 WITH HEADER LINE.&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;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* OUTPUT file layout&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF OUTREC,&lt;br /&gt;&lt;br /&gt;   MATNR LIKE EBAN-MATNR,&lt;br /&gt;&lt;br /&gt;   D1 VALUE '$',&lt;br /&gt;&lt;br /&gt;   IDNLF LIKE EINA-IDNLF,&lt;br /&gt;&lt;br /&gt;   D2 VALUE '$',&lt;br /&gt;&lt;br /&gt;   WEEK_MON,&lt;br /&gt;&lt;br /&gt;   D3 VALUE '$',&lt;br /&gt;&lt;br /&gt;   PERIOD LIKE SY-DATUM,&lt;br /&gt;&lt;br /&gt;   D4 VALUE '$',&lt;br /&gt;&lt;br /&gt;   QTY(8),&lt;br /&gt;&lt;br /&gt;    ENDOFLINE TYPE X  VALUE '0D',&lt;br /&gt;&lt;br /&gt;    END OF OUTREC.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* SELECT-OPTIONS&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;SELECT-OPTIONS P_LIFNR FOR EORD-LIFNR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* PARAMETERS                                                           *&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;PARAMETERS: P_PART LIKE EDIDC-RCVPRN DEFAULT 'EDIFCAST',&lt;br /&gt;&lt;br /&gt;            P_FILE(30) DEFAULT '/vmedata/XXX/mdafcstddmmyy' LOWER CASE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* INITIALIZATION.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;&lt;br /&gt;* move hoot name to output file name&lt;br /&gt;&lt;br /&gt;  P_FILE+9(3) = SY-SYSID.&lt;br /&gt;&lt;br /&gt;* move todays date to output file name&lt;br /&gt;&lt;br /&gt;  P_FILE+20(2) = SY-DATUM+6(2).&lt;br /&gt;&lt;br /&gt;  P_FILE+22(2) = SY-DATUM+4(2).&lt;br /&gt;&lt;br /&gt;  P_FILE+24(2) = SY-DATUM+2(2).&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* OPEN $ delimited file&lt;br /&gt;&lt;br /&gt;  OPEN DATASET P_FILE FOR OUTPUT IN TEXT MODE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.1 create header idoc&lt;br /&gt;&lt;br /&gt;* REPLACE function with alternative&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_HEADER_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_MESTYP = 'ORDERS'&lt;br /&gt;&lt;br /&gt;*           I_MESCOD = ' '&lt;br /&gt;&lt;br /&gt;*           I_IDOCTP = 'ORDERS01'&lt;br /&gt;&lt;br /&gt;*           I_RCVPRN = P_PART&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*- Call function module to determine if message is to be distributed&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_DETERMINE_IF_TO_SEND'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MESSAGE_TYPE           = 'ORDERS'&lt;br /&gt;&lt;br /&gt;       IMPORTING&lt;br /&gt;&lt;br /&gt;            IDOC_MUST_BE_SENT      = L_SEND_FLAG&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 1&lt;br /&gt;&lt;br /&gt;            OTHERS                 = 2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*- Determine recipient systems&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALE_MODEL_INFO_GET'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MESSAGE_TYPE           = 'ORDERS'&lt;br /&gt;&lt;br /&gt;*         RECEIVING_SYSTEM       = ' '&lt;br /&gt;&lt;br /&gt;*         SENDING_SYSTEM         = ' '&lt;br /&gt;&lt;br /&gt;*         VALIDDATE              = SY-DATUM&lt;br /&gt;&lt;br /&gt;       TABLES&lt;br /&gt;&lt;br /&gt;            MODEL_DATA             = T_BDI_MODEL&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            NO_MODEL_INFO_FOUND    = 1&lt;br /&gt;&lt;br /&gt;            OWN_SYSTEM_NOT_DEFINED = 2&lt;br /&gt;&lt;br /&gt;            OTHERS                 = 3.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.2 - 4.5 create idoc segments&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  PERFORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.6 Set up forecast bucket dates&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* determine start of the next forecast month&lt;br /&gt;&lt;br /&gt;  W_START_MONTH = SY-DATUM.&lt;br /&gt;&lt;br /&gt;* 12 months ago&lt;br /&gt;&lt;br /&gt;*_LAST_12_MTH = SY-DATUM - 365.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  IF W_START_MONTH+4(2) = '12'.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH+4(2) = '01'.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH(4) = W_START_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;  ELSE.&lt;br /&gt;&lt;br /&gt;    W_START_MONTH+4(2)  = W_START_MONTH+4(2) + '01'.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  W_START_MONTH+6 = '01'.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'RH_GET_DATE_DAYNAME'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            LANGU               = 'E'&lt;br /&gt;&lt;br /&gt;            DATE                = W_START_MONTH&lt;br /&gt;&lt;br /&gt;*         CHECK               =&lt;br /&gt;&lt;br /&gt;       IMPORTING&lt;br /&gt;&lt;br /&gt;            DAYNR               = W_DAY&lt;br /&gt;&lt;br /&gt;            DAYTXT              = W_DAY_TXT&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            NO_LANGU            = 1&lt;br /&gt;&lt;br /&gt;            NO_DATE             = 2&lt;br /&gt;&lt;br /&gt;            NO_DAYTXT_FOR_LANGU = 3&lt;br /&gt;&lt;br /&gt;            INVALID_DATE        = 4&lt;br /&gt;&lt;br /&gt;            OTHERS              = 5.&lt;br /&gt;&lt;br /&gt;  CASE W_DAY.&lt;br /&gt;&lt;br /&gt;    WHEN 1.&lt;br /&gt;&lt;br /&gt;    WHEN 2.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH - 1.&lt;br /&gt;&lt;br /&gt;    WHEN 3.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH - 2.&lt;br /&gt;&lt;br /&gt;    WHEN 4.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 4.&lt;br /&gt;&lt;br /&gt;    WHEN 5.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 3.&lt;br /&gt;&lt;br /&gt;    WHEN 6.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 2.&lt;br /&gt;&lt;br /&gt;    WHEN 7.&lt;br /&gt;&lt;br /&gt;      W_START_MONTH = W_START_MONTH + 1.&lt;br /&gt;&lt;br /&gt;  ENDCASE.&lt;br /&gt;&lt;br /&gt;* date of start of monthly forecasting&lt;br /&gt;&lt;br /&gt;  W_THIRD_MONTH = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  IF W_START_MONTH+4(2) &lt; '11'.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH+4(2) = W_THIRD_MONTH+4(2) + '02'.&lt;br /&gt;&lt;br /&gt;  ELSE.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH+4(2) = W_THIRD_MONTH+4(2) - '10'.&lt;br /&gt;&lt;br /&gt;    W_THIRD_MONTH(4) = W_THIRD_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;* day will be the first&lt;br /&gt;&lt;br /&gt;  W_THIRD_MONTH+6 = '01'.&lt;br /&gt;&lt;br /&gt;* find nearest monday - removed&lt;br /&gt;&lt;br /&gt;*CALL FUNCTION 'RH_GET_DATE_DAYNAME'&lt;br /&gt;&lt;br /&gt;*     EXPORTING&lt;br /&gt;&lt;br /&gt;*          LANGU               = 'E'&lt;br /&gt;&lt;br /&gt;*          DATE                = W_THIRD_MONTH&lt;br /&gt;&lt;br /&gt;**         CHECK               =&lt;br /&gt;&lt;br /&gt;*     IMPORTING&lt;br /&gt;&lt;br /&gt;*          DAYNR               = W_DAY&lt;br /&gt;&lt;br /&gt;*          DAYTXT              = W_DAY_TXT&lt;br /&gt;&lt;br /&gt;*     EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*          NO_LANGU            = 1&lt;br /&gt;&lt;br /&gt;*          NO_DATE             = 2&lt;br /&gt;&lt;br /&gt;*          NO_DAYTXT_FOR_LANGU = 3&lt;br /&gt;&lt;br /&gt;*          INVALID_DATE        = 4&lt;br /&gt;&lt;br /&gt;*          OTHERS              = 5.&lt;br /&gt;&lt;br /&gt;*CASE W_DAY.&lt;br /&gt;&lt;br /&gt;*  WHEN 1.&lt;br /&gt;&lt;br /&gt;*  WHEN 2.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH - 1.&lt;br /&gt;&lt;br /&gt;*  WHEN 3.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH - 2.&lt;br /&gt;&lt;br /&gt;*  WHEN 4.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 4.&lt;br /&gt;&lt;br /&gt;*  WHEN 5.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 3.&lt;br /&gt;&lt;br /&gt;*  WHEN 6.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 2.&lt;br /&gt;&lt;br /&gt;*  WHEN 7.&lt;br /&gt;&lt;br /&gt;*    W_THIRD_MONTH = W_THIRD_MONTH + 1.&lt;br /&gt;&lt;br /&gt;*ENDCASE.&lt;br /&gt;&lt;br /&gt;* set up all dates in table&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  DO.&lt;br /&gt;&lt;br /&gt;    IF SY-INDEX = 1.&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;      W_NEXT_MONTH = W_START_MONTH.&lt;br /&gt;&lt;br /&gt;    ELSE.&lt;br /&gt;&lt;br /&gt;* if this takes us into the third month set to monthly&lt;br /&gt;&lt;br /&gt;      IF W_NEXT_MONTH GE W_THIRD_MONTH.&lt;br /&gt;&lt;br /&gt;          IF W_NEXT_MONTH+4(2) = '12'.             " add 1 month&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH+4(2) = '01'.&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH(4) = W_NEXT_MONTH(4) + '0001'.&lt;br /&gt;&lt;br /&gt;          ELSE.&lt;br /&gt;&lt;br /&gt;            W_NEXT_MONTH+4(2) = W_NEXT_MONTH+4(2) + '01'.&lt;br /&gt;&lt;br /&gt;          ENDIF.&lt;br /&gt;&lt;br /&gt;*       W_NEXT_MONTH = W_NEXT_MONTH + 28.&lt;br /&gt;&lt;br /&gt;*       IF W_NEXT_MONTH+4(2) = FORECAST-DATE+4(2).&lt;br /&gt;&lt;br /&gt;*         W_NEXT_MONTH = W_NEXT_MONTH + 7.&lt;br /&gt;&lt;br /&gt;*       ENDIF.&lt;br /&gt;&lt;br /&gt;      ELSE.&lt;br /&gt;&lt;br /&gt;* add 1 week&lt;br /&gt;&lt;br /&gt;      W_NEXT_MONTH = W_NEXT_MONTH + 7.&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE = W_NEXT_MONTH.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    IF FORECAST-DATE GE W_THIRD_MONTH.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      FORECAST-DATE+6(2) = '01'.                     "set start day to 1&lt;br /&gt;&lt;br /&gt;      FORECAST-WEEK_MON = '2'.&lt;br /&gt;&lt;br /&gt;    ELSE.&lt;br /&gt;&lt;br /&gt;      FORECAST-WEEK_MON = '1'.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;* year complete?&lt;br /&gt;&lt;br /&gt;    IF FORECAST-DATE+4(2) = W_START_MONTH+4(2)&lt;br /&gt;&lt;br /&gt;      AND FORECAST-DATE(4) &gt; W_START_MONTH(4).&lt;br /&gt;&lt;br /&gt;      W_END_DATE = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;      EXIT.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    APPEND FORECAST.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  ENDDO.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;*     Start of selection processing&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.7 select records from Purchasing Source list&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  SELECT MATNR WERKS LIFNR FROM EORD INTO  TABLE PRODUCTS&lt;br /&gt;&lt;br /&gt;         WHERE LIFNR IN P_LIFNR&lt;br /&gt;&lt;br /&gt;          AND FLIFN = 'X'&lt;br /&gt;&lt;br /&gt;          AND  VDATU LE SY-DATUM&lt;br /&gt;&lt;br /&gt;          AND  BDATU GE SY-DATUM.&lt;br /&gt;&lt;br /&gt;* check within selection range&lt;br /&gt;&lt;br /&gt;* CHECK  P_LIFNR.&lt;br /&gt;&lt;br /&gt;* add to table&lt;br /&gt;&lt;br /&gt;*  APPEND PRODUCTS.&lt;br /&gt;&lt;br /&gt;*ENDSELECT.&lt;br /&gt;&lt;br /&gt;* delete duplicates products&lt;br /&gt;&lt;br /&gt;* table already in product code sequence&lt;br /&gt;&lt;br /&gt;  DELETE ADJACENT DUPLICATES FROM PRODUCTS COMPARING MATNR.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* process selected vendors materials&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  LOOP AT PRODUCTS.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.7 access material master&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  MARC&lt;br /&gt;&lt;br /&gt;           WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;           AND    WERKS       = PRODUCTS-WERKS .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    CHECK MARC-DISMM = 'PD' OR MARC-DISMM = 'P3'&lt;br /&gt;&lt;br /&gt;       OR MARC-DISMM = 'ZD' OR MARC-DISMM = 'Z3'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.8 access purchasing info record&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  EINA&lt;br /&gt;&lt;br /&gt;           WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;        AND    LIFNR       = PRODUCTS-LIFNR.&lt;br /&gt;&lt;br /&gt;* record found?&lt;br /&gt;&lt;br /&gt;    CHECK SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;* vendor's material number begins with 45?&lt;br /&gt;&lt;br /&gt;   CHECK EINA-IDNLF(2) = '45'.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.10 clear forecast quantities&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      FORECAST-QTY = 0.&lt;br /&gt;&lt;br /&gt;      MODIFY FORECAST TRANSPORTING QTY.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.10&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* calculate start &amp; end dates&lt;br /&gt;&lt;br /&gt;    W_COMP_DATE = W_END_DATE  + 9.&lt;br /&gt;&lt;br /&gt;*   W_BEG_DATE = W_START_MONTH + MARC-WEBAZ + 9.&lt;br /&gt;&lt;br /&gt;* read all matching material records from planned orders table PLAF&lt;br /&gt;&lt;br /&gt;SELECT GSMNG PEDTR FROM  PLAF INTO CORRESPONDING FIELDS OF TABLE T_PLAF&lt;br /&gt;&lt;br /&gt;                                    WHERE  MATNR       = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;                                              AND PEDTR &lt; W_COMP_DATE.&lt;br /&gt;&lt;br /&gt;*                     AND PEDTR &gt; W_BEG_DATE.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.11 process any records found&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;      LOOP AT T_PLAF.&lt;br /&gt;&lt;br /&gt;        W_DESP_DATE = T_PLAF-PEDTR - 9.&lt;br /&gt;&lt;br /&gt;* IF date is &lt; first date add to first date&lt;br /&gt;&lt;br /&gt;        READ TABLE FORECAST INDEX 1.&lt;br /&gt;&lt;br /&gt;        IF FORECAST-DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;          W_INDEX = 1.&lt;br /&gt;&lt;br /&gt;        ELSE.&lt;br /&gt;&lt;br /&gt;* find first slot where date &gt; despatch date.&lt;br /&gt;&lt;br /&gt;          LOOP AT FORECAST&lt;br /&gt;&lt;br /&gt;            WHERE DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;            W_INDEX = SY-TABIX.&lt;br /&gt;&lt;br /&gt;            EXIT.&lt;br /&gt;&lt;br /&gt;          ENDLOOP.&lt;br /&gt;&lt;br /&gt;* read previous entry.&lt;br /&gt;&lt;br /&gt;          W_INDEX = W_INDEX - 1.&lt;br /&gt;&lt;br /&gt;          READ TABLE FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* convert to purchasing unit of measure&lt;br /&gt;&lt;br /&gt;        IF  EINA-UMREZ NE 0.&lt;br /&gt;&lt;br /&gt;          T_PLAF-GSMNG = T_PLAF-GSMNG * EINA-UMREN / EINA-UMREZ.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;        FORECAST-QTY = FORECAST-QTY + T_PLAF-GSMNG.&lt;br /&gt;&lt;br /&gt;        MODIFY FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;      ENDLOOP.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.12 read all matching material records from planned orders table EBAN&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;SELECT MENGE LFDAT FROM  EBAN INTO CORRESPONDING FIELDS OF TABLE T_EBAN&lt;br /&gt;&lt;br /&gt;             WHERE  MATNR = PRODUCTS-MATNR&lt;br /&gt;&lt;br /&gt;                AND LFDAT &lt; W_COMP_DATE.&lt;br /&gt;&lt;br /&gt;*                                 AND LFDAT &gt; W_BEG_DATE.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.13 process any records found&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    IF SY-SUBRC = 0.&lt;br /&gt;&lt;br /&gt;      LOOP AT T_EBAN.&lt;br /&gt;&lt;br /&gt;        W_DESP_DATE = T_EBAN-LFDAT - 9.&lt;br /&gt;&lt;br /&gt;* IF date is &lt; first date add to first date&lt;br /&gt;&lt;br /&gt;        READ TABLE FORECAST INDEX 1.&lt;br /&gt;&lt;br /&gt;        IF FORECAST-DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;          W_INDEX = 1.&lt;br /&gt;&lt;br /&gt;        ELSE.&lt;br /&gt;&lt;br /&gt;* find first slot where date &gt; despatch date.&lt;br /&gt;&lt;br /&gt;          LOOP AT FORECAST&lt;br /&gt;&lt;br /&gt;            WHERE DATE GE W_DESP_DATE.&lt;br /&gt;&lt;br /&gt;            W_INDEX = SY-TABIX.&lt;br /&gt;&lt;br /&gt;            EXIT.&lt;br /&gt;&lt;br /&gt;          ENDLOOP.&lt;br /&gt;&lt;br /&gt;* read previous entry.&lt;br /&gt;&lt;br /&gt;          W_INDEX = W_INDEX - 1.&lt;br /&gt;&lt;br /&gt;          READ TABLE FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* convert to purchasing unit of measure&lt;br /&gt;&lt;br /&gt;        IF  EINA-UMREZ NE 0.&lt;br /&gt;&lt;br /&gt;          T_EBAN-MENGE = T_EBAN-MENGE * EINA-UMREN / EINA-UMREZ.&lt;br /&gt;&lt;br /&gt;        ENDIF.&lt;br /&gt;&lt;br /&gt;* add to table&lt;br /&gt;&lt;br /&gt;        FORECAST-QTY = FORECAST-QTY + T_EBAN-MENGE.&lt;br /&gt;&lt;br /&gt;        MODIFY FORECAST INDEX W_INDEX.&lt;br /&gt;&lt;br /&gt;      ENDLOOP.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14  total all forecast buckets&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_TOTAL = 0.&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      W_TOTAL = W_TOTAL + FORECAST-QTY.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;    CHECK W_TOTAL NE 0.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;*  create idocs for material forecast&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_ITEM_NUMBER = W_ITEM_NUMBER + 1.&lt;br /&gt;&lt;br /&gt;    IF W_ITEM_NUMBER &gt; 80.&lt;br /&gt;&lt;br /&gt;      W_ITEM_NUMBER = 1.&lt;br /&gt;&lt;br /&gt;      PERFORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14.3 create idoc E1EDP01&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    W_E1EDP01_DATA-POSEX = W_ITEM_NUMBER.&lt;br /&gt;&lt;br /&gt;    WRITE W_TOTAL TO W_E1EDP01_DATA-MENGE DECIMALS 0.&lt;br /&gt;&lt;br /&gt;*   EDIDD-SDATA = W_E1EDP01_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP01_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP01_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP01'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*    CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*         EXPORTING&lt;br /&gt;&lt;br /&gt;*              I_SEGNAM = 'E1EDP01'&lt;br /&gt;&lt;br /&gt;*              I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*         EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*              OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.14.4 create idoc E1EDP20&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;    LOOP AT FORECAST.&lt;br /&gt;&lt;br /&gt;      IF FORECAST-QTY NE 0.&lt;br /&gt;&lt;br /&gt;        WRITE FORECAST-QTY TO W_E1EDP20_DATA-WMENG DECIMALS 0.&lt;br /&gt;&lt;br /&gt;        W_E1EDP20_DATA-AMENG = FORECAST-WEEK_MON.&lt;br /&gt;&lt;br /&gt;        W_E1EDP20_DATA-EDATU = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;*       EDIDD-SDATA = W_E1EDP20_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP20_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP20_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP20'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*       CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*            EXPORTING&lt;br /&gt;&lt;br /&gt;*                 I_SEGNAM = 'E1EDP20'&lt;br /&gt;&lt;br /&gt;*                 I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*            EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*                 OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* write record to $ delimited file&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;        OUTREC-MATNR = PRODUCTS-MATNR.&lt;br /&gt;&lt;br /&gt;        OUTREC-IDNLF = EINA-IDNLF.&lt;br /&gt;&lt;br /&gt;        OUTREC-WEEK_MON = FORECAST-WEEK_MON.&lt;br /&gt;&lt;br /&gt;        OUTREC-PERIOD = FORECAST-DATE.&lt;br /&gt;&lt;br /&gt;        WRITE FORECAST-QTY TO  OUTREC-QTY DECIMALS 0.&lt;br /&gt;&lt;br /&gt;        TRANSFER OUTREC TO P_FILE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;* 4.14.5 End of this product&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    W_E1EDP19_DATA-IDTNR = EINA-IDNLF.&lt;br /&gt;&lt;br /&gt;*   EDIDD-SDATA = W_E1EDP19_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDP19_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDP19_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDP19'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;*   CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*        EXPORTING&lt;br /&gt;&lt;br /&gt;*             I_SEGNAM = 'E1EDP19'&lt;br /&gt;&lt;br /&gt;*             I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*        EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*             OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* end of all products&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;* REPLACE WITH MASTER_IDOC_DISTRIBUTE&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEND'&lt;br /&gt;&lt;br /&gt;*      TABLES&lt;br /&gt;&lt;br /&gt;*           T_COMM_IDOC           = COMM_IDOC_CONTROL&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           ERROR_DISTRIBUTE_IDOC = 1&lt;br /&gt;&lt;br /&gt;*           OTHERS                = 2.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  READ TABLE T_BDI_MODEL INDEX 1.      " maximum 1 recipient&lt;br /&gt;&lt;br /&gt;  MOVE 'ORDERS'   TO L_EDIDC-MESTYP.&lt;br /&gt;&lt;br /&gt;  MOVE 'ORDERS01' TO L_EDIDC-IDOCTP.&lt;br /&gt;&lt;br /&gt;  MOVE 'LS'       TO L_EDIDC-RCVPRT.&lt;br /&gt;&lt;br /&gt;* MOVE T_BDI_MODEL-RCVSYSTEM TO L_EDIDC-RCVPRN.&lt;br /&gt;&lt;br /&gt;* partner profile parameter&lt;br /&gt;&lt;br /&gt; MOVE P_PART TO L_EDIDC-RCVPRN.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*- Distribute the iDoc&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'MASTER_IDOC_DISTRIBUTE' IN UPDATE TASK&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;            MASTER_IDOC_CONTROL            = L_EDIDC&lt;br /&gt;&lt;br /&gt;       TABLES&lt;br /&gt;&lt;br /&gt;            COMMUNICATION_IDOC_CONTROL     = COMM_IDOC_CONTROL&lt;br /&gt;&lt;br /&gt;            MASTER_IDOC_DATA               = T_EDIDD&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            ERROR_IN_IDOC_CONTROL          = 01&lt;br /&gt;&lt;br /&gt;            ERROR_WRITING_IDOC_STATUS      = 02&lt;br /&gt;&lt;br /&gt;            ERROR_IN_IDOC_DATA             = 03&lt;br /&gt;&lt;br /&gt;            SENDING_LOGICAL_SYSTEM_UNKNOWN = 04.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  COMMIT WORK.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CLOSE DATASET P_FILE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;FORM IDOC_CREATE.&lt;br /&gt;&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* 4.2 Create idoc segment E1EDK01&lt;br /&gt;&lt;br /&gt;  W_E1EDK01_DATA-BELNR = 'EDI FORECAST'.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDK01_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDK01_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDK01_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDK01'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDK01'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.3 Create idoc segments E1EDK03&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;  W_E1EDK03_DATA-IDDAT = '002'.&lt;br /&gt;&lt;br /&gt;  W_E1EDK03_DATA-DATUM = SY-DATUM.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDK03_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDK03_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDK03_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDK03'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDK03'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;* 4.4 Create idco E1EDKA1&lt;br /&gt;&lt;br /&gt;*--------------------------------------&lt;br /&gt;&lt;br /&gt;  W_E1EDKA1_DATA-PARVW = 'LI'.&lt;br /&gt;&lt;br /&gt;  W_E1EDKA1_DATA-PARTN = P_PART.&lt;br /&gt;&lt;br /&gt;* EDIDD-SDATA = W_E1EDKA1_DATA.&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SDATA = W_E1EDKA1_DATA.&lt;br /&gt;&lt;br /&gt;   W_SDATA = W_E1EDKA1_DATA.                  "????&lt;br /&gt;&lt;br /&gt;   T_EDIDD-SEGNAM = 'E1EDKA1'.&lt;br /&gt;&lt;br /&gt;   APPEND T_EDIDD.&lt;br /&gt;&lt;br /&gt;* CALL FUNCTION 'L_IDOC_SEGMENT_CREATE'&lt;br /&gt;&lt;br /&gt;*      EXPORTING&lt;br /&gt;&lt;br /&gt;*           I_SEGNAM = 'E1EDKA1'&lt;br /&gt;&lt;br /&gt;*           I_SDATA  = EDIDD-SDATA&lt;br /&gt;&lt;br /&gt;*      EXCEPTIONS&lt;br /&gt;&lt;br /&gt;*           OTHERS   = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7038568347586777961?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7038568347586777961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7038568347586777961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7038568347586777961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7038568347586777961'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-implement-edi.html' title='Sample ABAP Program to Implement EDI'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4642879454230072155</id><published>2007-10-18T21:51:00.000+05:30</published><updated>2007-10-18T21:54:30.007+05:30</updated><title type='text'>Sample Program to dynamically change upload/download program for any Table</title><content type='html'>*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZRUNUPLOAD                                                       *&lt;br /&gt;*&amp;                                                                                            *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;    Written by Sheila Titchener abap at iconet-ltd.co.uk       *&lt;br /&gt;*&amp;                                                                                            *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT  ZRUNUPLOAD                              .&lt;br /&gt;&lt;br /&gt;data: code like rssource-line occurs 1 with header line,&lt;br /&gt;      filename(50).&lt;br /&gt;&lt;br /&gt;PARAMETERS: p_dir(80)&lt;br /&gt;       DEFAULT 'C:\Documents and Settings\My Documents',&lt;br /&gt;       p_file(20).&lt;br /&gt;&lt;br /&gt;read report 'ZUPLOAD' into code.&lt;br /&gt;&lt;br /&gt;LOOP AT code.&lt;br /&gt;  IF code CS 'ztest'.&lt;br /&gt;    REPLACE 'ztest' WITH p_file INTO code.&lt;br /&gt;    MODIFY code INDEX sy-tabix.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;insert report 'ZUPLOAD1' from code.&lt;br /&gt;&lt;br /&gt;commit work.&lt;br /&gt;&lt;br /&gt;CONCATENATE p_dir p_file '.xls' INTO filename.&lt;br /&gt;&lt;br /&gt;submit ZUPLOAD1 with p_file = p_file.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4642879454230072155?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4642879454230072155/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4642879454230072155' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4642879454230072155'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4642879454230072155'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-program-to-dynamically-change.html' title='Sample Program to dynamically change upload/download program for any Table'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-261073657032670819</id><published>2007-10-18T21:49:00.000+05:30</published><updated>2007-10-18T21:51:32.364+05:30</updated><title type='text'>Sample ABAP Program to download table using new function GUI_DOWNLOAD</title><content type='html'>*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZDOWNLOAD                                                   *&lt;br /&gt;*&amp;                                                                     *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;   This program uses the new function GUI_DOWNLOAD                   *&lt;br /&gt;*&amp;   Output will be TAB delimited and include MANDT                    *&lt;br /&gt;*&amp;   It can be opened directly by Microsoft Excel                      *&lt;br /&gt;*&amp;   To use this program for any Database Table replace ZTEST with     *&lt;br /&gt;*&amp;   new table name.                                                   *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;   AUTHOR: Sheila Titchener - abap at iconet-ltd.co.uk               *&lt;br /&gt;*&amp;   Date:   February 2004                                             *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT  zdownload MESSAGE-ID bd.&lt;br /&gt;&lt;br /&gt;DATA: w_tab TYPE ztest.&lt;br /&gt;DATA: i_tab TYPE STANDARD TABLE OF ztest.&lt;br /&gt;&lt;br /&gt;DATA: v_subrc(2),&lt;br /&gt;      v_recswritten(6).&lt;br /&gt;&lt;br /&gt;PARAMETERS: p_file(80)&lt;br /&gt;       DEFAULT 'D:\\ICONET\\SAP\\ZTEST.DAT'.&lt;br /&gt;&lt;br /&gt;DATA: filename TYPE string.&lt;br /&gt;&lt;br /&gt;filename = p_file.&lt;br /&gt;&lt;br /&gt;SELECT * FROM  ztest INTO TABLE I_TAB.&lt;br /&gt;&lt;br /&gt;* If text fields appear right justified or columns not lined up in output set&lt;br /&gt;* TRUNC_TRAILING_BLANKS to X&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'GUI_DOWNLOAD'&lt;br /&gt;  EXPORTING&lt;br /&gt;*   BIN_FILESIZE                  =&lt;br /&gt;    filename                      = filename&lt;br /&gt;*   FILETYPE                      = 'ASC'&lt;br /&gt;*   APPEND                        = ' '&lt;br /&gt;    WRITE_FIELD_SEPARATOR         = 'X'&lt;br /&gt;*   HEADER                        = '00'&lt;br /&gt;    TRUNC_TRAILING_BLANKS         = 'X '&lt;br /&gt;*   WRITE_LF                      = 'X'&lt;br /&gt;*   COL_SELECT                    = ' '&lt;br /&gt;*   COL_SELECT_MASK               = ' '&lt;br /&gt;* IMPORTING&lt;br /&gt;*   FILELENGTH                    =&lt;br /&gt;  tables&lt;br /&gt;    data_tab                      = I_TAB&lt;br /&gt; EXCEPTIONS&lt;br /&gt;   FILE_WRITE_ERROR              = 1&lt;br /&gt;   NO_BATCH                      = 2&lt;br /&gt;   GUI_REFUSE_FILETRANSFER       = 3&lt;br /&gt;   INVALID_TYPE                  = 4&lt;br /&gt;   NO_AUTHORITY                  = 5&lt;br /&gt;   UNKNOWN_ERROR                 = 6&lt;br /&gt;   HEADER_NOT_ALLOWED            = 7&lt;br /&gt;   SEPARATOR_NOT_ALLOWED         = 8&lt;br /&gt;   FILESIZE_NOT_ALLOWED          = 9&lt;br /&gt;   HEADER_TOO_LONG               = 10&lt;br /&gt;   DP_ERROR_CREATE               = 11&lt;br /&gt;   DP_ERROR_SEND                 = 12&lt;br /&gt;   DP_ERROR_WRITE                = 13&lt;br /&gt;   UNKNOWN_DP_ERROR              = 14&lt;br /&gt;   ACCESS_DENIED                 = 15&lt;br /&gt;   DP_OUT_OF_MEMORY              = 16&lt;br /&gt;   DISK_FULL                     = 17&lt;br /&gt;   DP_TIMEOUT                    = 18&lt;br /&gt;   FILE_NOT_FOUND                = 19&lt;br /&gt;   DATAPROVIDER_EXCEPTION        = 20&lt;br /&gt;   CONTROL_FLUSH_ERROR           = 21&lt;br /&gt;   OTHERS                        = 22&lt;br /&gt;          .&lt;br /&gt;&lt;br /&gt;* SYST FIELDS ARE NOT SET BY THIS FUNCTION SO DISPLAY THE ERROR CODE *&lt;br /&gt;&lt;br /&gt;IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  v_subrc = sy-subrc.&lt;br /&gt;  MESSAGE e899 WITH 'File Open Error' v_subrc.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DESCRIBE TABLE i_tab LINES v_recswritten.&lt;br /&gt;&lt;br /&gt;MESSAGE i899 WITH v_recswritten 'Records Written from ZTEST'.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-261073657032670819?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/261073657032670819/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=261073657032670819' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/261073657032670819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/261073657032670819'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-download-table.html' title='Sample ABAP Program to download table using new function GUI_DOWNLOAD'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4401445314407965044</id><published>2007-10-18T21:48:00.000+05:30</published><updated>2007-10-18T21:49:30.551+05:30</updated><title type='text'>Sample ABAP Program to Download file to Presentation Server</title><content type='html'>DATA: BEGIN OF I_VEND OCCURS 0,&lt;br /&gt;&lt;br /&gt;      NAME1 LIKE LFA1-NAME1,&lt;br /&gt;&lt;br /&gt;      LIFNR LIKE MSEG-LIFNR,&lt;br /&gt;&lt;br /&gt;      MATKL LIKE MARA-MATKL,&lt;br /&gt;&lt;br /&gt;      MATNR LIKE MSEG-MATNR,&lt;br /&gt;&lt;br /&gt;      MAKTX LIKE MAKT-MAKTX,&lt;br /&gt;&lt;br /&gt;      WERKS LIKE MSEG-WERKS,&lt;br /&gt;&lt;br /&gt;      SOBKZ LIKE MSEG-SOBKZ,&lt;br /&gt;&lt;br /&gt;      MENGE LIKE MSEG-MENGE,&lt;br /&gt;&lt;br /&gt;      MEINS LIKE MSEG-MEINS,&lt;br /&gt;&lt;br /&gt;      DMBTR LIKE MSEG-DMBTR,&lt;br /&gt;&lt;br /&gt;      COUNT TYPE I,&lt;br /&gt;&lt;br /&gt;      END OF I_VEND.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF FIELDNAMES OCCURS 1,&lt;br /&gt;&lt;br /&gt;      NAME(60),&lt;br /&gt;&lt;br /&gt;      END OF FIELDNAMES.&lt;br /&gt;&lt;br /&gt;                           " CHECK_UNITS&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;      Form  DOWNLOAD_VENDOR&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM DOWNLOAD_VENDOR.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  PERFORM VEND_FIELDNAMES.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'WS_DOWNLOAD'&lt;br /&gt;&lt;br /&gt;       EXPORTING&lt;br /&gt;&lt;br /&gt;*         BIN_FILESIZE        = ' '&lt;br /&gt;&lt;br /&gt;*         CODEPAGE            = ' '&lt;br /&gt;&lt;br /&gt;            FILENAME            = FILENAME&lt;br /&gt;&lt;br /&gt;            FILETYPE            = 'DAT'&lt;br /&gt;&lt;br /&gt;*         MODE                = ' '&lt;br /&gt;&lt;br /&gt;*         WK1_N_FORMAT        = ' '&lt;br /&gt;&lt;br /&gt;*         WK1_N_SIZE          = ' '&lt;br /&gt;&lt;br /&gt;*         WK1_T_FORMAT        = ' '&lt;br /&gt;&lt;br /&gt;*         WK1_T_SIZE          = ' '&lt;br /&gt;&lt;br /&gt;*         COL_SELECT          = ' '&lt;br /&gt;&lt;br /&gt;*         COL_SELECTMASK      = ' '&lt;br /&gt;&lt;br /&gt;*    importing&lt;br /&gt;&lt;br /&gt;*         filelength          =&lt;br /&gt;&lt;br /&gt;       TABLES&lt;br /&gt;&lt;br /&gt;            DATA_TAB            = I_VEND&lt;br /&gt;&lt;br /&gt;            FIELDNAMES          = FIELDNAMES&lt;br /&gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;&lt;br /&gt;            FILE_OPEN_ERROR     = 1&lt;br /&gt;&lt;br /&gt;            FILE_WRITE_ERROR    = 2&lt;br /&gt;&lt;br /&gt;            INVALID_FILESIZE    = 3&lt;br /&gt;&lt;br /&gt;            INVALID_TABLE_WIDTH = 4&lt;br /&gt;&lt;br /&gt;            INVALID_TYPE        = 5&lt;br /&gt;&lt;br /&gt;            NO_BATCH            = 6&lt;br /&gt;&lt;br /&gt;            UNKNOWN_ERROR       = 7&lt;br /&gt;&lt;br /&gt;            OTHERS              = 8.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;IF SY-SUBRC NE 0.&lt;br /&gt;&lt;br /&gt; MESSAGE I004(YM) WITH FILENAME SY-SUBRC.&lt;br /&gt;&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " DOWNLOAD_VENDOR&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;      Form  FIELDNAMES&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM VEND_FIELDNAMES.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME = 'Vendor name'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME = 'Vendor No'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME = 'Mat. Group'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME = 'Material No'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME = 'Material Desc.'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'Plant'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'SSI'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'Total Qty'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'UOM'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'Total value received'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;  FIELDNAMES-NAME =   'Number'.&lt;br /&gt;&lt;br /&gt;  APPEND FIELDNAMES.&lt;br /&gt;&lt;br /&gt;ENDFORM.&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/8952827334369603967-4401445314407965044?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4401445314407965044/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4401445314407965044' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4401445314407965044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4401445314407965044'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-download-file-to.html' title='Sample ABAP Program to Download file to Presentation Server'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4433978694327062789</id><published>2007-10-18T21:05:00.000+05:30</published><updated>2007-10-18T21:06:11.880+05:30</updated><title type='text'>Sample ABAP Program to display pop message to avoid abort</title><content type='html'>form output_message using p_mess.&lt;br /&gt;&lt;br /&gt;* use popup instead of message so selection screen&lt;br /&gt;* is saved&lt;br /&gt;  if sy-batch = space.&lt;br /&gt;      CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'&lt;br /&gt;        exporting&lt;br /&gt;          textline1 = p_mess.&lt;br /&gt;&lt;br /&gt;   else.&lt;br /&gt;      MESSAGE E899(bd) WITH p_mess.&lt;br /&gt;   endif.&lt;br /&gt;endform.                    " output_message&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4433978694327062789?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4433978694327062789/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4433978694327062789' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4433978694327062789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4433978694327062789'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-display-pop.html' title='Sample ABAP Program to display pop message to avoid abort'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3693136705481343864</id><published>2007-10-18T21:04:00.000+05:30</published><updated>2007-10-18T21:05:05.326+05:30</updated><title type='text'>Sample ABAP Program of Dialogue Module Pool</title><content type='html'>PROGRAM YLWMM005 MESSAGE-ID YL.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* maintain additional fields on table t336 - difference indicators&lt;br /&gt;* written by sheila titchener&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;TABLES: T336,                          " Difference indicators&lt;br /&gt;        T300T,                         " Warehouse description&lt;br /&gt;        T336T.                         " Difference indicator text&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: OK_CODE(4),&lt;br /&gt;      OK_CODE2(4),&lt;br /&gt;      W_ERR_FLAG.&lt;br /&gt;DATA: BEGIN OF XT336  OCCURS 1,&lt;br /&gt;       X  LIKE T336,&lt;br /&gt;       DTEXT LIKE T336T-DTEXT,&lt;br /&gt;      END OF XT336.&lt;br /&gt;DATA  C LIKE SY-INDEX.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE USER_COMMAND_0100 INPUT.&lt;br /&gt;*                       Warehouse must not be space.&lt;br /&gt;  CHECK T336-LGNUM NE ' '.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'SAVE'.&lt;br /&gt;      PERFORM SAVE_T336.&lt;br /&gt;    WHEN 'DISP'.&lt;br /&gt;      PERFORM DISPLAY_T336.&lt;br /&gt;    WHEN 'LIST'.&lt;br /&gt;      C = 0.&lt;br /&gt;      PERFORM LIST_T336.&lt;br /&gt;    WHEN OTHERS.&lt;br /&gt;      PERFORM DISPLAY_T336.&lt;br /&gt;  ENDCASE.&lt;br /&gt;  CLEAR OK_CODE.&lt;br /&gt;ENDMODULE.                             " USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0100 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'AMEND'.&lt;br /&gt;  SET TITLEBAR '100'.&lt;br /&gt;ENDMODULE.                             " STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  SAVE_T336&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Save screen details&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM SAVE_T336.&lt;br /&gt;* reread record to make sure key is for last record read&lt;br /&gt;* but store new value of ZZNOTO first&lt;br /&gt;  DATA: W_ZZNOTO LIKE T336-ZZNOTO.&lt;br /&gt;  W_ZZNOTO = T336-ZZNOTO.&lt;br /&gt;  SELECT SINGLE * FROM  T336&lt;br /&gt;         WHERE  LGNUM       = T336-LGNUM&lt;br /&gt;         AND    KZDIF       = T336-KZDIF     .&lt;br /&gt;  IF SY-SUBRC = 0.&lt;br /&gt;    T336-ZZNOTO = W_ZZNOTO.&lt;br /&gt;    UPDATE T336.&lt;br /&gt;    MESSAGE I018 WITH 'T336'.&lt;br /&gt;    COMMIT WORK.&lt;br /&gt;  ELSE.&lt;br /&gt;    MESSAGE I029 WITH T336-LGNUM T336-KZDIF.&lt;br /&gt;    W_ERR_FLAG = 'Y'.&lt;br /&gt;  ENDIF.&lt;br /&gt;*&lt;br /&gt;  CLEAR OK_CODE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  DISPLAY_LOC&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM DISPLAY_T336.&lt;br /&gt;  W_ERR_FLAG = 'N'.&lt;br /&gt;*&lt;br /&gt;  SELECT SINGLE * FROM T336&lt;br /&gt;     WHERE LGNUM = T336-LGNUM&lt;br /&gt;       AND    KZDIF = T336-KZDIF.&lt;br /&gt;  IF SY-SUBRC NE 0.&lt;br /&gt;    MESSAGE I065.&lt;br /&gt;    W_ERR_FLAG = 'Y'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  CLEAR T300T-LNUMT.&lt;br /&gt;  SELECT SINGLE * FROM  T300T&lt;br /&gt;         WHERE  SPRAS       = SY-LANGU&lt;br /&gt;         AND    LGNUM       = T336-LGNUM.&lt;br /&gt;&lt;br /&gt;  SELECT SINGLE * FROM  T336T&lt;br /&gt;         WHERE  SPRAS       = SY-LANGU&lt;br /&gt;         AND    LGNUM       = T336-LGNUM&lt;br /&gt;         AND    KZDIF       = T336-KZDIF.&lt;br /&gt;&lt;br /&gt;*                             Abort if no warehouse&lt;br /&gt;  CHECK W_ERR_FLAG = 'N'.&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       exit commands are processed before validation                  *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE EXIT_COMMAND INPUT.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE.&lt;br /&gt;    WHEN 'EXIT'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'CANC'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'BACK'. CLEAR OK_CODE. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                             " EXIT_COMMAND  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  READ_T336&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM LIST_T336.&lt;br /&gt;  DATA: T336-DTEXT_ST LIKE T336T-DTEXT.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  T336-DTEXT_ST = T336T-DTEXT.&lt;br /&gt;  SELECT * FROM T336 INTO TABLE XT336&lt;br /&gt;         WHERE LGNUM = T336-LGNUM.&lt;br /&gt;&lt;br /&gt;  LOOP AT XT336.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  T336T&lt;br /&gt;           WHERE  SPRAS       = 'E'&lt;br /&gt;           AND    LGNUM       = T336-LGNUM&lt;br /&gt;           AND    KZDIF       = XT336-X-KZDIF.&lt;br /&gt;    XT336-DTEXT = T336T-DTEXT.&lt;br /&gt;    MODIFY XT336.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;  T336T-DTEXT = T336-DTEXT_ST.&lt;br /&gt;  CLEAR OK_CODE. SET SCREEN 200. LEAVE SCREEN.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " LIST_T336&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  EXIT_COMMAND_200  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE EXIT_COMMAND_200 INPUT.&lt;br /&gt;&lt;br /&gt;  CASE OK_CODE2.&lt;br /&gt;    WHEN 'EXIT'. CLEAR OK_CODE2. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'CANC'. CLEAR OK_CODE2. SET SCREEN 0. LEAVE SCREEN.&lt;br /&gt;    WHEN 'BACK'. CLEAR OK_CODE2. SET SCREEN 100. LEAVE SCREEN.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                             " EXIT_COMMAND_200  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0200  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text                                                           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE STATUS_0200 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'POPUP'.&lt;br /&gt;*  SET TITLEBAR 'xxx'.&lt;br /&gt;  IF T300T-LGNUM NE T336-LGNUM.&lt;br /&gt;&lt;br /&gt;    SELECT SINGLE * FROM  T300T&lt;br /&gt;           WHERE  SPRAS       = SY-LANGU&lt;br /&gt;           AND    LGNUM       = T336-LGNUM     .&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDMODULE.                             " STATUS_0200  OUTPUT&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3693136705481343864?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3693136705481343864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3693136705481343864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3693136705481343864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3693136705481343864'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-dialogue-module.html' title='Sample ABAP Program of Dialogue Module Pool'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8288872910368342577</id><published>2007-10-18T21:02:00.000+05:30</published><updated>2007-10-18T21:04:25.298+05:30</updated><title type='text'>Sample ABAP Program to DIALOGUE FLOW LOGIC</title><content type='html'>PROCESS BEFORE OUTPUT.                                          &lt;br /&gt; MODULE STATUS_0100.                                            &lt;br /&gt;*                                                               &lt;br /&gt;PROCESS AFTER INPUT.                                            &lt;br /&gt; MODULE EXIT_COMMAND AT EXIT-COMMAND.                           &lt;br /&gt;* Data is not in the screen fields until after the field stateme&lt;br /&gt;CHAIN.                                                          &lt;br /&gt; FIELD:                                                         &lt;br /&gt;        S_TANUM,                                                &lt;br /&gt;        S_TAPOS MODULE VAL_TANUM.                               &lt;br /&gt;ENDCHAIN.                                                       &lt;br /&gt;* chain ensures all fields are open after an error              &lt;br /&gt;                                                                &lt;br /&gt;CHAIN.                                                          &lt;br /&gt; FIELD: S_ZZTRACKING,                                           &lt;br /&gt;        S_EXIDV,                                                &lt;br /&gt;        S_TANUM,                        &lt;br /&gt;        S_TAPOS MODULE VAL_ZZTRACKING.  &lt;br /&gt;ENDCHAIN.                               &lt;br /&gt;* process data entered                  &lt;br /&gt; MODULE USER_COMMAND_0100.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8288872910368342577?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8288872910368342577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8288872910368342577' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8288872910368342577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8288872910368342577'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-dialogue-flow.html' title='Sample ABAP Program to DIALOGUE FLOW LOGIC'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4310165652012107967</id><published>2007-10-18T21:00:00.000+05:30</published><updated>2007-10-18T21:01:50.639+05:30</updated><title type='text'>Sample ABAP Program to Delete a file from the application server</title><content type='html'>REPORT ZDELETE.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Delete a file on the application server.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;PARAMETERS:  P_DIR LIKE RLGRAP-FILENAME&lt;br /&gt;                   DEFAULT   '/usr/sap/trans/',&lt;br /&gt;             P_FILE1 LIKE RLGRAP-FILENAME.&lt;br /&gt;&lt;br /&gt;DATA: P_FILE(128).&lt;br /&gt;DATA: W_ANS.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;CONCATENATE P_DIR P_FILE1 INTO P_FILE.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* check file exists&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;OPEN DATASET P_FILE FOR INPUT.&lt;br /&gt;IF SY-SUBRC NE 0.&lt;br /&gt;  MESSAGE E899(BD) WITH P_FILE 'does not exist'.&lt;br /&gt;  EXIT.&lt;br /&gt;ELSE.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'POPUP_CONTINUE_YES_NO'&lt;br /&gt;     EXPORTING&lt;br /&gt;          DEFAULTOPTION = 'N'&lt;br /&gt;          TEXTLINE1     = P_DIR&lt;br /&gt;          TEXTLINE2     = P_FILE1&lt;br /&gt;          TITEL         = 'ARE YOU SURE YOU WANT TO DELETE'&lt;br /&gt;*         START_COLUMN  = 25&lt;br /&gt;*         START_ROW     = 6&lt;br /&gt;     IMPORTING&lt;br /&gt;          ANSWER        =  W_ANS&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          OTHERS        = 1.&lt;br /&gt;&lt;br /&gt;ENDIF.&lt;br /&gt;CLOSE DATASET P_FILE.&lt;br /&gt;CHECK W_ANS = 'J'.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* delete&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;DELETE DATASET P_FILE.&lt;br /&gt;&lt;br /&gt;IF SY-SUBRC NE 0.&lt;br /&gt;  MESSAGE E899(BD) WITH  'Invalid file name' P_FILE.&lt;br /&gt;ELSE.&lt;br /&gt;  CLOSE DATASET P_FILE.&lt;br /&gt;  MESSAGE I899(BD) WITH P_DIR P_FILE1 'DELETED'.&lt;br /&gt;ENDIF.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4310165652012107967?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4310165652012107967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4310165652012107967' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4310165652012107967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4310165652012107967'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-delete-file-from.html' title='Sample ABAP Program to Delete a file from the application server'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4733750747005748241</id><published>2007-10-18T20:59:00.000+05:30</published><updated>2007-10-18T21:00:52.951+05:30</updated><title type='text'>Sample ABAP Program to Compare to Unix or PC files and print differences</title><content type='html'>REPORT Ycompare MESSAGE-ID Z1&lt;br /&gt;                NO STANDARD PAGE HEADING&lt;br /&gt;*               LINE-COUNT 65&lt;br /&gt;                LINE-SIZE  255.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* Topic:         Compare 2 unix  or pc files and print the differences*&lt;br /&gt;*                                                                     *&lt;br /&gt;* Author:        Sheila Titchener&lt;br /&gt;*                                                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;DATA: BEGIN OF TAB1 OCCURS 0,&lt;br /&gt;      LINE(5000),&lt;br /&gt;      END OF TAB1.&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF TAB2 OCCURS 0,&lt;br /&gt;      LINE(5000),&lt;br /&gt;      END OF TAB2.&lt;br /&gt;DATA: PARCOM_LOC(100) TYPE C.&lt;br /&gt;DATA: COLOR TYPE I.&lt;br /&gt;DATA: COUNT(16) TYPE C.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* Parameters.                                                       *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN SKIP 2.&lt;br /&gt;  PARAMETERS: PARCOM1(45) TYPE C LOWER CASE,&lt;br /&gt;              PARCOM2(45) TYPE C LOWER CASE,&lt;br /&gt;              PARCOM3 LIKE RLGRAP-FILENAME,&lt;br /&gt;              PARCOM4 LIKE RLGRAP-FILENAME ,&lt;br /&gt;              P_PC RADIOBUTTON GROUP ONE,&lt;br /&gt;              P_UNIX RADIOBUTTON GROUP ONE.&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* Parameter validation                                              *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* TOP-OF-PAGE.                                                      *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;TOP-OF-PAGE.&lt;br /&gt;  PERFORM WRITE_PAGE_HEADING.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* INITIALIZATION.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;INITIALIZATION.&lt;br /&gt;  PARCOM1 = '/usr/sap/trans/* '.&lt;br /&gt;  PARCOM2 = '/usr/sap/trans/* '.&lt;br /&gt;  PARCOM3 = 'C:\TEMP\'.&lt;br /&gt;  PARCOM4 = 'C:\TEMP\'.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* START-OF-SELECTION.                                               *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;  IF P_UNIX = 'X'.&lt;br /&gt;  PERFORM COLLECT_DATA.&lt;br /&gt;  ELSE.&lt;br /&gt;  PERFORM COLLECT_PC_DATA.&lt;br /&gt;  ENDIF.&lt;br /&gt;  PERFORM WRITE_FILE_CONTENT.&lt;br /&gt;*  perform write_number_of_content.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* FORM COLLECT_DATA.                                                  *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM COLLECT_DATA.&lt;br /&gt;    OPEN DATASET PARCOM1 FOR INPUT IN TEXT MODE.&lt;br /&gt;    DO.&lt;br /&gt;      READ DATASET PARCOM1 INTO TAB1.&lt;br /&gt;      IF SY-SUBRC NE 0.&lt;br /&gt;        EXIT.&lt;br /&gt;      ENDIF.&lt;br /&gt;      APPEND TAB1.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CLOSE DATASET PARCOM1.&lt;br /&gt;&lt;br /&gt;    OPEN DATASET PARCOM2 FOR INPUT IN TEXT MODE.&lt;br /&gt;    DO.&lt;br /&gt;      READ DATASET PARCOM2 INTO TAB2.&lt;br /&gt;      IF SY-SUBRC NE 0.&lt;br /&gt;        EXIT.&lt;br /&gt;      ENDIF.&lt;br /&gt;      APPEND TAB2.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CLOSE DATASET PARCOM2.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_FILE_CONTENT.                                          *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_FILE_CONTENT.&lt;br /&gt;&lt;br /&gt;  LOOP AT TAB1.&lt;br /&gt;    READ TABLE TAB2 INDEX SY-TABIX.&lt;br /&gt;    IF TAB1(7) = 'Element'.&lt;br /&gt;       WRITE: / TAB1.&lt;br /&gt;    ENDIF.&lt;br /&gt;    IF TAB1 NE TAB2 .&lt;br /&gt;       WRITE: / SY-TABIX NO-GAP, TAB1.&lt;br /&gt;       WRITE: /  TAB2.&lt;br /&gt;       WRITE:/1(80) SY-ULINE.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_PAGE_HEADING.                                          *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_PAGE_HEADING.&lt;br /&gt;&lt;br /&gt;   WRITE:/1(80) SY-ULINE.&lt;br /&gt;   PERFORM STREGER_2.&lt;br /&gt;   FORMAT INTENSIFIED.&lt;br /&gt;   WRITE: /2(79) SPACE       COLOR 1.&lt;br /&gt;   WRITE:  2    SY-DATUM     COLOR 1.&lt;br /&gt;   IF P_UNIX = 'x'.&lt;br /&gt;   WRITE: /    PARCOM1   COLOR 1.&lt;br /&gt;   WRITE: 45    PARCOM2   COLOR 1.&lt;br /&gt;   ELSE.&lt;br /&gt;   WRITE: /    PARCOM3   COLOR 1.&lt;br /&gt;   WRITE: 45    PARCOM4   COLOR 1.&lt;br /&gt;   ENDIF.&lt;br /&gt;   PERFORM STREGER_2.&lt;br /&gt;   WRITE:/1(80) SY-ULINE.&lt;br /&gt;   PERFORM STREGER_2.&lt;br /&gt;   FORMAT INTENSIFIED.&lt;br /&gt;   WRITE: /2(79) SPACE COLOR 3.&lt;br /&gt;   WRITE:   2    'Offset' COLOR 3,&lt;br /&gt;           10    '0....+....1....+....2....+....3....+....' COLOR 3,&lt;br /&gt;           50    '4....+....5....+....6....+....' COLOR 3.&lt;br /&gt;   PERFORM STREGER_3.&lt;br /&gt;   FORMAT RESET.&lt;br /&gt;   WRITE:/1(80) SY-ULINE.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM STREGER_2.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM STREGER_2.&lt;br /&gt;   PERFORM WRITE_VLINE USING ' '  1.&lt;br /&gt;   PERFORM WRITE_VLINE USING ' '  80.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM STREGER_3.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM STREGER_3.&lt;br /&gt;   PERFORM WRITE_VLINE USING ' '  1.&lt;br /&gt;   PERFORM WRITE_VLINE USING ' '  9.&lt;br /&gt;   PERFORM WRITE_VLINE USING ' '  80.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* WRITE_VLINE.                                                      *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_VLINE USING MODE POS.&lt;br /&gt;   IF MODE NE 'T'.&lt;br /&gt;     FORMAT INTENSIFIED.&lt;br /&gt;   ENDIF.&lt;br /&gt;   POSITION POS.&lt;br /&gt;   WRITE: SY-VLINE.&lt;br /&gt;   IF MODE NE 'T'.&lt;br /&gt;     FORMAT RESET.&lt;br /&gt;   ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM COLORLINE.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM COLORLINE USING TEXT1 TEXT2.&lt;br /&gt;   ON CHANGE OF SY-TABIX.&lt;br /&gt;      COLOR = COLOR + 1.&lt;br /&gt;      COLOR = COLOR MOD 2.&lt;br /&gt;   ENDON.&lt;br /&gt;   FORMAT RESET.&lt;br /&gt;   IF COLOR = 1.&lt;br /&gt;      WRITE: /2(79) SPACE COLOR 2.&lt;br /&gt;      IF TEXT1 = '  0'.&lt;br /&gt;         WRITE: 3 TEXT1 COLOR 2, 11 TEXT2 COLOR 2.&lt;br /&gt;      ELSE.&lt;br /&gt;         WRITE: 3 TEXT1 COLOR 2, 10 TEXT2 COLOR 2.&lt;br /&gt;      ENDIF.&lt;br /&gt;   ELSE.&lt;br /&gt;      WRITE: /2(79) SPACE COLOR 4.&lt;br /&gt;      IF TEXT1 = '  0'.&lt;br /&gt;         WRITE: 3 TEXT1 COLOR 4, 11 TEXT2 COLOR 4.&lt;br /&gt;      ELSE.&lt;br /&gt;         WRITE: 3 TEXT1 COLOR 4, 10 TEXT2 COLOR 4.&lt;br /&gt;      ENDIF.&lt;br /&gt;   ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_NUMBER_OF_CONTENT.                                     *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_NUMBER_OF_CONTENT.&lt;br /&gt;   DESCRIBE TABLE TAB1 LINES COUNT.&lt;br /&gt;&lt;br /&gt;   FORMAT RESET. CONDENSE COUNT.&lt;br /&gt;   RESERVE 3 LINES.&lt;br /&gt;   WRITE:/1(80) SY-ULINE.&lt;br /&gt;   WRITE: /2(79) SPACE                         COLOR 2.&lt;br /&gt;   WRITE: 2      'Number of records in file:'  COLOR 2,&lt;br /&gt;          29     COUNT                         COLOR 2.&lt;br /&gt;   PERFORM STREGER_2.&lt;br /&gt;   WRITE:/1(80) SY-ULINE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  COLLECT_PC_DATA&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM COLLECT_PC_DATA.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'WS_UPLOAD'&lt;br /&gt;     EXPORTING&lt;br /&gt;*         CODEPAGE            = ' '&lt;br /&gt;          FILENAME            = PARCOM3&lt;br /&gt;*         FILETYPE            = ' '&lt;br /&gt;*         HEADLEN             = ' '&lt;br /&gt;*         LINE_EXIT           = ' '&lt;br /&gt;*         TRUNCLEN            = ' '&lt;br /&gt;*         USER_FORM           = ' '&lt;br /&gt;*         USER_PROG           = ' '&lt;br /&gt;*    IMPORTING&lt;br /&gt;*         FILELENGTH          =&lt;br /&gt;     TABLES&lt;br /&gt;          DATA_TAB            = TAB1&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          CONVERSION_ERROR    = 1&lt;br /&gt;          FILE_OPEN_ERROR     = 2&lt;br /&gt;          FILE_READ_ERROR     = 3&lt;br /&gt;          INVALID_TABLE_WIDTH = 4&lt;br /&gt;          INVALID_TYPE        = 5&lt;br /&gt;          NO_BATCH            = 6&lt;br /&gt;          UNKNOWN_ERROR       = 7&lt;br /&gt;          OTHERS              = 8.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'WS_UPLOAD'&lt;br /&gt;     EXPORTING&lt;br /&gt;*         CODEPAGE            = ' '&lt;br /&gt;          FILENAME            = PARCOM4&lt;br /&gt;*         FILETYPE            = ' '&lt;br /&gt;*         HEADLEN             = ' '&lt;br /&gt;*         LINE_EXIT           = ' '&lt;br /&gt;*         TRUNCLEN            = ' '&lt;br /&gt;*         USER_FORM           = ' '&lt;br /&gt;*         USER_PROG           = ' '&lt;br /&gt;*    IMPORTING&lt;br /&gt;*         FILELENGTH          =&lt;br /&gt;     TABLES&lt;br /&gt;          DATA_TAB            = TAB2&lt;br /&gt;     EXCEPTIONS&lt;br /&gt;          CONVERSION_ERROR    = 1&lt;br /&gt;          FILE_OPEN_ERROR     = 2&lt;br /&gt;          FILE_READ_ERROR     = 3&lt;br /&gt;          INVALID_TABLE_WIDTH = 4&lt;br /&gt;          INVALID_TYPE        = 5&lt;br /&gt;          NO_BATCH            = 6&lt;br /&gt;          UNKNOWN_ERROR       = 7&lt;br /&gt;          OTHERS              = 8.&lt;br /&gt;ENDFORM.                    " COLLECT_PC_DATA&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4733750747005748241?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4733750747005748241/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4733750747005748241' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4733750747005748241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4733750747005748241'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-compare-to-unix.html' title='Sample ABAP Program to Compare to Unix or PC files and print differences'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3795062004499008545</id><published>2007-10-18T20:58:00.000+05:30</published><updated>2007-10-18T20:59:45.700+05:30</updated><title type='text'>Sample ABAP Program to Colour cells in ALV</title><content type='html'>DATA: g_color_green TYPE slis_t_specialcol_alv.&lt;br /&gt;&lt;br /&gt;* create a table of fieldnames to be coloured intensified green -&lt;br /&gt;&lt;br /&gt;  PERFORM colour_cells TABLES g_color_green&lt;br /&gt;        USING 21 31 5.&lt;br /&gt;&lt;br /&gt;|&lt;br /&gt;|&lt;br /&gt;* set cells of this line to intensified green&lt;br /&gt;      IF CONDITION.....&lt;br /&gt;        out-color[] = g_color_green[].&lt;br /&gt;     ENDIF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E05_LAYOUT_BUILD                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*      ALV Layout options                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  &lt;-&gt;  E05_LS_LAYOUT                                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e05_layout_build USING e05_ls_layout TYPE slis_layout_alv.&lt;br /&gt;* Setting this flag avoids having to define field sizes.&lt;br /&gt;  e05_ls_layout-colwidth_optimize = 'X'.&lt;br /&gt;&lt;br /&gt;* FIELD COLOR contains table of FIELDNAME  and COLOURS.&lt;br /&gt;  e05_ls_layout-coltab_fieldname = 'COLOR'.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  colour_cells&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Set up table to color field groups different from default colour&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  &lt;--&gt;  t_color table of fields and colours&lt;br /&gt;*  &lt;--   p_index_from - first field of catalogue to be coloured&lt;br /&gt;*  &lt;--   p_index_to - last field of catalogue to be coloured&lt;br /&gt;*  &lt;--   p_color - color number&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM colour_cells TABLES t_color&lt;br /&gt;        USING p_index_from TYPE sy-index&lt;br /&gt;        p_index_to TYPE sy-index&lt;br /&gt;        p_color TYPE i.&lt;br /&gt;&lt;br /&gt;  DATA: ls_fieldcat TYPE slis_fieldcat_alv,&lt;br /&gt;             w_tab TYPE slis_specialcol_alv.&lt;br /&gt;&lt;br /&gt;* use field catalogue to build new table for consecutive fields&lt;br /&gt;  LOOP AT gt_fieldcat INTO ls_fieldcat FROM p_index_from TO p_index_to.&lt;br /&gt;    w_tab-fieldname = ls_fieldcat-fieldname.&lt;br /&gt;    w_tab-color-col = p_color.&lt;br /&gt;    IF p_color = 5.          "green&lt;br /&gt;      w_tab-color-int = 1.   "intensified on&lt;br /&gt;    ELSE.&lt;br /&gt;      w_tab-color-int = 0.   "intensified off&lt;br /&gt;    ENDIF.&lt;br /&gt;    APPEND w_tab TO t_color.&lt;br /&gt;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.                    " colour_cells&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3795062004499008545?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3795062004499008545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3795062004499008545' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3795062004499008545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3795062004499008545'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-colour-cells-in.html' title='Sample ABAP Program to Colour cells in ALV'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8956381240017048787</id><published>2007-10-18T20:56:00.000+05:30</published><updated>2007-10-18T20:57:46.241+05:30</updated><title type='text'>Sample ABAP Program to Calculate difference between  date/times in hours</title><content type='html'>DATA: l_start TYPE t,&lt;br /&gt;        l_end TYPE t,&lt;br /&gt;        l_startdate TYPE d,&lt;br /&gt;        l_enddate TYPE d,&lt;br /&gt;        l_hours TYPE p DECIMALS 2.&lt;br /&gt;&lt;br /&gt;  l_start = p_starttime.&lt;br /&gt;  l_end = p_endtime.&lt;br /&gt;  l_startdate = p_startdate.&lt;br /&gt;  l_enddate = p_enddate.&lt;br /&gt;&lt;br /&gt;  l_hours = ( ( l_enddate - l_startdate ) * 24&lt;br /&gt;             + ( l_end - l_start ) / 3600 ).&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8956381240017048787?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8956381240017048787/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8956381240017048787' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8956381240017048787'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8956381240017048787'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-calculate.html' title='Sample ABAP Program to Calculate difference between  date/times in hours'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6495839203848522300</id><published>2007-10-18T20:54:00.000+05:30</published><updated>2007-10-18T20:55:36.352+05:30</updated><title type='text'>Sample ABAP Program of  BW User Exit</title><content type='html'>CMOD Enhancement - RSAP0001&lt;br /&gt;&lt;br /&gt;Add new fields to Extract structure.&lt;br /&gt;&lt;br /&gt;Run RSA6 to 'unhide' new fields.&lt;br /&gt;&lt;br /&gt;FUNCTION EXIT_SAPLRSAP_001.&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Lokale Schnittstelle:&lt;br /&gt;*"       IMPORTING&lt;br /&gt;*"             VALUE(I_DATASOURCE) TYPE  RSAOT_OLTPSOURCE&lt;br /&gt;*"             VALUE(I_ISOURCE) TYPE  SBIWA_S_INTERFACE-ISOURCE&lt;br /&gt;*"             VALUE(I_UPDMODE) TYPE  SBIWA_S_INTERFACE-UPDMODE&lt;br /&gt;*"       TABLES&lt;br /&gt;*"              I_T_SELECT TYPE  SBIWA_T_SELECT&lt;br /&gt;*"              I_T_FIELDS TYPE  SBIWA_T_FIELDS&lt;br /&gt;*"              C_T_DATA&lt;br /&gt;*"              C_T_MESSAGES STRUCTURE  BALMI OPTIONAL&lt;br /&gt;*"       EXCEPTIONS&lt;br /&gt;*"              RSAP_CUSTOMER_EXIT_ERROR&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  INCLUDE ZXRSAU01.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFUNCTION.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;  Include           ZXRSAU01                                         *&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* Written by Sheila Titchener - www.iconet-ltd.co.uk - Oct 2005&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt; DATA: l_s_mc13vd0itm LIKE mc13vd0itm,  " extract structure&lt;br /&gt;       l_tabix      LIKE sy-tabix,&lt;br /&gt;       l_knumv TYPE knumv.&lt;br /&gt;&lt;br /&gt;  data: t_konv type table of konv.&lt;br /&gt;  data: w_konv type konv.&lt;br /&gt;&lt;br /&gt; CASE i_datasource.&lt;br /&gt;*/ in bw 1.2b case i_isource.&lt;br /&gt;&lt;br /&gt;   WHEN '2LIS_13_VDITM'.&lt;br /&gt;     LOOP AT c_t_data INTO l_s_mc13vd0itm.&lt;br /&gt;       l_tabix = sy-tabix.&lt;br /&gt;       SELECT SINGLE knumv FROM vbrk&lt;br /&gt;           INTO l_knumv&lt;br /&gt;         WHERE vbeln = l_s_mc13vd0itm-vbeln.&lt;br /&gt;       IF sy-subrc = 0.&lt;br /&gt;         SELECT * FROM konv INTO TABLE t_konv&lt;br /&gt;             WHERE knumv = L_knumv&lt;br /&gt;               AND kposn = l_s_mc13vd0itm-posnr.&lt;br /&gt;&lt;br /&gt;         LOOP AT t_konv INTO w_konv.&lt;br /&gt;&lt;br /&gt;            CASE w_konv-kschl.&lt;br /&gt;             WHEN 'PR00'.&lt;br /&gt;               l_s_mc13vd0itm-kschl1 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert1 = w_konv-kwert.&lt;br /&gt;             WHEN 'ZELE'.&lt;br /&gt;               l_s_mc13vd0itm-kschl2 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert2 = w_konv-kwert.&lt;br /&gt;             WHEN 'SKTV'.&lt;br /&gt;               l_s_mc13vd0itm-kschl3 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert3 = w_konv-kwert.&lt;br /&gt;             WHEN 'VPRS'.&lt;br /&gt;               l_s_mc13vd0itm-kschl4 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert4 = w_konv-kwert.&lt;br /&gt;             WHEN 'ZCST'.&lt;br /&gt;               l_s_mc13vd0itm-kschl5 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert5 = w_konv-kwert.&lt;br /&gt;             WHEN 'ZSUR'.&lt;br /&gt;               l_s_mc13vd0itm-kschl6 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert6 = w_konv-kwert.&lt;br /&gt;             WHEN 'ZSTD'.&lt;br /&gt;               l_s_mc13vd0itm-kschl7 = w_konv-kschl.&lt;br /&gt;               l_s_mc13vd0itm-kwert7 = w_konv-kwert.&lt;br /&gt;           ENDCASE.&lt;br /&gt;&lt;br /&gt;         ENDLOOP.&lt;br /&gt;       ENDIF.&lt;br /&gt;       Modify c_t_data from l_s_mc13vd0itm index l_tabix.&lt;br /&gt;     ENDLOOP.&lt;br /&gt;   WHEN OTHERS.&lt;br /&gt;     EXIT.&lt;br /&gt;&lt;br /&gt; ENDCASE.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6495839203848522300?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6495839203848522300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6495839203848522300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6495839203848522300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6495839203848522300'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-bw-user-exit.html' title='Sample ABAP Program of  BW User Exit'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6558931880504511594</id><published>2007-10-18T20:53:00.000+05:30</published><updated>2007-10-18T20:54:46.214+05:30</updated><title type='text'>Sample ABAP Program of  ALV Grid control using OO methods</title><content type='html'>*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  Z_ALV_SKELETON&lt;br /&gt;*&amp;&lt;br /&gt;*&amp; Author: Sheila Titchener&lt;br /&gt;*&amp; Date:   December 2006&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; ALV Grid control skeleton using OO Methods&lt;br /&gt;*&amp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;REPORT  Z_ALV_SKELETON .&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* internal tables&lt;br /&gt;DATA: i_tab TYPE TABLE OF zchangereq,&lt;br /&gt;      w_tab TYPE zchangereq.&lt;br /&gt;* display field details&lt;br /&gt;DATA: w_field_cat_wa TYPE lvc_s_fcat.   " Field Catalog work area&lt;br /&gt;*&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-020.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;PARAMETERS: p_outs RADIOBUTTON GROUP g1,&lt;br /&gt;            p_comp RADIOBUTTON GROUP g1.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK b1.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*MACROS&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;DEFINE add_field.&lt;br /&gt;* &amp;1 = FIELDNAME &amp;2 = HEADING &amp;3 = Key field flag&lt;br /&gt;  clear w_field_cat_wa.&lt;br /&gt;  w_field_cat_wa-fieldname  = &amp;1.&lt;br /&gt;*  lw_field_cat_wa-ref_table  = p_ref_table.&lt;br /&gt;*  lw_field_cat_wa-inttype    = p_inttype.&lt;br /&gt;*  lw_field_cat_wa-decimals   = p_decimals.&lt;br /&gt;*  lw_field_cat_wa-coltext    = p_coltext.&lt;br /&gt;*  lw_field_cat_wa-seltext    = p_seltext.&lt;br /&gt;*  lw_field_cat_wa-do_sum     = p_do_sum.&lt;br /&gt;*  lw_field_cat_wa-no_out     = p_no_out.&lt;br /&gt;*  lw_field_cat_wa-col_pos    = p_col_pos.&lt;br /&gt;*  lw_field_cat_wa-reptext    = p_coltext.&lt;br /&gt;*  lw_field_cat_wa-colddictxt = p_colddictxt.&lt;br /&gt;  w_field_cat_wa-scrtext_m  = &amp;2.&lt;br /&gt;  w_field_cat_wa-key = &amp;3.&lt;br /&gt;  append w_field_cat_wa to i_field_cat.&lt;br /&gt;END-OF-DEFINITION.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* ALV specific Declarations...........................................&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;* ALV specific Internal table declarations.............................&lt;br /&gt;DATA: i_field_cat TYPE lvc_t_fcat,     " Field catalogue&lt;br /&gt;      i_alv_sort  TYPE lvc_t_sort.     " Sort table&lt;br /&gt;&lt;br /&gt;* ALV variables........................................................&lt;br /&gt;DATA: w_alv_layout  TYPE lvc_s_layo,   " ALV Layout&lt;br /&gt;      w_alv_save    TYPE c,            " ALV save&lt;br /&gt;      w_alv_variant TYPE disvariant.   " ALV Variant&lt;br /&gt;&lt;br /&gt;* ALV Class definitions................................................&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;CLASS lcl_event_handler DEFINITION.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  PUBLIC SECTION.&lt;br /&gt;    METHODS: handle_double_click&lt;br /&gt;             FOR EVENT double_click OF cl_gui_alv_grid&lt;br /&gt;             IMPORTING e_row e_column.&lt;br /&gt;    METHODS: handle_hotspot&lt;br /&gt;             FOR EVENT hotspot_click OF cl_gui_alv_grid&lt;br /&gt;             IMPORTING e_row_id e_column_id.&lt;br /&gt;ENDCLASS.                              " CLASS LCL_EVENT_HANDLER DEF..&lt;br /&gt;&lt;br /&gt;* ALV Class implementation............................................&lt;br /&gt;* In the Event of a Double Click drill down to the corresponding CHANGE REQUEST&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;CLASS lcl_event_handler IMPLEMENTATION.&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;  METHOD handle_double_click.&lt;br /&gt;    DATA: l_tab LIKE LINE OF i_tab.&lt;br /&gt;    CHECK e_row-rowtype(1) EQ space.&lt;br /&gt;    READ TABLE i_tab INDEX e_row-index INTO l_tab.&lt;br /&gt;    SET PARAMETER ID 'ZTY' FIELD l_tab-ztype.&lt;br /&gt;    SET PARAMETER ID 'ZCR' FIELD l_tab-zcref.&lt;br /&gt;    CALL TRANSACTION 'ZCRT' AND SKIP FIRST SCREEN.&lt;br /&gt;  ENDMETHOD.                           " HANDLE_DOUBLE_CLICK&lt;br /&gt;&lt;br /&gt;* not working yet - hotspot seems to stay in the gui!!&lt;br /&gt;  METHOD handle_hotspot.&lt;br /&gt;    DATA: l_tab LIKE LINE OF i_tab.&lt;br /&gt;    CHECK e_row_id-rowtype(1) EQ space.&lt;br /&gt;    READ TABLE i_tab INDEX e_row_id-index INTO l_tab.&lt;br /&gt;    SET PARAMETER ID 'ZTY' FIELD l_tab-ztype.&lt;br /&gt;    SET PARAMETER ID 'ZCR' FIELD l_tab-zcref.&lt;br /&gt;    CALL TRANSACTION 'ZCRT' AND SKIP FIRST SCREEN.&lt;br /&gt;  ENDMETHOD.                           " HANDLE_DOUBLE_CLICK&lt;br /&gt;&lt;br /&gt;ENDCLASS.                              " CLASS LCL_EVENT_HANDLER IMPL...&lt;br /&gt;&lt;br /&gt;* ALV Grid Control definitions........................................&lt;br /&gt;DATA:&lt;br /&gt;* ALV Grid Control itself&lt;br /&gt;  o_grid             TYPE REF TO cl_gui_alv_grid,&lt;br /&gt;&lt;br /&gt;* Container to hold the ALV Grid Control&lt;br /&gt;   o_custom_container TYPE REF TO cl_gui_custom_container,&lt;br /&gt;&lt;br /&gt;* Event handler (defined in the class above)&lt;br /&gt;  o_event_handler    TYPE REF TO lcl_event_handler.&lt;br /&gt;&lt;br /&gt;*&amp;----------------------------------------------------------------------*&lt;br /&gt;INITIALIZATION.&lt;br /&gt;*&amp;----------------------------------------------------------------------*&lt;br /&gt;  PERFORM create_field_catalogue.    " Create ALV Field Catalog&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* Outstanding requests&lt;br /&gt;  IF p_outs = 'X'.&lt;br /&gt;    SELECT        * FROM  zchangereq&lt;br /&gt;          INTO TABLE i_tab&lt;br /&gt;           WHERE  zstatus  &lt; 99.&lt;br /&gt;  ELSE.&lt;br /&gt;* completed requests&lt;br /&gt;    SELECT        * FROM  zchangereq&lt;br /&gt;          INTO TABLE i_tab&lt;br /&gt;           WHERE  zstatus  = 99.&lt;br /&gt;  ENDIF.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;  PERFORM list_output_to_alv.        " Perform ALV Output operations&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                       FORM  LIST_OUTPUT_TO_ALV                       *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This subroutine is used to call the screen for ALV Output.           *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* There are no interface parameters to be passed to this subroutine.   *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM list_output_to_alv.&lt;br /&gt;&lt;br /&gt;  CALL SCREEN 100.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;ENDFORM.                               " LIST_OUTPUT_TO_ALV&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                      Module  STATUS_0100  OUTPUT                     *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This is the PBO module which will be processed befor displaying the  *&lt;br /&gt;* ALV Output.                                                          *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;&lt;br /&gt;  SET PF-STATUS '0100'.                " PF Status for ALV Output Screen&lt;br /&gt;  IF p_outs = 'X'.&lt;br /&gt;    SET TITLEBAR 'STD'.&lt;br /&gt;  ELSE.&lt;br /&gt;* completed requests&lt;br /&gt;    SET TITLEBAR 'COMP'.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  CREATE OBJECT: o_custom_container&lt;br /&gt;                     EXPORTING container_name = 'SC_GRID',&lt;br /&gt;                   o_grid&lt;br /&gt;                     EXPORTING i_parent = o_custom_container.&lt;br /&gt;&lt;br /&gt;  PERFORM define_alv_layout.         " ALV Layout options definitions&lt;br /&gt;&lt;br /&gt;  PERFORM save_alv_layout_options.   " save ALV layout options&lt;br /&gt;&lt;br /&gt;  PERFORM call_alv_grid.             " Call ALV Grid Control&lt;br /&gt;&lt;br /&gt;ENDMODULE.                             " STATUS_0100  OUTPUT&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                   Module  USER_COMMAND_0100  INPUT                   *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This is the PAI module which will be processed when the user performs*&lt;br /&gt;* any operation from the ALV output.                                   *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;&lt;br /&gt;  CASE sy-ucomm.&lt;br /&gt;    WHEN 'EXIT' OR 'BACK' OR 'CANC'.&lt;br /&gt;* may need to do this so display is refreshed if other report selected&lt;br /&gt;      CALL METHOD o_custom_container-&gt;free.&lt;br /&gt;      SET SCREEN 0.&lt;br /&gt;  ENDCASE.&lt;br /&gt;&lt;br /&gt;ENDMODULE.                 " USER_COMMAND_0100  INPUT&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                      FORM DEFINE_ALV_LAYOUT                          *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This subroutine is used to Define the ALV layout.                    *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM define_alv_layout .&lt;br /&gt;&lt;br /&gt;  w_alv_layout-numc_total = 'X'. " Numc total line&lt;br /&gt;  w_alv_layout-cwidth_opt = 'X'. " Optimal column width&lt;br /&gt;  w_alv_layout-detailinit = 'X'. " Show values that are initial in&lt;br /&gt;  " detail list.&lt;br /&gt;  w_alv_layout-sel_mode   = 'A'. " Column selection mode&lt;br /&gt;  w_alv_layout-no_merging = 'X'. " No merging while sorting columns&lt;br /&gt;  w_alv_layout-keyhot = 'X'.&lt;br /&gt;ENDFORM.                         " DEFINE_ALV_LAYOUT&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                     FORM  SAVE_ALV_LAYOUT_OPTIONS                    *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This subroutine is used to Save the ALV layout options.              *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM save_alv_layout_options.&lt;br /&gt;&lt;br /&gt;* See the ALV grid control documentation for full list of options&lt;br /&gt;&lt;br /&gt;  w_alv_save = 'A'.&lt;br /&gt;  w_alv_variant-report = sy-repid.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " SAVE_ALV_LAYOUT_OPTIONS&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*                          FORM CALL_ALV_GRID                          *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* This subroutine is used to call ALV Grid control for processing.     *&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM call_alv_grid.&lt;br /&gt;&lt;br /&gt;  CALL METHOD o_grid-&gt;set_table_for_first_display&lt;br /&gt;    EXPORTING&lt;br /&gt;      is_layout       = w_alv_layout&lt;br /&gt;      i_save          = w_alv_save&lt;br /&gt;      is_variant      = w_alv_variant&lt;br /&gt;    CHANGING&lt;br /&gt;      it_outtab       = i_tab[]&lt;br /&gt;      it_sort         = i_alv_sort&lt;br /&gt;      it_fieldcatalog = i_field_cat.&lt;br /&gt;* Link used Events and Event Handler Methods&lt;br /&gt;  CREATE OBJECT o_event_handler.&lt;br /&gt;&lt;br /&gt;* Set handler o_event_handler-&gt;handle_top_of_page for o_grid.&lt;br /&gt;  SET HANDLER o_event_handler-&gt;handle_double_click FOR o_grid.&lt;br /&gt;&lt;br /&gt;ENDFORM.                               " CALL_ALV_GRID&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  create_field_catalogue&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       set up field catalogue&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;FORM create_field_catalogue .&lt;br /&gt;*               Fieldname  Heading   Key?&lt;br /&gt;*eg   add_field 'ZTYPE'   'Type'     'X'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " create_field_catalogue&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6558931880504511594?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6558931880504511594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6558931880504511594' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6558931880504511594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6558931880504511594'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-alv-grid-control.html' title='Sample ABAP Program of  ALV Grid control using OO methods'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6155387690971606263</id><published>2007-10-18T20:48:00.000+05:30</published><updated>2007-10-18T20:50:11.157+05:30</updated><title type='text'>Sample ABAP Program of ALV Grid</title><content type='html'>REPORT zalvgrid NO STANDARD PAGE HEADING.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;  Written By    : Sheila Titchener - www.iconet-ltd.co.uk&lt;br /&gt;&amp;   Date          : January 2006&lt;br /&gt;*&amp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*  Includes logo and white background - optimized field size&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;* ALV&lt;br /&gt;TYPE-POOLS: slis.&lt;br /&gt;*----------------&lt;br /&gt;* extracted Notification date&lt;br /&gt;TYPES: BEGIN OF ty_data,&lt;br /&gt;       qmnum TYPE qmnum,&lt;br /&gt;       qmdat TYPE qmdat,&lt;br /&gt;       mzeit TYPE mzeit,&lt;br /&gt;       erdat TYPE erdat,&lt;br /&gt;       erzeit TYPE erzeit,&lt;br /&gt;       ernam TYPE ernam,&lt;br /&gt;       END OF ty_data.&lt;br /&gt;&lt;br /&gt;* ALV print table&lt;br /&gt;TYPES: BEGIN OF ty_out,&lt;br /&gt;       qmnum TYPE qmnum,&lt;br /&gt;       qmdat TYPE qmdat,&lt;br /&gt;       mzeit TYPE mzeit,&lt;br /&gt;       erdat TYPE erdat,&lt;br /&gt;       erzeit TYPE erzeit,&lt;br /&gt;       ernam TYPE ernam,&lt;br /&gt;       END OF ty_out.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;DATA: viqmel TYPE viqmel.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Internal tables and their work areas&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;DATA: w_data TYPE ty_data,&lt;br /&gt;      t_data TYPE TABLE OF ty_data.&lt;br /&gt;DATA: w_out TYPE ty_out,&lt;br /&gt;      t_out TYPE TABLE OF ty_out.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Headings.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;DATA: BEGIN OF h1,&lt;br /&gt;      print_date(10),&lt;br /&gt;      sdate(10),&lt;br /&gt;      END OF h1.&lt;br /&gt;*&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Data for ALV&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;INCLUDE &lt;icon&gt;.&lt;br /&gt;INCLUDE &lt;symbol&gt;.&lt;br /&gt;*---------&lt;br /&gt;CONSTANTS:&lt;br /&gt;*---------&lt;br /&gt;gc_formname_top_of_page TYPE slis_formname VALUE 'TOP_OF_PAGE'.&lt;br /&gt;&lt;br /&gt;DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,&lt;br /&gt;      gs_layout   TYPE slis_layout_alv,&lt;br /&gt;      gs_print    TYPE slis_print_alv,&lt;br /&gt;      gt_sort     TYPE slis_t_sortinfo_alv,&lt;br /&gt;      gt_sp_group TYPE slis_t_sp_group_alv,&lt;br /&gt;      gt_events   TYPE slis_t_event.&lt;br /&gt;*&lt;br /&gt;DATA: g_repid LIKE sy-repid.&lt;br /&gt;DATA: gt_list_top_of_page TYPE slis_t_listheader.&lt;br /&gt;&lt;br /&gt;DATA:       g_save(1) TYPE c.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Report Selections&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;PARAMETERS: plant LIKE viqmel-iwerk VALUE CHECK OBLIGATORY&lt;br /&gt;                                    MEMORY ID wrk,&lt;br /&gt;            sorg LIKE vbak-vkorg OBLIGATORY MEMORY ID vko.&lt;br /&gt;&lt;br /&gt;SELECTION-SCREEN SKIP 1.&lt;br /&gt;&lt;br /&gt;SELECT-OPTIONS: wkcentre FOR viqmel-arbpl,&lt;br /&gt;                nottype FOR viqmel-qmart,&lt;br /&gt;                notnum FOR viqmel-qmnum,&lt;br /&gt;                crdate FOR viqmel-erdat NO-EXTENSION,&lt;br /&gt;                createby FOR viqmel-ernam.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-------&lt;br /&gt;* MACROS&lt;br /&gt;*-------&lt;br /&gt;* FIELD CATALOGUE ENTRY FOR Keyed FIELDS&lt;br /&gt;DEFINE catfield.&lt;br /&gt;*----------------&lt;br /&gt;* 1= Fieldname,  2= Description, 3=Key&lt;br /&gt;  clear ls_fieldcat.&lt;br /&gt;  ls_fieldcat-fieldname    = &amp;1.&lt;br /&gt;  ls_fieldcat-key          = &amp;3.&lt;br /&gt;  ls_fieldcat-hotspot       = &amp;3.&lt;br /&gt;* ls_fieldcat-key_sel      = 'X'.&lt;br /&gt;  ls_fieldcat-tabname    = 'T_OUT'.&lt;br /&gt;* Output length will be optimised by ALV&lt;br /&gt;*  ls_fieldcat-outputlen = '6'.&lt;br /&gt;  ls_fieldcat-seltext_m = &amp;2.&lt;br /&gt;  append ls_fieldcat to gt_fieldcat.&lt;br /&gt;* color   C or X   1-9 = color number 0/1 intensified 0/1 inverse&lt;br /&gt;  ls_fieldcat-emphasize = 'C100'.&lt;br /&gt;END-OF-DEFINITION.&lt;br /&gt;*----------------&lt;br /&gt;* FIELD CATALOGUE ENTRY FOR SUMMED FIELDS&lt;br /&gt;DEFINE catsum.&lt;br /&gt;*----------------&lt;br /&gt;* 1= Fieldname,  2= color, 3= Description,&lt;br /&gt;  clear ls_fieldcat.&lt;br /&gt;  ls_fieldcat-fieldname    = &amp;1.&lt;br /&gt;  ls_fieldcat-do_sum       = 'X'.&lt;br /&gt;  ls_fieldcat-key_sel      = 'X'.&lt;br /&gt;  ls_fieldcat-tabname    = 'T_OUT'.&lt;br /&gt;  ls_fieldcat-emphasize = &amp;2.&lt;br /&gt;  ls_fieldcat-seltext_m = &amp;3.&lt;br /&gt;  append ls_fieldcat to gt_fieldcat.&lt;br /&gt;END-OF-DEFINITION.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;INITIALIZATION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;  g_repid = sy-repid.&lt;br /&gt;* set to-date as today&lt;br /&gt;  crdate-high = sy-datum.&lt;br /&gt;  crdate-option = 'EQ'.&lt;br /&gt;  crdate-sign = 'I'.&lt;br /&gt;  APPEND crdate TO crdate.&lt;br /&gt;&lt;br /&gt;  REFRESH gt_fieldcat.&lt;br /&gt;  PERFORM e01_fieldcat_init .&lt;br /&gt;  PERFORM e03_eventtab_build USING gt_events[].&lt;br /&gt;  PERFORM e06_t_sort_build   USING gt_sort[].&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;AT SELECTION-SCREEN ON plant.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;  PERFORM e04_comment_build  USING gt_list_top_of_page[].&lt;br /&gt;&lt;br /&gt;  PERFORM selection.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;  PERFORM e05_layout_build USING gs_layout.     "wg. Parameters&lt;br /&gt;* Call ABAP/4 List Viewer&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'&lt;br /&gt;       EXPORTING&lt;br /&gt;            i_background_id    = 'WHITE'&lt;br /&gt;            i_callback_program = g_repid&lt;br /&gt;            i_callback_user_command = 'USER_COMMAND'&lt;br /&gt;            is_layout          = gs_layout&lt;br /&gt;            it_fieldcat        = gt_fieldcat[]&lt;br /&gt;*           i_save             = 'A'&lt;br /&gt;            is_print           = gs_print&lt;br /&gt;            it_events          = gt_events[]&lt;br /&gt;       TABLES&lt;br /&gt;            t_outtab           = t_out.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E01_FIELDCAT_INIT                                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  E01_LT_FIELDCAT                                               *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e01_fieldcat_init.&lt;br /&gt;  DATA: ls_fieldcat TYPE slis_fieldcat_alv.&lt;br /&gt;* BASIC FIELDS&lt;br /&gt;  catfield 'QMNUM'    text-024 'X'.&lt;br /&gt;  catfield 'QMDAT'    text-023 ' '.&lt;br /&gt;  catfield 'MZEIT'    text-022 ' '.&lt;br /&gt;  catfield 'ERDAT'    text-021 ' '.&lt;br /&gt;  catfield 'ERZEIT'   text-020 ' '.&lt;br /&gt;  catfield 'ERNAM'    text-019 ' '.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E02_DATA_ADD                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;                                                                *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e02_data_add .&lt;br /&gt;&lt;br /&gt;  LOOP AT t_data INTO w_data.&lt;br /&gt;    MOVE-CORRESPONDING w_data TO w_out.&lt;br /&gt;    PERFORM get_disp_task.&lt;br /&gt;    PERFORM get_tsrl_status.&lt;br /&gt;    APPEND w_out TO t_out.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E03_EVENTTAB_BUILD                                       *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Set up TOP-OF-PAGE event processing                           *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  E03_LT_EVENTS                                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e03_eventtab_build USING e03_lt_events TYPE slis_t_event.&lt;br /&gt;  DATA: ls_event TYPE slis_alv_event.&lt;br /&gt;*&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;br /&gt;       EXPORTING&lt;br /&gt;            i_list_type = 0&lt;br /&gt;       IMPORTING&lt;br /&gt;            et_events   = e03_lt_events.&lt;br /&gt;  READ TABLE e03_lt_events WITH KEY name =  slis_ev_top_of_page&lt;br /&gt;                           INTO ls_event.&lt;br /&gt;  IF sy-subrc = 0.&lt;br /&gt;    MOVE gc_formname_top_of_page TO ls_event-form.&lt;br /&gt;    APPEND ls_event TO e03_lt_events.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E04_COMMENT_BUILD                                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       Create Headings&lt;br /&gt;*&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  E04_LT_TOP_OF_PAGE                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e04_comment_build USING e04_lt_top_of_page TYPE slis_t_listheader.&lt;br /&gt;  DATA: ls_line TYPE slis_listheader.&lt;br /&gt;  DATA: l_date(10).&lt;br /&gt;*&lt;br /&gt;* Title Typ H&lt;br /&gt;  CLEAR ls_line.&lt;br /&gt;  ls_line-typ  = 'H'.&lt;br /&gt;  ls_line-info = sy-title.&lt;br /&gt;  APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;&lt;br /&gt;* head 1&lt;br /&gt;  CLEAR ls_line.&lt;br /&gt;* Plant&lt;br /&gt;  ls_line-key = text-101.&lt;br /&gt;  ls_line-info = plant.&lt;br /&gt;  ls_line-typ  = 'S'.&lt;br /&gt;  APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;&lt;br /&gt;* Sales Org&lt;br /&gt;  ls_line-key = text-102.&lt;br /&gt;  ls_line-info = sorg.&lt;br /&gt;  APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;* Maintenance Work Centre&lt;br /&gt;  IF NOT wkcentre[] IS INITIAL.&lt;br /&gt;    ls_line-key = text-105.&lt;br /&gt;    ls_line-info = wkcentre-low.&lt;br /&gt;    APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;  ENDIF.&lt;br /&gt;* Notification Type&lt;br /&gt;  IF NOT nottype[] IS INITIAL.&lt;br /&gt;    ls_line-key = text-106.&lt;br /&gt;    ls_line-info = nottype-low.&lt;br /&gt;    APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;  ENDIF.&lt;br /&gt;* Notification Number&lt;br /&gt;  IF NOT notnum[] IS INITIAL.&lt;br /&gt;    ls_line-key = text-107.&lt;br /&gt;    ls_line-info = notnum-low.&lt;br /&gt;    APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;  ENDIF.&lt;br /&gt;* Created From&lt;br /&gt;  ls_line-key = text-103.&lt;br /&gt;  WRITE crdate-low TO l_date DD/MM/YYYY.&lt;br /&gt;  ls_line-info = l_date.&lt;br /&gt;  APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;* Created to&lt;br /&gt;  ls_line-key = text-104.&lt;br /&gt;  WRITE crdate-high TO l_date DD/MM/YYYY.&lt;br /&gt;  ls_line-info = l_date.&lt;br /&gt;  APPEND ls_line TO e04_lt_top_of_page.&lt;br /&gt;&lt;br /&gt;*&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E05_LAYOUT_BUILD                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*      ALV Layout options                                             *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  &lt;-&gt;  E05_LS_LAYOUT                                                 *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e05_layout_build USING e05_ls_layout TYPE slis_layout_alv.&lt;br /&gt;  e05_ls_layout-zebra             = 'X'.&lt;br /&gt;  e05_ls_layout-colwidth_optimize = 'X'.&lt;br /&gt;*  e05_ls_layout-lights_fieldname = 'LIGHTS'.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM E06_T_SORT_BUILD                                         *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  E06_LT_SORT                                                   *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM e06_t_sort_build USING e06_lt_sort TYPE slis_t_sortinfo_alv.&lt;br /&gt;*  DATA: ls_sort TYPE slis_sortinfo_alv.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM user_command  USING r_ucomm LIKE sy-ucomm&lt;br /&gt;       rs_selfield TYPE slis_selfield.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* called by ALV list viewer&lt;br /&gt;*-----------------------------------------------------------------------&lt;br /&gt;  CASE rs_selfield-sel_tab_field.&lt;br /&gt;    WHEN 'T_OUT-QMNUM'.&lt;br /&gt;      SET PARAMETER ID 'IQM' FIELD rs_selfield-value.&lt;br /&gt;      CALL TRANSACTION 'IW53' AND SKIP FIRST SCREEN.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM SELECTION                                                *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*      Select data from CATSDB                                           *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM selection.&lt;br /&gt;&lt;br /&gt;  SELECT  * FROM viqmel&lt;br /&gt;&lt;br /&gt;           INTO CORRESPONDING FIELDS OF TABLE t_data&lt;br /&gt;                      WHERE iwerk = plant&lt;br /&gt;                            AND vkorg = sorg&lt;br /&gt;                            AND arbpl IN wkcentre&lt;br /&gt;                            AND qmart IN nottype&lt;br /&gt;                            AND qmnum IN notnum&lt;br /&gt;                            AND erdat IN crdate&lt;br /&gt;                            AND ernam IN createby.&lt;br /&gt;*&lt;br /&gt;  PERFORM e02_data_add.&lt;br /&gt;ENDFORM.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM TOP_OF_PAGE                                              *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       ........                                                      *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM top_of_page.&lt;br /&gt;* create logo in transaction OAER - Business Documents&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'&lt;br /&gt;       EXPORTING&lt;br /&gt;            i_logo             = 'LOGO'&lt;br /&gt;            it_list_commentary = gt_list_top_of_page.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  get_disp_task&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM get_disp_task.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " get_disp_task&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  get_tsrl_status&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*  --&gt;  p1        text&lt;br /&gt;*  &lt;--  p2        text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM get_tsrl_status.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " get_tsrl_status&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6155387690971606263?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6155387690971606263/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6155387690971606263' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6155387690971606263'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6155387690971606263'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-of-alv-grid.html' title='Sample ABAP Program of ALV Grid'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-661036017901224939</id><published>2007-10-18T20:45:00.000+05:30</published><updated>2007-10-18T20:48:24.703+05:30</updated><title type='text'>Sample ABAP Program to Browse a file on the application server</title><content type='html'>REPORT ZBROWSE  MESSAGE-ID Z1&lt;br /&gt;                NO STANDARD PAGE HEADING&lt;br /&gt;*               LINE-COUNT 65&lt;br /&gt;                LINE-SIZE  255.&lt;br /&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* Topic:         Browse a file on the appication server&lt;br /&gt;*                                                                     *&lt;br /&gt;* Author:        Sheila Titchener&lt;br /&gt;*                                                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;DATA: BEGIN OF TAB1 OCCURS 0,&lt;br /&gt;      LINE(5000),&lt;br /&gt;      END OF TAB1.&lt;br /&gt;&lt;br /&gt;DATA: BEGIN OF TAB2 OCCURS 0,&lt;br /&gt;      LINE(5000),&lt;br /&gt;      END OF TAB2.&lt;br /&gt;DATA: PARCOM_LOC(100) TYPE C.&lt;br /&gt;DATA: COLOR TYPE I.&lt;br /&gt;DATA: COUNT(16) TYPE C.&lt;br /&gt;DATA: MESS(50).&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* Parameters.                                                       *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;SELECTION-SCREEN SKIP 2.&lt;br /&gt;PARAMETERS: PARCOM1(55) TYPE C LOWER CASE.&lt;br /&gt;*             parcom2(55) type c lower case,&lt;br /&gt;*             parcom3 like rlgrap-filename,&lt;br /&gt;*             parcom4 like rlgrap-filename ,&lt;br /&gt;*             p_pc radiobutton group one,&lt;br /&gt;*8         p_unix radiobutton group one.&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* Parameter validation                                              *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* TOP-OF-PAGE.                                                      *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;TOP-OF-PAGE.&lt;br /&gt;  PERFORM WRITE_PAGE_HEADING.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* INITIALIZATION.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;INITIALIZATION.&lt;br /&gt;  PARCOM1 = '\\sapdev1\export\'.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* START-OF-SELECTION.                                               *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;  PERFORM COLLECT_DATA.&lt;br /&gt;  PERFORM WRITE_FILE_CONTENT.&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* FORM COLLECT_DATA.                                                  *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;FORM COLLECT_DATA.&lt;br /&gt;  OPEN DATASET PARCOM1 FOR INPUT IN TEXT MODE MESSAGE MESS.&lt;br /&gt;  IF SY-SUBRC NE 0.&lt;br /&gt;    WRITE: 'Unable to open', PARCOM1.&lt;br /&gt;    WRITE: /  MESS.&lt;br /&gt;  ELSE.&lt;br /&gt;    DO.&lt;br /&gt;      READ DATASET PARCOM1 INTO TAB1.&lt;br /&gt;      IF SY-SUBRC NE 0.&lt;br /&gt;        EXIT.&lt;br /&gt;      ENDIF.&lt;br /&gt;      APPEND TAB1.&lt;br /&gt;    ENDDO.&lt;br /&gt;    CLOSE DATASET PARCOM1.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_FILE_CONTENT.                                          *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_FILE_CONTENT.&lt;br /&gt;  DATA: E LIKE SY-FDPOS.&lt;br /&gt;  LOOP AT TAB1.&lt;br /&gt;    E = STRLEN( TAB1-LINE ).&lt;br /&gt;    IF E GE 0.&lt;br /&gt;      PERFORM COLORLINE USING '  0' TAB1-LINE+0(99).&lt;br /&gt;      PERFORM STREGER_3.&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;    IF E GE 100.&lt;br /&gt;      PERFORM COLORLINE USING '100' TAB1-LINE+99(100).&lt;br /&gt;      PERFORM STREGER_3.&lt;br /&gt;    ENDIF.&lt;br /&gt;*   write: /10 tab1.&lt;br /&gt;*&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_PAGE_HEADING.                                          *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_PAGE_HEADING.&lt;br /&gt;&lt;br /&gt;  WRITE:/1(110) SY-ULINE.&lt;br /&gt;  PERFORM STREGER_2.&lt;br /&gt;  FORMAT INTENSIFIED.&lt;br /&gt;  WRITE: /    PARCOM1   COLOR 1.&lt;br /&gt;  PERFORM STREGER_2.&lt;br /&gt;  WRITE:/1(110) SY-ULINE.&lt;br /&gt;  PERFORM STREGER_2.&lt;br /&gt;  FORMAT INTENSIFIED.&lt;br /&gt;  WRITE: /2(109) SPACE COLOR 3.&lt;br /&gt;  WRITE:   2    'Offset' COLOR 3,&lt;br /&gt;          10    '0....+....1....+....2....+....3....+....' COLOR 3,&lt;br /&gt;          50    '4....+....5....+....6....+....7....+....' COLOR 3,&lt;br /&gt;          90    '8....+....9....+....' COLOR 3.&lt;br /&gt;  PERFORM STREGER_3.&lt;br /&gt;  FORMAT RESET.&lt;br /&gt;  WRITE:/1(110) SY-ULINE.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM STREGER_2.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM STREGER_2.&lt;br /&gt;  PERFORM WRITE_VLINE USING ' '  1.&lt;br /&gt;  PERFORM WRITE_VLINE USING ' '  80.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM STREGER_3.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM STREGER_3.&lt;br /&gt;  PERFORM WRITE_VLINE USING ' '  1.&lt;br /&gt;  PERFORM WRITE_VLINE USING ' '  9.&lt;br /&gt;  PERFORM WRITE_VLINE USING ' '  110.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* WRITE_VLINE.                                                      *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_VLINE USING MODE POS.&lt;br /&gt;  IF MODE NE 'T'.&lt;br /&gt;    FORMAT INTENSIFIED.&lt;br /&gt;  ENDIF.&lt;br /&gt;  POSITION POS.&lt;br /&gt;  WRITE: SY-VLINE.&lt;br /&gt;  IF MODE NE 'T'.&lt;br /&gt;    FORMAT RESET.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM COLORLINE.                                                   *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM COLORLINE USING TEXT1 TEXT2.&lt;br /&gt;  ON CHANGE OF SY-TABIX.&lt;br /&gt;    COLOR = COLOR + 1.&lt;br /&gt;    COLOR = COLOR MOD 2.&lt;br /&gt;  ENDON.&lt;br /&gt;  FORMAT RESET.&lt;br /&gt;  IF COLOR = 1.&lt;br /&gt;    WRITE: /2(79) SPACE COLOR 2.&lt;br /&gt;    IF TEXT1 = '  0'.&lt;br /&gt;      WRITE: 3 TEXT1 COLOR 2, 11 TEXT2 COLOR 2.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE: 3 TEXT1 COLOR 2, 10 TEXT2 COLOR 2.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ELSE.&lt;br /&gt;    WRITE: /2(79) SPACE COLOR 4.&lt;br /&gt;    IF TEXT1 = '  0'.&lt;br /&gt;      WRITE: 3 TEXT1 COLOR 4, 11 TEXT2 COLOR 4.&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE: 3 TEXT1 COLOR 4, 10 TEXT2 COLOR 4.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;* FORM WRITE_NUMBER_OF_CONTENT.                                     *&lt;br /&gt;*-------------------------------------------------------------------*&lt;br /&gt;FORM WRITE_NUMBER_OF_CONTENT.&lt;br /&gt;  DESCRIBE TABLE TAB1 LINES COUNT.&lt;br /&gt;&lt;br /&gt;  FORMAT RESET. CONDENSE COUNT.&lt;br /&gt;  RESERVE 3 LINES.&lt;br /&gt;  WRITE:/1(80) SY-ULINE.&lt;br /&gt;  WRITE: /2(79) SPACE                         COLOR 2.&lt;br /&gt;  WRITE: 2      'Number of records in file:'  COLOR 2,&lt;br /&gt;         29     COUNT                         COLOR 2.&lt;br /&gt;  PERFORM STREGER_2.&lt;br /&gt;  WRITE:/1(80) SY-ULINE.&lt;br /&gt;ENDFORM.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-661036017901224939?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/661036017901224939/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=661036017901224939' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/661036017901224939'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/661036017901224939'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sample-abap-program-to-browse-file-on.html' title='Sample ABAP Program to Browse a file on the application server'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6399937816007302389</id><published>2007-10-16T22:43:00.000+05:30</published><updated>2007-10-18T20:52:31.197+05:30</updated><title type='text'>Learn all Functions in ALV Grid or ALV report</title><content type='html'>&lt;div align="justify"&gt;After a report has been generated, there are many options available for customizing the data within the ALV grid. The sections below give more information for using the available options.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Modifying Columns&lt;/strong&gt;&lt;br /&gt;There are many options for manually modifying columns, including resizing, moving, freezing, sorting, hiding, and calculating.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Resize Columns&lt;/strong&gt;&lt;br /&gt;To resize a column, place your cursor over the line between column headers. When it turns into a cross, click and drag the edge of the column.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Move Columns&lt;br /&gt;&lt;/strong&gt;To move a column, click the column header once to select it. Then click and drag the column header to a new location.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Freeze Columns&lt;/strong&gt;&lt;br /&gt;To freeze a column, right-click the column header and select Freeze to Column. The column will not move when you scroll. To unfreeze the column, right-click the column header and select Unfreeze Columns.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Sort Columns&lt;/strong&gt;&lt;br /&gt;To sort a column, select a column header then click the appropriate sort icon. The icon sorts a column in ascending order. The icon sorts a column in descending order.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Hide Columns&lt;/strong&gt;&lt;br /&gt;To hide a column, right-click the column header and select Hide.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Calculate Columns&lt;br /&gt;&lt;/strong&gt;If a column is totaled, the mean, minimum, or maximum value can be determined by following the menu path Edit &gt; Calculate and then selecting the desired option. The calculated value replaces the total at the end of the report.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Navigating Subtotals&lt;br /&gt;&lt;/strong&gt;To expand or collapse the lines included in a single subtotal, click the expand or collapse icon next to the field being subtotaled. To expand or collapse all subtotals, click the expand/collapse icon in the lower lefthand corner of the total line. Expand or collapse individual subtotals Expand or collapse all subtotals&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Change a Report Layout&lt;/strong&gt;&lt;br /&gt;While many individual modifications can be made to a report using icons and dragging columns, multiple modifications can be made at once using the change layout function. The Change Layout icon provides an interface for changing the column order and the sort order. It allows you to apply filters and display options to the report. Below are directions for each of these functions. After making changes, click (Transfer) to apply your changes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Change Column Order&lt;br /&gt;&lt;/strong&gt;The Columns tab is used to select and order the columns you want to appear on your report. The names on the left indicate the columns included in the order they will appear. The names on the right are the available fields that can be added. Double-click on a column name to move it from one area to the other. To reorder the columns, select a column name and click the arrows at the top of the tab to move the column up or down a position.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Change Sort Order&lt;/strong&gt;&lt;br /&gt;The Sort Order tab is used to define the sort order and subtotaling by column. The names on the left indicate the columns to be sorted in the order they will be sorted. The names on the right are the available columns. Double-click on a column name to move it from one area to the other. To reorder the columns, select a column name and click the arrows at the top of the tab to move the column up or down a position. There are three fields to the left of each included column. The first radio button indicates ascending order. The second radio button indicates descending order. The check box determines if the column is subtotaled.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Apply Filter&lt;/strong&gt;&lt;br /&gt;The Filter tab is used to set criteria for including or excluding specific items in a report. The names on the left indicate the columns to be filtered in the order they will be filtered. The names on the right are the available columns. Double-click on a column name to move it from one area to the other. To reorder the columns, select a column name and click the arrows at the top of the tab to move the column up or down a position. You click another tab or close the dialog box, an additional dialog box displays for you to enter the filter criteria. You can use the multiple selection icon to enter multiple values or ranges. You can also use dynamic selections to apply operators to the criteria. When you are finished entering values, click (Copy) to apply the filter.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Change Display Options&lt;br /&gt;&lt;/strong&gt;The Display tab is used to change the way a report is displayed. The following table provides an&lt;br /&gt;explanation of each option.&lt;br /&gt;Display Option Description&lt;br /&gt;Without horizontal gridlines Removes horizontal lines&lt;br /&gt;Without vertical gridlines Removes vertical lines&lt;br /&gt;Without column headings Removes column headers&lt;br /&gt;Without cell merging during sorts Places a horizontal line between each entry. If&lt;br /&gt;not checked, horizontal lines are removed&lt;br /&gt;between identical values.&lt;br /&gt;With optimum column width Set each column to the width of its largest value&lt;br /&gt;With striped pattern Set every other row to a different color&lt;br /&gt;Display totals lines above the entries Moves totals and subtotals above the lines they&lt;br /&gt;summarize&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Save a Report Layout&lt;/strong&gt;&lt;br /&gt;1. Click (Save Layout).&lt;br /&gt;2. Enter a name in the Save Layout field. The name must begin with a letter.&lt;br /&gt;3. Type in a description for the layout in the Name field.&lt;br /&gt;4. Select the Default Setting check box if you want this layout to be the default layout every time you run&lt;br /&gt;the report.&lt;br /&gt;5. Click (Continue).&lt;br /&gt;Note: A warning message will appear if you are trying to save over an existing layout. Close the box by&lt;br /&gt;selecting the X in the upper right hand corner or choose Yes to overwrite the layout.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Select a Layout&lt;br /&gt;&lt;/strong&gt;1. Click (Select Layout).&lt;br /&gt;2. Select a layout and click (Enter). Your report will display in the layout you have chosen.&lt;br /&gt;Delete a Layout&lt;br /&gt;If a layout you created is no longer useful, it can be deleted using the following process.&lt;br /&gt;1. Follow the menu path Settings &gt; Layout &gt; Manage.&lt;br /&gt;2. Select the layout(s) to be deleted by clicking on the gray box on the left side of the layout name.&lt;br /&gt;3. Click (Delete layout). The layout is removed.&lt;br /&gt;4. Click (Back). A pop-up box displays asking you to save your changes. Click Yes.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Report Integration with Microsoft Office&lt;br /&gt;&lt;/strong&gt;After generating a report, it is possible to export it into Microsoft Excel and/or Microsoft Word using three different options. Each of these options saves the file in a slightly different format. Before using any of these options, you have to set the macro security in your Office products to medium. Within your Office program, follow the menu path Tools &gt; Macro &gt; Security. Select the Medium security setting. Then click the Trusted Sources tab and ensure all the check boxes are selected. Click OK to save the changes. For the best results, ensure your Office program is closed before performing any of the following actions.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Save to Local File&lt;/strong&gt;&lt;br /&gt;Using this export option will retain all of the formatting that you may have done to the report in SAP, such as moving columns, setting filters and sorts, etc., but will not retain any of the color or font formatting in SAP, unless you choose the HTML option. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. Click (Local file). The Save list in file... box will open.&lt;br /&gt;2. Choose the desired file type in which to save the file.&lt;br /&gt;• unconverted - tab-delimited file not associated with a program&lt;br /&gt;• Spreadsheet - Microsoft Excel file&lt;br /&gt;• Rich text format - Microsoft Word file&lt;br /&gt;• HTML format - HTML file. This option adds some formatting, which will make it display&lt;br /&gt;similiar to the report in SAP.&lt;br /&gt;3. Click (Continue). The Transfer DAT to a Local File box will open.&lt;br /&gt;4. The default location in which to save the file is your "SAPWorkDir" folder. Click (Search) to&lt;br /&gt;choose another location.&lt;br /&gt;5. Enter your file name at the end of the path and use the proper extension associated with the file&lt;br /&gt;type you chose in step 2.&lt;br /&gt;• unconverted - none&lt;br /&gt;• Spreadsheet - .xls&lt;br /&gt;• Rich text format - .rtf&lt;br /&gt;• HTML format - .html&lt;br /&gt;6. Click . The message "XXX Bytes transferred" will display, indicating that your file was&lt;br /&gt;successful exported.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Exporting to Microsoft Excel &lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;Using this export option will not retain any of the formatting that you applied in SAP, such as moving columns, setting filters and sorts, etc. However, it does add a colored background and heading and retains the proper column width.&lt;br /&gt;1. Click (Spreadsheet...). An Information box will open advising you that any formatting you have&lt;br /&gt;applied in SAP will not be exported with the data.&lt;br /&gt;2. Click (Continue). The Export list object to XXL box will open.&lt;br /&gt;3. Choose Table and click (Continue).&lt;br /&gt;4. Click (Continue) again.&lt;br /&gt;5. Excel will open with the report displayed. You can now format the report and save it as necessary.&lt;br /&gt;6. In SAP, an Information box opens stating that you should save the data in the spreadsheet. As&lt;br /&gt;soon as you click (Continue), the report in Excel closes, so be sure you have saved it if&lt;br /&gt;necessary before doing so.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Opening Microsoft Excel within SAP &lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;This export option will actually open Microsoft Excel within SAP, allowing you to use any of the formatting or calculation features available in Excel along with the SAP tools. However, modifying the data in the Excel spreadsheet within SAP will not change the actual data in SAP itself. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. Click (Change layout...). The Change layout box will open.&lt;br /&gt;2. Click the View tab.&lt;br /&gt;3. Choose the Excel option.&lt;br /&gt;4. Click on sap_om.xls in the Template list that displays on the right side of the box.&lt;br /&gt;5. Click (Transfer).&lt;br /&gt;6. Microsoft Excel will open in the window where the report data was displayed. You can now use all&lt;br /&gt;of the options within Microsoft Excel and SAP to format and manipulate the data as necessary.&lt;br /&gt;7. To save the file, follow the Excel menu path File &gt; Save Copy As.&lt;br /&gt;8. To close Excel, click (Change layout...), click the View tab, choose the Grid option, and click&lt;br /&gt;(Transfer).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Exporting to Microsoft Word&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Using this option will not retain any of the formatting that you applied in SAP, such as moving columns, setting filters and sorts, etc., and it will export the data in a table within Word. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. Click (Word Processing...). The Word Processor Settings box will open.&lt;br /&gt;2. Choose the Create Document option and select Include Colors and/or Start MS Word if desired.&lt;br /&gt;3. Click (Continue). The Transfer RTF to a Local File box will open.&lt;br /&gt;4. The default location in which to save the file is your "SAPWorkDir" folder. Click (Search) to&lt;br /&gt;choose another location.&lt;br /&gt;5. Enter the file name at the end of the path and add the extension .rtf.&lt;br /&gt;6. Click .&lt;br /&gt;7. If you chose the option to have Word open, it will now open with the data displayed.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Other Relative Topics :&lt;/strong&gt;  &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;a href="http://saplab.blogspot.com/2007/10/sample-abap-program-of-alv-grid.html"&gt;Sample ALV Program&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6399937816007302389?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6399937816007302389/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6399937816007302389' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6399937816007302389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6399937816007302389'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/learn-all-functions-in-alv-grid-or-alv.html' title='Learn all Functions in ALV Grid or ALV report'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4764763110139112482</id><published>2007-10-16T22:40:00.000+05:30</published><updated>2007-10-16T22:42:08.259+05:30</updated><title type='text'>SAP Memory Vs ABAP/4 Memory</title><content type='html'>&lt;div align="justify"&gt;&lt;strong&gt;SAP memory&lt;/strong&gt; is the memory area where all main sessions with in the SAP GUI have the access. We can use SAP memory either to pass data from one program to other within the session, or to pass data from one session to other.  Application programs that use SAP memory must do so using SPA/GPA parameters (also known as SET/GET parameters). These parameters can be set either for a particular user or for a particular program using the SET PARAMETER statement. Other ABAP programs can then retrieve the set parameters using the GET PARAMETER statement. The most frequent use of SPA/GPA parameters is to fill input fields on screens.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;ABAP/4 Memory&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;ABAP memory is the memory area that all ABAP programs within the same internal session can access using the EXPORT and IMPORT statements. Data within this area remains intact during a whole sequence of program calls. To pass datato a program which you are calling, the data needs to be placed in ABAP memory before the call is made. The internal session of the called program then replaces that of the calling program. The program called can then read from the ABAP memory. If control is then returned to the program which made the initial call, the same process operates in reverse.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4764763110139112482?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4764763110139112482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4764763110139112482' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4764763110139112482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4764763110139112482'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sap-memory-vs-abap4-memory.html' title='SAP Memory Vs ABAP/4 Memory'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7466372797183080431</id><published>2007-10-11T22:34:00.000+05:30</published><updated>2007-10-11T23:19:52.663+05:30</updated><title type='text'>SAP Implementation Process</title><content type='html'>&lt;div align="justify"&gt;SAP Implementation is the whole of processes that defines a complete method to implement SAP software in an organization. The SAP implementation method described in this entry is a generic method and not a specific implementation method as such. It is based on best practices and case studies from various literature sources and presents a collection of processes and products that make up a complete implementation method to allow any organization to plan and execute the implementation of SAP (ERP) software.&lt;br /&gt;&lt;strong&gt;Contents&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1 Introduction&lt;br /&gt;2 Overview&lt;br /&gt;3 Table of concepts&lt;br /&gt;4 Activity table&lt;br /&gt;5 Implementation processes&lt;br /&gt;5.1 Project preparation&lt;br /&gt;5.2 Sizing and blueprinting&lt;br /&gt;5.3 Functional development&lt;br /&gt;5.4 Final preparation&lt;br /&gt;5.5 Go Live&lt;br /&gt;6 Critical success factors&lt;br /&gt;7 See also&lt;br /&gt;8 References&lt;/strong&gt; &lt;/div&gt;&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;The implementation of SAP software, such as SAP R/3 is almost always a massive operation that brings a lot of changes in the organization. The whole process can take a few years. Most probably every person in the organization is involved, whether they are part of the SAP technical support organization (TSO) or the actual end-users of the SAP software. All the changes that the implementation of SAP generates are being made to reach high level goals, such as improved communication and increased return on information (because people will work with the same information). It is therefore very important that the implementation process is planned and executed with the usage of a solid method. There are various SAP implementation methods, such as IBM’s Ascendant. Unfortunately, no information on these methods is freely available and therefore this entry does not describe such a method but a generic implementation method.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Overview &lt;/strong&gt;&lt;strong&gt;Figure 1:&lt;/strong&gt; &lt;/p&gt;&lt;p align="justify"&gt;SAP Implementation process-data diagramThe SAP implementation process is made up out of four main phases, i.e. the project preparation where a vision of the future-state of the SAP solution is being created, a sizing and blueprinting phase where the solution stack is created and training is being performed, a functional development phase and finally a final preparation phase, when the last tests are being performed before the actual go live. For each phase, the vital activities are addressed and the deliverables/products are explained.The process-data diagram that is depicted at the right, gives an overview of all of these activities/processes and deliverables. The four gray boxes depict the four main implementation phases, which each contain several processes that are in this case all sequential. The boxes at the right show all the deliverables/concepts that result from the processes. Boxes without a shadow have no further sub-concepts. Boxes with a black shadow depict complex closed concepts, so concepts that have sub-concepts, which however will not be described in any more detail. Boxes with a white shadow (a box behind it) depict open closed concepts, where the sub-concepts are expanded in greater detail. The lines with diamonds show a has-a relationship between concepts.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Table of concepts&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;The data table below provides a summary of all the concepts addressed in the process-data diagram.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Concept Definition &lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;CHANGE MANAGEMENT&lt;/strong&gt; Activities involved in &lt;/p&gt;&lt;p align="justify"&gt;(1) defining and instilling new values, attitudes, norms, and behaviors within an organization that support new ways of doing work and overcome resistance to change; &lt;/p&gt;&lt;p align="justify"&gt;(2) building consensus among customers and stakeholders on specific changes designed to better meet their needs; and &lt;/p&gt;&lt;p align="justify"&gt;(3) planning, testing, and implementing all aspects of the transition from one organizational structure or business process to another. (&lt;a href="http://www.gao.gov/"&gt;http://www.gao.gov/&lt;/a&gt;) &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;CHANGE MANAGEMENT DOCUMENTATION&lt;/strong&gt; All documentation that is required and being delivered whilst performing change management, e.g. the functional test cases and all the other documents a new end-user of SAP requires and the various tools and approaches used to manage change by the TSO. (Anderson, 2003)&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;COST OF OWNERSHIP ANALYSIS&lt;/strong&gt; Determination of where and when the costs are inquired within the context of the SAP solution stack and ongoing operations. The analysis addresses all internal and external costs, both one-time as well as recurring (Anderson, 2003)&lt;br /&gt;CUTOVER The process of transitioning from one system to a new one (Anderson, 2003) CUTOVER PLAN All documentation related to planning, preparing and executing cutover, describing how to lock down the system from a technical change management perspective, preparing the TSO for its new role and rolling out the SAP graphical user interface to all future end users. (Anderson, 2003) DATA CENTER A data center is a facility used for housing a large amount of electronic equipment, typically computers and communications equipment.&lt;br /&gt;(&lt;a href="http://www.wikipedia.org/"&gt;http://www.wikipedia.org/&lt;/a&gt;) &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;DATA CENTER REQUIREMENT&lt;/strong&gt; A requirement for the SAP data center, i.e. a physical requirement like power requirements, a rack requirement, a network infrastructure requirement or a requirement to the network server. (Anderson, 2003) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;DISASTER RECOVERY (DR) REQUIREMENT&lt;/strong&gt; Requirement that focuses on downtime that lasts many hours to days or even weeks (Anderson, 2003) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;FUNCTIONAL TEST CASE&lt;/strong&gt; A set of conditions or variables under which a tester will determine if a certain business process works (www.wikipedia.org) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;HIGH AVAILABILITY (HA) REQUIREMENT&lt;/strong&gt; Requirements that describes the amount of time that the system needs to be available to satisfy the needs of the users. (Anderson, 2003)&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;INSTALLATION DOCUMENTATION&lt;/strong&gt; All documentation related to the installation of an end-to-end SAP solution (Anderson, 2003) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;OPERATIONS MANUAL&lt;/strong&gt; The collection of current state system documentation, day-to-day and other regularly scheduled operations tasks, various installation and operations checklists and how-to process documents. (Anderson, 2003) .&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;SAP SAP AG is the name of the biggest European software company. The head office is in Walldorf, Germany. SAP was founded in 1972 as Systemanalyse und Programmentwicklung ("Systems Analysis and Product") by five former IBM employees in Mannheim, Germany. (www.wikipedia.org) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;SAP IMPLEMENTATION PROJECT PLAN&lt;/strong&gt; A comprehensive project plan that contains all products that are delivered whilst performing an SAP implementation project (Anderson, 2003)&lt;br /&gt;SOLUTION STACK Set of software subsystems or components needed to deliver a fully functional solution, e.g. a product or service. (www.wikipedia.org) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;SOLUTION STACK PARTNERS LIST&lt;/strong&gt; A list of all vendors that deliver the products that make up the SAP solution stack (Anderson, 2003) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;SOLUTION VISION&lt;/strong&gt; A vision of the future-state of the SAP solution (Anderson, 2003) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;STRESS TEST PLAN&lt;/strong&gt; A test plan that is focused at determining the stability of a given system or entity. It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the results. (www.wikipedia.org) .&lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;TEST PLAN&lt;/strong&gt; A detail of how the test will proceed, who will do the testing, what will be tested, in how much time the test will take place, and to what quality level the test will be performed. (IEEE 829) TRAINING The acquisition of knowledge, skills, and attitudes as a result of the teaching of vocational or practical skills and knowledge that relates to specific useful skills (&lt;a href="http://www.wikipedia.org/"&gt;http://www.wikipedia.org/&lt;/a&gt;). &lt;/p&gt;&lt;p align="justify"&gt;&lt;br /&gt;&lt;strong&gt;TRAINING PLAN&lt;/strong&gt; Consisting of training units, a training plan is the result of hierarchical decompositions of a training goal, tailored according to the learning preferences and prior knowledge of the trainee. A plan is the means by which the trainee satisfies the goal. (www.ece.eps.hw.ac.uk/) TSO Technical Support Organization. The people that are committed to implementation and management of SAP. (Anderson, 2003) TSO CHART A chart that depicts the structure of the TSO. (Anderson, 2003) &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Activity table&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;The following table provides a summary of all of the activities that form the SAP implementation process. These activities will be described with more detail and elaborated with examples in the rest of this entry.&lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Activity Sub-Activity Description&lt;/strong&gt; &lt;/p&gt;&lt;p align="justify"&gt;Project preparation Craft solution vision Refine and communicate a SOLUTION VISION of the future-state of the SAP solution, to sketch a design that meets both business and financial requirements. The focus should be on the company’s core business and how the SAP solution will better enable that core business to be successful.Design and initially staff the SAP TSO Design and staff the key positions of the SAP Technical Support Organization (TSO), the organization that is charged with addressing, designing, implementing and supporting the SAP solution.Sizing and blueprinting Perform cost of ownership analysis Perform a COST OF OWNERSHIP ANALYSIS to determine how to get the best business solution for the least money i.e. to determine where and when the costs are incurred within the context of the SAP solution stack.Identify high availability and disaster recovery requirements Determine all HIGH AVAILABILITY and DISASTER RECOVERY REQUIREMENTS, to plan what to do with later downtime of the SAP systemEngage SAP solution stack vendors Select the best SAP hardware and software technology partners for all layers and components of the SAP SOLUTION STACK, based on a side-by-side sizing comparisonStaff TSO Staff the bulk of the TSO, i.e. fill the positions that directly support the near-term objectives of the implementation, which are to develop and begin installation/implementation of the SAP data center.Execute training Train the various members of the SAP TSO, like data center specialists, high availability specialist and network specialists and train the end-users to give all the required SAP knowledge and skillsSetup SAP DATA CENTER Build a new SAP DATA CENTER facility or transform the current data center into a foundation capable of supporting the SAP SOLUTION STACK.Perform installations Install the (My)SAP components and technological foundations like a web application server or enterprise portal.Round out support for SAP Identify and staff the remaining TSO roles, e.g. roles that relate to help desk work and other such support providing work.SAP functional development Address Change Management Develop a planned approach to the changes in the organization. The objective is to maximize the collective efforts of all people involved in the change and minimize the risk of failure of implementing the changes related to the SAP implementation.Address SAP systems and operations management Create a foundation for the SAP systems management and SAP computer operations, by creating a SAP OPERATIONS MANUAL and by evaluating SAP management applications.Perform functional, integration and regression tests Test the SAP business processes, by executing functional tests to ensure that business processes work, integration tests to ensure that the organization’s business processes work together with other business processes and regression tests to prove that a specific set of data and processes yield consistent and repeatable results.Final Preparation Perform systems and stress tests Plan, script, execute and monitor SAP STRESS TESTS, to see if the expectations of the end users, defined in service level agreements, will be met.Prepare for cutover Plan, prepare and execute the CUTOVER, by creating a CUTOVER PLAN that describes all cutover tasks that have to be performed before the actual go-liveGo Live Turn on the SAP system for the end-users.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7466372797183080431?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7466372797183080431/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7466372797183080431' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7466372797183080431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7466372797183080431'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/sap-implementation-process.html' title='SAP Implementation Process'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2456770591256812217</id><published>2007-10-11T22:17:00.000+05:30</published><updated>2007-10-11T22:25:34.534+05:30</updated><title type='text'>What is the history of SAP?</title><content type='html'>&lt;div align="justify"&gt;Systems, Applications, Products in data processing or SAP was originally introduced in the 1980’s as SAP R/2 which was a mainframe system that provided users with a soft-real-time business application that could be used with multiple currencies and languages. Later when client servers were introduced SAP brought out a server based version of their software called SAP R/3, henceforth referred to as SAP, which was launched in 1992. They also developed a graphical user interface or GUI to make it more user friendly and to move away from the mainframe style user interface. For the next 10 years SAP dominated the large business applications market. It was successful primarily because it was extremely flexible. Because SAP was a modular system meaning that the various functions provided by it could be purchased piecemeal it was an extremely versatile system. All a company needed to do was purchase the modules they wanted and customize the processes to match the company’s business model. SAP’s flexibility, while one of its greatest strengths is also one of its greatest weaknesses. We will now turn to the audit issues surrounding SAP.&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;strong&gt;SAP AG&lt;/strong&gt;&lt;br /&gt;From Wikipedia, the free encyclopedia&lt;br /&gt;Jump to: navigation, search&lt;br /&gt;SAP AG&lt;br /&gt;Type: Aktiengesellschaft (FWB:SAP, NYSE: SAP)&lt;br /&gt;Founded: Weinheim (1972)&lt;br /&gt;Headquarters: Walldorf, Germany&lt;br /&gt;Key people: Henning Kagermann, CEO&lt;br /&gt;Shai Agassi, Development&lt;br /&gt;Industry: Computer software&lt;br /&gt;Products: ERP&lt;br /&gt;Revenue: 8.5billion EUR (2005)&lt;br /&gt;Employees: 32,205&lt;br /&gt;Website: www.sap.com&lt;br /&gt;SAP AG (FWB:SAP, NYSE: SAP) is the largest European software enterprise, with headquarters in Walldorf, Germany. SAP was founded in 1972 as System analyse und Programment wicklung by five former IBM engineers in Mannheim, Germany. The acronym was later changed to stand for Systeme, Anwendungen und Produkte in der Datenverarbeitung ("Systems, Applications And Products in Data Processing") and since the 2005 annual general&lt;br /&gt;meeting the company's official name is just SAP AG. &lt;/p&gt;&lt;p align="justify"&gt;&lt;strong&gt;Reputation&lt;/strong&gt;&lt;/p&gt;&lt;p align="justify"&gt;SAP is the third-largest software company in the world. It ranks after Microsoft and Oracle in terms of market capitalization. SAP is the largest business application and Enterprise Resource Planning (ERP) solution software provider in terms of revenue.&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Products&lt;/strong&gt; &lt;/p&gt;&lt;p align="justify"&gt;SAP's products focus on ERP, which it helped to pioneer. The company's main product is SAP R/3; the "R" stands for realtime data processing and the number 3 relates to a 3-tier architecture: database, application server and client (SAPgui). SAP R/3's predecessor was R/2 which ran on a Mainframe architecture.&lt;br /&gt;&lt;br /&gt;Other major product offerings include &lt;/p&gt;&lt;p align="justify"&gt;Advanced Planner and Optimizer (APO), &lt;/p&gt;&lt;p align="justify"&gt;Business Information Warehouse (BW), &lt;/p&gt;&lt;p align="justify"&gt;Customer Relationship Management (CRM), &lt;/p&gt;&lt;p align="justify"&gt;Supply Chain Management (SCM), &lt;/p&gt;&lt;p align="justify"&gt;Supplier Relationship Management (SRM), &lt;/p&gt;&lt;p align="justify"&gt;Human Resource Management Systems (HRMS),&lt;br /&gt;&lt;/p&gt;&lt;p align="justify"&gt;Product Lifecycle Management (PLM), &lt;/p&gt;&lt;p align="justify"&gt;Exchange Infrastructure (XI),&lt;/p&gt;&lt;p align="justify"&gt;Enterprise Portal (EP) and Knowledge Warehouse (KW).&lt;br /&gt;&lt;br /&gt;The APO name has been retired and rolled into SCM. The BW name (Business Warehouse) has now been rolled into the SAP NetWeaver BI (Business Intelligence) suite and functions as the reporting module.&lt;br /&gt;&lt;br /&gt;The company also offers a new technology platform, named SAP NetWeaver. While its original products are typically used by Fortune 500 companies, SAP is now also actively targeting small and medium sized enterprises (SME) with its SAP Business One and SAP All-in-One.&lt;br /&gt;&lt;br /&gt;Reportedly, there are over 100,800 SAP installations at more than 28,000 companies. SAP products are used by over 12 million people in more than 120 countries. &lt;/p&gt;&lt;p align="justify"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2456770591256812217?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2456770591256812217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2456770591256812217' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2456770591256812217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2456770591256812217'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/what-is-history-of-sap.html' title='What is the history of SAP?'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5211341030772995895</id><published>2007-10-07T23:46:00.000+05:30</published><updated>2007-10-07T23:48:41.869+05:30</updated><title type='text'>Architecture of the Enhancement Technique</title><content type='html'>&lt;div align="justify"&gt;In order to enhance a program, you must first define a Business Add-In. The application developer creates an interface for the add-in. From this, enhancement management creates an adapter class that implements the interface and thus provides the interface for implementation by the customer, partner, and so on. The developer then creates an instance of the adapter class in the application program and calls the corresponding method at the appropriate time.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118660531895387714" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/__aUD213pS6o/RwkioklvxkI/AAAAAAAAAQM/Vel5VSrdfhE/s320/a_quic6.jpg" border="0" /&gt;&lt;/div&gt;&lt;p align="justify"&gt;&lt;/p&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;br /&gt;For each Business Add-In you have one interface and an adapter class that implements this. The interface is implemented by the user.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;The generated class (Add-In adapter) has the following tasks:&lt;br /&gt;· Control &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The adapter class calls the active implementations.&lt;br /&gt;1. · Filtering&lt;br /&gt;If a Business Add-In is to be executed only under certain conditions, the adapter class ensures that only certain implementations will be executed. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;This concept ensures mutlple use. Any Business Add-In that has been implemented once already can be implemented again by those groups listed to the right of the software chain shown in the above graphic. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Customers can find the enhancements in their system in the Implementation Guide (IMG) and in the component hierarchy. If a customer wishes to use a Business Add-In, he or she first creates an implementation. The customer must implement the methods and the enhancements, and afterwards activate the implementation of the enhancement. The enhancement's active components are then called at runtime. Normally, a Business Add-In contains an interface and other additional components such as function codes for menu enhancements. In some cases, Business Add-Ins also include enhancements for screens. The enhancement, interface, and generated classes are all located in the appropriate application development namespace. Business Add-In implementations are created in the respective implementation namespace.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5211341030772995895?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5211341030772995895/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5211341030772995895' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5211341030772995895'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5211341030772995895'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/architecture-of-enhancement-technique.html' title='Architecture of the Enhancement Technique'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/__aUD213pS6o/RwkioklvxkI/AAAAAAAAAQM/Vel5VSrdfhE/s72-c/a_quic6.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-8453524702833958935</id><published>2007-10-07T23:43:00.000+05:30</published><updated>2007-10-07T23:46:07.678+05:30</updated><title type='text'>A Comparison of Different Enhancement Techniques</title><content type='html'>&lt;div align="justify"&gt;Due to the necessity of adjusting R/3 to meet the specific needs of a variety of customers, several different enhancement techniques were developed in the past. A short description of each of the various enhancement techniques follows. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Business Transaction Events (Open FI)&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;The Open FI enhancement technique was developed in the Financial Accounting component. Open FI is based upon the following principles: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Application developers must define their interface in a function module, an assignment table is read in the accompanying (generated) code, and the customer modules assigned are called dynamically.&lt;br /&gt;This technique differentiates between enhancements that are only allowed to have one implementation and enhancements that can call multiple implementations in any sequence desired. Both industry-specific and country-specific enhancements may be defined.&lt;br /&gt;The concepts behind the Business Add-Ins enhancement technique and Open FI are basically the same. However, the two enhancement techniques do differ from each other in the following points: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1. · Open FI can only be used to make program enhancements, that is, you can only enhance source code using Open FI. You cannot enhance user interface elements with Open FI like you can with Business Add-Ins.&lt;br /&gt;1. · Open FI assumes that enhancement will only take place on three levels (SAP - partners - customers), whereas with Business Add-Ins you can create and implement enhancements in as many software layers as you like.&lt;br /&gt;2. · Open FI uses function modules for program enhancements. With Business Add-Ins, ABAP Objects is used to enhance programs. &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Enhancements in Transactions SMOD/CMOD&lt;/strong&gt;&lt;/div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;a name="_Hlt441464806"&gt;Making enhancements using the transactions &lt;/a&gt;&lt;a href="http://help.sap.com/saphelp_nw04/helpdata/en/c8/1975cc43b111d1896f0000e8322d00/content.htm"&gt;SMOD/CMOD&lt;/a&gt; has the following disadvantages:&lt;br /&gt;1.       ·  This enhancement technique assumes a two-tiered system infrastructure (SAP – customers).&lt;br /&gt;2.       ·   The naming conventions in effect do not tolerate name extension. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Conclusion:&lt;br /&gt;&lt;/strong&gt;None of the techniques mentioned above can easily be extended to fulfill the requirements of a system infrastructure containing country versions, industry solutions, partners, and customers.Business Add-Ins should be considered generalized Business Transaction Events that can be used to bundle program, menu and screen enhancements into a single add-in. Business Add-Ins can be created and employed in each of the various software levels. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-8453524702833958935?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/8453524702833958935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=8453524702833958935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8453524702833958935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/8453524702833958935'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/comparison-of-different-enhancement.html' title='A Comparison of Different Enhancement Techniques'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-6316468930850641935</id><published>2007-10-07T23:30:00.000+05:30</published><updated>2007-10-07T23:42:59.579+05:30</updated><title type='text'>Defining a Business Add-In</title><content type='html'>&lt;strong&gt;Use&lt;/strong&gt;&lt;br /&gt;An application developer who wishes to have a Business Add-In in a particular program defines the interface for an enhancement in the Business Add-In Builder. In the following step, he or she programs the interface call in the application program at the appropriate place. Customers can then select the add-in and implement it according to their needs.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Procedure&lt;/strong&gt;&lt;br /&gt;1. ...&lt;br /&gt;1. From the SAP menu, choose Tools ® ABAP Workbench ® Utilities ® Business Add-Ins (transaction SE18).&lt;br /&gt;&lt;br /&gt;We would like to explain the procedures using an application program as an example. There is a string conversion in the program. You want the add-in users to determine themselves how their strings are to be converted. The application developer defines an enhancement. It consists of an interface with a method. A changing parameter is used to pass on the string.&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Option: Within SAP &lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Meaning:&lt;/strong&gt; If the customer selects this option for an Add-In, he or she has no option for creating his or her own implementations for this Business Add-In or for using them. In the input help, Business Add-Ins with this flag are not displayed. For more information on the checkbox Within SAP, refer to the section Definition of a Business Add-In in the Enterprise Core. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Option: Multiple Use&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Meaning&lt;/strong&gt;: The Business Add-In can be set for multiple use. For more information, refer to the section Multiple-Use Business Add-Ins.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Option: Filter-Dependent&lt;/strong&gt; &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;strong&gt;Meaning :&lt;/strong&gt; The implementation of a Business Add-In is dependent on a particular filter value.For more information, refer to the section Multiple-Use Business Add-Ins.&lt;br /&gt;None of the above options is selected. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;5. Choose the Interface tab. The interface name is generated automatically and can be changed here.&lt;br /&gt;&lt;br /&gt;2. Enter a name with a maximum of 20 characters for the Business Add-In. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118657108806452738" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RwkfhUlvxgI/AAAAAAAAAPs/wgvnFdANr4k/s320/a_quic9.gif" border="0" /&gt;&lt;br /&gt;3. Choose Create.&lt;br /&gt;4. On the following screen, enter a short text as the description for the Business Add-In.In this example, we are dealing with a simple enhancement. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118658156778472978" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RwkgeUlvxhI/AAAAAAAAAP0/70vvqlrR3d4/s320/a_quic10.jpg" border="0" /&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;Under the FCodes tab, you can create &lt;a href="http://help.sap.com/saphelp_nw04/helpdata/en/eb/3e7cfd940e11d295df0000e82de14a/content.htm"&gt;Menu Enhancements&lt;/a&gt;, and under the Subscreens tab you can create &lt;a href="http://help.sap.com/saphelp_nw04/helpdata/en/9d/12233a0edd7978e10000000a11402f/content.htm"&gt;Screen Enhancements&lt;/a&gt;.&lt;br /&gt;6. Double-click the interface name field. The system branches to the Class Builder.&lt;br /&gt;7. Confirm that you want to save the entries you have made. Assign a package to the Business Add-In. &lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;8. Use the Class Builder to assign a method to the interface.&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5118658706534286882" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/Rwkg-UlvxiI/AAAAAAAAAP8/3dlLrsCn47c/s320/a_quic11.gif" border="0" /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;9. Now define a parameter with the following attributes:&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5118659123146114610" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/__aUD213pS6o/RwkhWklvxjI/AAAAAAAAAQE/4s81vYG20P0/s320/a_quic12.gif" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;10. Save and activate your entries. Use the pushbutton Back to navigate back to the Business Add-In definition.&lt;br /&gt;&lt;br /&gt;You can now continue with the definition of the Business Add-In by executing activation in the Class Builder.&lt;br /&gt;A table control now appears on the definition screen for the Business Add-In. It displays the method you have created for the interface.&lt;br /&gt;When you maintain the interface methods, the corresponding executing class is generated. The generated code cannot be altered in the initial expansion phase.&lt;br /&gt;11. Save your entries and use the Documentation pushbutton to create a description for your new Business Add-In. Remember that this documentation is very important for users to be able to understand the purpose behind the Add-In. For more information, read the section Documentation of a Business Add-In.&lt;br /&gt;&lt;br /&gt;Choose Goto ® Default Coding / Sample Coding if you wish to create default coding and/ or sample coding for the Business Add-In. The default implementation is executed only if no other active implementation is available. This applies also to filter-dependent Business Add-Ins.&lt;br /&gt;&lt;br /&gt;When you create default or sample coding, do not forget to save your entries. In this way, the connection between the class and the implementation is set up.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-6316468930850641935?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/6316468930850641935/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=6316468930850641935' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6316468930850641935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/6316468930850641935'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/defining-business-add-in.html' title='Defining a Business Add-In'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__aUD213pS6o/RwkfhUlvxgI/AAAAAAAAAPs/wgvnFdANr4k/s72-c/a_quic9.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5565821474828461395</id><published>2007-10-07T23:28:00.000+05:30</published><updated>2007-10-07T23:30:52.834+05:30</updated><title type='text'>Calling a Business Add-In in the Application Program</title><content type='html'>&lt;div align="justify"&gt;When you define a Business Add-In, enhancement management generates a class that implements your interface. The application developer uses a factory method to create an instance of this adapter class in the application program and calls the corresponding method, if necessary.&lt;br /&gt;The adapter class method generated by add-in management decides whether one or several active implementations should be called. If necessary, these implementations are subsequently executed. The application program ensures only that the adapter class method is called. The application program does not know which implementations are called.&lt;br /&gt;&lt;br /&gt;Example: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Having created a string conversion Business Add-In, you would program the call of the Business Add-In into your ABAP source code as follows: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;1 Report businessaddin.&lt;br /&gt;2 class cl_exithandler definition load. "Declaration&lt;br /&gt;3 data exit type ref to if_ex_businessaddin. "Interface reference&lt;br /&gt;4 data word(15) type c value 'Business Add-in'. "String to change&lt;br /&gt;&lt;br /&gt;5 start-of-selection.&lt;br /&gt;6 call method cl_exithandler=&gt;get_instance "Factory method call&lt;br /&gt;7 exporting "Method&lt;br /&gt;exit name =’BUSINESSADDIN’&lt;br /&gt;8 null instance accepted =’X’&lt;br /&gt;9 changing instance = exit.&lt;br /&gt;10 write:/'Please click here'.&lt;br /&gt;&lt;br /&gt;11 at line-selection.&lt;br /&gt;12 write:/ 'Original word: ',word.&lt;br /&gt;&lt;br /&gt;13 if not exit is initial.&lt;br /&gt;14 call method exit-&gt;method "Add-In call&lt;br /&gt;15 changing parameter = word.&lt;br /&gt;16 endif.&lt;br /&gt;17 write:/ 'Original word: ',word. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;In order to be able to call static methods, you must declare the corresponding class in ABAP Objects. This is why the class … definition load statement is necessary for the factory class.&lt;br /&gt;A variable for object reference is also necessary when calling the method. Use data to create it and type it to the interface. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;During initialization (line 6), the application developer creates an adapter class instance using the factory method. The instance methods are then called at the time specified.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;To improve performance during creation of the instances, you should specify additional parameters for the call in the method GET_INSTANCE of the class CL_EXITHANDLER.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;EXIT_NAME:&lt;/strong&gt; The name of the BAdI definition is assigned to this parameter. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;NULL_INSTANCE_ACCEPTED:&lt;/strong&gt; Whenever the value X is assigned to this parameter, no instance is created if there are no active implementations for this BAdI definition. In this case, the INSTANCE parameter has the value NULL. Using this parameter implies that the method calls of this BAdI may only be called under the condition that this instance is not NULL. The query if not &lt;badi&gt;is initial. is necessary in this case. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Notes on Usage&lt;br /&gt;&lt;/strong&gt;The instance generated through the factory method should be declared as globally as possible or generally be passed as a parameter to ensure that the initialization process must be run as rarely as possible – just once would be best. In no case should you discard the instance as soon as it is generated or repeatedly run the initialization process in a loop.&lt;br /&gt;&lt;br /&gt;Within the adapter class interface, required database accesses are buffered locally, so that each access is executed once only. However, repeated initialization makes the buffer useless and dramatically reduces performance. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Due to the local buffering, you can call Business-Add-In methods without having to expect considerable performance restrictions, even if no active implementations exist. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Also, if the definition of the Business-Add-In is filter-dependent, a single instance is sufficient.&lt;br /&gt;However, you should not do without initialization altogether. Even if you could call static methods of the implementing class of the Business-Add-In implementation without an instance, you would lose the benefit of performance improvement through the Business-Add-Ins and the possibility of multiple use. If you switch the method type in the interface from the static method to the instance method at any time in the future, many code adjustments are required. In addition, you can no longer use default code that is provided&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5565821474828461395?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5565821474828461395/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5565821474828461395' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5565821474828461395'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5565821474828461395'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/calling-business-add-in-in-application.html' title='Calling a Business Add-In in the Application Program'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7471347768845770842</id><published>2007-10-07T23:17:00.000+05:30</published><updated>2007-10-07T23:28:02.699+05:30</updated><title type='text'>Implementing a Business Add-In</title><content type='html'>&lt;div align="justify"&gt;A list of the Business Add-Ins available in your system can be found either in the SAP Reference Implementation Guide (IMG) or in the component hierarchy. BAdI definitions are included in the IMG so that the customer/partner can create suitable, company-specific implementations&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; In the SAP Reference IMG, BAdI implementations - in addition to BAdI definitions - can be provided. This would be suitable in cases where you can see in advance which functions are required by the customer. Using a BAdI implementation, the customer/partner can simply switch the delivered implementations on or off, as required. In the SAP Reference IMG, choose Execute in front of the name of the BAdI implementation. The icon serves as a switch for activating and deactivating the implementation.&lt;br /&gt;&lt;br /&gt;Starting from the name and the documentation of the enhancement, you can create an implementation. During the implementation, the system creates a class that implements the enhancement’s interface. The implementation is a separate transport object and lies within the namespace of the person or organization implementing it.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;For the example given here, you are to create an implementation for the string conversion. You need to program the interface method in such a way that, when the add-in is called from the application program, the string is actually converted in the way the add-in user wants it.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;To create an implementation, proceed as follows:&lt;br /&gt;1. ...&lt;br /&gt;1. 1. In the SAP menu, choose ABAP Workbench ® Utilities ® Business Add-Ins (transaction SE19) or double-click the corresponding activity in the Implementation Guide (IMG).&lt;br /&gt;2. 2. Enter a name for the implementation and then click the Create pushbutton.&lt;br /&gt;3. 3. Enter the name of the add-in for which you want to create an implementation for in the dialog box that appears.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5118654888308360690" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/__aUD213pS6o/RwkdgElvxfI/AAAAAAAAAPk/emWVDADdjTA/s320/a_quic15.gif" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;4. 4. Enter a short text describing your implementation on the following screen.&lt;br /&gt;5. 5. Choose the Interface tab.&lt;br /&gt;6. 6. Choose ABAP Code as the implementation type.&lt;br /&gt;In addition to ABAP Code, there is also the Formula option. If you choose Formula, the content of a method is determined using the Formula Builder. For more information on this, refer to the section Implementing Methods Using the Formula Builder.&lt;br /&gt;7. 7. Navigate to the Class Builder by double-clicking the method. You must first enter a package before the Class Builder is displayed.&lt;br /&gt;8. 8. Insert the desired source code for the implementation between the method if_ex_businessaddin~method. and endmethod. statements that already exist.&lt;br /&gt;&lt;br /&gt;In our particular example, you could enter the statement translate parameter to upper case.&lt;br /&gt;9. 9. Save your entries and return to the Change Implementation screen.&lt;br /&gt;10. 10. Choose Activate. You may now use this implementation when the application program is executed.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Note :&lt;/strong&gt; Several implementations may exist for a Business Add-In that is not used on a multiple basis. However, only one implementation can be active at any one time.What is also important is that you must declare the instance generation of the implementing class (Attributes tab) as public and not as private, protected, or even abstract. If you do this, the system will return short dumps at runtime.&lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-7471347768845770842?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/7471347768845770842/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=7471347768845770842' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7471347768845770842'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/7471347768845770842'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/implementing-business-add-in.html' title='Implementing a Business Add-In'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__aUD213pS6o/RwkdgElvxfI/AAAAAAAAAPk/emWVDADdjTA/s72-c/a_quic15.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3512053429320107697</id><published>2007-10-07T23:12:00.000+05:30</published><updated>2007-10-07T23:16:01.167+05:30</updated><title type='text'>Implementing Methods Using the Formula Builder</title><content type='html'>&lt;div align="justify"&gt;&lt;strong&gt;Use &lt;/strong&gt;&lt;br /&gt;You can use the Formula Builder to implement methods for Business Add-Ins without writing a single line of ABAP code. The methods are implemented by means of socalled formulas. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;This type of implementation does not require you to have programming knowledge. However, the functions it offers are more restricted than if you implement a method by writing ABAP code. If the range of functions provided by the Formula Builder is not sufficient, you can change the implementation type of the method at any time. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Features&lt;/strong&gt;&lt;br /&gt;A formula can consist of the following steps: &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;· Condition&lt;/strong&gt;&lt;br /&gt;You define a Boolean formula expression whose result can be true or false. This formula expression is a logical condition based on the importing and changing parameters of the method. Depending on whether the condition is true or false, the system triggers different steps. If you do not specify a dependent step for one of these two possibilities, the system continues with the next superior step. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;· Substitution&lt;/strong&gt;&lt;br /&gt;The system replaces the value of a specific parameter with another value which you define as a constant value or by means of a mathematic formula. Substitution is only possible if the method contains changing, exporting or returning parameters. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;· Message&lt;/strong&gt;&lt;br /&gt;The system issues a message. All messages issued are collected in a log table. You define the message variables as constant values or by means of mathematic formulas. The system can only issue a message if you created a log table during method definition. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;· Exception&lt;br /&gt;&lt;/strong&gt;The system exits the method. No further steps are executed, and the application program continues in accordance with the exception defined. You can additionally display a message whose variables you define as constant values or by means of mathematic formulas. An exception can only be triggered if the method contains exceptions. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;A formula editor is available which you can use to enter formula expressions. After starting the formula editor, you can display information on how to use it by choosing the pushbutton next to the status display (traffic light). &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;&lt;strong&gt;Activities&lt;/strong&gt;&lt;br /&gt;You implement the method using the BAdI Builder. For information on this topic, see Implementing Business Add-Ins. To implement a method as a formula, choose the Formula implementation type on the Interface tab. Double-clicking the method name takes to to the Formula Builder: BadI Implementation screen.&lt;br /&gt;&lt;br /&gt;You can change the implementation type of the method on the Interface tab. You can implement a method both using a formula and using ABAP code. At the runtime of the application program, the system executes the implementation type currently chosen. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;You create the necessary steps in the left section of the screen. To do this, choose and then select the appropriate step type from the dropdown list. Using the other icons available or the context menu (which you can call by clicking the right mouse button), you then determine the arrangement and the descriptions of the steps. You can also copy steps to use them as templates for other steps, or you can delete individual steps. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;To specify the parameters for the individual steps, double-click the corresponding entry in the left section of the screen. You then enter the data required in the right section of the screen.&lt;br /&gt;&lt;br /&gt;Formulas are transported automatically. &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3512053429320107697?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3512053429320107697/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3512053429320107697' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3512053429320107697'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3512053429320107697'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/implementing-methods-using-formula.html' title='Implementing Methods Using the Formula Builder'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4747359475615551419</id><published>2007-10-07T23:07:00.000+05:30</published><updated>2007-10-07T23:12:07.883+05:30</updated><title type='text'>Multiple-Use Business Add-Ins</title><content type='html'>&lt;div align="justify"&gt;You can differentiate between single-use and multiple use Business Add-Ins. The distinction is based on the procedure or event character of an enhancement. In the first case, the program waits for the enhancement to return something, usually a return code. A typical example could be a benefit calculation in HR. Depending on the implementation, alternative calculations can be executed. With multiple use add-ins, an event that may be of interest to other components is processed in program flow. Any number of components could use this event as a “hook” to hang their own additional actions on to. &lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;In addition to importing parameters, you can also use changing parameters for multiple-use Business Add-Ins. There is no sequence control for multiple-use implementations of BadIs. Therefore, using changing parameters can cause problems. There is no guarantee that implementations will not overwrite the results of previous implementations. Sequence control is technically impossible, since at the time of the definition the interface does not know which implementations there will be and which parameters will be changed by implementations. It is not possible to have a decision as to which implementation should be executed before which other (future) implementation.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Example:&lt;/strong&gt;&lt;br /&gt;In a particular application, you want to be able to continue processing indexes after another component has saved data (in other words, the system should allow you to use an add-in after saving). Since this point in time can be useful for different purposes, you can create an enhancement here that can be used by multiple subscribers. &lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;To create a multiple-use Business Add-In, proceed as follows:&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;2. ...&lt;br /&gt;11. 1. Define an add-in and select the Multiple Use checkbox from the Administration tab.&lt;br /&gt;12. 2. Define an interface with the method OBJECT_SAVED'and the importing parameter OBJECTNAME.&lt;br /&gt;Calling your enhancement in the application program:&lt;br /&gt;program event.&lt;br /&gt;…&lt;br /&gt;data exit_obj type ref to if_ex_event.&lt;br /&gt;…&lt;br /&gt;call method cl_exithandler =&gt;get_instance&lt;br /&gt;changing instance = exit.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;form save_object using obj_name type c.&lt;br /&gt;…&lt;br /&gt;update …&lt;br /&gt;call method exit_obj-&gt;object_saved&lt;br /&gt;exporting objectname = obj_name.&lt;br /&gt;endform.&lt;br /&gt;For the caller it is irrelevant whether (and how many) subscribers use the event as a starting point for further actions. The active implementations are called in the adapter method. &lt;/p&gt;&lt;p&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4747359475615551419?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4747359475615551419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4747359475615551419' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4747359475615551419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4747359475615551419'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/multiple-use-business-add-ins.html' title='Multiple-Use Business Add-Ins'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5322484644161811559</id><published>2007-10-07T22:54:00.000+05:30</published><updated>2007-10-07T23:07:43.350+05:30</updated><title type='text'>Menu Enhancements</title><content type='html'>&lt;div&gt;&lt;div align="justify"&gt;Menu enhancements with function codes are provided for in the user interfaces. These function codes must adhere to the form /namensraum/+&lt;...&gt;, just like in the enhancement technique SMOD/CMOD. These function codes are assigned to an enhancement. Only when there is an active implementation of the assignment do they appear in the menu. &lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;br /&gt;The application developer reserves specific function codes for customers when defining a Business Add-In and assigns them in the Menu Painter in the appropriate menu lists. The application developer must also ensure that these menu options are queried in the application program and that the corresponding add-in method is also called. Customers can take advantage of menu enhancements by creating a new implementation, choosing a text for the menu option, and then programming the method used to determine what action is performed when the menu enhancement is called. &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;Menu enhancements can only be used for single-use add-ins (not multiple-use add-ins) that are not filter-dependent. Currently, menu enhancements can only be created in conjunction with program enhancements (interfaces). &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;To create a menu enhancement, proceed as follows:&lt;br /&gt;3.&lt;br /&gt;13. 1. Create the definition of an add-in and define its interface.&lt;br /&gt;14. 2. Choose the FCodes tab.&lt;br /&gt;15. 3. Enter the name of your program, the function code, and a description.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118648793749767634" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RwkX9UlvxdI/AAAAAAAAAPU/UKCIaCobzgg/s320/a_quic11.gif" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;16 4. Call the Menu Painter or double-click on the program name or function code to navigate to user interface maintenance in the Menu Painter. Enter the function code in the appropriate menu list. If you have accessed the Menu Painter directly during add-in definition, you can call the menu lists by choosing Goto ® Object Lists ® Menu Lists.&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;Calling a Menu Enhancement from the Application Program&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;The application program should look like this:&lt;br /&gt;(…)&lt;br /&gt;case fcode.&lt;br /&gt;when 'SAP'.&lt;br /&gt;(…)&lt;br /&gt;when '+CUS'&lt;br /&gt;call method … &lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;strong&gt;Implementing a Menu Enhancement&lt;/strong&gt;&lt;/p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;p align="justify"&gt;To create the implementation of a menu enhancement, proceed as follows:&lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;&lt;br /&gt;4. eine Implementierung an und wählen Sie den Registerindex Fcodes &lt;/p&gt;&lt;br /&gt;&lt;p align="justify"&gt;1. Create an implementation and choose the FCodes tab. All data adopted from your Business Add-In's definition is displayed here. You can make entries for the implementation on the right. You can also double-click the first input field. The following dialog box appears:&lt;br /&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5118649987750675938" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/__aUD213pS6o/RwkZC0lvxeI/AAAAAAAAAPc/PbddlkMd75E/s320/a_quic20.gif" border="0" /&gt;&lt;/div&gt;&lt;br /&gt;&lt;p align="justify"&gt;Here you may enter a text for your function code, the name of an icon, a text for the icon, and a short description.&lt;br /&gt;The actions that you want the system to perform after the pushbutton is chosen must be programmed in the appropriate method, either manually or using a default source code that has been provided for this purpose. Menu enhancements only become visible after the implementation has been activated and the application program that calls the Business Add-In has been executed.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5322484644161811559?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5322484644161811559/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5322484644161811559' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5322484644161811559'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5322484644161811559'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/menu-enhancements.html' title='Menu Enhancements'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/__aUD213pS6o/RwkX9UlvxdI/AAAAAAAAAPU/UKCIaCobzgg/s72-c/a_quic11.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1491815207276598003</id><published>2007-10-07T11:35:00.000+05:30</published><updated>2007-10-07T13:22:28.351+05:30</updated><title type='text'>Business Add-Ins: Import Procedure</title><content type='html'>Conflicts can occur at release upgrade or when transporting a Business Add-In within a system infrastructure containing multiple levels (country versions, industry solutions, partners, etc.). Possible collisions include:&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div align="justify"&gt;&lt;strong&gt;&lt;/strong&gt; &lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Case 1 :&lt;/strong&gt; Multiple active implementations exist for Business Add-Ins that have not been designed for multiple use (for the same filter value, if add-in is filter-dependent).&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Case 2 :&lt;/strong&gt; Identical interfaces were assigned during Business Add-In definition.&lt;br /&gt;&lt;strong&gt;Case 3 :&lt;/strong&gt; Identical function codes were assigned during Business Add-In definition.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;Whenever such collisions occur, corresponding error messages and warnings are created in the transport log at import. Their long texts provide you with information on how to proceed.&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div align="justify"&gt;&lt;img id="BLOGGER_PHOTO_ID_5118474658595718466" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/__aUD213pS6o/Rwh5lUlvxUI/AAAAAAAAAOM/fVwosOdfhU8/s320/a_quic21.jpg" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;If the collision described in case 1 occurs in your system, proceed as follows&lt;br /&gt;&lt;br /&gt;1. 1.Choose Utilities ® Adjustment ® Multiple active implementations (in transaction SE18).&lt;br /&gt;A list appears displaying your Business Add-Ins. A red traffic light indicates that multiple active implementations exist for that add-in.&lt;br /&gt;2. 2. Deactivate these implementations using the appropriate pushbutton or double-click on the name of the implementation to branch to the corresponding transaction where you can then correct the problem&lt;br /&gt;&lt;br /&gt;In cases 2 and 3, proceed as follows:&lt;br /&gt;&lt;br /&gt;1. 1. Choose Utilities ® Adjustment ® Multiple assigned interfaces or Multiple function codes assigned.&lt;/div&gt;&lt;div align="justify"&gt;&lt;br /&gt;Both of these menu options display an overview; the Add-Ins in question are marked with a red traffic light.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;2. 2. The people responsible for those add-in definitions where identical interfaces and function codes occur must now decide how to proceed. To delete a function code or change an interface name, call the ABAP Workbench and use the appropriate pushbutton to call the tool you need. A new transport may be necessary.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Sorting BAdI Implementations &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;&lt;strong&gt;Use&lt;/strong&gt;&lt;br /&gt;The sequence for execution of BAdI implementations can be controlled for BAdIs used on a multiple basis by a sort mechanism.&lt;br /&gt;Procedure&lt;br /&gt;1. en ...&lt;br /&gt;2. .&lt;br /&gt;In the BAdI Builder (SE18), choose Utilities ® Sort.&lt;br /&gt;Choose Standard Sort if sorting is to take place using numeric sort values. The numeric values are entered in the displayed field Layer Value when you create the implementations and stored in a table. The implementations are executed in accordance with the specified sequence.&lt;br /&gt;Choose Special Sort if sorting is to take place using non-numeric sort values. In this case, you need to enter the name of the implementation that will be created in the following step.&lt;br /&gt;Proceed as follows if you require special sorting:&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;18. 1. Create an implementation for the BAdI definition BADI_LAYER contained in the delivered product. Enter a BAdI definition as filter value in the Properties tab (the name will be used as a dummy value to begin with).&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div align="justify"&gt;19. 2. Create a screen (in a function group or a module pool). The screen contains, for example, a text field with the name Sort Value and an input field.&lt;br /&gt;&lt;/div&gt;&lt;div align="justify"&gt;20. 3. Choose the Subscreens tab of the BAdI implementation and enter the called program and the screen number.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt; &lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5118496747612521890" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/__aUD213pS6o/RwiNrElvxaI/AAAAAAAAAO8/FWUse74swMQ/s320/a_quic22.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;21. 4. Choose the Interface tab. The IF_EX_BADI_LAYER interface contains the following methods:&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5118487887094990178" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/__aUD213pS6o/RwiFnUlvxWI/AAAAAAAAAOc/P_C-1NCFLU0/s320/a_quic23.jpg" border="0" /&gt; &lt;p&gt;In addition to methods for data transmission of the sort value and for changing the BAdI implementation, the interface also contains a sort method that sorts a table of values in any specified order.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;&lt;img id="BLOGGER_PHOTO_ID_5118488643009234290" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/__aUD213pS6o/RwiGTUlvxXI/AAAAAAAAAOk/e_zL0Tlwo88/s320/a_quic24.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;A standard table is passed to this method as a changing parameter. The table contains values only; it does not contain any implementation names.&lt;br /&gt;This table contains, for example, inputs for the Sort Value field when you create implementations. The user can maintain any fields as required and sort them according to any specified criteria at runtime.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;22. 5. Program the method SORT_DATA. Here is an example of simple sorting of numeric values:&lt;/div&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5118489149815375234" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/__aUD213pS6o/RwiGw0lvxYI/AAAAAAAAAOs/wgUxzUamF9w/s320/a_quic25.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;23 6. Program the methods for data transmission in the following form (see also &lt;a href="http://help.sap.com/saphelp_nw04/helpdata/en/9d/12233a0edd7978e10000000a11402f/content.htm"&gt;Screen Enhancements&lt;/a&gt;). &lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5118497512116700594" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RwiOXklvxbI/AAAAAAAAAPE/Mhri7bEJco4/s320/a_quic26.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;24 7. Program the call for implementations from the application program. The IF_EX_BADI_LAYER interface contains a parameter-free method called TEST for test purpose.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5118498010332906946" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/__aUD213pS6o/RwiO0klvxcI/AAAAAAAAAPM/Fy3cJMx_q3M/s320/a_quic27.jpg" border="0" /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;The implementations are executed (for example, in numeric sequence).&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;Switching Off Sort Function&lt;/strong&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;To switch off the sort for the execution of BAdI implementations, choose Utilities ® Sort and finally No Sort. The implementations will now run in an arbitrary sequence in this case. The edit field that was displayed using a subscreen during the execution of a BAdI implementation now disappears.&lt;br /&gt;Sorting of BAdI implementations can be switched on again at any time. This does not count as a modification to the standard version. The BAdI definition is not changed. Switching off or making a change, on the other hand, counts as a modification. &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1491815207276598003?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1491815207276598003/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1491815207276598003' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1491815207276598003'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1491815207276598003'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/business-add-ins-import-procedure.html' title='Business Add-Ins: Import Procedure'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/__aUD213pS6o/Rwh5lUlvxUI/AAAAAAAAAOM/fVwosOdfhU8/s72-c/a_quic21.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2369137830854693180</id><published>2007-10-05T22:04:00.001+05:30</published><updated>2007-10-05T22:06:21.644+05:30</updated><title type='text'>Example of Sending XLS file as a mail via SAPCONNECT</title><content type='html'>&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Report ZEMAIL_ATTACH *&lt;br /&gt;&lt;br /&gt;*&amp;amp; *&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Example of sending external email via SAPCONNECT *&lt;br /&gt;&lt;br /&gt;*&amp;amp; *&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;REPORT ZEMAIL_ATTACH .&lt;br /&gt;&lt;br /&gt;TABLES: ekko.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;PARAMETERS: p_email TYPE somlreci1-receiver&lt;br /&gt;&lt;br /&gt;DEFAULT 'test@sapdev.co.uk'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TYPES: BEGIN OF t_ekpo,&lt;br /&gt;&lt;br /&gt;ebeln TYPE ekpo-ebeln,&lt;br /&gt;&lt;br /&gt;ebelp TYPE ekpo-ebelp,&lt;br /&gt;&lt;br /&gt;aedat TYPE ekpo-aedat,&lt;br /&gt;&lt;br /&gt;matnr TYPE ekpo-matnr,&lt;br /&gt;&lt;br /&gt;END OF t_ekpo.&lt;br /&gt;&lt;br /&gt;DATA: it_ekpo TYPE STANDARD TABLE OF t_ekpo INITIAL SIZE 0,&lt;br /&gt;&lt;br /&gt;wa_ekpo TYPE t_ekpo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;TYPES: BEGIN OF t_charekpo,&lt;br /&gt;&lt;br /&gt;ebeln(10) TYPE c,&lt;br /&gt;&lt;br /&gt;ebelp(5) TYPE c,&lt;br /&gt;&lt;br /&gt;aedat(8) TYPE c,&lt;br /&gt;&lt;br /&gt;matnr(18) TYPE c,&lt;br /&gt;&lt;br /&gt;END OF t_charekpo.&lt;br /&gt;&lt;br /&gt;DATA: wa_charekpo TYPE t_charekpo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: it_message TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0&lt;br /&gt;&lt;br /&gt;WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;DATA: it_attach TYPE STANDARD TABLE OF solisti1 INITIAL SIZE 0&lt;br /&gt;&lt;br /&gt;WITH HEADER LINE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: t_packing_list LIKE sopcklsti1 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;t_contents LIKE solisti1 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;t_receivers LIKE somlreci1 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;t_attachment LIKE solisti1 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;t_object_header LIKE solisti1 OCCURS 0 WITH HEADER LINE,&lt;br /&gt;&lt;br /&gt;w_cnt TYPE i,&lt;br /&gt;&lt;br /&gt;w_sent_all(1) TYPE c,&lt;br /&gt;&lt;br /&gt;w_doc_data LIKE sodocchgi1,&lt;br /&gt;&lt;br /&gt;gd_error TYPE sy-subrc,&lt;br /&gt;&lt;br /&gt;gd_reciever TYPE sy-subrc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;*START_OF_SELECTION&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;* Retrieve sample data from table ekpo&lt;br /&gt;&lt;br /&gt;PERFORM data_retrieval.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Populate table with detaisl to be entered into .xls file&lt;br /&gt;&lt;br /&gt;PERFORM build_xls_data_table.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;************************************************************************&lt;br /&gt;&lt;br /&gt;*END-OF-SELECTION&lt;br /&gt;&lt;br /&gt;END-OF-SELECTION.&lt;br /&gt;&lt;br /&gt;* Populate message body text&lt;br /&gt;&lt;br /&gt;perform populate_email_message_body.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Send file by email as .xls speadsheet&lt;br /&gt;&lt;br /&gt;PERFORM send_file_as_email_attachment&lt;br /&gt;&lt;br /&gt;tables it_message&lt;br /&gt;&lt;br /&gt;it_attach&lt;br /&gt;&lt;br /&gt;using p_email&lt;br /&gt;&lt;br /&gt;'Example .xls documnet attachment'&lt;br /&gt;&lt;br /&gt;'XLS'&lt;br /&gt;&lt;br /&gt;'filename'&lt;br /&gt;&lt;br /&gt;' '&lt;br /&gt;&lt;br /&gt;' '&lt;br /&gt;&lt;br /&gt;' '&lt;br /&gt;&lt;br /&gt;changing gd_error&lt;br /&gt;&lt;br /&gt;gd_reciever.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Instructs mail send program for SAPCONNECT to send email(rsconn01)&lt;br /&gt;&lt;br /&gt;PERFORM initiate_mail_execute_program.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Form DATA_RETRIEVAL&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;* Retrieve data form EKPO table and populate itab it_ekko&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM data_retrieval.&lt;br /&gt;&lt;br /&gt;SELECT ebeln ebelp aedat matnr&lt;br /&gt;&lt;br /&gt;UP TO 10 ROWS&lt;br /&gt;&lt;br /&gt;FROM ekpo&lt;br /&gt;&lt;br /&gt;INTO TABLE it_ekpo.&lt;br /&gt;&lt;br /&gt;ENDFORM. " DATA_RETRIEVAL&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Form BUILD_XLS_DATA_TABLE&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;* Build data table for .xls document&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM build_xls_data_table.&lt;br /&gt;&lt;br /&gt;CONSTANTS: con_cret TYPE x VALUE '0D', "OK for non Unicode&lt;br /&gt;&lt;br /&gt;con_tab TYPE x VALUE '09'. "OK for non Unicode&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*If you have Unicode check active in program attributes thnen you will&lt;br /&gt;&lt;br /&gt;*need to declare constants as follows&lt;br /&gt;&lt;br /&gt;*class cl_abap_char_utilities definition load.&lt;br /&gt;&lt;br /&gt;*constants:&lt;br /&gt;&lt;br /&gt;* con_tab type c value cl_abap_char_utilities=&gt;HORIZONTAL_TAB,&lt;br /&gt;&lt;br /&gt;* con_cret type c value cl_abap_char_utilities=&gt;CR_LF.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CONCATENATE 'EBELN' 'EBELP' 'AEDAT' 'MATNR'&lt;br /&gt;&lt;br /&gt;INTO it_attach SEPARATED BY con_tab.&lt;br /&gt;&lt;br /&gt;CONCATENATE con_cret it_attach INTO it_attach.&lt;br /&gt;&lt;br /&gt;APPEND it_attach.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;LOOP AT it_ekpo INTO wa_charekpo.&lt;br /&gt;&lt;br /&gt;CONCATENATE wa_charekpo-ebeln wa_charekpo-ebelp&lt;br /&gt;&lt;br /&gt;wa_charekpo-aedat wa_charekpo-matnr&lt;br /&gt;&lt;br /&gt;INTO it_attach SEPARATED BY con_tab.&lt;br /&gt;&lt;br /&gt;CONCATENATE con_cret it_attach INTO it_attach.&lt;br /&gt;&lt;br /&gt;APPEND it_attach.&lt;br /&gt;&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;ENDFORM. " BUILD_XLS_DATA_TABLE&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Form SEND_FILE_AS_EMAIL_ATTACHMENT&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;* Send email&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM send_file_as_email_attachment tables pit_message&lt;br /&gt;&lt;br /&gt;pit_attach&lt;br /&gt;&lt;br /&gt;using p_email&lt;br /&gt;&lt;br /&gt;p_mtitle&lt;br /&gt;&lt;br /&gt;p_format&lt;br /&gt;&lt;br /&gt;p_filename&lt;br /&gt;&lt;br /&gt;p_attdescription&lt;br /&gt;&lt;br /&gt;p_sender_address&lt;br /&gt;&lt;br /&gt;p_sender_addres_type&lt;br /&gt;&lt;br /&gt;changing p_error&lt;br /&gt;&lt;br /&gt;p_reciever.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DATA: ld_error TYPE sy-subrc,&lt;br /&gt;&lt;br /&gt;ld_reciever TYPE sy-subrc,&lt;br /&gt;&lt;br /&gt;ld_mtitle LIKE sodocchgi1-obj_descr,&lt;br /&gt;&lt;br /&gt;ld_email LIKE somlreci1-receiver,&lt;br /&gt;&lt;br /&gt;ld_format TYPE so_obj_tp ,&lt;br /&gt;&lt;br /&gt;ld_attdescription TYPE so_obj_nam ,&lt;br /&gt;&lt;br /&gt;ld_attfilename TYPE so_obj_des ,&lt;br /&gt;&lt;br /&gt;ld_sender_address LIKE soextreci1-receiver,&lt;br /&gt;&lt;br /&gt;ld_sender_address_type LIKE soextreci1-adr_typ,&lt;br /&gt;&lt;br /&gt;ld_receiver LIKE sy-subrc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ld_email = p_email.&lt;br /&gt;&lt;br /&gt;ld_mtitle = p_mtitle.&lt;br /&gt;&lt;br /&gt;ld_format = p_format.&lt;br /&gt;&lt;br /&gt;ld_attdescription = p_attdescription.&lt;br /&gt;&lt;br /&gt;ld_attfilename = p_filename.&lt;br /&gt;&lt;br /&gt;ld_sender_address = p_sender_address.&lt;br /&gt;&lt;br /&gt;ld_sender_address_type = p_sender_addres_type.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Fill the document data.&lt;br /&gt;&lt;br /&gt;w_doc_data-doc_size = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Populate the subject/generic message attributes&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_langu = sy-langu.&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_name = 'SAPRPT'.&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_descr = ld_mtitle .&lt;br /&gt;&lt;br /&gt;w_doc_data-sensitivty = 'F'.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Fill the document data and get size of attachment&lt;br /&gt;&lt;br /&gt;CLEAR w_doc_data.&lt;br /&gt;&lt;br /&gt;READ TABLE it_attach INDEX w_cnt.&lt;br /&gt;&lt;br /&gt;w_doc_data-doc_size =&lt;br /&gt;&lt;br /&gt;( w_cnt - 1 ) * 255 + STRLEN( it_attach ).&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_langu = sy-langu.&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_name = 'SAPRPT'.&lt;br /&gt;&lt;br /&gt;w_doc_data-obj_descr = ld_mtitle.&lt;br /&gt;&lt;br /&gt;w_doc_data-sensitivty = 'F'.&lt;br /&gt;&lt;br /&gt;CLEAR t_attachment.&lt;br /&gt;&lt;br /&gt;REFRESH t_attachment.&lt;br /&gt;&lt;br /&gt;t_attachment[] = pit_attach[].&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Describe the body of the message&lt;br /&gt;&lt;br /&gt;CLEAR t_packing_list.&lt;br /&gt;&lt;br /&gt;REFRESH t_packing_list.&lt;br /&gt;&lt;br /&gt;t_packing_list-transf_bin = space.&lt;br /&gt;&lt;br /&gt;t_packing_list-head_start = 1.&lt;br /&gt;&lt;br /&gt;t_packing_list-head_num = 0.&lt;br /&gt;&lt;br /&gt;t_packing_list-body_start = 1.&lt;br /&gt;&lt;br /&gt;DESCRIBE TABLE it_message LINES t_packing_list-body_num.&lt;br /&gt;&lt;br /&gt;t_packing_list-doc_type = 'RAW'.&lt;br /&gt;&lt;br /&gt;APPEND t_packing_list.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Create attachment notification&lt;br /&gt;&lt;br /&gt;t_packing_list-transf_bin = 'X'.&lt;br /&gt;&lt;br /&gt;t_packing_list-head_start = 1.&lt;br /&gt;&lt;br /&gt;t_packing_list-head_num = 1.&lt;br /&gt;&lt;br /&gt;t_packing_list-body_start = 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;DESCRIBE TABLE t_attachment LINES t_packing_list-body_num.&lt;br /&gt;&lt;br /&gt;t_packing_list-doc_type = ld_format.&lt;br /&gt;&lt;br /&gt;t_packing_list-obj_descr = ld_attdescription.&lt;br /&gt;&lt;br /&gt;t_packing_list-obj_name = ld_attfilename.&lt;br /&gt;&lt;br /&gt;t_packing_list-doc_size = t_packing_list-body_num * 255.&lt;br /&gt;&lt;br /&gt;APPEND t_packing_list.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Add the recipients email address&lt;br /&gt;&lt;br /&gt;CLEAR t_receivers.&lt;br /&gt;&lt;br /&gt;REFRESH t_receivers.&lt;br /&gt;&lt;br /&gt;t_receivers-receiver = ld_email.&lt;br /&gt;&lt;br /&gt;t_receivers-rec_type = 'U'.&lt;br /&gt;&lt;br /&gt;t_receivers-com_type = 'INT'.&lt;br /&gt;&lt;br /&gt;t_receivers-notif_del = 'X'.&lt;br /&gt;&lt;br /&gt;t_receivers-notif_ndel = 'X'.&lt;br /&gt;&lt;br /&gt;APPEND t_receivers.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'SO_DOCUMENT_SEND_API1'&lt;br /&gt;&lt;br /&gt;EXPORTING&lt;br /&gt;&lt;br /&gt;document_data = w_doc_data&lt;br /&gt;&lt;br /&gt;put_in_outbox = 'X'&lt;br /&gt;&lt;br /&gt;sender_address = ld_sender_address&lt;br /&gt;&lt;br /&gt;sender_address_type = ld_sender_address_type&lt;br /&gt;&lt;br /&gt;commit_work = 'X'&lt;br /&gt;&lt;br /&gt;IMPORTING&lt;br /&gt;&lt;br /&gt;sent_to_all = w_sent_all&lt;br /&gt;&lt;br /&gt;TABLES&lt;br /&gt;&lt;br /&gt;packing_list = t_packing_list&lt;br /&gt;&lt;br /&gt;contents_bin = t_attachment&lt;br /&gt;&lt;br /&gt;contents_txt = it_message&lt;br /&gt;&lt;br /&gt;receivers = t_receivers&lt;br /&gt;&lt;br /&gt;EXCEPTIONS&lt;br /&gt;&lt;br /&gt;too_many_receivers = 1&lt;br /&gt;&lt;br /&gt;document_not_sent = 2&lt;br /&gt;&lt;br /&gt;document_type_not_exist = 3&lt;br /&gt;&lt;br /&gt;operation_no_authorization = 4&lt;br /&gt;&lt;br /&gt;parameter_error = 5&lt;br /&gt;&lt;br /&gt;x_error = 6&lt;br /&gt;&lt;br /&gt;enqueue_error = 7&lt;br /&gt;&lt;br /&gt;OTHERS = 8.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Populate zerror return code&lt;br /&gt;&lt;br /&gt;ld_error = sy-subrc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;* Populate zreceiver return code&lt;br /&gt;&lt;br /&gt;LOOP AT t_receivers.&lt;br /&gt;&lt;br /&gt;ld_receiver = t_receivers-retrn_code.&lt;br /&gt;&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Form INITIATE_MAIL_EXECUTE_PROGRAM&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;* Instructs mail send program for SAPCONNECT to send email.&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;FORM initiate_mail_execute_program.&lt;br /&gt;&lt;br /&gt;WAIT UP TO 2 SECONDS.&lt;br /&gt;&lt;br /&gt;SUBMIT rsconn01 WITH mode = 'INT'&lt;br /&gt;&lt;br /&gt;WITH output = 'X'&lt;br /&gt;&lt;br /&gt;AND RETURN.&lt;br /&gt;&lt;br /&gt;ENDFORM. " INITIATE_MAIL_EXECUTE_PROGRAM&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;*&amp;amp; Form POPULATE_EMAIL_MESSAGE_BODY&lt;br /&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;* Populate message body text&lt;br /&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;&lt;br /&gt;form populate_email_message_body.&lt;br /&gt;&lt;br /&gt;REFRESH it_message.&lt;br /&gt;&lt;br /&gt;it_message = 'Please find attached a list test ekpo records'.&lt;br /&gt;&lt;br /&gt;APPEND it_message.&lt;br /&gt;&lt;br /&gt;endform. " POPULATE_EMAIL_MESSAGE_BODY&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2369137830854693180?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2369137830854693180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2369137830854693180' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2369137830854693180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2369137830854693180'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/10/example-of-sending-xls-file-as-mail-via.html' title='Example of Sending XLS file as a mail via SAPCONNECT'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2727043622673639643</id><published>2007-09-08T19:25:00.001+05:30</published><updated>2007-09-08T19:35:55.985+05:30</updated><title type='text'>Treasury and Cash(TR) Tutorials</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/TRCB/TRCB.pdf" target="_blank"&gt;TR - Cash Budget Management&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCTR/CAARCTR.pdf" target="_blank"&gt;Treasury (TR)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_TR.pdf" target="_blank"&gt;Treasury (TR)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/TREU/TREU.pdf" target="_blank"&gt;Treasury - Changeover to the Euro&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/TRTMALE/TRTM_ALE.pdf" target="_blank"&gt;Treasury Workstation&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMTR/BCBMTWFMTR.pdf" target="_blank"&gt;TR - Treasury: Workflow Scenarios&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2727043622673639643?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2727043622673639643/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2727043622673639643' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2727043622673639643'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2727043622673639643'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/treasury-and-cashtr-tutorials.html' title='Treasury and Cash(TR) Tutorials'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1697160301227770300</id><published>2007-09-08T19:25:00.000+05:30</published><updated>2007-09-08T19:29:24.323+05:30</updated><title type='text'>Financial(FI) Tutorials</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIBP/FIBP.pdf" target="_blank"&gt;FI Accounts Receivable and Accounts Payable&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCFI/CAARCFI.pdf" target="_blank"&gt;Financial Accounting (FI)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR-FI.pdf" target="_blank"&gt;Financial Accounting (FI)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FITX/FITX.pdf" target="_blank"&gt;Financial Accounting - General Topics&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADM/CAGTFADM-FI.pdf" target="_blank"&gt;FI Financial Accounting: Data Transfer Workbench&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGLIS/FIGLIS.pdf" target="_blank"&gt;Financial Information System (FI)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIARCR/FIARCR.pdf" target="_blank"&gt;FI/SD - Credit Management/Risk Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FISL/FISL.pdf" target="_blank"&gt;FI - Special Purpose Ledger&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGLMD/FIGLMD.pdf" target="_blank"&gt;Flexible General Ledger (FI-GL)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LOPR/LOPR.pdf" target="_blank"&gt;Forecasting (LO-PR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/TRTMFX/TRTMFX.pdf" target="_blank"&gt;Foreign Exchange&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDFT/SDFT.pdf" target="_blank"&gt;Foreign Trade / Customs (SD-FT)&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIFM/FIFM.pdf" target="_blank"&gt;Funds Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIBP/FI-AP-AP-PT.pdf" target="_blank"&gt;Payments&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSCAF/PSCAF.pdf" target="_blank"&gt;Payments&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_PAYMENTS.pdf" target="_blank"&gt;Payments&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDBILIVPC/SDBILIVPC.pdf" target="_blank"&gt;Payment Card Processing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/TRZP/TRZP.pdf" target="_blank"&gt;Payment Program for Payment Requests (FI-BL)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIBP/FI-AP-AP-RP.pdf" target="_blank"&gt;Payment Release&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYCHNTPF/PYCHNTPF2.pdf" target="_blank"&gt;Pension Fund CH: Reference Guide&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYCHNTPF/PYCHNTPF3.pdf" target="_blank"&gt;Pension Fund CH: Technical User Handbook&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYCHNTPF/PYCHNTPF1.pdf" target="_blank"&gt;Pension Fund CH: User Hand Book&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIAA/FIAA_CAGTFADM.pdf" target="_blank"&gt;Transfer of Legacy Assets to the R/3 System&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/ECCS/ECCS.pdf" target="_blank"&gt;Consolidation (EC-CS)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FILC/FILC.pdf" target="_blank"&gt;Consolidation (FI-LC)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGLCP/FIGLCP.pdf" target="_blank"&gt;Preparations for Consolidation (FI)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPM/HRPOS.pdf" target="_blank"&gt;HR Funds and Position Management (PA-PM)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIFM/FIFM.pdf" target="_blank"&gt;Funds Management&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGLMD/FIGLMD.pdf" target="_blank"&gt;Flexible General Ledger (FI-GL)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGL/FIGL.pdf" target="_blank"&gt;General Ledger Accounting (FI-GL)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FITVPLAN/FITVGENERIC.pdf" target="_blank"&gt;Travel Management (FI-TV)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/FIGL/FIGL.pdf" target="_blank"&gt;General Ledger Accounting (FI-GL)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1697160301227770300?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1697160301227770300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1697160301227770300' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1697160301227770300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1697160301227770300'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/financialfi-tutorials.html' title='Financial(FI) Tutorials'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2573447428066576238</id><published>2007-09-08T19:21:00.000+05:30</published><updated>2007-09-08T19:25:36.009+05:30</updated><title type='text'>Human Resources ( HR ) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCHR/CAARCHR.pdf" target="_blank"&gt;Human Resources (HR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_HR.pdf" target="_blank"&gt;Human Resources (HR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAXX/PYINT_FORMS.pdf" target="_blank"&gt;HR Form Editor (PY-XX-TL)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYXXFORM/PYINT_FORMBUILDER.pdf" target="_blank"&gt;HR Forms Workplace (PY-XX-FO)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPM/HRPOS.pdf" target="_blank"&gt;HR Funds and Position Management (PA-PM)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADM-PA/CAGTFADM-PA.pdf" target="_blank"&gt;HR - Human Resource Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/HRINF/HRINF.pdf" target="_blank"&gt;HR Infotypes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAXX/PAXX.pdf" target="_blank"&gt;HR Tools (PY-XX-TL)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CABFAALEHR/CABFAALEHR_ALE_VERT.pdf" target="_blank"&gt;Master Data Distribution (Human Resources)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_DATAEX.pdf" target="_blank"&gt;Wage and Salary Payments&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_WAGE_TYPE_DISTRIBUTION.pdf" target="_blank"&gt;Wage Type Distribution&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYXXFOLGE/PYINT_WAGE_TYPE_REPORTER.pdf" target="_blank"&gt;Wage Type Reporter (H99CWTR0)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_WAGE_TYPE_STATEMENT.pdf" target="_blank"&gt;Wage Type Statement&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_WAGETYPES.pdf" target="_blank"&gt;Wage Types&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/HRREPORTING/HRREPORTING.pdf" target="_blank"&gt;Reporting in Human Resource Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAXX/PYINT_PROGRAMM.pdf" target="_blank"&gt;Report Programming in HR&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PE/PE.pdf" target="_blank"&gt;Training and Event Management&lt;/a&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYSOME_PAYROLL_ACCOUNT.pdf" target="_blank"&gt; Payroll Account (Report RPCKTOx0;HxxCKTO0)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYAR/PYAR.pdf" target="_blank"&gt;Payroll Argentina (PY-AR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYAU/PYAU.pdf" target="_blank"&gt;Payroll Australia (PY-AU)&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYAT/PYAT_ÖSTERREICH.pdf" target="_blank"&gt;Payroll Austria (PY-AT)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_TECH_BASICS.pdf" target="_blank"&gt;Payroll Basics (PY-XX-BS)&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYBE/PYBE.pdf" target="_blank"&gt;Payroll Belgium (PY-BE)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYBR/PYBR.pdf" target="_blank"&gt;Payroll Brazil (PY-BR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYCA/PYCA.pdf" target="_blank"&gt;Payroll Canada(PY-CA)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYDK/PYDK.pdf" target="_blank"&gt;Payroll Denmark (PY-DK)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYFR/PYFR.pdf" target="_blank"&gt;Payroll France (PY-FR)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYDE/PYDE.pdf" target="_blank"&gt;Payroll Germany (PY-DE)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYGB/PYGB.pdf" target="_blank"&gt;Payroll Great Britain (PY-GB)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYHK/PYHK.pdf" target="_blank"&gt;Payroll Hong Kong (PY-HK)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BATCH.pdf" target="_blank"&gt;Payroll in a Background Operation&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYID/PYID.pdf" target="_blank"&gt;Payroll Indonesia (PY-ID)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf" target="_blank"&gt;Payroll in the SAP System&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYIE/PYIE.pdf" target="_blank"&gt;Payroll Ireland (PY-IE)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYIT/PYIT.pdf" target="_blank"&gt;Payroll Italy (PY-IT)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYJP/PYJP.pdf" target="_blank"&gt;Payroll Japan (PY-JP)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYSOME_PAYROLL_JOURNAL.pdf" target="_blank"&gt;Payroll Journal (Report RPCLJNx0;HxxCLJN0)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYMY/PYMY.pdf" target="_blank"&gt;Payroll Malaysia (PY-MY)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYMX/PYMX.pdf" target="_blank"&gt;Payroll Mexico (PY-MX)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYNZ/PYNZ.pdf" target="_blank"&gt;Payroll New Zealand (PY-NZ)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYPH/PYPH.pdf" target="_blank"&gt;Payroll Philippines (PY-PH)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYPT/PYPT.pdf" target="_blank"&gt;Payroll Portugal (PY-PT)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYSG/PYSG.pdf" target="_blank"&gt;Payroll Singapore (PY-SG)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYES/PYES.pdf" target="_blank"&gt;Payroll Spain (PY-ES)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYSE/PYSE.pdf" target="_blank"&gt;Payroll Sweden (PY-SE)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYTW/PYTW.pdf" target="_blank"&gt;Payroll Taiwan (PY-TW)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYTH/PYTH.pdf" target="_blank"&gt;Payroll Thailand (PY-TH)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYUS/PYUS.pdf" target="_blank"&gt;Payroll United States (PY-US)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYVE/PYVE.pdf" target="_blank"&gt;Payroll Venezuela (PY-VE)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYZA/PYZA.pdf" target="_blank"&gt;Payroll South Africa (PY-ZA)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYCH/PYCH.pdf" target="_blank"&gt;Payroll Switzerland (PY-CH)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2573447428066576238?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2573447428066576238/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2573447428066576238' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2573447428066576238'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2573447428066576238'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/human-resources-hr-tutorial.html' title='Human Resources ( HR ) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3043584856291679826</id><published>2007-09-08T19:19:00.000+05:30</published><updated>2007-09-08T19:20:54.641+05:30</updated><title type='text'>Project Systems (PS) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEIDW/LEIDW.pdf" target="_blank"&gt;Decentralized Warehouse Management (LE-IDW)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAOIW/CAOIW.pdf" target="_blank"&gt;SAP Open Information Warehouse&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEWM/MMWM.pdf" target="_blank"&gt;Warehouse Management Guide&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3043584856291679826?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3043584856291679826/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3043584856291679826' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3043584856291679826'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3043584856291679826'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/project-systems-ps-tutorial.html' title='Project Systems (PS) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-3760063975229379753</id><published>2007-09-08T19:17:00.000+05:30</published><updated>2007-09-08T19:19:29.877+05:30</updated><title type='text'>Plant Maintenace(PM) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_PM.pdf" target="_blank"&gt;Plant Maintenance&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCPM/CAARCPM.pdf" target="_blank"&gt;Plant Maintenance and Customer Service (PM/CS)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADMPM/CAGTFADMPM.pdf" target="_blank"&gt;PM/CS - Data Transfer in Plant Maintenance and Customer Service&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMPM/BCBMTWFMPM.pdf" target="_blank"&gt;PM/CS - Plant Maintenance &amp; Customer Service: Workflow Scenarios&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTOM/CS_BD_BP_ALE_5.1.pdf" target="_blank"&gt;QM/PM Partner Roles&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPPMSM/PPCRP_PMSM.pdf" target="_blank"&gt;Capacity Planning in Customer Service and Plant&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-3760063975229379753?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/3760063975229379753/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=3760063975229379753' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3760063975229379753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/3760063975229379753'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/plant-maintenacepm-tutorial.html' title='Plant Maintenace(PM) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-1162024264568762632</id><published>2007-09-08T19:16:00.000+05:30</published><updated>2007-09-08T19:17:38.383+05:30</updated><title type='text'>Warehouse Management(WM) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEIDW/LEIDW.pdf" target="_blank"&gt;Decentralized Warehouse Management (LE-IDW)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAOIW/CAOIW.pdf" target="_blank"&gt;SAP Open Information Warehouse&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEWM/MMWM.pdf" target="_blank"&gt;Warehouse Management Guide&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-1162024264568762632?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/1162024264568762632/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=1162024264568762632' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1162024264568762632'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/1162024264568762632'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/warehouse-managementwm-tutorial.html' title='Warehouse Management(WM) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4546347814074914170</id><published>2007-09-08T19:14:00.000+05:30</published><updated>2007-09-08T19:15:08.132+05:30</updated><title type='text'>Quality Management(QM) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMCA/QMCA.pdf" target="_blank"&gt;Quality Certificates&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMPTBD/ALE_QM.pdf" target="_blank"&gt;Quality Management&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCQM/CAARCQM.pdf" target="_blank"&gt;Quality Management (QM)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_QM.pdf" target="_blank"&gt;Quality Management (QM)&lt;/a&gt;&lt;br /&gt;  &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMQN/QMQN.pdf" target="_blank"&gt;Quality Notifications&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMCOST/QMCOST.pdf" target="_blank"&gt;Quality-Related Costs (QM-IM-IC)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SVASQADBS/Q&amp;ADBSTRUCSTAN.pdf" target="_blank"&gt;Question &amp;amp; Answer Database&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMPROC/QMPROC.pdf" target="_blank"&gt;QM in Procurement (QM-PT-RP-PR)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMPROD/QMPROD.pdf" target="_blank"&gt;QM in Production&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/QMSD/QMSD.pdf" target="_blank"&gt;QM in Sales and Distribution (QM-PT-RP-SD)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTOM/CS_BD_BP_ALE_5.1.pdf" target="_blank"&gt;QM/PM Partner Roles&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADM/CAGTFADM_QM.pdf" target="_blank"&gt;QM - Quality Management: Data Transfer&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMQM/BCBMTWFMQM.pdf" target="_blank"&gt;QM - Quality Management: Workflow Scenarios&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4546347814074914170?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4546347814074914170/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4546347814074914170' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4546347814074914170'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4546347814074914170'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/quality-managementqm-tutorial.html' title='Quality Management(QM) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-5205483174601662582</id><published>2007-09-08T19:01:00.000+05:30</published><updated>2007-09-08T19:13:21.122+05:30</updated><title type='text'>Production Planning ( PP ) Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPBDBOM/PPBDBOM.pdf" target="_blank"&gt;PP Bills of Material Guide&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRP/PPCRP.pdf" target="_blank"&gt;PP - Capacity Planning&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CACOMPPP/CACOMPPP.pdf" target="_blank"&gt;PP Component Short Description&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPPDC/PPPDC.pdf" target="_blank"&gt;PP PDC Interface&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPKAB/PPKAB.pdf" target="_blank"&gt;PP KANBAN&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPPIPCS/PPPIPCS.pdf" target="_blank"&gt;PP - PI-PCS Interface: Linking of Process Control&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPSFC/PPSFC.pdf" target="_blank"&gt;PP - Production Orders&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPBDWKC/PPBDWKC.pdf" target="_blank"&gt;PP - Work Centers&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/ISR/LO-MD-AM.pdf" target="_blank"&gt;Product Catalog and Online Store on the Internet&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIVMVAL/MMIVMVAL.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/COPCIS/COPCIS.pdf" target="_blank"&gt;Product Cost Controlling Information System &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMWMLVS/MMWMLVS.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/COPCPCP/COPCPCP.pdf" target="_blank"&gt;Product Cost Planning&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMISVE/MMISVE.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPSEIBAN/PPSEIBAN.pdf" target="_blank"&gt;Production lot planning / individual project planning&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/EHSDGP/LOEHSDGP.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_PP.pdf" target="_blank"&gt;Production Planning and Control (PP)&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEWE/LEWE.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCPP/CAARCPP.pdf" target="_blank"&gt;Production Planning and Control (PP)&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIM/MMIM.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADMPP/CAGTFAMDPP.pdf" target="_blank"&gt;Production Planning and Control (PP)&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIM/MMIM_IS.pdf" target="_blank"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMPP/BCBMTWFMPP.pdf" target="_blank"&gt;Production Planning &amp; Control Workflow Scenarios&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPPI/PPPI.pdf" target="_blank"&gt; Production Planning - Process Industries (PP-PI)&lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSPRT/PSPRT.pdf" target="_blank"&gt;Production Resources/Tools (PRT)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LOPLM/PLM_OVER.pdf" target="_blank"&gt;Product Lifecycle Management (PLM)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/EHSSAF/LOSEC.pdf" target="_blank"&gt;Product Safety (EHS-SAF)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CADMS/CADMS_BROWSER.pdf" target="_blank"&gt;Product Structure Browser&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPALY/PPCRP_ALY.pdf" target="_blank"&gt;Capacity Evaluation (PP-CRP-ALY)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPLVL/PPCRP_LVL.pdf" target="_blank"&gt;Capacity Leveling (PP-CRP-LVL)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPSOP/PPCRP_SOP.pdf" target="_blank"&gt;Capacity Leveling in PP-SOP and LO-LIS-PLN&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPPMSM/PPCRP_PMSM.pdf" target="_blank"&gt;Capacity Planning in Customer Service and Plant Maintenance&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPLTP/PPCRP_LTP.pdf" target="_blank"&gt;Capacity Planning in Long-term Planning &lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPMRPMPS/PPCRP_MRPMPS.pdf" target="_blank"&gt;Capacity Planning in MPS and MRP&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPPPPI/PPCRP_PPPI.pdf" target="_blank"&gt;Capacity Planning in Process Industries&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPREM/PPCRP_REM.pdf" target="_blank"&gt;Capacity Planning in Repetitive Manufacturing&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPSD/PPCRP_SD.pdf" target="_blank"&gt;Capacity Planning in Sales and Distribution&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPSFC/PPCRP_SFC.pdf" target="_blank"&gt;Capacity Planning in Shop Floor Control (PP-SFC)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPPS/PPCRP_PS.pdf" target="_blank"&gt;Capacity Planning in the Project System&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPMRP/PPMRP.pdf" target="_blank"&gt;Material Requirements Planning&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPCRPSFC/PPCRP_SFC.pdf" target="_blank"&gt;Capacity Planning in Shop Floor Control&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-5205483174601662582?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/5205483174601662582/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=5205483174601662582' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5205483174601662582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/5205483174601662582'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/production-planning-pp-tutorial.html' title='Production Planning ( PP ) Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4168898865922290864</id><published>2007-09-08T19:00:00.000+05:30</published><updated>2007-09-08T19:01:40.940+05:30</updated><title type='text'>Sales Distribution (SD ) Module</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDSLS/SDSLS.pdf" target="_blank"&gt;Sales (SD-SLS)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SD/SD.pdf" target="_blank"&gt;Sales and Distribution (SD)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_SD.pdf" target="_blank"&gt;Sales and Distribution (SD)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCSD/CAARCSD.pdf" target="_blank"&gt;Sales and Distribution&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMSD/BCBMTWFMSD.pdf" target="_blank"&gt;Sales and Distribution (SD) Workflow Scenarios&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LOLISPLN/LOLISPLN.pdf" target="_blank"&gt;Sales and Operations Planning (LO-LIS-PLN)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA_ALE_054.pdf" target="_blank"&gt;Sales Employee (PA-PA)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDCAS/SDCAS.pdf" target="_blank"&gt;Sales Support: Computer-Aided Selling (CAS)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDISREP/SDISREP.pdf" target="_blank"&gt;Reports and Analyses (SD)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/SDBFPR/SDBFPR.pdf" target="_blank"&gt;Pricing and Conditions&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LESHP/LESHP.pdf" target="_blank"&gt;Shipping&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4168898865922290864?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4168898865922290864/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4168898865922290864' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4168898865922290864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4168898865922290864'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/sales-distribution-sd-module.html' title='Sales Distribution (SD ) Module'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-2650663326694364777</id><published>2007-09-08T18:56:00.000+05:30</published><updated>2007-09-08T18:58:25.068+05:30</updated><title type='text'>Material Management ( MM )Tutorial</title><content type='html'>&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PSMAT/PSMAT.pdf" target="_blank"&gt;Material&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAARCMM/CAARCMM.pdf" target="_blank"&gt;Materials Management (MM)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MYSAP/SR_MM.pdf" target="_blank"&gt;Materials Management (MM)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LOMDMM/LOMDMM.pdf" target="_blank"&gt;Material Master&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPMRP/PPMRP.pdf" target="_blank"&gt;Material Requirements Planning&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CACOMPMM/CACOMPMM.pdf" target="_blank"&gt;MM Component Short Description&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADM-MM/CAGTFADM-MM.pdf" target="_blank"&gt;MM Materials Management&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCBMTWFMMM/BCBMTWFMMM.pdf" target="_blank"&gt;MM - Materials Management: Workflow Scenarios&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIVMVAL/MMIVMVAL.pdf" target="_blank"&gt;MM - Material Price Change (MM-IV-MP)&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMWMLVS/MMWMLVS.pdf" target="_blank"&gt;MM MM-MOB and WM-LSR Interfaces&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMISVE/MMISVE.pdf" target="_blank"&gt;MM Vendor Evaluation&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/EHSDGP/LOEHSDGP.pdf" target="_blank"&gt;Dangerous Goods Management (EHS-DGP)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/LEWE/LEWE.pdf" target="_blank"&gt;Goods Receipt Process for Inbound Deliveries&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIM/MMIM.pdf" target="_blank"&gt;Inventory Management and Physical Inventory&lt;/a&gt;&lt;br /&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/MMIM/MMIM_IS.pdf" target="_blank"&gt;Inventory Sampling (MM-IM-PI) &lt;/a&gt; &lt;a href="http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PPOBM/PPOBM.pdf" target="_blank"&gt;Order BOMs&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-2650663326694364777?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/2650663326694364777/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=2650663326694364777' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2650663326694364777'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/2650663326694364777'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/material-management-mm-tutorial.html' title='Material Management ( MM )Tutorial'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-4556330167915525275</id><published>2007-09-03T22:38:00.001+05:30</published><updated>2007-09-08T17:59:45.164+05:30</updated><title type='text'>Details information about SAP Barcodes</title><content type='html'>&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;/b&gt;&lt;/span&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;A barcode solution consists of the following:&lt;br /&gt;- a barcode printer&lt;br /&gt;- a barcode reader&lt;br /&gt;- a mobile data collection application/program &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;A barcode label is a special symbology to represent human readable information such as a material number or batch number&lt;br /&gt;in machine readable format. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;There are different symbologies for different applications and different industries. Luckily, you need not worry to much about that as the logistics supply chain has mostly standardized on 3 of 9 and 128 barcode symbologies - which all barcode readers support and which SAP support natively in it's printing protocols. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;You can print barcodes from SAP by modifying an existing output form. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Behind every output form is a print program that collects all the data and then pass it to the form. The form contains the layout as well as the font, line and paragraph formats. These forms are designed using SAPScript (a very easy but frustratingly simplistic form format language) or SmartForms that is more of a graphical form design tool. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Barcodes are nothing more than a font definition and is part of the style sheet associated with a particular SAPScript form. The most important aspect is to place a parameter in the line of the form that points to the data element that you want to represent as barcode on the form, i.e. material number. Next you need to set the font for that parameter value to one of the supported barcode symbologies. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;The next part of the equation can be a bit tricky as you will need to get a printer to print that barcode font. Regular laser printers does not normally print barcode fonts, only specialized industrial printers that is specifically designed to support that protocol and that uses specialized label media and heat transfer (resin) ribbon to create the sharp image required for barcodes. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Not to fear though, there are two ways to get around this:&lt;br /&gt;- You can have your IT department do some research -&lt;br /&gt;most laser printers can accept a font cartridge/dimm chip (similar to computer memory), called a BarDIMM that will allow a laser printer to support the printing of barcodes.&lt;br /&gt;- Secondly, you can buy software that you can upload in your SAP print Server that will convert the barcode symbology as an image that will print on a regular laser printer. I found that this option results in less sharper barcodes. This option is really if you need to convert a large quantity of printers (&gt;10) to support barcodes. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Now you have a barcode printed - what next?&lt;br /&gt;Well there are two options, depending on your business requirements:&lt;br /&gt;- You can use an existing SAP transaction on a regular workstation and get a barcode wedge reader to hook up between the keyboard and the PC. These wedge readers comes in a wand or scanner format. There are even wireless wedge scanners available that allows you to roam a few yards from the workstation to scan a label. This approach is mostly used where you want to prevent human errors in typing in long material, batch or serial numbers in receiving or issuing of material. The problem is that it's just replacing the keyboard input and you are basically locked down in one location and have to bring all the material to that location to process.&lt;br /&gt;- Another solution is to use SAPConsole transactions&lt;br /&gt;or write your own ABAP Dialog programs that will fit onto a barcode enabled wireless handheld terminal and that will follow the business logic as executed on the shop floor. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;These programs are highly complex exercises in industrial engineering and ergonomics because of the limited screen sizes and limited ability to accept keyboard input. The user is instructed step-by-step and only scan and push F-keys to interact with the SAP system. Scan, scan, beep, beep, enter - highly automated.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;h3&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt;What is SAP Smart Forms?&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/advantages-of-sap-smart-forms.html"&gt;Advantages of SAP Smart Forms&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/simple-smartform-tutorial.html"&gt;A Simple Smartform Tutorial&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/difference-with-smartforms-vs.html"&gt;Difference with SMARTFORMS vs. SapScript(SE71)&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/faq-on-migrating-sapscript-to.html"&gt;FAQ on Migrating SAPscript to SmartForms&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/conversion-of-sapscript-to-smartforms.html"&gt;Conversion of SAPSCRIPT to SMARTFORMS&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/smartforms-system-fields.html"&gt;SmartForms System Fields&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/example-forms-available-in-standard-sap.html"&gt;Example Forms Available in Standard SAP R/3&lt;/a&gt;&lt;a href="http://saplab.blogspot.com/2007/09/what-is-sap-smart-forms-sap-smart-forms.html"&gt; &lt;/a&gt;&lt;br /&gt;&lt;a href="http://saplab.blogspot.com/2007/09/smart-forms-frequently-asked-questions.html"&gt;Smart forms Frequently Asked Questions&lt;/a&gt;&lt;/h3&gt;&lt;h3&gt;&lt;a href="http://saplab.blogspot.com/2007/09/details-information-about-sap-barcodes.html"&gt;&lt;/a&gt;&lt;/h3&gt;&lt;b&gt;&lt;span style="font-family:'Times New Roman';font-size:12;"&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8952827334369603967-4556330167915525275?l=saplab.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://saplab.blogspot.com/feeds/4556330167915525275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8952827334369603967&amp;postID=4556330167915525275' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4556330167915525275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8952827334369603967/posts/default/4556330167915525275'/><link rel='alternate' type='text/html' href='http://saplab.blogspot.com/2007/09/details-information-about-sap-barcodes.html' title='Details information about SAP Barcodes'/><author><name>Amit Khari</name><uri>http://www.blogger.com/profile/04281625740911068368</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='24' height='32' src='http://4.bp.blogspot.com/-cKzfwuszSBc/TVUl0SjTnKI/AAAAAAAACD8/ikplrB3wg8k/s220/P1011711.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8952827334369603967.post-7541707258298099190</id><published>2007-09-03T22:36:00.000+05:30</published><updated>2007-09-08T18:00:14.417+05:30</updated><title type='text'>Smart forms Frequently Asked Questions</title><content type='html'>&lt;span style="font-size:100%;"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;br /&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Forcing a page break within table loop&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt; &lt;/span&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Create a loop around the table. Put a Command node before the table in the loop that forces a NEWPAGE on whatever condition you want. Then only loop through a subset of the internal table (based on the conditions in the Command node) of the elements in the Table node. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Font style and Font size&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Goto Transaction SMARTSTYLES.&lt;br /&gt;There you can create Paragraph formats etc just like in sapscript. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Then in your window under OUTPUT OPTIONS you include this SMARTSTYLE and use the Paragraph and character formats. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Line in Smartform&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Either you can use a window that takes up the width of your page and only has a height of 1 mm. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Then you put a frame around it (in window output options).&lt;br /&gt;Thus you have drawn a box but it looks like a line. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Or you can just draw "__" accross the page and play with the fonts so that it joins each UNDER_SCORE. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Difference between 'forminterface' and 'global definitions' in global settings of smart forms&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;The Difference is as follows. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;To put it very simply: &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Form Interface is where you declare what must be passed in and out of the smartform (in from the print program to the smartform and out from the smartform to the print program). &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Global defs. is where you declare data to be used within the smartform on a global scope.&lt;br /&gt;ie: anything you declare here can be used in any other node in the form. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Smartforms function module name &lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Once you have activated the smartform, go to the environment -&gt; function module name. There you can get the name of funtion module name. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;The key thing is the program that calls it. for instance, the invoice SMARTFORM LB_BIL_INVOICE is ran by the program RLB_INVOICE. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;This program uses another FM to determine the name of the FM to use itself. The key thing is that when it calls this FM (using a variable to store the actual name), that the parameters match the paramters in your smartform. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Another thing to note is that the FM name will change wherever the SF is transported to. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;So you need to use the FM to determine the name of the SF. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Here is the code that can be use to determine the internal name of the function module: &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Code: &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;if sf_label(1) &lt;&gt; '/'. " need to resolve by name&lt;br /&gt;move sf_label to externalname.&lt;br /&gt;call function 'SSF_FUNCTION_MODULE_NAME'&lt;br /&gt;exporting&lt;br /&gt;formname = externalname&lt;br /&gt;importing&lt;br /&gt;fm_name = internalname&lt;br /&gt;exceptions&lt;br /&gt;no_form = 1&lt;br /&gt;no_function_module = 2&lt;br /&gt;others = 3.&lt;br /&gt;if sy-subrc &lt;&gt; 0.&lt;br /&gt;message 'e427'.&lt;br /&gt;endif.&lt;br /&gt;move internalname to sf_label.&lt;br /&gt;endif. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;It checks to see if the sf_label starts with a '/', which is how the internal names start. if it does, the name has already been converted. If not, it calls the FM and converts the name. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;You would then CALL FUNCTION sf_label. &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p class="MsoNormal" style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17);font-size:18;" &gt;Smartforms FAQ Part Two&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Smartforms output difference&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;&lt;br /&gt;&lt;b&gt;Problem with Smartforms: in a certain form for two differently configured printers, there seem to be a difference in the output of characters per inch (the distance between characters which gives a layout problem - text in two lines instead of one.&lt;/b&gt; &lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;It happens when the two printers having different Printer Controls' if you go to SPAD Menu (Spool Administrator Menu) you can see the difference in the Printer Control and if you make the Printer control setting for both the printers as same. then it will be ok. and also u have to check what is the device type used for both the output devices.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;SmartForms Output to PDF&lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;&lt;br /&gt;There is a way to download smartform in PDF format.&lt;br /&gt;Please do the following:&lt;br /&gt;1. Print the smartform to the spool.&lt;br /&gt;2. Note the spool number.&lt;br /&gt;3. Download a PDF file (Acrobat Reader) version of the spool by running Program RSTXPDFT4 and entering the&lt;br /&gt;noted spool number.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;SmartForm Doublesided printing question &lt;/span&gt;&lt;/b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;&lt;br /&gt;&lt;b&gt;Your customer wants your PO SmartForm to be able to print "Terms and Conditinos" on the back side of each page. They don't want to purchase pre-printed forms with the company's logo on the front and terms &amp; conditions on the back. Now this presents an interesting problem. &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Has anyone else ever had a request like this? If for example there was a 3 page PO to be printed, they want 3 pieces of paper, the front side of each to containe the PO information (page 1, 2, and 3) and the back side of each piece of paper to containg the static "Terms &amp;amp; Conditions" information. &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Anyone have a clue how to force this out? &lt;/b&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Easy - page FRONT lists page CONTACTS as next page and CONTACTS lists FRONT as next page. Since CONTACTS does not contain a MAIN window, it will print the contacts info and then continue on to FRONT for the rest of the main items. Additionally, set print mode on FRONT to D (duplex) and set CONTACTS to 'blank' (for both resource name and print mode - this is the only way to get to the back of the page).&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="TEXT-ALIGN: justify"&gt;&lt;/div&gt;&lt;p style="TEXT-ALIGN: justify"&gt;&lt;b&gt;&lt;span style="COLOR: rgb(17,17,17)"&gt;Transport Smart Forms&lt;/span&gt;&lt;/b&gt;&lt;span
