<?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-5434181335871059817</id><updated>2012-02-14T00:45:34.923+05:30</updated><category term='xml to ABAP'/><category term='Config'/><category term='SAP Notes'/><category term='VAT'/><category term='Smartforms'/><category term='XSLT'/><category term='SAP Mail'/><category term='SAP ABAP'/><category term='HR ABAP'/><category term='Performance'/><category term='SAP ABAP; Sample Code'/><category term='SAP SD'/><category term='OLE Automation'/><category term='MD04'/><category term='Date'/><category term='Abap Objects'/><category term='Screen-exit'/><category term='Upload Download'/><category term='SAP QM'/><category term='Module Pool'/><category term='Tutorial'/><category term='Report'/><category term='Formatting'/><category term='Translation'/><category term='Web service'/><category term='Open Dialog Box'/><category term='ALV List'/><category term='EDI'/><category term='Utility'/><category term='Enhacement'/><category term='Standard Text'/><category term='SAP FI'/><category term='Dynamic'/><category term='Selection-Screen'/><category term='SAP Basis'/><category term='Sapscript'/><category term='Quick Reference'/><category term='Sample Code'/><category term='SAP MM'/><category term='Excel'/><title type='text'>My Experiments with ABAP</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>90</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3655218259587266506</id><published>2012-02-13T21:03:00.003+05:30</published><updated>2012-02-13T21:03:00.686+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDI'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Inbound EDI Message Processing with Custom Function Module</title><content type='html'>SAP supports almost all industry standards EDI Message. All components to process these EDI messages are already defined in system and just need to be activated for business partner to make it work. However there are occasions when you need to start from blank canvas, build all the components to process a totally new message. If you are unfortunate enough here are steps you must follow to make it work. You can reuse some of SAP standard component for example IDoc segments, IDoc type Message type etc. if you do so you can skip corresponding steps below.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;1. IDoc Structure &lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;This defines the structure of data. SAP runtime will use this structure definition to validate, store and display data. It’s a two-step process you defined structures first similar to one you defined in SE11 and then using these structures define IDoc type which is tree like structure of IDoc segments with parent and child relationship.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;a. WE31 - Define IDoc segments&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;b. WE30- Define IDoc Type&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://3.bp.blogspot.com/-r8s7MMq9j3Q/Tzj3M4iBXrI/AAAAAAAACtQ/QPmxaDGk2yM/s1600/Idoc%2Btype.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="271" width="400" src="http://3.bp.blogspot.com/-r8s7MMq9j3Q/Tzj3M4iBXrI/AAAAAAAACtQ/QPmxaDGk2yM/s400/Idoc%2Btype.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;2. Define Message Type-WE81&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Message type is logical definition of what information will be there in IDoc.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;3. Link IDoc type and message type Link using transaction WE82&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;An IDoc type can be used in one or more Message type and vice versa. &lt;br /&gt;&lt;br /&gt;For example in SAP inbound message type ORDERS (purchase order) and ORDCHG (purchase order change) uses same IDoc type. This means that although ORDERS and ORDCHG are different type of transactions, the data is in same format (ORDER05). Other way round also possible i.e. same message type for example ORDCHG can be represented by different IDoc type.&lt;br /&gt;&lt;br /&gt;In WE82 you define what possible combination of IDoc Type and Message Type is possible in system.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-TNYzrRwRVjc/Tzj4K9eiwNI/AAAAAAAACtc/0Y3UynYwqnA/s1600/Message%2BType.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="351" width="400" src="http://4.bp.blogspot.com/-TNYzrRwRVjc/Tzj4K9eiwNI/AAAAAAAACtc/0Y3UynYwqnA/s400/Message%2BType.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;4. Create a new function module&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Data in IDoc is usually processed by a function module. This function module extract data from IDoc structure, validates, store/post and update status of IDoc in SAP. This function module is called at run time by SAP runtime and must have following interface.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="font-size: medium; margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;*"       IMPORTING&lt;br /&gt;*"              INPUT_METHOD          LIKE  BDWFAP_PAR-INPUTMETHD&lt;br /&gt;*"              MASS_PROCESSING       LIKE  BDWFAP_PAR-MASS_PROC&lt;br /&gt;*"       EXPORTING&lt;br /&gt;*"              WORKFLOW_RESULT       LIKE  BDWFAP_PAR-RESULT&lt;br /&gt;*"              APPLICATION_VARIABLE  LIKE  BDWFAP_PAR-APPL_VAR&lt;br /&gt;*"              IN_UPDATE_TASK        LIKE  BDWFAP_PAR-UPDATETASK&lt;br /&gt;*"              CALL_TRANSACTION_DONE LIKE  BDWFAP_PAR-CALLTRANS&lt;br /&gt;*"       TABLES&lt;br /&gt;*"              IDOC_CONTRL           STRUCTURE  EDIDC&lt;br /&gt;*"              IDOC_DATA             STRUCTURE  EDIDD&lt;br /&gt;*"              IDOC_STATUS           STRUCTURE  BDIDOCSTAT&lt;br /&gt;*"              RETURN_VARIABLES      STRUCTURE  BDWFRETVAR&lt;br /&gt;*"              SERIALIZATION_INFO    STRUCTURE  BDI_SER&lt;br /&gt;*"       EXCEPTIONS&lt;br /&gt;*"              WRONG_FUNCTION_CALLED&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;IDoc processing function modules are usually named based on direction of IDoc (inbound/outbound) and message type. So an inbound processing routine for message ORDRSP would be IDOC_INPUT_ORDRSP. An outbound processing routine for message ORDRSP would be IDOC_OUTPUT_ORDRSP. &lt;br /&gt;&lt;br /&gt;Refer to a standard inbound processing function module like IDOC_INPUT_ORDRSP to see how data is extracted and IDoc status are updated from function module. You can copy one of these function module to create your own with similar interface.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;5. Configure your inbound function module - BD51&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Add a line in BD51 for your inbound function module.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;u&gt;6. Assignment of Function Module to Logical Message and IDoc Type – WE57&lt;/b&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Here you bring everything together i.e. define a line with you Function Module, IDoc Type and Message Type.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-6d4dYU8sITM/Tzj5tzl7Q5I/AAAAAAAACto/6PfYJphRTEs/s1600/Process%2BCode.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="226" width="400" src="http://1.bp.blogspot.com/-6d4dYU8sITM/Tzj5tzl7Q5I/AAAAAAAACto/6PfYJphRTEs/s400/Process%2BCode.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;7. Inbound Process Code – WE42&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Define a new process code which refers to your Inbound Function Module.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;8. Partner Profile configuration – WE20&lt;/u&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Finally in partner profile configure this new message and process code.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-3655218259587266506?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3655218259587266506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2012/02/inbound-edi-message-processing-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3655218259587266506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3655218259587266506'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2012/02/inbound-edi-message-processing-with.html' title='Inbound EDI Message Processing with Custom Function Module'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-r8s7MMq9j3Q/Tzj3M4iBXrI/AAAAAAAACtQ/QPmxaDGk2yM/s72-c/Idoc%2Btype.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6591383940005365522</id><published>2011-12-30T16:13:00.001+05:30</published><updated>2011-12-30T16:14:44.779+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP QM'/><category scheme='http://www.blogger.com/atom/ns#' term='Enhacement'/><category scheme='http://www.blogger.com/atom/ns#' term='Screen-exit'/><title type='text'>Adding Custom field(s) to Quality Notification QM01/QM02//QM03/QM10</title><content type='html'>As you can gather from the heading this is about adding custom field to Quality Notification transactions in SAP, this change will affect transaction QM01, QM02 and QM03. And with few modifications new field(s) which you will add will also be shown in report QM10.&lt;br /&gt;&lt;br /&gt;We will start with modifying the base table to add new field to table, of course append table will be used to add new field and this is where data will be stored. After this user-exit (screen-exit) need to be implemented which will be used to accept input and display data in QM0x transactions. There is small config required at this stage and to end with we will modify a sap standard structure again using append structure so this new field will be displayed in report QM10.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Modify Base Table&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Table QMEL stores QM notification data and new field should be added to this table. &lt;br /&gt;&lt;br /&gt;To add new field, first thing we need to do is add an append structure. Open table QMEL in SE11 and navigate to 'Append Structure' option.&lt;br /&gt;&lt;br /&gt;On next screen click on 'Create Append'&lt;br /&gt;&lt;br /&gt;Give a name starting with ZZ. If an append structure already exists with name starting with ZZ then you can skip adding new append structure and instead you can add your field to that append structure. Once structure is in place, add your fields to the structure. Use appropriate data element and domain.&lt;br /&gt;&lt;br /&gt;If any field is of type quantity or amount don’t forget to mention unit and currency.And define enhancement category as you would do while defining any table.&lt;br /&gt;&lt;br /&gt;Finish this step with activating the append structure. If QMEL table in Production system is huge then consider moving transport when in weekends.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Config to Add Customer screen to Notification type Screen&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;If you are involved in initial configuration of notification type then you would probably know that screen tabs and screen groups (subscreen) within screen tabs are configurable in QM01 transaction. Anyways, even if you don’t know just remember we need to specify the position of these new fields on the screen. &lt;br /&gt;&lt;br /&gt;In next few steps we will place these new fields on subscreen (screen-exit). In notification type configuration we need to specify under which tab this subscreen is going to appear in QM01.&lt;br /&gt;&lt;br /&gt;So in transaction SPRO, navigate to menu path Quality Management, Quality Notification, Overview of Notification Type.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://4.bp.blogspot.com/-S-Dvylkc1E8/TvyRiRzklBI/AAAAAAAACsw/KQ0N9ikvLRA/s1600/ScreenShot412.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="201" width="400" src="http://4.bp.blogspot.com/-S-Dvylkc1E8/TvyRiRzklBI/AAAAAAAACsw/KQ0N9ikvLRA/s400/ScreenShot412.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Select the notification type which you would like to modify and double click on 'Screen Structure for Extented view'. Extended view shows you all the tabs available and configured to be shown on QM data entry transaction. Double click on the tab where you would like to display you subscreen. Note that on each tab maximum 5 subscreens can be shown. &lt;br /&gt;&lt;br /&gt;Here, before you choose the position of customer subscreen you need to make a decision. SAP allows you to use either one customer-specific area (090) for all notification type or one for each notification type (091). In simple terms if the field you are going to add is valid across all notification type and you would like this field to appear in every notification type then use customer specific area 090. Otherwise, if field is specific to a notification type then you would select 091 in customer screen. When you enter 091 as customer screen SAP would let to enter screen number where the fields are defined.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;a href="http://1.bp.blogspot.com/-LVxb6slSSPM/TvyToHfCAbI/AAAAAAAACs8/X9avuX-IoU0/s1600/ScreenShot413.jpg" imageanchor="1" style=""&gt;&lt;img border="0" height="311" width="400" src="http://1.bp.blogspot.com/-LVxb6slSSPM/TvyToHfCAbI/AAAAAAAACs8/X9avuX-IoU0/s400/ScreenShot413.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;In this particular case I am going to choose 091 as screen area as my field are specific to this notification type. And I am going to define subscreen number as 100. &lt;br /&gt;&lt;br /&gt;At this point save the config and exit.&lt;br /&gt;&lt;br /&gt;If you execute QM01 transaction for given notification type then system should throw ABAP runtime error. As subscreen area 100 does not exist in system yet. Good way to check if config is right.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Implement Enhacement (User and Screen exit)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Create a new project in transaction CMOD and add enhacement QQMA0001 to project.&lt;br /&gt;Open function group XQQM in SE80 and create subscreen 100 in it, make sure to define width of screen as 83 column so that it blend in with SAP standard subscreens. &lt;br /&gt;&lt;br /&gt;Place your input field on the subscreen. Write code to disable input when transaction is QM03. You also need to implement following functon moodule and create respective include.&lt;br /&gt;&lt;br /&gt;EXIT_SAPMIWO0_008 include ZXQQMU07&lt;br /&gt;&lt;br /&gt;This function module will pass data from QM0x transaction to you subscreen.&lt;br /&gt;&lt;br /&gt;EXIT_SAPMIWO0_009 include ZXQQMU08&lt;br /&gt;&lt;br /&gt;Use this function module to pass data from custom input fields back to QM0x transaction. So when user hit Save button your data will be saved along with all sap-standards field.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Modifying Reporting Structure to include customer field in QM10 transaction&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Now its time to add custom field to report QM10 - List quality notification.&lt;br /&gt;Modify structure RQMQMEL1 to include your custom field(s). Again use append structure and activate once done. After this your fields will automatically appear in report.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6591383940005365522?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6591383940005365522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/12/adding-custom-fields-to-quality.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6591383940005365522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6591383940005365522'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/12/adding-custom-fields-to-quality.html' title='Adding Custom field(s) to Quality Notification QM01/QM02//QM03/QM10'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-S-Dvylkc1E8/TvyRiRzklBI/AAAAAAAACsw/KQ0N9ikvLRA/s72-c/ScreenShot412.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1521947708269751021</id><published>2011-12-29T21:12:00.003+05:30</published><updated>2011-12-29T21:16:09.573+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Update SAP Shipment</title><content type='html'>Below are two very basic code to update shipment data in SAP. First method uses BDC on VT02N and second uses funcion module BAPI_SHIPMENT_CHANGE. Code can be easily modified to suit your requirement.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  update_shipment&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Update Shipment using BDC&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;IV_TKNUM   Shipment Number&lt;br /&gt;*      --&gt;IV_DATE    Actual Shipment End Date&lt;br /&gt;*      --&gt;IV_TIME    Actual Shipment End Time&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM update_shipment  USING    iv_tknum TYPE vttk-tknum&lt;br /&gt;                               iv_date  TYPE vttk-daten&lt;br /&gt;                               iv_time  TYPE vttk-uaten .&lt;br /&gt;&lt;br /&gt;  DEFINE insert_field.&lt;br /&gt;    clear ls_bdcdata .&lt;br /&gt;    ls_bdcdata-fnam = &amp;1 .&lt;br /&gt;    ls_bdcdata-fval = &amp;2 .&lt;br /&gt;    append ls_bdcdata to li_bdcdata .&lt;br /&gt;  END-OF-DEFINITION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DEFINE insert_scr.&lt;br /&gt;    clear ls_bdcdata .&lt;br /&gt;    ls_bdcdata-program  = &amp;1 .&lt;br /&gt;    ls_bdcdata-dynpro   = &amp;2 .&lt;br /&gt;    ls_bdcdata-dynbegin = 'X' .&lt;br /&gt;    append ls_bdcdata to li_bdcdata .&lt;br /&gt;  END-OF-DEFINITION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : li_bdcdata TYPE TABLE OF bdcdata ,&lt;br /&gt;         ls_bdcdata TYPE          bdcdata ,&lt;br /&gt;&amp;nbsp;&lt;br /&gt;         lv_date    TYPE          char10  ,&lt;br /&gt;         lv_time    TYPE          char8   ,&lt;br /&gt;&amp;nbsp;&lt;br /&gt;         lv_mode    TYPE          char01  VALUE 'N' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  insert_scr   'SAPMV56A'   '1011' .&lt;br /&gt;  insert_field 'BDC_OKCODE' '=MM_TKAL' .&lt;br /&gt;  insert_field 'VTTK-TKNUM' iv_tknum .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE iv_date TO lv_date .&lt;br /&gt;  WRITE iv_time TO lv_time .&lt;br /&gt;  insert_scr   'SAPMV56A'   '1020'       .&lt;br /&gt;  insert_field 'BDC_OKCODE' '=MM_SICH'   .&lt;br /&gt;  insert_field 'VTTK-DATEN' lv_date .&lt;br /&gt;  insert_field 'VTTK-UATEN' lv_time+0(5) .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL TRANSACTION 'VT02N' USING li_bdcdata MODE lv_mode.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    "update_shipment&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Beware that this function module BAPI_SHIPMENT_CHANGE is not released officially.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  update_shipment&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       Update Shipment using BAPI&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;IV_TKNUM   text&lt;br /&gt;*      --&gt;IV_TEXT1   text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/FONT&gt;&lt;br /&gt;FORM update_shipment  USING    iv_tknum TYPE vttk-tknum&lt;br /&gt;                               iv_text1  TYPE vttk-text1 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA: ls_hdrdata    TYPE bapishipmentheader       ,&lt;br /&gt;        ls_hdrdataact TYPE bapishipmentheaderaction ,&lt;br /&gt;        lt_return     TYPE TABLE OF bapiret2        ,&lt;br /&gt;        ls_return     TYPE bapiret2                 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_hdrdata-shipment_num           = iv_tknum.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_hdrdata-text_1                 = iv_text1.&lt;br /&gt;  ls_hdrdataact-text_1              = 'C'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'BAPI_SHIPMENT_CHANGE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      headerdata       = ls_hdrdata&lt;br /&gt;      headerdataaction = ls_hdrdataact&lt;br /&gt;    TABLES&lt;br /&gt;      return           = lt_return.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    "update_shipment&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-1521947708269751021?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1521947708269751021/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/12/update-sap-shipment.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1521947708269751021'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1521947708269751021'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/12/update-sap-shipment.html' title='Update SAP Shipment'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-902378165940917149</id><published>2011-11-15T04:47:00.001+05:30</published><updated>2011-11-15T04:50:02.060+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Table Maintenance with Create/Modified Information Automatically Filled in</title><content type='html'>If you are creating custom table which would be used as configuration table i.e. content of table would be rarely changed, then creating a custom build data entry screen is not worth the effort. In such cases using table maintenance generator is highly justified. Table Maintenance Generator is very powerful tool to create basic data entry screen. Although entry screen is basic, it comes with standard function of value help, value checked against check table, duplication check on primary key etc. With all these features within few minute it can provide you data entry screen with insert, change and delete function. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Table maintenance generator creates a function group which is combination of sap-standard includes, custom program and screen. The custom (usually name starting with Z) part of function group can be changed to add specific requirement. In this blog I will discuss about filling Created by username, create on date, created on time automatically when new record is inserted. And filling Updated by username, updated on date and updated on time when the record is modified. &lt;br /&gt;&lt;br /&gt;Using this information you can certainly answer who created or last updated the record and when. If there is further requirement to track every change then I would recommend creating you own data entry screen and use Change Object Technique to log changes. &lt;br /&gt;&lt;br /&gt;So, I have created a table as shown in screen shot below.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/ppPpZFeIvGopA4KGBVUV_A1rCWupZKX9VAt82953xRA?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/-1f_7nNgnQoo/TrwfyHT2sOI/AAAAAAAACrg/rUoygsKjri4/s640/ScreenShot307.jpg" height="314" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Notice that it has field ERNAM, ERDAT, ERZET and AENAM, AEDAT, AEZET. These fields stores the information which I would like table maintenance to fill-in automatically.&lt;br /&gt;&lt;br /&gt;All these changes are done in following steps.&lt;br /&gt;&lt;br /&gt;1. Create table maintenance &lt;br /&gt;2. Hide the columns&lt;br /&gt;3. Event to fill-in Created by Information&lt;br /&gt;4. Event to fill-in Updated information&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 1 Create table maintenance&lt;/b&gt;&lt;br /&gt;Create table maintenance using table maintenance generator. At this stage you will have every column displayed in your screen.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="205" width="400" src="http://3.bp.blogspot.com/-E5d-B84jATE/TrwhZDxQ0lI/AAAAAAAACrs/6ZgYch-KMDQ/s400/ScreenShot306.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 2 Hide the columns&lt;/b&gt;&lt;br /&gt;You can either hide or deactivate these columns as we don’t want users to change these values. Open then function group created in SE80 and double click on screen which has table control. In the PBO just before the LOOP AT extract WITH CONTROL add a module. &lt;br /&gt; &lt;br /&gt;Here, I’ve added module modify_element. Double click on the module and the module in new include.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="207" width="394" src="http://4.bp.blogspot.com/-eHxuu-3ahfM/Trwkd_jmALI/AAAAAAAACr4/9iu_Ybw5N7A/s400/ScreenShot308.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;This code will hide the column from table control. &lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;MODULE modify_element OUTPUT.&lt;br /&gt;  LOOP AT &lt;vim_tctrl&gt;-cols INTO vim_tc_cols.&lt;br /&gt;    IF vim_tc_cols-screen-name = 'ZLBN_ROUTETM-ERNAM' OR&lt;br /&gt;       vim_tc_cols-screen-name = 'ZLBN_ROUTETM-ERDAT' OR&lt;br /&gt;       vim_tc_cols-screen-name = 'ZLBN_ROUTETM-ERZET' OR&lt;br /&gt;       vim_tc_cols-screen-name = 'ZLBN_ROUTETM-AENAM' OR&lt;br /&gt;       vim_tc_cols-screen-name = 'ZLBN_ROUTETM-AEDAT' OR&lt;br /&gt;       vim_tc_cols-screen-name = 'ZLBN_ROUTETM-AEZET' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      vim_tc_cols-invisible = 1 .&lt;br /&gt;      MODIFY &lt;vim_tctrl&gt;-cols FROM vim_tc_cols .&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDMODULE.                 " MODIFY_ELEMENT  OUTPUT&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;i&gt;Note: If you just want to deactivate the column you need to add module within LOOP AT extract WITH CONTOL and put deactivation code in there.&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;After this, save and activate the function module. At this point if you run table maintenance it should not show you  the fields as shown in below screen shot.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="160" width="400" src="http://2.bp.blogspot.com/-gs6OSshrP04/TrwlQQS-9tI/AAAAAAAACsE/iScrV7-9fZY/s400/ScreenShot309.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Step 3 Event to fill-in Created by Information&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We will add two events here which will be used to fill information in field at the time of adding new record and when records are changed.&lt;br /&gt;To add event open table maintenance generator in change mode then in menu path Enviroment-&gt;Events add event 01 and 05 put a subroutine name and create subroutine by hitting button next to name.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="88" width="400" src="http://4.bp.blogspot.com/-wERIBKywBqA/Trwl1ovXqsI/AAAAAAAACsQ/OWNYHTTTHzs/s400/ScreenShot310.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="109" width="378" src="http://1.bp.blogspot.com/-XwD24h3til0/Trwl8oLgdGI/AAAAAAAACsc/0l5b_AktsXY/s400/ScreenShot311.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;In the form routine under event 05 add code which will fill created user, date and time information.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;FORM zlbn_routetm_new_entry .&lt;br /&gt;  zlbn_routetm-ernam = sy-uname .&lt;br /&gt;  zlbn_routetm-erdat = sy-datum .&lt;br /&gt;  zlbn_routetm-erzet = sy-uzeit .&lt;br /&gt;ENDFORM.                    &lt;font color="blue"&gt;"ZLBN_ROUTETM_NEW_ENTRY&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Step 4 Event to fill-in Updated information&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;In the form routine under event 01 put following code. This will fill update by information in respective fields.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;FORM zlbn_routetm_save .&lt;br /&gt;  FIELD-SYMBOLS : &amp;lt;fs_field&amp;gt; TYPE ANY .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT total .&lt;br /&gt;    CHECK &amp;lt;action&amp;gt; EQ aendern.&lt;br /&gt;    ASSIGN COMPONENT 'AENAM' OF STRUCTURE &amp;lt;vim_total_struc&amp;gt; TO &amp;lt;fs_field&amp;gt; .&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;      &amp;lt;fs_field&amp;gt; = sy-uname .&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ASSIGN COMPONENT 'AEDAT' OF STRUCTURE &amp;lt;vim_total_struc&amp;gt; TO &amp;lt;fs_field&amp;gt; .&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;      &amp;lt;fs_field&amp;gt; = sy-datum .&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ASSIGN COMPONENT 'AEZET' OF STRUCTURE &amp;lt;vim_total_struc&amp;gt; TO &amp;lt;fs_field&amp;gt; .&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;      &amp;lt;fs_field&amp;gt; = sy-uzeit .&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    READ TABLE extract WITH KEY &amp;lt;vim_xtotal_key&amp;gt;.&lt;br /&gt;    IF sy-subrc = 0.&lt;br /&gt;      extract = total .&lt;br /&gt;      MODIFY extract INDEX sy-tabix.&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    MODIFY total.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    &lt;font color="blue"&gt;"ZLBN_ROUTETM_SAVE&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;At this point all you need is a transaction code and your config table is good to go.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-902378165940917149?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/902378165940917149/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/11/table-maintenance-with-createmodified.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/902378165940917149'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/902378165940917149'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/11/table-maintenance-with-createmodified.html' title='Table Maintenance with Create/Modified Information Automatically Filled in'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-1f_7nNgnQoo/TrwfyHT2sOI/AAAAAAAACrg/rUoygsKjri4/s72-c/ScreenShot307.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5905728945819194014</id><published>2011-10-13T17:26:00.005+05:30</published><updated>2011-10-13T17:33:46.112+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP; Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Using field-symbol to speed up LOOP on internal table</title><content type='html'>Often we need to LOOP on internal table to apply processing logic to all its record, it also requires updating its contents towards the end of processing.&lt;br /&gt;&lt;br /&gt;Most of us use work area to LOOP on an internal table and then use MODIFY statement to update its contents. With every loop pass content of internal table is copied to work area and with MODIFY statement its copied back to internal table. This copying of data to and fro from internal table takes considerable CPU time on application server. Alternative to work area is to use field-symbol to LOOP and MODIFY internal table contents. Field-symbol doesn't hold any data during LOOP, it just point to right record in internal table. And when you change field content it directly modify the content of table. So, there is no copy step involved when field-symbol is used and it increases the performance by many folds. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;I am going to demonstrate this performance boost using below example. Below program loops on internal table of type MARA using work area and field-symbol, and reports the time it took to execute these after the execution. Since I haven’t got good number of records in my development server I am going to increase the number of LOOP passes by increasing number of time program loop on internal table using variable C_MULTIPLE.&lt;br /&gt;&lt;br /&gt;Program is executed 4 times with increasing number of passes. Result is show in table with time in seconds.&lt;br /&gt;&lt;br /&gt;&lt;table BORDER=1&gt;&lt;tr ALIGN=right&gt;&lt;td&gt;Passes&lt;/TD&gt;&lt;td&gt;Work Area&lt;/TD&gt;&lt;td&gt; Field-Symbols&lt;/TD&gt;&lt;/TR&gt;&lt;tr ALIGN=right&gt;&lt;td&gt;5,34,400&lt;/TD&gt;&lt;td&gt;0.188&lt;/TD&gt;&lt;td&gt;0.031&lt;/TD&gt;&lt;/TR&gt;&lt;tr ALIGN=right&gt;&lt;td&gt;53,44,000&lt;/TD&gt;&lt;td&gt;1.938&lt;/TD&gt;&lt;td&gt;0.250&lt;/TD&gt;&lt;/TR&gt;&lt;tr ALIGN=right&gt;&lt;td&gt;5,34,40,000&lt;/TD&gt;&lt;td&gt;19.265&lt;/TD&gt;&lt;td&gt;2.515&lt;/TD&gt;&lt;/TR&gt;&lt;tr ALIGN=right&gt;&lt;td&gt;53,44,00,000&lt;/TD&gt;&lt;td&gt;191.226&lt;/TD&gt;&lt;td&gt;25.452&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;&lt;br /&gt;With increasing number of loop passes the difference in execution time becomes obivous. Roughly, field-symbol LOOP is 7 times faster than work area LOOP.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;REPORT  ztest5.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES : mara.&lt;br /&gt;CONSTANTS : c_multiple TYPE i VALUE 10 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_mara  TYPE TABLE OF mara ,&lt;br /&gt;       ls_mara TYPE mara          ,&lt;br /&gt;       i_lines TYPE i             .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : BEGIN OF wa_times ,&lt;br /&gt;         before_processing TYPE timestampl ,&lt;br /&gt;         after_processing  TYPE timestampl ,&lt;br /&gt;         diff              TYPE tzntstmpl  ,&lt;br /&gt;       END OF wa_times.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;FIELD-SYMBOLS : &amp;lt;fs_mara&amp;gt; TYPE mara.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*Select option for material&lt;/font&gt;&lt;br /&gt;SELECT-OPTIONS s_matnr FOR mara-matnr .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;* Start of Selection&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Data selection&lt;/font&gt;&lt;br /&gt;  SELECT *&lt;br /&gt;    INTO TABLE i_mara&lt;br /&gt;    FROM mara&lt;br /&gt;   WHERE matnr IN s_matnr .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Find Number of Lines&lt;/font&gt;&lt;br /&gt;  DESCRIBE TABLE i_mara LINES i_lines .&lt;br /&gt;  i_lines = i_lines * c_multiple .&lt;br /&gt;  WRITE : 'Number of Lines : ' , i_lines.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;* Loop using work ares&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;  GET TIME STAMP FIELD wa_times-before_processing .&lt;br /&gt;  DO c_multiple TIMES.&lt;br /&gt;    LOOP AT i_mara INTO ls_mara .&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDDO.&lt;br /&gt;  GET TIME STAMP FIELD wa_times-after_processing .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL METHOD cl_abap_tstmp=&gt;subtract&lt;br /&gt;    EXPORTING&lt;br /&gt;      tstmp1 = wa_times-after_processing&lt;br /&gt;      tstmp2 = wa_times-before_processing&lt;br /&gt;    RECEIVING&lt;br /&gt;      r_secs = wa_times-diff.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE : / 'LOOP INTO TABLE      , time in seconds:' , wa_times-diff .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;* Loop using field symbol&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;  GET TIME STAMP FIELD wa_times-before_processing .&lt;br /&gt;  DO c_multiple TIMES.&lt;br /&gt;    LOOP AT i_mara ASSIGNING &amp;lt;fs_mara&amp;gt; .&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDDO.&lt;br /&gt;  GET TIME STAMP FIELD wa_times-after_processing .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL METHOD cl_abap_tstmp=&gt;subtract&lt;br /&gt;    EXPORTING&lt;br /&gt;      tstmp1 = wa_times-after_processing&lt;br /&gt;      tstmp2 = wa_times-before_processing&lt;br /&gt;    RECEIVING&lt;br /&gt;      r_secs = wa_times-diff.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE : / 'LOOP ASSIGNING TABLE , time in seconds:' , wa_times-diff .&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-5905728945819194014?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5905728945819194014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/10/using-field-symbol-to-speed-up-loop-on.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5905728945819194014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5905728945819194014'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/10/using-field-symbol-to-speed-up-loop-on.html' title='Using field-symbol to speed up LOOP on internal table'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3244170096579224157</id><published>2011-09-01T20:21:00.001+05:30</published><updated>2011-09-01T20:21:25.949+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP; Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Defining Context Menu in SAP ABAP Module Pool</title><content type='html'>Menu which appear on right mouse button (Shift+F10) are called Context Menus. Usually they are used to provide context sensitive options. In SAP Module pool programming you can define context menu on screen, input/output, text, box and table control. When you define context menu on screen, box or table control all control defined under these element inherits context menu. For example if you define context menu on screen then all elements in screen will show same context menu unless they have got their own context menu defined.&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;You can create context menu from menu painter by selecting status type 'Context Menu'.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-ayPhVRAUoxY/Tl5L8DZs9ZI/AAAAAAAACq8/izjPkZU415o/s420/ScreenShot015.jpg" width="420" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;This is how it works. Screen elements on which you can define context menu have property called 'Context Menu Form ON_CTMENU'. Here you need to define a routine name which will be called when user hit right mouse button. See below screen shot which defines context menu forms on screen and box.&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img border="0" height="341" src="http://4.bp.blogspot.com/-1ZHQLucGIZ8/Tl5PWMzfBEI/AAAAAAAACrE/M3ugz8ePyBk/s400/ScreenShot017.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;img border="0" height="395" src="http://4.bp.blogspot.com/-aqQyzPUPnFs/Tl5PcwqYhTI/AAAAAAAACrM/REiCyNVB4O0/s400/ScreenShot019.jpg" width="400" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;Then you need to define these callback routine in your program and name should be in form ON_CTMENU_&amp;lt;name&amp;gt; where name is the input on screen element. In this particular case the callback routine on screen and box will be ON_CTMENU_SCREEN and ON_CTMENU_BOX respectively.&lt;/name&gt;&lt;br /&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;Signature of the form goes as follows.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div style="background-image: url(&amp;quot;http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg&amp;quot;); width: 700px;"&gt;&lt;div style="font-size: medium; margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  on_ctmenu_screen&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&amp;gt;OB_MENU    text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/span&gt;&lt;br /&gt;FORM on_ctmenu_screen USING ob_menu TYPE REF TO cl_ctmenu .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL METHOD cl_ctmenu=&amp;gt;load_gui_status&lt;br /&gt;    EXPORTING&lt;br /&gt;      program = sy-cprog&lt;br /&gt;      status  = 'SCR_100'&lt;br /&gt;      menu    = ob_menu.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    &lt;span style="color: blue;"&gt;"on_ctmenu_scr_right&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  on_ctmenu_box&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&amp;gt;OB_MENU    text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/span&gt;&lt;br /&gt;FORM on_ctmenu_box USING ob_menu TYPE REF TO cl_ctmenu .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL METHOD cl_ctmenu=&amp;gt;load_gui_status&lt;br /&gt;    EXPORTING&lt;br /&gt;      program = sy-cprog&lt;br /&gt;      status  = 'BOX_100'&lt;br /&gt;      menu    = ob_menu.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    &lt;span style="color: blue;"&gt;"on_ctmenu_scr_right&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;Context menu defined with menu painter are loaded using static method LOAD_GUI_STATUS of class CL_CTMENU. Context menu name is passed to parameter STATUS. In above two subroutine context menu SCR_100 and BOX_100 were loaded.&lt;/div&gt;&lt;div&gt;&amp;nbsp;&lt;/div&gt;&lt;div&gt;To summarise steps are&lt;/div&gt;&lt;ol&gt;&lt;li&gt; 	Define context menu in menu painter&lt;/li&gt;&lt;li&gt; 	Fill name in ON_CTMENU_  on screen element where you want context menu to be assigned.&lt;/li&gt;&lt;li&gt; 	Define callback routine in program and loaded the required context menu be calling method CL_CTMENU=&amp;gt;LOAD_GUI_STATUS.&lt;/li&gt;&lt;li&gt; 	Write code to handle user input as usual in USER_COMMAND.&amp;nbsp;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-3244170096579224157?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3244170096579224157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/defining-context-menu-in-sap-abap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3244170096579224157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3244170096579224157'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/defining-context-menu-in-sap-abap.html' title='Defining Context Menu in SAP ABAP Module Pool'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-ayPhVRAUoxY/Tl5L8DZs9ZI/AAAAAAAACq8/izjPkZU415o/s72-c/ScreenShot015.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1478592803290973652</id><published>2011-08-25T02:29:00.004+05:30</published><updated>2011-08-25T03:14:23.853+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP QM'/><category scheme='http://www.blogger.com/atom/ns#' term='Sapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><title type='text'>SAP QM Notification - Setting up Output/Shop floor paper</title><content type='html'>SPRO-&gt;Quality Management-&gt;Quality Notifications-&gt;Notification Processing-&gt;Print Control-&gt;Define Shop paper, Form, Print Program&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="71" src="http://4.bp.blogspot.com/-gkZxW1Yt3cg/TlUaL21tlOI/AAAAAAAACqM/2ZGZ9eqZj2U/s320/ScreenShot001.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;It’s two-step process, in first step 'Define Shop Paper' output is defined in terms of print program in and sap-script name. For example if you have three different kind of output which needs to be printed from Notification then you define each in 'Define Shop Papers'.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;After outputs are defined, they are assigned to Notification type using second option. While assigning the outputs to Notification type you can use wild card, you can save time if you carefully name the output types in first step.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="142" src="http://3.bp.blogspot.com/-SGpufJ-z02s/TlUbAMBflkI/AAAAAAAACqk/KcZd5lrMYuQ/s320/ScreenShot004.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="272" src="http://3.bp.blogspot.com/-tTsrBLvLKEc/TlUaQB6fFvI/AAAAAAAACqU/csBFEnHPMuk/s320/ScreenShot002.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;If your required output is similar to the one defined in SAP then you can just copy the existing output type, use same output program and change the form (sapscript) name. Create this sapscript by copying the sap-standard sapscript and modify that.&lt;br /&gt;&lt;br /&gt;However if your requirement is totally different and you would like to change the output program as well then copy the output in here and change both output and form name.&lt;br /&gt;&lt;br /&gt;Pay attention to the number used to define outputs here, both these output 5010 and 5011 is used in Notification type F1 and in next step we will see how these are assigned.&lt;br /&gt;&lt;br /&gt;Once you have defined all outputs save and exits screen. Then select option 'Assign Shop Papers to Notification Type'.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="183" src="http://3.bp.blogspot.com/-3XLRwiEvtRE/TlUaUf1iJOI/AAAAAAAACqc/uSpIy8-s1i0/s320/ScreenShot003.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;To assign both form 5010 and 5011 to notification type F1 you can use wild card 501*.&lt;br /&gt;&lt;br /&gt;Individual outputs can also be assigned by inserting record and entering notification type and output number.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1478592803290973652?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1478592803290973652/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/sap-qm-notification-setting-up.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1478592803290973652'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1478592803290973652'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/sap-qm-notification-setting-up.html' title='SAP QM Notification - Setting up Output/Shop floor paper'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-gkZxW1Yt3cg/TlUaL21tlOI/AAAAAAAACqM/2ZGZ9eqZj2U/s72-c/ScreenShot001.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Stevenage, Hertfordshire, UK</georss:featurename><georss:point>51.90488389473494 -0.18608130761720076</georss:point><georss:box>51.87481739473494 -0.22256180761720076 51.93495039473493 -0.14960080761720077</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3153277567595825893</id><published>2011-08-24T21:50:00.001+05:30</published><updated>2011-09-04T16:02:45.123+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Abap Objects'/><title type='text'>Selection Screen and ALV Grid Report on One Screen</title><content type='html'>In this blog I am going to show you how you can put both selection screen and ALV Grid on same screen so that user can see both their input and report together.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://3.bp.blogspot.com/-ngr00jUVcHM/TlUhDC8HapI/AAAAAAAACqs/ATHMLr9c0N4/s480/ScreenShot005.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Concept is based in fact that you can put selection-screen on a module pool subscreen area. For more information read blog &lt;a href="http://sample-code-abap.blogspot.com/2008/06/select-option-in-module-pool-screen.html"&gt;SELECT-OPTION in module pool&lt;/a&gt;. Based on this idea define a screen with subscreen on the top where a selection screen can be loaded, below that define a customer container where a ALV Grid can be displayed. In user-command of screen reterive and process data and refresh that in ALV Grid.&lt;br /&gt;&lt;br /&gt;Ok, lets start with programming.&lt;br /&gt;&lt;br /&gt;1. Create a report.&lt;br /&gt;2. Define screen 100 with subscreen area SUB200 on top and a custom container with name CUSTOM below it.&lt;br /&gt;3. Put below code in screen Flow logic tab&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(&amp;quot;http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg&amp;quot;); width: 700px;"&gt;&lt;div style="font-size: medium; margin-left: 20px;"&gt;&lt;pre&gt;PROCESS BEFORE OUTPUT.&lt;br /&gt;MODULE status_0100.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL SUBSCREEN sub200 INCLUDING sy-repid '0300' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PROCESS AFTER INPUT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL SUBSCREEN sub200.&lt;br /&gt;MODULE user_command_0100.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;4. Define GUI status ZPF01 with function code BACK, CANC, EXIT and OK.&lt;br /&gt;&lt;img border="0" height="42" width="320" src="http://4.bp.blogspot.com/-DqB0I1f786w/TlUki0HVnNI/AAAAAAAACq0/cOcq3upvseY/s320/ScreenShot006.jpg" /&gt;&lt;br /&gt;5. Create a GUI Tile ZTITLE01.&lt;br /&gt;&lt;br /&gt;Then copy-paste following code in report.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(&amp;quot;http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg&amp;quot;); width: 700px;"&gt;&lt;div style="font-size: medium; margin-left: 20px;"&gt;&lt;pre&gt;REPORT  zpwreport.&lt;br /&gt;TABLES : mara .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_mara TYPE TABLE OF mara ,&lt;br /&gt;       ob_custom TYPE REF TO cl_gui_custom_container ,&lt;br /&gt;       ob_grid   TYPE REF TO cl_gui_alv_grid         .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN .&lt;br /&gt;SELECT-OPTIONS : s_matnr FOR mara-matnr.&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 300.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  CALL SCREEN 100 .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Module status_0100 OUTPUT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;/span&gt;&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'ZPF01' .&lt;br /&gt;  SET TITLEBAR  'ZTITLE01' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM create_grid .&lt;br /&gt;ENDMODULE. " status_0100 OUTPUT&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Module user_command_0100 INPUT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;/span&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CASE sy-ucomm.&lt;br /&gt;    WHEN 'BACK' OR 'CANC' OR 'EXIT'.&lt;br /&gt;      LEAVE TO SCREEN 0 .&lt;br /&gt;    WHEN 'OK'.&lt;br /&gt;      SELECT *&lt;br /&gt;        INTO TABLE i_mara&lt;br /&gt;        FROM mara&lt;br /&gt;       WHERE matnr IN s_matnr .&lt;br /&gt;    WHEN OTHERS.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE. " user_command_0100 INPUT&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp;      Form  create_grid&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/span&gt;&lt;br /&gt;FORM create_grid .&lt;br /&gt;  IF ob_custom IS INITIAL .&lt;br /&gt;    CREATE OBJECT ob_custom&lt;br /&gt;      EXPORTING&lt;br /&gt;        container_name = 'CUSTOM'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CREATE OBJECT ob_grid&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_parent = ob_custom.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL METHOD ob_grid-&amp;gt;set_table_for_first_display&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_structure_name = 'MARA'&lt;br /&gt;      CHANGING&lt;br /&gt;        it_outtab        = i_mara.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ELSE.&lt;br /&gt;    CALL METHOD ob_grid-&amp;gt;refresh_table_display.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-3153277567595825893?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3153277567595825893/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/selection-screen-and-alv-grid-report-on.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3153277567595825893'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3153277567595825893'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/selection-screen-and-alv-grid-report-on.html' title='Selection Screen and ALV Grid Report on One Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ngr00jUVcHM/TlUhDC8HapI/AAAAAAAACqs/ATHMLr9c0N4/s72-c/ScreenShot005.jpg' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8150492461199670048</id><published>2011-08-18T21:28:00.001+05:30</published><updated>2011-08-19T02:02:27.763+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP FI'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><title type='text'>FB60 Enter Vendor Invoice - Base Amount column invisible on Tax Tab</title><content type='html'>Usually if a column is not visible in table control, with layout option you can make it visible or change position or length. But on this Tax Data table control which is in FB60 transaction; columns are shown based on certain configuration setting. One such column is 'Tax base amount in document currency' (RTAX1U12-FWBAS). This column is shown only if VAT Proc is configured as 'Changeable Tax Base Amount'&lt;br /&gt;&lt;br /&gt;You can see the below screen shot from FB60 before configuration.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="242" src="http://3.bp.blogspot.com/-E2fHV7pUbHw/Tk0pAFFPaaI/AAAAAAAACps/1ysuz5KxwBk/s320/ScreenShot444.jpg" width="320" /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Goto to SPRO menu path Financial Accounting(New)-&gt;Financial Accounting Global Settings(New)-&gt;Tax on Sales/Purchases-&gt;Basic Settings-&gt;Change Field Control for Tax Base Amount&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="163" src="http://2.bp.blogspot.com/-5F0yOgOUPrM/Tk0pFnUA3II/AAAAAAAACp0/d-mLNBoVczA/s320/ScreenShot446.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;Add you Tax Procedure in table, if its already not there and tick the checkbox.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="141" src="http://2.bp.blogspot.com/-iVFf_mq8FgE/Tk0pLFOmoAI/AAAAAAAACp8/SmAl7SWDtD0/s320/ScreenShot447.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;And this is screen shot after the configuration.&lt;br /&gt;&lt;br /&gt;&lt;img border="0" height="243" src="http://2.bp.blogspot.com/-H1knRJXh4kA/Tk0pPbYtX1I/AAAAAAAACqE/TSgrwrGi56U/s320/ScreenShot445.jpg" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;This setting will also be applied to transaction FB65.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-8150492461199670048?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8150492461199670048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/fb60-enter-vendor-invoice-base-amount.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8150492461199670048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8150492461199670048'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/fb60-enter-vendor-invoice-base-amount.html' title='FB60 Enter Vendor Invoice - Base Amount column invisible on Tax Tab'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-E2fHV7pUbHw/Tk0pAFFPaaI/AAAAAAAACps/1ysuz5KxwBk/s72-c/ScreenShot444.jpg' height='72' width='72'/><thr:total>0</thr:total><georss:featurename>Greater London, UK</georss:featurename><georss:point>51.522416236139506 -0.14556922265626326</georss:point><georss:box>51.2769542361395 -0.6209057226562633 51.76787823613951 0.32976727734373673</georss:box></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6513384606956499262</id><published>2011-08-16T15:27:00.000+05:30</published><updated>2011-08-16T15:27:11.790+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Executing quickview (SQVI) of another user</title><content type='html'>&lt;ol&gt;&lt;li&gt;List of all quickviews for a user can be found in table AQLTS. In SE16 select records where SPRAS = 'EN', HEAD = 'X', TEXT = 'USERNAME*'. Replace USERNAME by actual SAP user name.&lt;/li&gt;&lt;li&gt;You should get list of all quickviews that particular user have. It's in column TEXT in format USERNAME:QUICKVIEW .&lt;/li&gt;&lt;li&gt;Now go to table TRDIR and select record with name 'AQTG*QUICKVIEW*'. Replace QUICKVIEW with quickview name.&lt;/li&gt;&lt;li&gt;Step3 should give you name of program which is created by quickview. Once you get that you can then use this program name in SE38 to execute the quickview.&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6513384606956499262?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6513384606956499262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/executing-quickview-sqvi-of-another.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6513384606956499262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6513384606956499262'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/executing-quickview-sqvi-of-another.html' title='Executing quickview (SQVI) of another user'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8356786456368144391</id><published>2011-08-08T01:07:00.030+05:30</published><updated>2011-08-08T01:40:22.904+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP Notes'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>SD Tables Access-Performance Tips (from SAP Note 185530)</title><content type='html'>Are you having performance problem in your report or considering a secondary index on table to  boost performance? Below are the most common ways a SD report can kill a SAP system and how to avoid them. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;1. Accesses to sales orders (tables VBAK, VBAP)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;a) Search orders for customer number (field VBAK-KUNNR):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbak WHERE kunnr = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:   &lt;/span&gt;&lt;br /&gt;SELECT FROM vakpa WHERE kunde = ...  &lt;br /&gt;SELECT FROM vbak WHERE vbeln = vakpa-vbeln. &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;b) Search order items for material number (field VBAP-MATNR):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbap WHERE matnr = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:   &lt;/span&gt;&lt;br /&gt;SELECT FROM vapma WHERE matnr = ...    &lt;br /&gt;SELECT FROM vbap WHERE vbeln = vapma-vbeln&lt;br /&gt;                   AND posnr = vapma-posnr &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;c) Other search helps for sales orders offer the matchcode tables and views M_VMVAx, x. = A, B, C, ... M; for example search for purchase order number of the customer, description and so on&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Accesses to deliveries (tables LIKP, LIPS)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;a) Search for deliveries with customer number (field LIKP-KUNNR):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM likp WHERE kunnr = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vlkpa WHERE kunde = ...    &lt;br /&gt;SELECT FROM likp WHERE vbeln = vlkpa-vbeln. &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;b) Search for delivery items with material number (field LIKP-MATNR):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM lips WHERE matnr = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vlpma WHERE matnr = ...    &lt;br /&gt;SELECT FROM lips WHERE vbeln = vlpma-vbeln&lt;br /&gt;                   AND posnr = vlpma-posnr &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;c) Search for deliveries with sales order number (preceding document, field LIPS-VGBEL):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM lips WHERE vgbel = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbfa WHERE VBELV  = ... &lt;br /&gt;                   AND VBTYP_N = 'J'    &lt;br /&gt;SELECT FROM lips WHERE vbeln = vbfa-vbeln&lt;br /&gt;                   AND posnr = vbfa-posnn &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;d) Other search helps for deliveries offer matchcode tables and views M_VMVLx, x. = A, B, C, ... M; for example search for goods issue date, picking date, transportation planning date and so on.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Accesses to invoices (tables VBRK, VBRP)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;a) Search for invoices with customer number ("payer") (field VBRK-KUNRG):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbrk WHERE kunrg = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vrkpa WHERE kunde = ...    &lt;br /&gt;SELECT FROM vbrk WHERE vbeln = vrkpa-vbeln &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;b) Search for invoice items with material number (field VBRP-MATNR):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbrp WHERE matnr = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vrpma WHERE matnr = ...    &lt;br /&gt;SELECT FROM vbrp WHERE vbeln = vrpma-vbeln&lt;br /&gt;                   AND posnr = vrpma-posnr &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;c) Search for invoices with delivery number (preceding document, field VBRP-VGBEL):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbrp WHERE vgbel = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbfa WHERE vbtyp_n = 'M'&lt;br /&gt;                   AND vbelv  = ...    &lt;br /&gt;SELECT FROM vbrp WHERE vbeln = vbfa-vbeln&lt;br /&gt;                   AND posnr = vbfa-posnn &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;d) Search for invoices with order number (preceding document, field VBRP-AUBEL):&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbrp WHERE aubel = ...&lt;br /&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbfa WHERE vbtyp_n = 'M'                    &lt;br /&gt;                   AND vbelv   = ...&lt;br /&gt;SELECT FROM vbrp WHERE vbeln = vbfa-vbeln&lt;br /&gt;                   AND posnr = vbfa-posnn &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;4. Other accesses in SD:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;a) Document flow:&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT vbelv FROM vbfa WHERE vbeln ...&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;In table VBFA only the preceeding document is used to search for the subsequent document (for example, delivery for order). Searching the other way makes no sense with this table since the preceding documents (for example, order for delivery) are stored directly in the document tables. Thus reading in table VBFA is a one-way street.&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;*Correct:&lt;/span&gt;&lt;br /&gt;SELECT vgbel FROM lips WHERE vbeln = ... &lt;br /&gt;&lt;span style="color: blue;"&gt;or&lt;/span&gt;&lt;br /&gt;SELECT vgbel FROM vbrp WHERE vbeln = ... &lt;br /&gt;&lt;span style="color: blue;"&gt;or&lt;/span&gt;&lt;br /&gt;SELECT aubel FROM vbrp WHERE vbeln = ... &lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;b) Search for shipping unit item with delivery&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;&lt;span style="color: blue;"&gt;Incorrect:&lt;/span&gt;&lt;br /&gt;SELECT FROM vepo WHERE vbtyp = 'J'                    &lt;br /&gt;                   AND vbeln = i_lips-vbeln&lt;br /&gt;&lt;span style="color: blue;"&gt;Correct:&lt;/span&gt;&lt;br /&gt;SELECT FROM vbfa WHERE vbtyp_n = 'X'                    &lt;br /&gt;                   AND vbelv = i_lips-vbeln&lt;br /&gt;SELECT FROM vepo WHERE venum = vbfa-vbeln &lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-8356786456368144391?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8356786456368144391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/sd-tables-access-performance-tips-from.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8356786456368144391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8356786456368144391'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/08/sd-tables-access-performance-tips-from.html' title='SD Tables Access-Performance Tips (from SAP Note 185530)'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-449139885417500185</id><published>2011-07-05T19:20:00.004+05:30</published><updated>2011-07-08T18:43:41.578+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Collapsible Area Module Pool Screen - ABAP</title><content type='html'>To put it straight and simple, collapsible area is not a predefined screen element or GUI control but it is technique of putting multiple screens in right sequence. &lt;br /&gt;&lt;br /&gt;The example which I am going to explain below has one input for material and two blocks representing 'General data' and 'Dimention' (similar to MM02). See screen shot below, for time being just ignore the comments on the screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/6r7orw7Ju7pKxXHJfdSbsg?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SmIdciFVjbI/AAAAAAAACQ8/ETT9QA1IcMw/s800/ScreenShot013.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;These two blocks are collapible area and to make it work there are 7 screens in total. Out of 7 screens 4 screens are just for layout which represent combination of collapsed and expanded area possible. Below are screen shot of these four layout screen. Each screen has subscreen area where the data will be loaded and a button. Note the icon of button, and the text next to it which helps the user to identify what is missing (collapsed) on the screen. Note thatn these screen are defined as Subscreen.&lt;br /&gt;&lt;br /&gt;Both Open.&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/GPv60aEqno4SJY4QRVoSjg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIcqVuv8dI/AAAAAAAACQs/LGtjR_SETtE/s800/ScreenShot003.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Top Open, Bottom Collapsed&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/juKW_92XzTnaUK1EEPj9EQ?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SmIcquAtnbI/AAAAAAAACQw/8AnWfIBHqbY/s800/ScreenShot005.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Top Collapsed, Bottom Open&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/w2zRnn5jJBB7StRYBFPuXw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIcq9DSCII/AAAAAAAACQ0/aATfwb9JioM/s800/ScreenShot007.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Both Collapsed&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/SyCSxhxMgh7v3zkqF56-fQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIcqxvNJqI/AAAAAAAACQ4/LUxaSZLfNyM/s800/ScreenShot009.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Then there is a main screen will host all above defined subscreen depeding on which button is pressed by user (this will be logic on user command). SUBSCREEN_MAIN is scubscreen area defined on the screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/xT6Rj2P1aG_OrfJIXNkUBw?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIgWoED96I/AAAAAAAACRA/O2V01Brer9E/s800/ScreenShot001.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And as you might have guessed rest two screen are screens represnting data.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/A9h64J0kgyI91RuRx8dcAg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIhL7KhjoI/AAAAAAAACRE/jYpUsx_DNns/s800/ScreenShot011.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/BU1_doKIbsVC6FnEJsPNsw?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SmIhMLsK_oI/AAAAAAAACRI/_abuGMyOcT8/s800/ScreenShot012.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Putting the screen together screen 100 is the main screen which will host one of the screens from 200, 210, 220 and 230 and these screens will in turn load screen 300 and 310 in them. You may like to revisit the first screen shot, it might make more sense now.&lt;br /&gt;&lt;br /&gt;Ok that’s enough of explanation let’s start it.&lt;br /&gt;&lt;br /&gt;1.Create a report in SE38. You can also create module pool program and then use transaction code to kick start program. Once report is create, I would suggest you to open report in SE80.&lt;br /&gt;2.Add a 'Normal' screen, name it as screen 100. Add an input field MARA-MATNR and a subscreen area SUBSCREEN_MAIN. Put following code in flow logic tab. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/vKX6L00p0zmEqL6CLJthfg?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIiCydtHiI/AAAAAAAACRg/C1oKT0f78I4/s800/ScreenShot002.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Create a 'Subscreen', name it as  200 put two buttons and two subscreen area SUB1 and SUB2 as shown in screen shot above. Use icon ICON_DATA_AREA_COLLAPSE for push buttons. Assign function code ‘220’ to the button on top and ‘210’ to button in bottom. Put following code in the flow logic tab of screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/h5T-fIf_23mL0_etQ6Q1Sg?feat=embedwebsite"&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SmIiBT8i9CI/AAAAAAAACRM/8Rt2R8pT3Pk/s800/ScreenShot004.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.Create a 'Subscreen' 210 as shown in snapshot above. Use icon ICON_DATA_AREA_COLLAPSE and ICON_DATA_AREA_EXPAND. Function code for buttons will be 230 200. Put following code in the flow logic tab of screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/7cnYpQstJ1fxBa3oLjU9Rg?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIiBi6rP5I/AAAAAAAACRQ/CIdDFofvwxk/s800/ScreenShot006.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;5.Create 'Subscreen' 220 as shown in snapshot above. Function code for button will be 200 and 230. Put following code in the flow logic tab of screen.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/lxTCioLQ1KfwDtut2LsQyg?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIiBtSHCTI/AAAAAAAACRU/7eLspt6u_2U/s800/ScreenShot008.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;6. Create 'Subscreen' 230 as shown in snapshot above. Function code for buttons will be 210 and 220 respectively. Flow logic for this screen will be empty since there is no subscreen to load in it.&lt;br /&gt;&lt;br /&gt;7. Finally define 'Subscreen' 300 and 310 as shown in above screen shot. Use fields from MARA. Flow logic for both the screen will be empty.&lt;br /&gt;&lt;br /&gt;8. You need define a PF status 'PFSTAT' and Gui title 'TITLE' . Put BACK and EXIT function code in PF Status.&lt;br /&gt;&lt;br /&gt;9. Put following code in report.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium" &gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZPWCOLLAPSE&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;REPORT  zpwcollapse.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES mara .&lt;br /&gt;DATA : gv_screen TYPE char10 VALUE '0200' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL SCREEN 100.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;  SET PF-STATUS 'PFSTAT'.&lt;br /&gt;  SET TITLEBAR 'TITLE' .&lt;br /&gt;ENDMODULE.                 &lt;font color="blue"&gt;" STATUS_0100  OUTPUT&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CASE sy-ucomm.&lt;br /&gt;    WHEN 'BACK' OR  'EXIT'.&lt;br /&gt;      LEAVE TO SCREEN 0 .&lt;br /&gt;    WHEN '200' .&lt;br /&gt;      gv_screen = sy-ucomm .&lt;br /&gt;    WHEN '210' .&lt;br /&gt;      gv_screen = sy-ucomm .&lt;br /&gt;    WHEN '220' .&lt;br /&gt;      gv_screen = sy-ucomm .&lt;br /&gt;    WHEN '230 '.&lt;br /&gt;      gv_screen = sy-ucomm .&lt;br /&gt;    WHEN '' .&lt;br /&gt;      SELECT SINGLE *&lt;br /&gt;        FROM mara&lt;br /&gt;       WHERE matnr = mara-matnr .&lt;br /&gt;      IF sy-subrc &lt;&gt; 0 .&lt;br /&gt;        CLEAR mara .&lt;br /&gt;      ENDIF.&lt;br /&gt;    WHEN OTHERS.&lt;br /&gt;  ENDCASE.&lt;br /&gt;ENDMODULE.                 &lt;font color="blue"&gt;" USER_COMMAND_0100  INPUT&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;At this point your SE80 object list should look like this&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/YSNMkX2vJqSQOcQiQKREFA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIiCJZEeuI/AAAAAAAACRY/-4Uj_zLTp9s/s800/ScreenShot0017.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ok, that is all. If you now start you report/transaction enter material code in press enter, it should populate corresponding values on screen and then you can play with collapsible part of it. Enjoy!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-449139885417500185?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/449139885417500185/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/collapsible-area-module-pool-screen.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/449139885417500185'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/449139885417500185'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/collapsible-area-module-pool-screen.html' title='Collapsible Area Module Pool Screen - ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-k3sT2kXNko/SmIdciFVjbI/AAAAAAAACQ8/ETT9QA1IcMw/s72-c/ScreenShot013.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2399779610399749034</id><published>2011-07-04T20:40:00.005+05:30</published><updated>2011-07-08T18:47:18.393+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><title type='text'>Number Range Setting and Enhancement for Sales Order, Billing, Deliveries and Shipment - Part II</title><content type='html'>&lt;a href="http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement.html"&gt;Part I: Number Range Explained, Number range config for Sales Order, Billing, Delivery and Shipment&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Number range object for Sales Order, Billing and Deliveries is RV_BELEG. You can either uses transaction SNRO with this object name RV_BELEG or use special transaction created for this number range object, which is VN01.&lt;br /&gt;&lt;br /&gt;Number Range Object for Shipment is RV_TRANSPO, which you can see in SNRO transaction or use special transaction VN07.&lt;br /&gt;&lt;br /&gt;Configuration of Number range in SAP is can be only done on document types. This poses limitation that one can only have sequential number based on document types. In case these is a legal requirement to maintain sequential number of documents based on other parameters for example customer or country then this cannot be achieved using SAP standard configuration and needs enhancements. Fortunately, SAP has provides exits specifically for this purpose.&lt;br /&gt;Enhancement&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Sales Order&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Maine Program: SAPMV45A&lt;br /&gt;Include: MV45AFZZ&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM USEREXIT_NUMBER_RANGE                                    *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       This userexit can be used to determine the numberranges for   *&lt;br /&gt;*       the internal document number.                                 *&lt;br /&gt;*                                                                     *&lt;br /&gt;*       US_RANGE_INTERN - internal number range                       *&lt;br /&gt;*                                                                     *&lt;br /&gt;*       This form is called from form BELEG_SICHERN                   *&lt;br /&gt;*                                                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Example: Numer range from TVAK like in standard&lt;br /&gt;* US_RANGE_INTERN = TVAK-NUMKI.&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    &lt;font color="blue"&gt;"USEREXIT_NUMBER_RANGE&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Billing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Function Group: V60A&lt;br /&gt;Include: RV60AFZZ&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM USEREXIT_NUMBER_RANGE                                    *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       This userexit can be used to determine the numberranges for   *&lt;br /&gt;*       the internal document number.                                 *&lt;br /&gt;*       US_RANGE_INTERN - internal number range                       *&lt;br /&gt;*       This form is called from form LV60AU02                        *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Example: Number range from TVFK like in standard&lt;br /&gt;* US_RANGE_INTERN = TVFK-NUMKI.&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Deliveries&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Main program: SAPMV50A&lt;br /&gt;Include: MV50AFZ1&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM USEREXIT_NUMBER_RANGE                                    *&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       This userexit can be used to determine the numberranges for   *&lt;br /&gt;*       the internal document number.                                 *&lt;br /&gt;*                                                                     *&lt;br /&gt;*       US_RANGE_INTERN - internal number range                       *&lt;br /&gt;*                                                                     *&lt;br /&gt;*       This form is called from form BELEG_SICHERN                   *&lt;br /&gt;*                                                                     *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM USEREXIT_NUMBER_RANGE USING US_RANGE_INTERN.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Example: Numer range from TVLK like in standard&lt;br /&gt;* US_RANGE_INTERN = TVLK-NUMKI.&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Shipment&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Enhacement: V56UNUMB  Shipment number allocation  &lt;br /&gt;EXIT_SAPLV56U_003&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2399779610399749034?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2399779610399749034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement_04.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2399779610399749034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2399779610399749034'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement_04.html' title='Number Range Setting and Enhancement for Sales Order, Billing, Deliveries and Shipment - Part II'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1488534524597399244</id><published>2011-07-04T20:29:00.002+05:30</published><updated>2011-07-05T16:51:58.499+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><title type='text'>Number Range Setting and Enhancement for Sales Order, Billing, Deliveries and Shipment - Part I</title><content type='html'>&lt;a href="http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement_04.html"&gt;Part II: Number range definition for Sales Order, Billing, Delivery and Shipment and User-exit enhance sap standard functionality. &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Number range in SAP is used to across modules to automatically number documents as and when they are created. Number range contains one or more intervals, each one of them define range of number and stores current value of counter. Each range is assigned or used to number a specific type of document for example a Sales Order, Deliveries, Billing document and so on. When these documents are create SAP reads assigned number range object and interval to get current value of counter, which is then assigned to the new document, and then counter is increased by one. This way documents created are always in sequence, except when number range is buffered where gaps can occur. Refer &lt;a href="http://help.sap.com/saphelp_nw04/helpdata/en/95/3d5540b8cdcd01e10000000a155106/content.htm"&gt;SAP Help&lt;/a&gt; for more detail.&lt;br /&gt;&lt;br /&gt;Number range objects are maintained using transaction SNRO. Intervals can be marked as 'external'. External number range intervals only contains interval, it does not maintain the current value. External number ranges are used to validate number. For example, if user chooses to enter Sales Order number, it will be then validated against an external number range. As users are free to enter any number within range there is no point in maintaining current value.&lt;br /&gt;&lt;br /&gt;Number ranges intervals are assigned to documents type in SPRO. Two or more documents type can be assigned to same number range interval. Below are the settings in SPRO where number range intervals are assigned to Sales Order, Billing, Deliveries and Shipment.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;b&gt;Sales Order&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-fVGUcQptJsQ/ThHTJ99KeDI/AAAAAAAACoI/8o8GZ3eiQio/s800/ScreenShot244.jpg" height="262" width="487" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-N_qdzffdzNM/ThHTJuui4lI/AAAAAAAACoE/XK8Wt-ophCw/s800/ScreenShot245.jpg" height="236" width="684" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Billing/Invoice&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-X-LvUfgqEX4/ThHTJv3zi7I/AAAAAAAACn8/RYZ1GaMZxsI/s800/ScreenShot246.jpg" height="180" width="447" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-5rYkss_HpP8/ThHTJlCeT4I/AAAAAAAACoA/tt4kdd8HoPs/s800/ScreenShot247.jpg" height="183" width="705" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Delivery&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-5CBYsrB7XaM/ThHTKWxgDfI/AAAAAAAACoU/iTWcw8YcoXY/s800/ScreenShot248.jpg" height="314" width="684" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh5.googleusercontent.com/-VKxyfdChWz4/ThHTKsCtlvI/AAAAAAAACoY/h7qnAJh_APY/s800/ScreenShot249.jpg" height="211" width="643" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Shipment&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/-BxI5MVBAMb8/ThHTKNYQy9I/AAAAAAAACoQ/xfsnRm4o5EM/s800/ScreenShot250.jpg" height="294" width="568" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-kEmDzSFpTvQ/ThHTKMDlejI/AAAAAAAACoM/oAfdgH-pypQ/s800/ScreenShot251.jpg" height="212" width="690" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1488534524597399244?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1488534524597399244/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1488534524597399244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1488534524597399244'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/07/number-range-setting-and-enhancement.html' title='Number Range Setting and Enhancement for Sales Order, Billing, Deliveries and Shipment - Part I'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-fVGUcQptJsQ/ThHTJ99KeDI/AAAAAAAACoI/8o8GZ3eiQio/s72-c/ScreenShot244.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2444660458975328140</id><published>2011-06-24T15:22:00.001+05:30</published><updated>2011-07-08T18:48:02.177+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Month Input with Value Help</title><content type='html'>Select-option for month input can be created using dictionary field S012-SPMON and the code to display a pretty value help is in sap standard include RMCS0F0M. Just include the program and call subroutine MONAT_F4.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/-U_pFF3cWCMc/TgRdyYVNegI/AAAAAAAACnQ/nSw4_2QK_Zk/s800/Month%252520Input.jpg" height="260" width="671" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;REPORT  zpwtest7 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;INCLUDE rmcs0f0m .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES  s012.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT-OPTIONS s_months FOR s012-spmon.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_months-low.&lt;br /&gt;  PERFORM monat_f4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_months-high.&lt;br /&gt;  PERFORM monat_f4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;/font&gt;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-2444660458975328140?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2444660458975328140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/06/month-input-with-value-help.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2444660458975328140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2444660458975328140'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/06/month-input-with-value-help.html' title='Month Input with Value Help'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh3.googleusercontent.com/-U_pFF3cWCMc/TgRdyYVNegI/AAAAAAAACnQ/nSw4_2QK_Zk/s72-c/Month%252520Input.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5225789283892061521</id><published>2011-04-20T18:58:00.001+05:30</published><updated>2011-07-05T16:54:00.297+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP Notes'/><category scheme='http://www.blogger.com/atom/ns#' term='Sapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Displaying SAP Icon in Documentation Text</title><content type='html'>Recently I was creating program documentation and found problem with the way SAP has given option to insert SAP icon. This problem will be there in any kind of documentation i.e. while creating SE38 documentation, data element documentation, long text of message etc. While define documentation you would normally think, using option Insert-&gt;Character-&gt;SAP Icons (as in screen shot below) will do the job. But it seems that is not the case.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/0Ug8OkaLw-5-1wVw019JpQ?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/_-k3sT2kXNko/Ta7dNj6spHI/AAAAAAAACmc/grc1VgwEKpg/s800/image_1.jpg" height="554" width="615" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It inserts a decimal code, corresponding to selected icon in the text. But when you actually view this it looks anything but SAP Icon.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/IuRK5DR5EpcYVZVcJSEO8Q?feat=embedwebsite"&gt;&lt;img src="https://lh5.googleusercontent.com/_-k3sT2kXNko/Ta7dOPT2q6I/AAAAAAAACmg/S4ILu4i9DiA/s800/image_2.jpg" height="340" width="478" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;With some trial and error what I found was if you simply put hexadecimal code of SAP icon (which you can get from ICON type group from SE11) within @, e.g. to print OK icon use @01@ as shown in below screen shot.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/zpASyXM4Rk5scnB37DKn5g?feat=embedwebsite"&gt;&lt;img src="https://lh4.googleusercontent.com/_-k3sT2kXNko/Ta7dOUBMYTI/AAAAAAAACmk/HKcZ0fRnpXM/s800/image_3.jpg" height="441" width="691" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And here is the output&lt;br /&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/GAm2CplS4VJnN0XFPau5Uw?feat=embedwebsite"&gt;&lt;img src="https://lh3.googleusercontent.com/_-k3sT2kXNko/Ta7dOnFG7aI/AAAAAAAACmo/SDANT8LKlyI/s800/image_4.jpg" height="348" width="484" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-5225789283892061521?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5225789283892061521/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/04/displaying-sap-icon-in-documentation.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5225789283892061521'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5225789283892061521'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/04/displaying-sap-icon-in-documentation.html' title='Displaying SAP Icon in Documentation Text'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/_-k3sT2kXNko/Ta7dNj6spHI/AAAAAAAACmc/grc1VgwEKpg/s72-c/image_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4040178918773628101</id><published>2011-02-28T18:25:00.002+05:30</published><updated>2011-08-21T17:26:58.579+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP Basis'/><title type='text'>Configure SAP Printer to send spool as PDF attachment</title><content type='html'>This cool method will allow you to convert any SAP output in PDF format and send it as email attachment.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You must have used program RSTXPDFT4 earlier for similar purpose, however for normal user finding spool number and then executing program is too much. And I have seen users printing and scanning outputs to forward it to customer/vendor. This will simplify the whole process and provides an easy method to achieve the end result. Basically you define a printer in SAP with deriver type PDF and access method 'M'. And anything printed on this printer will be send as pdf attachment to email specified.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;To define such printer follow below steps&lt;br /&gt;&lt;br /&gt;1. Goto transaction SPAD (Spool Administrator) and Hit 'Display' button.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/_-k3sT2kXNko/TWfaguwQM-I/AAAAAAAACl8/bwyPbMzF1OU/s800/image_1.jpg" height="372" width="671" /&gt;&lt;br /&gt;&lt;br /&gt;2. On next screen hit 'Create' button.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh4.googleusercontent.com/_-k3sT2kXNko/TWfagjDiMYI/AAAAAAAACl0/svh0eB-Dens/s800/image_2.jpg" height="130" width="683" /&gt;&lt;br /&gt;&lt;br /&gt;3. On 'Device Attributes' tab fill in 'Output device' and 'Short name'. Select device type 'PDF1 : PDF:ISO Latin-1 4.6D+'. Press F4 on Spool server and select relevant spool server from list.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh6.googleusercontent.com/_-k3sT2kXNko/TWfagokodAI/AAAAAAAACl4/V_9hecvif1M/s800/image_3.jpg" height="648" width="716" /&gt;&lt;br /&gt;&lt;br /&gt;4. On 'Access method' tab select 'M' as access method. Input 'Email address' and 'Only use This Mail Address' will appear. If you want all emails to be sent to one email address and would not allow user to change that email adderss then enter adddres and check the box. If left blank system will prompt user to enter email addrres before printing.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://lh3.googleusercontent.com/_-k3sT2kXNko/TWfag8woW6I/AAAAAAAACmA/kmk_tCmWdO0/s800/image_4.jpg" height="398" width="691" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-4040178918773628101?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4040178918773628101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2011/02/configure-sap-printer-to-send-spool-as.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4040178918773628101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4040178918773628101'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2011/02/configure-sap-printer-to-send-spool-as.html' title='Configure SAP Printer to send spool as PDF attachment'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh6.googleusercontent.com/_-k3sT2kXNko/TWfaguwQM-I/AAAAAAAACl8/bwyPbMzF1OU/s72-c/image_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4249172422046985101</id><published>2010-12-23T21:04:00.001+05:30</published><updated>2011-07-05T18:44:56.278+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Abap Objects'/><title type='text'>Auto Refresh ALV List - CL_GUI_TIMER</title><content type='html'>Class CL_GUI_TIMER trigger event FINISHED at given intervals (in seconds). This event can be used to select the data, carry out processing and update the content internal table attached to ALV. Below sample code illustrate how to use this class to refresh ALV. To summarise the program logic in short, you need to define object of CL_GUI_ALV_GRID, a local class to handle event FINISHED, couple this event method defined in local class, specify time interval in seconds and kick start the timer.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Note that I have used SELECT.. APPENDING TABLE to show change in data after refresh. And I think it is good idea to inform user about last time report was refresh with MESSAGE statement.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT  zpwtest8.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CLASS lcl_timer DEFINITION DEFERRED .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_spfli TYPE TABLE OF spfli .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : ob_grid    TYPE REF TO cl_gui_alv_grid ,&lt;br /&gt;       ob_recev   TYPE REF TO lcl_timer       ,&lt;br /&gt;       ob_timer   TYPE REF TO cl_gui_timer    .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*       CLASS lcl_receiver DEFINITION&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;CLASS lcl_timer DEFINITION.&lt;br /&gt;  PUBLIC SECTION.&lt;br /&gt;    METHODS:&lt;br /&gt;      handle_finished FOR EVENT finished OF cl_gui_timer.&lt;br /&gt;ENDCLASS.                    "lcl_receiver DEFINITION&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*       CLASS lcl_receiver IMPLEMENTATION&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;CLASS lcl_timer IMPLEMENTATION.&lt;br /&gt;  METHOD handle_finished.&lt;br /&gt;    PERFORM refresh_data .&lt;br /&gt;    MESSAGE s003(z001) WITH 'Report refreshed at' sy-uzeit.&lt;br /&gt;    CALL METHOD ob_timer-&gt;run.&lt;br /&gt;  ENDMETHOD.                    "handle_finished&lt;br /&gt;ENDCLASS.                    "lcl_receiver IMPLEMENTATION&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;*     Start of Selection&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  PERFORM select_data .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;*     End of Selection&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;END-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Step 1 : Initialise Time control&lt;/font&gt;&lt;br /&gt;  CREATE OBJECT ob_timer.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Step 2 : Initialise object to receive event&lt;/font&gt;&lt;br /&gt;  CREATE OBJECT ob_recev.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Step 3 : Couple event to method&lt;/font&gt;&lt;br /&gt;  SET HANDLER ob_recev-&gt;handle_finished FOR ob_timer. "&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Step 4 : Set Interval in seconds&lt;/font&gt;&lt;br /&gt;  ob_timer-&gt;interval = 20 .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Step 5 : Start Timer&lt;/font&gt;&lt;br /&gt;  CALL METHOD ob_timer-&gt;run.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM display_data .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  Select_Date&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM select_data .&lt;br /&gt;  SELECT *&lt;br /&gt;    APPENDING TABLE i_spfli&lt;br /&gt;    FROM spfli .&lt;br /&gt;ENDFORM.                    "SELECT_DATA&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  refresh_data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM refresh_data .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Get grid reference&lt;/font&gt;&lt;br /&gt;  IF ob_grid IS INITIAL .&lt;br /&gt;    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'&lt;br /&gt;      IMPORTING&lt;br /&gt;        e_grid = ob_grid.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF ob_grid IS NOT INITIAL. "Sanity Test&lt;br /&gt;    PERFORM select_data .&lt;br /&gt;    CALL METHOD ob_grid-&gt;refresh_table_display.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    "refresh_data&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  display_data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM display_data .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_structure_name = 'SPFLI'&lt;br /&gt;    TABLES&lt;br /&gt;      t_outtab         = i_spfli&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      program_error    = 1&lt;br /&gt;      OTHERS           = 2.&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;br /&gt;ENDFORM .                    "display_data&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-4249172422046985101?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4249172422046985101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/12/auto-refresh-alv-list-clguitimer.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4249172422046985101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4249172422046985101'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/12/auto-refresh-alv-list-clguitimer.html' title='Auto Refresh ALV List - CL_GUI_TIMER'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2145036878421712594</id><published>2010-12-16T15:34:00.003+05:30</published><updated>2011-08-19T03:37:19.714+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='VAT'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><title type='text'>VAT Code Change (UK)</title><content type='html'>In UK VAT is changing from 17.5% to 20% effective from 4th Jan 2011, first working day of the Year. Following are the changes required in our SAP system. The steps are not exclusive for every SAP implementation but will give you an idea where to start from. To start with, existing VAT code were kept unchanged and new VAT code are created by copying them and changing the rates. Once these code are transported to production system you need to set condition and change VAT code in documents like scheduling agreement, purchase info records, purchase order, sales orders etc.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;1. Copy existing VAT code into new codes, and change the rate using transaction FTXP. Note that system will not prompt for transport.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TQneYvhZfnI/AAAAAAAACk0/IlDGhvD1qNc/s800/image_1.jpg" height="440" width="601" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TQnemHVw89I/AAAAAAAACk4/XuaMcqvPHmc/s800/image_2.jpg" height="253" width="535" /&gt;&lt;br /&gt;&lt;br /&gt;2. Adding VAT code in transport.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TQnerBzQnZI/AAAAAAAACk8/U64yWmv1VuI/s800/image_3.jpg" height="202" width="320" /&gt;&lt;br /&gt;&lt;br /&gt;Create transport and add new tax codes in transport.&lt;br /&gt;In transaction SE10 release the task and transport. Before releasing, make sure all tax codes are there in transport by expanding the task node of transport.&lt;br /&gt;&lt;br /&gt;3. Import transport in target system.&lt;br /&gt;&lt;br /&gt;Import transport in target system using STMS. Note that just by importing transport tax rate will not be imported in target system as tax rates are stores in conditional tables and which can be transported because of number assignment (KONH-KNUMH and KONP-KNUMH) which is sequential numbers&lt;br /&gt;&lt;br /&gt;Next step will create condition records.&lt;br /&gt;Again go to transaction FTXP and choose Transport-&gt;Import.&lt;br /&gt;&lt;br /&gt;If Import option is disable then change setting in SCC4 to 'Change w/o automatic recording, no transport allowed'&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/TQnev-k_9aI/AAAAAAAAClA/2D0psKeRL-w/s800/image_4.jpg" height="145" width="527" /&gt;&lt;br /&gt;&lt;br /&gt;In import option input transport number and country as GB. This executes transaction FTXP in BDC each tax code. You can check status in SM35.&lt;br /&gt; &lt;br /&gt;4. In VK12 for condition MWST change the valid to date of existing VAT code until 3rd Jan 2011 and add a line for new VAT code starting from 4th Jan 2011. As the condition table works on Validity dates this cab be done earliest convenience to avoid problems during the New Year.&lt;br /&gt;&lt;br /&gt;5. Use program RM06ENMW to mass update Purchasing Documents e.g. Purchase Order, Scheduling Agreement. &lt;br /&gt;&lt;br /&gt;6. Use program RM06IMWS to mass update Purchase Info Record.&lt;br /&gt;&lt;br /&gt;Best way is to schedule a background job to execute on 4th Jan early morning for RM06ENMW and RM06IMWS .&lt;br /&gt;&lt;br /&gt;7. Open Sales orders with delivery date after 3rd Jan should repriced for new VAT code.&lt;br /&gt;&lt;br /&gt;8. Ensure new VAT codes are entered for the determination of the tax code (configuration). Transaction OBCD - EDI: Conversion of External Tax Rate &lt;-&gt; Tax Code&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Further reading:&lt;br /&gt;Note 117983 - Change of tax on sales/purchases (w/o tax jur.code)&lt;br /&gt;Note 96389 - Chng cntrl rcrd for MM-PUR: purchasing info record&lt;br /&gt;Note 97144 - Change tax rate for MM-PUR: Purchasing documents&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2145036878421712594?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2145036878421712594/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/12/vat-code-change-uk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2145036878421712594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2145036878421712594'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/12/vat-code-change-uk.html' title='VAT Code Change (UK)'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/TQneYvhZfnI/AAAAAAAACk0/IlDGhvD1qNc/s72-c/image_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8641184328787865768</id><published>2010-07-17T22:06:00.001+05:30</published><updated>2011-07-05T18:48:49.688+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Upload Download'/><title type='text'>Uploading excel data into ABAP from presentation server</title><content type='html'>You can upload text based file using method CL_GUI_FRONTEND_SERVICES=&gt;GUI_UPLOAD or function module GUI_UPLOAD. This method or function module does not work with excel file. For excel files function module ALSM_EXCEL_TO_INTERNAL_TABLE can be used. This function module returns data in internal table with three columns ROW, COL and VALUE. Basically it returns data for each cell in excel file. With little bit of logic this data then can be populated in desired internal table.&lt;br /&gt;&lt;br /&gt;Below sample code uploaded data from excel file using ALSM_EXCEL_TO_INTERNAL_TABLE.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT  zpwtest5.&lt;br /&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Data Definition&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;TYPES : BEGIN OF ty_excel ,&lt;br /&gt;          col0001 TYPE char50 ,&lt;br /&gt;          col0002 TYPE char50 ,&lt;br /&gt;          col0003 TYPE char50 ,&lt;br /&gt;          col0004 TYPE char50 ,&lt;br /&gt;          col0005 TYPE char50 ,&lt;br /&gt;          col0006 TYPE char50 ,&lt;br /&gt;          col0007 TYPE char50 ,&lt;br /&gt;          col0008 TYPE char50 ,&lt;br /&gt;          col0009 TYPE char50 ,&lt;br /&gt;          col0010 TYPE char50 ,&lt;br /&gt;          col0011 TYPE char50 ,&lt;br /&gt;          col0012 TYPE char50 ,&lt;br /&gt;          col0013 TYPE char50 ,&lt;br /&gt;          col0014 TYPE char50 ,&lt;br /&gt;          col0015 TYPE char50 ,&lt;br /&gt;          col0016 TYPE char50 ,&lt;br /&gt;          col0017 TYPE char50 ,&lt;br /&gt;          col0018 TYPE char50 ,&lt;br /&gt;          col0019 TYPE char50 ,&lt;br /&gt;          col0020 TYPE char50 ,&lt;br /&gt;        END OF ty_excel .&lt;br /&gt;&lt;br /&gt;CONSTANTS : column  TYPE i VALUE 17 .&lt;br /&gt;&lt;br /&gt;DATA      : i_excel TYPE TABLE OF ty_excel .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;PARAMETERS : p_file TYPE char255  DEFAULT 'C:\' OBLIGATORY .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      AT SELECTION-SCREEN&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file .&lt;br /&gt;  PERFORM browse_file .&lt;br /&gt;&lt;br /&gt;AT SELECTION-SCREEN .&lt;br /&gt;  PERFORM check_file_exist .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  PERFORM upload_data  .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  browse_file&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM browse_file .&lt;br /&gt;&lt;br /&gt;  DATA : i_files TYPE filetable ,&lt;br /&gt;         ls_file TYPE file_table,&lt;br /&gt;         lv_subrc TYPE i        ,&lt;br /&gt;         lv_user TYPE i         ,&lt;br /&gt;         lv_def TYPE string .&lt;br /&gt;&lt;br /&gt;  lv_def = p_file .&lt;br /&gt;&lt;br /&gt;  CALL METHOD cl_gui_frontend_services=&gt;file_open_dialog&lt;br /&gt;    EXPORTING&lt;br /&gt;      window_title            = 'Select file to upload'&lt;br /&gt;      default_extension       = 'XLS'&lt;br /&gt;      default_filename        = lv_def&lt;br /&gt;      initial_directory       = 'C:\'&lt;br /&gt;    CHANGING&lt;br /&gt;      file_table              = i_files&lt;br /&gt;      rc                      = lv_subrc&lt;br /&gt;      user_action             = lv_user&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      file_open_dialog_failed = 1&lt;br /&gt;      cntl_error              = 2&lt;br /&gt;      error_no_gui            = 3&lt;br /&gt;      not_supported_by_gui    = 4&lt;br /&gt;      OTHERS                  = 5.&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;    MESSAGE ID sy-msgid TYPE 'S' 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;  CHECK lv_user IS INITIAL .&lt;br /&gt;  CHECK i_files IS NOT INITIAL .&lt;br /&gt;  READ TABLE i_files INTO ls_file INDEX 1.&lt;br /&gt;  p_file = ls_file-filename.&lt;br /&gt;&lt;br /&gt;ENDFORM .                    "browse_file&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  check_file_exist&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;FORM check_file_exist .&lt;br /&gt;&lt;br /&gt;  DATA : lv_file TYPE string ,&lt;br /&gt;         lv_result TYPE abap_bool .&lt;br /&gt;&lt;br /&gt;  lv_file = p_file .&lt;br /&gt;&lt;br /&gt;  CALL METHOD cl_gui_frontend_services=&gt;file_exist&lt;br /&gt;    EXPORTING&lt;br /&gt;      file                 = lv_file&lt;br /&gt;    RECEIVING&lt;br /&gt;      result               = lv_result&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      cntl_error           = 1&lt;br /&gt;      error_no_gui         = 2&lt;br /&gt;      wrong_parameter      = 3&lt;br /&gt;      not_supported_by_gui = 4&lt;br /&gt;      OTHERS               = 5.&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;  IF lv_result = abap_false .&lt;br /&gt;    MESSAGE e003(z001) WITH 'File' p_file 'does not exist' .&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM .                    "check_file_exist&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  upload_data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;FORM upload_data  .&lt;br /&gt;&lt;br /&gt;  DATA : i_raw   TYPE TABLE OF alsmex_tabline,&lt;br /&gt;         lv_file TYPE rlgrap-filename        ,&lt;br /&gt;         lv_name TYPE string                 ,&lt;br /&gt;         ls_raw  TYPE alsmex_tabline         ,&lt;br /&gt;         ls_excel TYPE ty_excel .&lt;br /&gt;&lt;br /&gt;  FIELD-SYMBOLS : &lt;fs_field&gt; TYPE ANY .&lt;br /&gt;&lt;br /&gt;  DATA : begin_col TYPE  i VALUE 1  ,&lt;br /&gt;         begin_row TYPE  i VALUE 1  ,&lt;br /&gt;         end_col   TYPE  i VALUE column ,&lt;br /&gt;         end_row   TYPE  i VALUE 200 .&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;br /&gt;    EXPORTING&lt;br /&gt;      text = 'Uploading Excel File ...'.&lt;br /&gt;&lt;br /&gt;  lv_file = p_file .&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      filename                = lv_file&lt;br /&gt;      i_begin_col             = begin_col&lt;br /&gt;      i_begin_row             = begin_row&lt;br /&gt;      i_end_col               = end_col&lt;br /&gt;      i_end_row               = end_row&lt;br /&gt;    TABLES&lt;br /&gt;      intern                  = i_raw&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      inconsistent_parameters = 1&lt;br /&gt;      upload_ole              = 2&lt;br /&gt;      OTHERS                  = 3.&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;    MESSAGE ID sy-msgid TYPE 'I'      NUMBER sy-msgno&lt;br /&gt;            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;br /&gt;    LEAVE LIST-PROCESSING .&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'&lt;br /&gt;    EXPORTING&lt;br /&gt;      text = 'Extracting data from Excel File ...'.&lt;br /&gt;&lt;br /&gt;  SORT i_raw BY row col.&lt;br /&gt;&lt;br /&gt;  LOOP AT i_raw INTO ls_raw .&lt;br /&gt;    AT NEW row .&lt;br /&gt;      CLEAR ls_excel .&lt;br /&gt;    ENDAT.&lt;br /&gt;&lt;br /&gt;*   Check column is not more than constant 'COLUMN'&lt;br /&gt;    CHECK ls_raw-col &lt;= column  .&lt;br /&gt;&lt;br /&gt;*   Prepare the name of field&lt;br /&gt;    CLEAR lv_name .&lt;br /&gt;    CONCATENATE 'COL' ls_raw-col INTO lv_name .&lt;br /&gt;    ASSIGN COMPONENT lv_name OF STRUCTURE ls_excel TO &lt;fs_field&gt;.&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;      &lt;fs_field&gt; = ls_raw-value .&lt;br /&gt;    ENDIF.&lt;br /&gt;&lt;br /&gt;*   Assign to field&lt;br /&gt;&lt;br /&gt;    AT END OF row.&lt;br /&gt;      APPEND ls_excel TO i_excel .&lt;br /&gt;    ENDAT .&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    "upload_data&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;I tried below excel file to uploaded with this program.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/IYOK8mu9n5cuLHrTg98DeA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/TEHaLOKK6JI/AAAAAAAACjQ/s0Hp-nL4DUM/s800/ScreenShot148.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/M5rBHljjI3l4v_EN9F3fqQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TEHaLY0OqWI/AAAAAAAACjU/Ccarf5KthYE/s800/ScreenShot149.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This is content of I_RAW table, which is returned by function module ALSM_EXCEL_TO_INTERNAL_TABLE.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/MdKw0p8iQIyHH14XXNW_OQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/TEHaLYkE7xI/AAAAAAAACjY/NNEspjmx_EQ/s800/ScreenShot150.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;And this is content if I_EXCEL after some processing on I_RAW. Notice that column header are also extracted which you need to discard if you logic doesn’t need them.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/EBiwqPE_DGSWzqBzr3LQQQ?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/TEHaLppL-YI/AAAAAAAACjc/1e1J9t67v70/s800/ScreenShot151.jpg" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-8641184328787865768?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8641184328787865768/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/07/uploading-excel-data-into-abap-from.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8641184328787865768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8641184328787865768'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/07/uploading-excel-data-into-abap-from.html' title='Uploading excel data into ABAP from presentation server'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/TEHaLOKK6JI/AAAAAAAACjQ/s0Hp-nL4DUM/s72-c/ScreenShot148.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4965510418819221723</id><published>2010-06-21T18:50:00.001+05:30</published><updated>2011-07-05T18:50:54.459+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Standard Text'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><title type='text'>Config to copy Sales order header text to Invoice Item text</title><content type='html'>In the previous blog &lt;a href="http://sample-code-abap.blogspot.com/2010/06/defining-new-text-id-for-sales-order.html"&gt;Defining new TEXT ID for Sales Order - Sales Order Header Text&lt;/a&gt; I have shown how to create Text Type for Sales Order Header. My requirement was to capture a piece of information in Sales Order, transfer it to Invoice and then transmit that with outbound EDI message. I am using Sales order header text to store that information, to transfer that information to Invoice I am going to activate same TEXT ID in Invoice and then define config which will copy the text from Sales Order to Invoice text.&lt;br /&gt;&lt;br /&gt;Step 1: Create/Activate Text ID in Invoice Item.&lt;br /&gt;Select 'Item' radio button next to 'Billing Doc' and hit 'Change' button&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TB9lO7y_JcI/AAAAAAAACio/QLYCFjnEUyY/s800/image_1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 2: Add TEXT ID to  Text procedure (see blog &lt;a href="http://sample-code-abap.blogspot.com/2010/06/defining-new-text-id-for-sales-order.html"&gt;Defining new TEXT ID for Sales Order - Sales Order Header Text&lt;/a&gt; for more detail)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TB9lPYAB33I/AAAAAAAACis/nJJ4g-J5tkQ/s800/image_2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3: Define new Access Sequence.&lt;br /&gt;Double click on Access sequences node and add a new Access sequence in the table displayed on right.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TB9lP6hrMqI/AAAAAAAACiw/fGaLcmptq-M/s800/image_3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 4: Specify source Text ID.&lt;br /&gt;Now select the access sequence and double click on Access sequence for Text ID’s. In the table insert a row for TEXT ID from which content will be copied. In this case it will be VBBK( Sales Order header Text).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/TB9lQEJvChI/AAAAAAAACi0/1KdFsOsUAWk/s800/image_4.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-4965510418819221723?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4965510418819221723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/config-to-copy-sales-order-header-text.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4965510418819221723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4965510418819221723'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/config-to-copy-sales-order-header-text.html' title='Config to copy Sales order header text to Invoice Item text'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-k3sT2kXNko/TB9lO7y_JcI/AAAAAAAACio/QLYCFjnEUyY/s72-c/image_1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1938947067754898869</id><published>2010-06-20T23:25:00.001+05:30</published><updated>2011-07-08T18:50:04.434+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Updating Delivery Date in Delivery(VL02N) using Function Module</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;DATA : ls_vbkok TYPE vbkok      ,&lt;br /&gt;       lv_vbeln TYPE likp-vbeln .&lt;br /&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&lt;br /&gt;  ls_vbkok-lfdat    = '20100626' .&lt;br /&gt;  ls_vbkok-lfuhr    = '110000'   .&lt;br /&gt;  ls_vbkok-kzlfd    = 'X' .&lt;br /&gt;  lv_vbeln          = '0088800562' .&lt;br /&gt;&lt;br /&gt;  CALL FUNCTION 'WS_DELIVERY_UPDATE_2'&lt;br /&gt;    EXPORTING&lt;br /&gt;      vbkok_wa = ls_vbkok&lt;br /&gt;      delivery = lv_vbeln&lt;br /&gt;      commit   = 'X'.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-1938947067754898869?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1938947067754898869/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/updating-delivery-date-in-deliveryvl02n.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1938947067754898869'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1938947067754898869'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/updating-delivery-date-in-deliveryvl02n.html' title='Updating Delivery Date in Delivery(VL02N) using Function Module'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3485966404152210978</id><published>2010-06-17T20:06:00.004+05:30</published><updated>2011-12-15T21:20:02.367+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Abap Objects'/><title type='text'>ALV Grid OO - Tips</title><content type='html'>&lt;u&gt;Refreshing ALV Grid&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Refreshing ALV grid in OO ABAP using method REFRESH_TABLE_DISPLAY does not refresh the layout settings of grid to frontend, for example if you are refreshing the content of alv grid then column does not automatically optimise their width according to new content. To avoid this right way to refresh grid is to first call  SET_FRONTEND_LAYOUT then REFRESH_TABLE_DISPLAY .&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;CALL METHOD ob_grid-&gt;set_frontend_layout&lt;br /&gt;  EXPORTING&lt;br /&gt;    is_layout = gs_layout.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL METHOD ob_grid-&gt;refresh_table_display.&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;GS_LAYOUT is the same layout structure which was used with method  SET_TABLE_FOR_FIRST_DISPLAY .&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Hiding ALV Grid toolbar button.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Buttons in the ALV toolbar can be hidden by specifying parameter IT_TOOLBAR_EXCLUDING in method SET_TABLE_FOR_FIRST_DISPLAY. Every button is defined by a constant in class CL_GUI_ALV_GRID. Below are some example &lt;br /&gt;&lt;br /&gt;MC_FC_FIND - Find&lt;br /&gt;MC_FC_LOC_DELETE_ROW - Local: Delete Row&lt;br /&gt;MC_FC_LOC_INSERT_ROW - Local: Insert Row&lt;br /&gt;MC_FC_PRINT - Print&lt;br /&gt;MC_FC_SAVE_VARIANT - Save Variant&lt;br /&gt;MC_FC_SELECT_ALL - Select All Rows&lt;br /&gt;MC_FC_SORT_ASC - Sort in Ascending Order&lt;br /&gt;MC_FC_SORT_DSC - Sort in Descending Order&lt;br /&gt;MC_FC_SUBTOT - Subtotals&lt;br /&gt;&lt;br /&gt;Passing these constant values in internal table to parameter IT_TOOLBAR_EXCLUDING will hide them from screen.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;DATA : li_exclude TYPE ui_functions,&lt;br /&gt;       ls_exclude TYPE ui_func     .&lt;br /&gt;&amp;nbsp; &lt;br /&gt;ls_exclude = cl_gui_alv_grid=&gt;mc_fc_sort_asc.&lt;br /&gt;APPEND ls_exclude TO li_exclude.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ls_exclude = cl_gui_alv_grid=&gt;mc_fc_sort_dsc.&lt;br /&gt;APPEND ls_exclude TO li_exclude.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL METHOD ob_grid-&gt;set_table_for_first_display&lt;br /&gt;  EXPORTING&lt;br /&gt;    is_variant           = gs_variant&lt;br /&gt;    i_save               = 'A'&lt;br /&gt;    is_layout            = gs_layout&lt;br /&gt;    it_toolbar_excluding = li_exclude&lt;br /&gt;  CHANGING&lt;br /&gt;    it_outtab            = i_rep&lt;br /&gt;    it_fieldcatalog      = i_fld.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;u&gt;Refresh Field Catelog buffer&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;ALV function modules which format fields on ALV based on tablename and fieldname stores the setting in buffer for performance reason. For example, if you are referring to MARA-MATNR then ALV program will read column heading of data element MATNR from buffer. If you have modified the label in data dictionary it will not be refreshed immediately. To reset this buffer and see your changes immediately you need to clear buffer using program BALVBUFDEL.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-3485966404152210978?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3485966404152210978/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/alv-grid-oo-tips.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3485966404152210978'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3485966404152210978'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/alv-grid-oo-tips.html' title='ALV Grid OO - Tips'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1589668473717215566</id><published>2010-06-17T12:09:00.002+05:30</published><updated>2010-06-21T18:51:15.317+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Defining new TEXT ID for Sales Order - Sales Order Header Text</title><content type='html'>Lately, I got requirement to hold a piece of data coming with customer order and pass it on the same piece of info to customer with corresponding Invoice. I identified TEXT ID to be best place to hold this information as it would not require any ABAP changes as long as data is filled in the right segment from EDI subsystem. Additionally text determination can be configured to transfer the TEXT ID from Sales Order to Invoice and then it will automatically create Invoice IDoc with required value in TEXT ID.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/lh/photo/ftdlEQMbjIbr-2NHB-L7xQ?feat=embedwebsite"&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TBZTHFfmo7I/AAAAAAAAChw/fAEhvQ_fJTI/s400/image_4.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As the existing TEXT IDs were already in use for other purposes it would be wise to create a new TEXT ID for Sales order and Invoice for this purpose.&lt;br /&gt;&lt;br /&gt;Below procedure can be used to add new TEXT ID in all Sales document .i.e. Customer, Info rec, Sales order, Delivery etc.&lt;br /&gt;&lt;br /&gt;Step 1:  Define TEXT ID&lt;br /&gt;&lt;br /&gt;Follow path Sales and Distribution-&gt;Basic Functions-&gt;Text Control-&gt;Define Text Types&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TBm-2u9Z6EI/AAAAAAAACiU/deSp21nP5Q8/s800/image_1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TBZS54Oj2fI/AAAAAAAAChg/UbaUVxDHC3Q/s800/image_5.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Add new TEXT ID and description, and Save data.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/TBZTE7zsOrI/AAAAAAAAChk/dUMfymGGH4U/s800/image_1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Find correct ‘Text determination procedure’&lt;br /&gt;&lt;br /&gt;TEXT IDs are grouped under ‘Text determination procedure’ and ‘Text determination procedure’ is assigned to sales document type. You need to find first what ‘Text determination procedure’ is used by your sales document type. To find out double click on ‘Text procedure assignment’ and note the ‘Text determination procedure’ assigned to Order type OR (assuming you are using this order type). &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/TBZTF0qucAI/AAAAAAAACho/GM5uMjHLjHc/s800/image_2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3: Add TEXT ID to ‘Textprocedure’&lt;br /&gt;Now double click on ‘Textprocedure’, highlight line ‘01’ then double click on ‘Text ID’s in textprocedure.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/TBZTGQ9NfJI/AAAAAAAAChs/P40uk4kw2Xo/s800/image_3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Add new TEXT ID here on the table.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/TBm-3qskLWI/AAAAAAAACic/uh3xcO4v9Z8/s800/image_3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;That’s it, if you now create sales order of type OR you will find new text ‘GLN Number’ in header text tab.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2010/06/config-to-copy-sales-order-header-text.html"&gt;Next Blog : Config to copy Sales order header text to Invoice Item text.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1589668473717215566?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1589668473717215566/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/defining-new-text-id-for-sales-order.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1589668473717215566'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1589668473717215566'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/06/defining-new-text-id-for-sales-order.html' title='Defining new TEXT ID for Sales Order - Sales Order Header Text'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/TBZTHFfmo7I/AAAAAAAAChw/fAEhvQ_fJTI/s72-c/image_4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-629358283828860281</id><published>2010-02-20T21:03:00.005+05:30</published><updated>2011-07-08T18:50:58.862+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Some Dynamic Stuff with ABAP</title><content type='html'>&lt;b&gt;Getting the component of work area at runtime. Below code snippet will loop though all the component of work area wa_data .&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;TYPES : BEGIN OF ty_data        ,&lt;br /&gt;         matnr  TYPE mara-matnr ,&lt;br /&gt;         werks  TYPE marc-werks ,&lt;br /&gt;         num    TYPE i          ,&lt;br /&gt;       END OF ty_data .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA          : ob_type TYPE REF TO cl_abap_structdescr .&lt;br /&gt;FIELD-SYMBOLS : &amp;lt;comp&amp;gt;  TYPE abap_compdescr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : ws_data TYPE ty_data .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ob_type ?= cl_abap_typedescr=&gt;describe_by_data( ws_data ).&lt;br /&gt;  LOOP AT ob_type-&gt;components ASSIGNING &amp;lt;comp&amp;gt;.&lt;br /&gt;    WRITE : / &amp;lt;comp&amp;gt;-name .&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Creating data where type will be known at runtime. &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;DATA: ty_type TYPE REF TO data .&lt;br /&gt;  FIELD-SYMBOLS &amp;lt;fs_data&amp;gt; TYPE ANY .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CREATE DATA: ty_type TYPE (‘MARA’) .&lt;br /&gt;  ASSIGN: ty_type-&gt;* TO &amp;lt;fs_data&amp;gt; .&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Using above two concept to select data from table, table name will be given on selection screen.&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;PARAMETERS : p_table TYPE char20 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  PERFORM get_data USING p_table .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  GET_DATA&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM get_data USING iv_type TYPE char20 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA: ty_type TYPE REF TO data .&lt;br /&gt;  FIELD-SYMBOLS &amp;lt;fs_data&amp;gt; TYPE ANY .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CREATE DATA: ty_type TYPE (iv_type) .&lt;br /&gt;  ASSIGN: ty_type-&gt;* TO &amp;lt;fs_data&amp;gt; .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT *&lt;br /&gt;    INTO &amp;lt;fs_data&amp;gt; UP TO 1 ROWS&lt;br /&gt;    FROM (iv_type) .&lt;br /&gt;  ENDSELECT .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA          : ob_type TYPE REF TO cl_abap_structdescr .&lt;br /&gt;  FIELD-SYMBOLS : &amp;lt;comp&amp;gt;  TYPE abap_compdescr ,&lt;br /&gt;                  &amp;lt;field&amp;gt; TYPE ANY            .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-subrc = 0 .&lt;br /&gt;    ob_type ?= cl_abap_typedescr=&gt;describe_by_data( &amp;lt;fs_data&amp;gt; ).&lt;br /&gt;    LOOP AT ob_type-&gt;components ASSIGNING &amp;lt;comp&amp;gt;.&lt;br /&gt;      ASSIGN COMPONENT &amp;lt;comp&amp;gt;-name OF STRUCTURE &amp;lt;fs_data&amp;gt; TO &amp;lt;field&amp;gt; .&lt;br /&gt;      IF sy-subrc = 0 .&lt;br /&gt;        WRITE : / &amp;lt;comp&amp;gt;-name , &amp;lt;field&amp;gt; .&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM .                    "GET_DATA&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-629358283828860281?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/629358283828860281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/02/some-dynamic-stuff-with-abap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/629358283828860281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/629358283828860281'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/02/some-dynamic-stuff-with-abap.html' title='Some Dynamic Stuff with ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7659836541210036943</id><published>2010-02-11T18:39:00.001+05:30</published><updated>2010-02-11T18:42:44.025+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Regular Expression in SAP ABAP</title><content type='html'>A regular expression is a special text string which describes a pattern to search for. In most simple form single character string, for example ‘a’ is actually a regular expression. On the other hand in complex form it  is used by compilers to parse a piece of code to identify any syntax error. ABAP statements FIND and REPLACE support the use of regular expression with additional clause REGEX for example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;FIND REGEX 'a' IN 'ancient' .&lt;/pre&gt;&lt;br /&gt;With the obvious use in FIND and REPLACE command, regular expressions are also used to validate the format of data and conversion of data from one format to other. Typical example would be to check the format of email address, putting thousand separator in number, conversion of date from one format to other.&lt;br /&gt;&lt;br /&gt;Few characters have special meaning if used in regular expression, these characters are called as ‘meta characters’&lt;br /&gt;&lt;br /&gt;1. Opening and closing Square bracket [ ]&lt;br /&gt;2. Backslash \&lt;br /&gt;3. Caret ^&lt;br /&gt;4. Dollar sign $&lt;br /&gt;5. Dot .&lt;br /&gt;6. Pipe symbol |&lt;br /&gt;7. Question Mark ?&lt;br /&gt;8. Star *&lt;br /&gt;9. Plus sign +&lt;br /&gt;10. Opening and closing bracket ( )&lt;br /&gt;&lt;br /&gt;You can find further information on each of above meta character in &lt;a href="http://www.regular-expressions.info/tutorialcnt.html"&gt;http://www.regular-expressions.info/tutorialcnt.html&lt;/a&gt; . DEMO_REGEX_TOY is very helpful program to test and build your regular expression which you can later use with FIND/REPLACE command. Below is screen shot which demonstrate the use of DEMO_REGEX_TOY program to check regex &lt;b&gt;\b(\w+)\s*\1\b&lt;/b&gt; which look for repeated words in a string.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/S3QCHmGnIvI/AAAAAAAACew/OkI9bsF7H10/s800/ScreenShot651.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7659836541210036943?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7659836541210036943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/02/regular-expression-in-sap-abap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7659836541210036943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7659836541210036943'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/02/regular-expression-in-sap-abap.html' title='Regular Expression in SAP ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-k3sT2kXNko/S3QCHmGnIvI/AAAAAAAACew/OkI9bsF7H10/s72-c/ScreenShot651.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2694981293989742846</id><published>2010-01-21T20:43:00.000+05:30</published><updated>2010-01-21T20:43:50.710+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Copy ALV Layout Between Report</title><content type='html'>This little program can be used to copy ALV report layout from one report to another. Obviously, the layout to work on target report, it should have same column name .i.e. the internal table (used in ALV) field name should be identical. I must confess, program is not perfect and might needs some fix.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;REPORT zalvcopy  .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TYPES : r_report  TYPE RANGE OF ltdx-report  ,&lt;br /&gt;        r_user    TYPE RANGE OF ltdx-username,&lt;br /&gt;        r_variant TYPE RANGE OF ltdx-variant ,&lt;br /&gt;&amp;nbsp;&lt;br /&gt;        tr_report  TYPE LINE OF r_report ,&lt;br /&gt;        tr_user    TYPE LINE OF r_user   ,&lt;br /&gt;        tr_variant TYPE LINE OF r_variant.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_report  TYPE r_report ,&lt;br /&gt;       i_user    TYPE r_user   ,&lt;br /&gt;       i_variant TYPE r_variant,&lt;br /&gt;       s_report  TYPE tr_report ,&lt;br /&gt;       s_user    TYPE tr_user   ,&lt;br /&gt;       s_variant TYPE tr_variant,&lt;br /&gt;&amp;nbsp;&lt;br /&gt;       i_result  TYPE TABLE OF ltvariant ,&lt;br /&gt;       s_result  TYPE ltvariant          .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : s_varkey TYPE ltdxkey ,&lt;br /&gt;       i_dbfieldcat TYPE TABLE OF ltdxdata ,&lt;br /&gt;       i_dbsortinfo TYPE TABLE OF ltdxdata ,&lt;br /&gt;       i_dbfilter   TYPE TABLE OF ltdxdata ,&lt;br /&gt;       i_dblayout   TYPE TABLE OF ltdxdata .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DEFINE insert_row .&lt;br /&gt;  &amp;1-sign   = 'I'.&lt;br /&gt;  &amp;1-option = 'EQ' .&lt;br /&gt;  &amp;1-low    = &amp;2 .&lt;br /&gt;  &amp;1-high   = &amp;3 .&lt;br /&gt;END-OF-DEFINITION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_fr_pg TYPE ltdx-report   OBLIGATORY , &lt;span style="color: blue;"&gt;"From Program Name&lt;/span&gt;&lt;br /&gt;             p_fr_vr TYPE ltdx-variant  OBLIGATORY , &lt;span style="color: blue;"&gt;"Variant Name&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;             p_fr_to TYPE ltdx-report              . &lt;span style="color: blue;"&gt;"To Program Name&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  insert_row s_report p_fr_pg space .&lt;br /&gt;  APPEND s_report TO i_report .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  insert_row s_variant p_fr_vr space .&lt;br /&gt;  APPEND s_variant TO i_variant .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'LT_VARIANTS_READ_FROM_LTDX'&lt;br /&gt;    TABLES&lt;br /&gt;      et_variants   = i_result&lt;br /&gt;      it_ra_report  = i_report&lt;br /&gt;      it_ra_variant = i_variant&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      not_found     = 1&lt;br /&gt;      OTHERS        = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  READ TABLE i_result INTO s_result INDEX 1 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  MOVE-CORRESPONDING s_result TO s_varkey .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'LT_DBDATA_READ_FROM_LTDX'&lt;br /&gt;    EXPORTING&lt;br /&gt;      is_varkey    = s_varkey&lt;br /&gt;    TABLES&lt;br /&gt;      t_dbfieldcat = i_dbfieldcat&lt;br /&gt;      t_dbsortinfo = i_dbsortinfo&lt;br /&gt;      t_dbfilter   = i_dbfilter&lt;br /&gt;      t_dblayout   = i_dblayout&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      not_found    = 1&lt;br /&gt;      wrong_relid  = 2&lt;br /&gt;      OTHERS       = 3.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : s_varkey1     TYPE ltdxkey    ,&lt;br /&gt;         s_disvariant  TYPE disvariant .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  MOVE-CORRESPONDING s_varkey TO s_varkey1 .&lt;br /&gt;  s_varkey1-report = p_fr_to .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  MOVE-CORRESPONDING s_varkey1 TO s_disvariant .&lt;br /&gt;  s_disvariant-text = s_result-text .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'LT_DBDATA_WRITE_TO_LTDX'&lt;br /&gt;    EXPORTING&lt;br /&gt;      is_varkey    = s_varkey1&lt;br /&gt;      is_variant   = s_disvariant&lt;br /&gt;    TABLES&lt;br /&gt;      t_dbfieldcat = i_dbfieldcat&lt;br /&gt;      t_dbsortinfo = i_dbsortinfo&lt;br /&gt;      t_dbfilter   = i_dbfilter&lt;br /&gt;      t_dblayout   = i_dblayout&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      not_found    = 1&lt;br /&gt;      wrong_relid  = 2&lt;br /&gt;      OTHERS       = 3.&lt;br /&gt;&amp;nbsp;&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;/pre&gt;&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/5434181335871059817-2694981293989742846?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2694981293989742846/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/01/copy-alv-layout-between-report.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2694981293989742846'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2694981293989742846'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/01/copy-alv-layout-between-report.html' title='Copy ALV Layout Between Report'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1534364125326925898</id><published>2010-01-10T17:40:00.006+05:30</published><updated>2010-01-16T14:53:29.437+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utility'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Soundex Function Module for ABAP</title><content type='html'>Spelling of a word in English language can vary depending on number of factor, most common being spelling mistakes. Soundex algorithm can be effectively used to compare two strings irrespective of any spelling mistake. Although Soundex algorithm doesn't guarantee correct result but it is considered as effictive way of eliminating spelling mistakes while searching. Both SQL server and Oracle has built in function for this. &lt;br /&gt;&lt;br /&gt;Soundex function returns four-character aplha numeric code which represent phonetic representation of word. For example word 'Education' and 'Edukation' will have same code .i.e. E323. There are different versions of Soundex algorithm which are derived by making few enhancement and change to original version. This function module supports three version&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;0: Enhanced SoundEx: &lt;br /&gt;&lt;br /&gt;1: Normal Census : Properly calculated SoundEx codes found in all census years.&lt;br /&gt;&lt;br /&gt;2: Special Census : Improperly calculated SoundEx codes found in SOME of the censuses performed in 1880, 1900, and 1910. &lt;br /&gt;&lt;br /&gt;You can specify this option in parameter CENSUSOPTION of function module, by default it takes option 0.&lt;br /&gt;&lt;br /&gt;The function module code is based on information given on page &lt;a href="http://www.creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm"&gt;Understanding Classic SoundEx Algorithms&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg); width: 700px;"&gt;&lt;div style="margin-left: 20px;"&gt;&lt;pre&gt;FUNCTION zsoundex.&lt;span style="color: blue;"&gt;&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;*"*"Local Interface:&lt;br /&gt;*"  IMPORTING&lt;br /&gt;*"     REFERENCE(WORDSTRING) TYPE  STRING&lt;br /&gt;*"     VALUE(LENGTHOPTION) TYPE  I DEFAULT 4&lt;br /&gt;*"     VALUE(CENSUSOPTION) TYPE  I OPTIONAL&lt;br /&gt;*"  EXPORTING&lt;br /&gt;*"     REFERENCE(SOUNDEX_CODE) TYPE  STRING&lt;br /&gt;*"----------------------------------------------------------------------&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Adapted from info available at&lt;br /&gt;* http://www.creativyst.com/Doc/Articles/SoundEx1/SoundEx1.htm&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : lv_input   TYPE string     ,&lt;br /&gt;         lv_option  TYPE i          ,&lt;br /&gt;         lv_soundex TYPE char10     ,&lt;br /&gt;         lv_length  TYPE i          ,&lt;br /&gt;         lv_codelen TYPE i          ,&lt;br /&gt;         lv_tmp     TYPE string     .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Option = 0&lt;br /&gt;*   Enhanced SoundEx&lt;br /&gt;* Option = 1 - Normal Census&lt;br /&gt;*   Properly calculated SoundEx codes found in all census years.&lt;br /&gt;* Option = 2&lt;br /&gt;*   Special Census - Improperly calculated SoundEx codes found&lt;br /&gt;*   in SOME of the censuses performed in 1880, 1900, and 1910.&lt;br /&gt;* Other values will be treated as 0&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  lv_option = censusoption .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_option = 0 OR&lt;br /&gt;     lv_option = 1 OR&lt;br /&gt;     lv_option = 2 .&lt;br /&gt;  ELSE.&lt;br /&gt;    lv_option = 0 .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Set length based on Option and length specified&lt;/span&gt;&lt;br /&gt;  IF lv_option &amp;gt; 0 .&lt;br /&gt;    lv_codelen  = 4 .&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF lengthoption &amp;gt; 0  .&lt;br /&gt;    lv_codelen = lengthoption .&lt;br /&gt;  ENDIF .&lt;br /&gt;  IF lv_codelen &amp;gt; 10 .&lt;br /&gt;    lv_codelen = 10 .&lt;br /&gt;  ENDIF .&lt;br /&gt;  IF lv_codelen &amp;lt; 4 .&lt;br /&gt;    lv_codelen = 4 .&lt;br /&gt;  ENDIF .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Step 1&lt;br /&gt;* Capitalize all letters in the word and drop all punctuation marks.&lt;br /&gt;* Pad the word with rightmost blanks as needed during each procedure step.&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  lv_input = wordstring .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[^A-Z]' IN lv_input WITH space IGNORING CASE.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CONDENSE  lv_input NO-GAPS  .&lt;br /&gt;  TRANSLATE lv_input TO UPPER CASE.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CHECK lv_input IS NOT INITIAL .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_option = 0 .&lt;span style="color: blue;"&gt;&lt;br /&gt;*   DG with G&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'DG' IN lv_input WITH 'G' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   GH with H&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'GH' IN lv_input WITH 'H' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   GN with N (not 'ng')&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'GN' IN lv_input WITH 'N' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   KN with N&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'KN' IN lv_input WITH 'N' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   PH with F&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'PH' IN lv_input WITH 'F' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   MP with M ...WHEN... it is followed by S, Z, or T&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'MPS' IN lv_input WITH 'MS' .&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'MPZ' IN lv_input WITH 'MZ' .&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'MPT' IN lv_input WITH 'MT' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   PS with S ...WHEN... it starts a word&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF REGEX '^PS' IN lv_input WITH 'S' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   PF with F ...WHEN... it starts a word&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF REGEX '^PF' IN lv_input WITH 'F' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   MB with M&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'MB' IN lv_input WITH 'M' .&lt;br /&gt;&amp;nbsp;&amp;lt;&lt;span style="color: blue;"&gt;&amp;gt;&lt;br /&gt;*   TCH with CH&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'TCH' IN lv_input WITH 'CH' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*   A or I with E WHEN - starts word+followed by[AEIO]&lt;/span&gt;&lt;br /&gt;    REPLACE ALL OCCURRENCES OF REGEX '^A[AEIO]' IN lv_input WITH 'E' .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Step 2&lt;br /&gt;* Retain the first letter of the word.&lt;/span&gt;&lt;br /&gt;  lv_soundex = lv_input+0(1) .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_input+0(1) = 'H' OR lv_input+0(1) = 'W' .&lt;br /&gt;    CONCATENATE '-' lv_input+1 INTO lv_input .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_option = 1 .&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'H' IN lv_input WITH space .&lt;br /&gt;    REPLACE ALL OCCURRENCES OF 'W' IN lv_input WITH space .&lt;br /&gt;    CONDENSE lv_input NO-GAPS .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Step 3&lt;br /&gt;* Change all occurrence of the following letters to '0' (zero):&lt;br /&gt;* 'A', E', 'I', 'O', 'U', 'H', 'W', 'Y'.&lt;/span&gt;&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[AEIOUHWY]' IN lv_input WITH '0' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Step 4&lt;br /&gt;* Change letters from the following sets into the digit given:&lt;br /&gt;* 1 = 'B', 'F', 'P', 'V'&lt;br /&gt;* 2 = 'C', 'G', 'J', 'K', 'Q', 'S', 'X', 'Z'&lt;br /&gt;* 3 = 'D','T'&lt;br /&gt;* 4 = 'L'&lt;br /&gt;* 5 = 'M','N'&lt;br /&gt;* 6 = 'R' &lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[BFPV]'     IN lv_input WITH '1' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[CGJKQSXZ]' IN lv_input WITH '2' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[DT]'       IN lv_input WITH '3' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[L]'        IN lv_input WITH '4' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[MN]'       IN lv_input WITH '5' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF REGEX '[R]'        IN lv_input WITH '6' .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Step 5&lt;br /&gt;* Remove all pairs of digits which occur beside each other&lt;br /&gt;* from the string that resulted after step (4). &lt;/span&gt;&lt;br /&gt;  lv_length = STRLEN( lv_input ) .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : lv_last  TYPE char01     ,&lt;br /&gt;         lv_index TYPE syst-index .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DO lv_length TIMES .&lt;br /&gt;    IF sy-index = 1 .&lt;br /&gt;      lv_tmp  = lv_input+0(1) .&lt;br /&gt;      lv_last = lv_input+0(1) .&lt;br /&gt;    ELSE.&lt;br /&gt;      lv_index = sy-index - 1 .&lt;br /&gt;      IF lv_last &amp;lt;&amp;gt; lv_input+lv_index(1) .&lt;br /&gt;        lv_last = lv_input+lv_index(1) .&lt;br /&gt;        CONCATENATE lv_tmp lv_last INTO lv_tmp .&lt;br /&gt;      ENDIF.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDDO.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  lv_input = lv_tmp+1 .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;* Remove all zeros from the string that results from step 5.0 (placed there in step 3) &lt;/span&gt;&lt;br /&gt;  REPLACE ALL OCCURRENCES OF '0' IN lv_input WITH space .&lt;br /&gt;  CONDENSE lv_input .&lt;br /&gt;&amp;nbsp;&lt;span style="color: blue;"&gt;&lt;br /&gt;*  Pad the string that resulted from step (6) with trailing zeros&lt;br /&gt;*  and return only the first four positions, which will be of the&lt;br /&gt;*  form &lt;uppercase letter=""&gt; &lt;digit&gt; &lt;digit&gt; &lt;digit&gt;. &lt;/span&gt;&lt;br /&gt;  lv_soundex+1 = lv_input .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_soundex+1(1) = space .&lt;br /&gt;    lv_soundex+1(1) = 0 .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_soundex+2(1) = space .&lt;br /&gt;    lv_soundex+2(1) = 0 .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF lv_soundex+3(1) = space .&lt;br /&gt;    lv_soundex+3(1) = 0 .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  soundex_code = lv_soundex+0(lv_codelen) .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFUNCTION.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-1534364125326925898?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1534364125326925898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2010/01/soundex-function-module-for-abap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1534364125326925898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1534364125326925898'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2010/01/soundex-function-module-for-abap.html' title='Soundex Function Module for ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2383963211192108667</id><published>2009-12-22T03:31:00.003+05:30</published><updated>2010-01-22T18:00:36.707+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Defining Range Type in ABAP</title><content type='html'>Range is internal table of structure which has four component in it namely SIGN, OPTION, LOW and HIGH. The data type of LOW and HIGH is specified while creating the range.&lt;br /&gt;&lt;br /&gt;For example, if you want to define a range of type MARA-MATNR then statement would be.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;DATA :  r_matnr TYPE RANGE OF mara-matnr .&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;To insert data in range table you will need compatible work area which can be defined using TYPE LINE OF clause.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;DATA : ty_matnr TYPE LINE OF r_matnr.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;You can use range to specify complex criteria in many statements in ABAP .i.e. IF, LOOP, CHECK, SELECT etc. &lt;br /&gt;&lt;br /&gt;Range type can be defined centrally  in data dictionary which can be very useful in case of passing values between program and function module or smartform.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Step 1 :  Go to transaction SE11 and enter name of range in Data type input and hit create.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Sy_uOfE7UYI/AAAAAAAACcc/2JkZaKlELrg/s800/image_1.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Select ‘Table Type’&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/Sy_uOpWf0lI/AAAAAAAACcg/PUBI86PUrFQ/s800/image_2.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 : Enter short text and select menu Edit-&gt;Define as range table type.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/Sy_uO3GKJRI/AAAAAAAACck/VV26-m6_DuY/s800/image_3.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 4: Specify ‘Data Element’ as MATNR and enter name in ‘Structured Row Type’ then Save. After saving hit ‘Create’ button.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Sy_uPGeQslI/AAAAAAAACco/-dglksWCY9I/s800/image_4.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Step 5: Work are will be created automatically with data element MATNR. Enter short text, save and activate.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/Sy_uPeHwgrI/AAAAAAAACcs/dK_Hsc5ukAU/s800/image_5.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2383963211192108667?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2383963211192108667/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/defining-range-type-in-abap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2383963211192108667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2383963211192108667'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/defining-range-type-in-abap.html' title='Defining Range Type in ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/Sy_uOfE7UYI/AAAAAAAACcc/2JkZaKlELrg/s72-c/image_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5458707531784616718</id><published>2009-12-18T01:07:00.002+05:30</published><updated>2010-01-16T14:54:11.482+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>MD04 - Display Stock/Requirements Situation</title><content type='html'>MD04 transaction gives a live information about current material stock in plant and how various MRP element will affect the stock in future. It will show outbound deliveries, sales orders, inbound deliveries, purchase orders, purchase requisitions and forecasts with there respective quantity and date and how much stock will remain in plant after that transaction. &lt;br /&gt;&lt;br /&gt;User exit available &lt;br /&gt;EXIT_SAPLM61R_001&lt;br /&gt;EXIT_SAPMM61R_001&lt;br /&gt;&lt;br /&gt;BADIs&lt;br /&gt;MD_ADD_COL_EZPS&lt;br /&gt;MD_ADD_COL_OVERVIEW&lt;br /&gt;MD_DISPLAY_ELEMENT&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;FM to get the data displayed in MD04 &lt;br /&gt;MD_STOCK_REQUIREMENTS_LIST_API &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Add column to MD04 transaction&lt;/b&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;User exit available allows to add up to three columns in transaction MD04. To add column to MD04 screen you need to put code in both EXIT_SAPLM61R_001 and EXIT_SAPMM61R_001 exits. Code in exit EXIT_SAPLM61R_001 determines the column header text of new column(s) and exit EXIT_SAPMM61R_001 contains code to derive value which will be displayed in column.&lt;br /&gt;&lt;br /&gt;You can find the sample code for each user exit in include LXM61F04 and LXM61F03. For more information on this see documentation of Enhancement M61X0002 in transaction SMOD.&lt;br /&gt;&lt;br /&gt;These two user exits are now replaced by BADI MD_ADD_COL_EZPS. For backward compatibility, SAP still allows users to use exits to add column in MD04. However if you implement BADI BADI MD_ADD_COL_EZPS then call to user exits will be skipped. See the code below from program SAPLM61R.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;* Call the user-exit if the BADI (that replaces the exit) is not active&lt;br /&gt;  PERFORM badi_get_business_add_in USING    'MD_ADD_COL_EZPS'&lt;br /&gt;                                   CHANGING lo_badi.&lt;br /&gt;  IF lo_badi IS INITIAL.&lt;br /&gt;    CALL CUSTOMER-FUNCTION '001'&lt;br /&gt;        EXPORTING imdkp = mdkp&lt;br /&gt;                  imt61d = mt61d&lt;br /&gt;        IMPORTING button1_ez   = usex1-text "text  Button1  Einzelzeil.&lt;br /&gt;                  button2_ez   = usex2-text "text  Button2  Einzelzeil.&lt;br /&gt;                  button3_ez   = usex3-text "text  Button3  Einzelzeil.&lt;br /&gt;                  button1_ps   = usex1_ps"text  Button1  Periodensum&lt;br /&gt;                  button2_ps   = usex2_ps"text  Button2  Periodensum.&lt;br /&gt;                  button3_ps   = usex3_ps.  "text  Button3  Periodensum.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;BADI MD_ADD_COL_EZPS has methods  ACTIVATE_ADD_COLUMNS and FILL_ADD_COLUMNS and like exists you use one method to activate and put column heading to columns and other to fill the value in columns. Again, you can find the sample code for these methods in class CL_EXM_IM_MD_ADD_COL_EZPS in SE24, just double click on the method and you will see the code. BADI MD_ADD_COL_EZPS is not multi use BADI, which means you can only have one implementation of BADI, which make sense. You can get additional information about BADI MD_ADD_COL_EZPS  from transaction SE18.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-5458707531784616718?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5458707531784616718/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/md04-transaction-gives-live-information.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5458707531784616718'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5458707531784616718'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/md04-transaction-gives-live-information.html' title='MD04 - Display Stock/Requirements Situation'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7975972439844232029</id><published>2009-12-11T03:14:00.001+05:30</published><updated>2010-01-16T14:55:24.309+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP Basis'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Basis Bits</title><content type='html'>Below are few Basis transactions which are nice to know for ABAP developer. Being an ABAP developer you might have authorisation to execute these transactions in DEV or TEST system and knowing their capability might help you out solving problems, specially related to performance and authorisation.  Below information is from a developers point of view and definitely not meant for Basis consultants.&lt;br /&gt;&lt;br /&gt;SU01 &lt;br /&gt;&lt;br /&gt;This is user maintenance transaction. Broadly, you can use this transaction to create, change, delete, lock and unlock users. This is the transaction where you can reset the user password. &lt;a name='more'&gt;&lt;/a&gt;You can see and change all the information which user can access using transaction SU3 namely their default printer, currency and number formats and parameters id assigned to them. Roles tab will give you information about the roles user has in system.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SyFynBnbAEI/AAAAAAAACaE/D4U20br9Qnc/s800/PFCG%201.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Almost all the changes which can be done using SU01 can also be performed using SU10 on many number of users at once, for example putting a parameter id in user profile.&lt;br /&gt;&lt;br /&gt;USR01 – User master record, will give you printer info, different formats for given user(s)&lt;br /&gt;USR02 – Logon data, will give you creation date, last logon, user locked etc.  &lt;br /&gt;PFCG&lt;br /&gt;&lt;br /&gt;It is Role maintenance transaction. Every user have role assigned to them in SU01, these roles are defined here. Role is collection of transaction and/or authority object which when assigned to user allow users to access them. For example consider role SAP_LO_SD_SALES_DISPLAY, as you can see in below screen shot this role has a list of transaction in it. Which means, users having this role can access these transaction. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SyFynBnbAEI/AAAAAAAACaE/D4U20br9Qnc/s800/PFCG%201.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Having access to these transaction does not mean that user can access any data and perform any activity in these transaction. Further restrictions on data e.g. Company code, Sales Org etc is controlled using authority objects and their corresponding values and all these are defined on second tab ‘Authorization’. All the authority objects in a role  is clubbed together and store in object called as ‘Profile’. When you add Role to user in SU01, corresponding profile is automatically added to it.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SyFynjrLn6I/AAAAAAAACaI/5CdlASO82ZA/s800/PFCG%202.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;On the third tab ‘User’ you can see user name who has this Role assigned to them.&lt;br /&gt;You can find more information on Role Maintenance in http://help.sap.com/saphelp_nw04/helpdata/EN/52/6714a9439b11d1896f0000e8322d00/frameset.htm&lt;br /&gt;&lt;br /&gt;Below are few important tables which can give you data being displayed in PFCG&lt;br /&gt;&lt;br /&gt;AGR_DEFINE – Data about role e.g. created by, created on etc.&lt;br /&gt;AGR_USERS – To find role assigned to user &lt;br /&gt;AGR_TCODES – To find transaction assigned to Role &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;ST01&lt;br /&gt;&lt;br /&gt;System trace, most of the option available in ST01 is also available in ST05, However the option which I use more frequently in ST01 is Authorisation Trace. Once activated it will logs all the authority checks performed in system using AUTHORITY-CHECK statement and their result. While most of the authorisation problems can be solve using SU53, there are times when SU53 information is not enough and you need all the authorisation checks executed. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SyFyn-LYFDI/AAAAAAAACaM/y_t9-_phx-0/s800/ST01%201.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;You can use General filters to specify filter in logging process e.g. logging trace for particular user or transaction.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SyFyoAzq12I/AAAAAAAACaQ/4IZEiu7EskI/s800/ST02%202.jpg" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7975972439844232029?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7975972439844232029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/basis-bits.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7975972439844232029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7975972439844232029'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/12/basis-bits.html' title='Basis Bits'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/SyFynBnbAEI/AAAAAAAACaE/D4U20br9Qnc/s72-c/PFCG%201.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2199298905032826391</id><published>2009-09-27T16:34:00.000+05:30</published><updated>2009-09-28T01:49:33.286+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Date'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Date formatting/processing in SAP</title><content type='html'>Format of the date depends on various factors, to give you example it can depend on the country, type of business and even on personal choice. Internally SAP stores the date in YYYYMMDD format in char length 8 type field. Storing the date in this format makes it format independent, take less space to store and easy to sort and easy to compare. Although date is stored in ‘YYYYMMDD’ format but it is never displayed to user as it is (unless intended).  While displaying the date to user SAP always takes care of date format active for user. Statements WRITE automatically display date field based on user date format. This statement is particularly important if you are using a date in BDC. Always remember to format date using WRITE statement before pass date to screen in BDC mode. A user can change the date format for his/her profile using transaction SU3. Centrally it can change by administrators using SU01/SU10.&lt;br /&gt;&lt;br /&gt;Basic addition and subtracts in days work perfectly fine on date type field in SAP. It takes care of number of days in month and leap year. For example, adding 5 to 29-dec-2009 will return 03-Jan-2010. And subtracting 1-Mar-2009 and 27-Feb-2009 will result in 2. Remember you can always determine the year month and day of a date variable by extracting the correct characters. So if V_DATE is your date variant in SAP then&lt;br /&gt;&lt;br /&gt;Year = V_DATE(4).&lt;br /&gt;Month = V_DATE+4(2).&lt;br /&gt;Day = V_DATE+6(2).&lt;br /&gt;&lt;br /&gt;It worth noting that table T247 stores the short and Long description of month or you can use function module MONTH_NAMES_GET for the same.&lt;br /&gt;&lt;br /&gt;Related Blogs.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/09/first-and-last-day-of-month.html"&gt;First Day and Last Day of Month&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/09/simple-formatting-of-date.html"&gt;Simple Date Formatting&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2008/09/addtimetodate.html"&gt;FM ADD_TIME_TO_DATE&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2199298905032826391?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2199298905032826391/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/date-formattingprocessing-in-sap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2199298905032826391'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2199298905032826391'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/date-formattingprocessing-in-sap.html' title='Date formatting/processing in SAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6308924869933425024</id><published>2009-09-27T16:32:00.001+05:30</published><updated>2010-04-01T15:18:19.876+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Date'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>First and Last Day of the Month</title><content type='html'>Getting first day of the month is easy as first day of month is always 01, so you can replace the day (DD) part of the date field with 01 and you are done. However getting the last day of month is but tricky as last can 28, 30 or 31 depending on what month and leap year. Easier way to find the last day of month is subtract 1 from 1 days of next month.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : v_date  TYPE syst-datum ,&lt;br /&gt;v_first TYPE syst-datum ,&lt;br /&gt;v_last  TYPE syst-datum .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;v_date = sy-datum .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*First day of month will be&lt;/font&gt;&lt;br /&gt;CONCATENATE v_date(4) v_date+4(2) '01' INTO v_first .&lt;br /&gt;WRITE : / 'First day of month : ' , v_first .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*And to find last day, first get a date in next month&lt;/font&gt;&lt;br /&gt;IF v_date+6(2) &gt; 15 .&lt;br /&gt;v_date = v_date + 20 .&lt;br /&gt;ELSE.&lt;br /&gt;v_date = v_date + 30 .&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*Then get first day of next month&lt;/font&gt;&lt;br /&gt;CONCATENATE v_date(4) v_date+4(2) '01' INTO v_last .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*Subtract one day will be last day of previous month&lt;/font&gt;&lt;br /&gt;v_last = v_last - 1 .&lt;br /&gt;WRITE : / 'Last day of month : ' , v_last .&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-6308924869933425024?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6308924869933425024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/first-and-last-day-of-month.html#comment-form' title='7 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6308924869933425024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6308924869933425024'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/first-and-last-day-of-month.html' title='First and Last Day of the Month'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>7</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-391182795949207018</id><published>2009-09-27T16:28:00.000+05:30</published><updated>2009-09-27T16:32:11.525+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Date'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Simple formatting of date</title><content type='html'>Function module FORMAT_DATE_4_OUTPUT is handy in case you need simple formatting on date. Formatting which involves change in position day, month and year, changing the separator to can be achieved with this function module. Below is sample code.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT  zpwdate.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : v_date TYPE syst-datum ,&lt;br /&gt;       lv_foramt TYPE char10  .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM format_date USING 'DD.MM.YYYY' .&lt;br /&gt;  PERFORM format_date USING 'DD/MM/YYYY' .&lt;br /&gt;  PERFORM format_date USING 'DD/MM/YY' .&lt;br /&gt;  PERFORM format_date USING 'YY-MM-DD' .&lt;br /&gt;  PERFORM format_date USING 'MM*DD*YYYY' .&lt;br /&gt;  PERFORM format_date USING 'YY,MM,DD' .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  format_date&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM format_date USING iv_format TYPE rn1datum-format.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : lv_date TYPE rn1datum-datex .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'FORMAT_DATE_4_OUTPUT'&lt;br /&gt;    EXPORTING&lt;br /&gt;      datin  = sy-datum&lt;br /&gt;      format = iv_format&lt;br /&gt;    IMPORTING&lt;br /&gt;      datex  = lv_date.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE : / sy-datum , ' Format : ' , iv_format , lv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    "format_date&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Here is the output&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;23.09.2009  Format :  DD.MM.YYYY 23.09.2009&lt;br /&gt;23.09.2009  Format :  DD/MM/YYYY 23/09/2009&lt;br /&gt;23.09.2009  Format :  DD/MM/YY   23/09/09&lt;br /&gt;23.09.2009  Format :  YY-MM-DD   09-09-23&lt;br /&gt;23.09.2009  Format :  MM*DD*YYYY 09*23*2009&lt;br /&gt;23.09.2009  Format :  YY,MM,DD   09,09,23&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-391182795949207018?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/391182795949207018/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/simple-formatting-of-date.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/391182795949207018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/391182795949207018'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/simple-formatting-of-date.html' title='Simple formatting of date'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4772482612845463474</id><published>2009-09-20T03:46:00.000+05:30</published><updated>2009-09-20T03:54:29.580+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smartforms'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Sending Smartform in SAP Inbox or external Mail</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : lv_fname TYPE rs38l_fnam ,&lt;br /&gt;      lv_mail_recipient TYPE swotobjid ,&lt;br /&gt;      lv_mail_sender    TYPE swotobjid ,&lt;br /&gt;      lv_control        TYPE ssfctrlop ,&lt;br /&gt;      lv_name           TYPE so_name   ,&lt;br /&gt;      lv_output         TYPE ssfcompop .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Get fucntion module name of Smartform&lt;/font&gt;&lt;br /&gt; CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'&lt;br /&gt;   EXPORTING&lt;br /&gt;     formname = 'ZPWTEST'&lt;br /&gt;   IMPORTING&lt;br /&gt;     fm_name  = lv_fname.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Create recepient object&lt;br /&gt;*Check the User Type to send email to external address use&lt;br /&gt;U - Internet address&lt;br /&gt;&lt;/font&gt;&lt;br /&gt; lv_name = sy-uname .&lt;br /&gt; CALL FUNCTION 'CREATE_RECIPIENT_OBJ_PPF'&lt;br /&gt;   EXPORTING&lt;br /&gt;     ip_mailaddr       = lv_name "Recipient SAP user Name&lt;br /&gt;     ip_type_id        = 'B'     "SAP User Type&lt;br /&gt;   IMPORTING&lt;br /&gt;     ep_recipient_id   = lv_mail_recipient&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;     invalid_recipient = 1&lt;br /&gt;     OTHERS            = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; IF sy-subrc &lt;&gt; 0.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; ENDIF.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Create Sender Object&lt;/font&gt;&lt;br /&gt; CALL FUNCTION 'CREATE_SENDER_OBJECT_PPF'&lt;br /&gt;   IMPORTING&lt;br /&gt;     ep_sender_id   = lv_mail_sender&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;     invalid_sender = 1&lt;br /&gt;     OTHERS         = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; IF sy-subrc &lt;&gt; 0.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; ENDIF.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Device will be MAIL&lt;/font&gt;&lt;br /&gt; lv_control-device = 'MAIL' .&lt;br /&gt; lv_output-tdtitle = 'Mail subject Line' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt; CALL FUNCTION lv_fname&lt;br /&gt;   EXPORTING&lt;br /&gt;     control_parameters = lv_control&lt;br /&gt;     mail_recipient     = lv_mail_recipient&lt;br /&gt;     mail_sender        = lv_mail_sender&lt;br /&gt;     output_options     = lv_output&lt;br /&gt;   EXCEPTIONS&lt;br /&gt;     formatting_error   = 1&lt;br /&gt;     internal_error     = 2&lt;br /&gt;     send_error         = 3&lt;br /&gt;     user_canceled      = 4&lt;br /&gt;     OTHERS             = 5.&lt;br /&gt;&amp;nbsp;&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;/pre&gt;&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/5434181335871059817-4772482612845463474?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4772482612845463474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/sending-smartform-in-sap-inbox-or.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4772482612845463474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4772482612845463474'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/sending-smartform-in-sap-inbox-or.html' title='Sending Smartform in SAP Inbox or external Mail'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-316103878796736314</id><published>2009-09-10T23:05:00.001+05:30</published><updated>2010-01-16T16:52:58.878+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Sending Multiple Sapscript output in single Spool</title><content type='html'>Usually we use OPEN_FORM to start executing a sapscript and CLOSE_FORM to close it and issue output to spool. This works perfectly fine when you single execution of sapscript per spool request. However OPEN_FORM and CLOSE_FORM function modules alone can not enable you to include multiple execution of sapscript in same spool number. With 'Multiple Execution' I mean when you have same sapscript executed more than once, or multiple sapscript executed one or more time. Let take two example to understand both scenario.&lt;br /&gt;&lt;br /&gt;Scenario 1 : Same Sapscript executed more than once.&lt;br /&gt;All Purchase Orders created on a day should be in same spool. In this case you need to execute same sapscript multiple time for each PO in put it in single spool.&lt;br /&gt;&lt;br /&gt;Scenario 2: Multiple sapscript executed one or more time.&lt;br /&gt;Purchase Order, Order confirmation and corresponding Invoice should come in same spool. This this case you need to execute sapscript of PO, Order Confirmation and Invoice and put output of all of them in same spool.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Alright, getting back to the function modules, strictly speaking OPEN_FORM and CLOSE_FORM is used to open and close a spool request for sapscript output.  Importing parameter FORM of OPEN_FORM function module is optional. But when you have single sapscript to generate output then OPEN_FORM can also be used to open sapscript. But in above two scenario two function module which comes in picture is START_FORM and END_FORM.With function module START_FORM you can open sapscript and END_FORM is used to close the sapscript. Below is the sequence in which the function module should be called for scenario 1.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;CALL 'OPEN_FORM' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;Loop at Purchase Orders.&lt;font color="blue"&gt;&lt;br /&gt;*   Start sapscript for given PO. Specify sapscript name here&lt;/font&gt;&lt;br /&gt;CALL 'START_FORM'&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*   End Sapscript Output&lt;/font&gt;&lt;br /&gt;CALL 'END_FORM'.&lt;br /&gt;End Loop.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;CALL 'CLOSE_FORM'&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Futher reading..&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2008/01/sample-code-1.html"&gt;Formatting Option in Sapscript&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2008/01/sample-code-2.html"&gt;Code to Upload and Download Standard Text&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2008/06/displaying-two-alv-grid-on-screen.html"&gt;Display Two ALV Grid on Screen&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-316103878796736314?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/316103878796736314/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/sending-multiple-sapscript-output-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/316103878796736314'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/316103878796736314'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/09/sending-multiple-sapscript-output-in.html' title='Sending Multiple Sapscript output in single Spool'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1812571576538477278</id><published>2009-08-05T01:54:00.002+05:30</published><updated>2010-01-16T16:53:34.795+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='Config'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Config setting to make Shelf Life Exp Date input mandatory in system</title><content type='html'>How to make Shelf Life Exp Date (SLED) input mandatory in system (MSC1N/MSC2N/VL32N)&lt;br /&gt;&lt;br /&gt;Concept: The way it designed is input fields on screen of transaction MSC1N are grouped together and setting are applied on the group. For argument sake if Production date and Shelf life exp date are grouped together the attribute set on the group is shared by both the input. The attributes you can set is optional/ required and display/hide. Additionally these setting are made independently for transaction MSC1N MSC2N MSC3N and MSC4N. So you can have a field mandatory on MSC1N, optional in MSC2N. &lt;br /&gt;&lt;br /&gt;Below steps and setting are specific to make SLED input mandatory on MSC1N and MSC2N however you can use this to set attribute of any input on these transactions.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;First step is to find out the technical name of the input field. Press F1 on the field and then hit ‘Technical information’ button on the screen. Note down the screen field name which is DFBATCH-MHD_IO for SLED.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SniZ2BAQtiI/AAAAAAAACUo/ZP4y4qr1n28/s800/ScreenShot021.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Now in SPRO follow menu path Logistics General-&amp;gt;Batch Management-&amp;gt;Batch Master-&amp;gt;Field Selection Batch Master-&amp;gt;Assign Fields to Field Groups.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/Snias0wXNkI/AAAAAAAACVE/S0bt9z6AGzk/s800/ScreenShot017.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Here you will see the field names and there Field group. Field Group can be any number between 1 and 40. Here field DFBATCH-MHD_IO is assigned to Field group 003. So if you change the attribute to group 003 it will be applied to SLED. Problem is there are few more fields which belong to this group and in turn they all will be mandatory.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SniatDREFYI/AAAAAAAACVI/NR5uMHecF8c/s800/ScreenShot018.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Because of this reason we need to move field DFBATCH-MHD_IO to new field group. &lt;br /&gt;Find a field group number which is not assigned and change the field group of input to that number. &lt;br /&gt;&lt;br /&gt;Here in this case I am assigning Field group as 010 to DFBATCH-MHD_IO. Save the changes and exit the transaction.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SniatcWYwVI/AAAAAAAACVM/PfJD8UrIyPo/s800/ScreenShot022.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Now go to next item in SPRO i.e. ‘Edit Field Selection Control’. In this screen you can assign attributes to each field group which is defined in previous step. In case you are wondering how, each dot in column ‘Field Selection String’ represent one field group depending on its position. For example third dot represent field group 030. Since we have assigned SLED to 010 put cursor on 10th dot and press change button.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SniatlLkbHI/AAAAAAAACVQ/RPGbCHX4aC8/s800/ScreenShot023.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Notice in next dialog box the field SLED appeared and now you can change the attribute of the field or rather the group. So select option button ‘Required Entry’ and click OK.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Snibu8YUIjI/AAAAAAAACVs/llL95tjZ_VA/s800/ScreenShot025.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Repeat same for MSC2N. Then save the setting and that’s it, you are ready to go.&lt;br /&gt;&lt;br /&gt;Additionally user can use transaction VL031N or VL032N to create batches without using MSC1N. To restrict user to create batch without SLED date you can check the value of SLED in user exit EXIT_SAPLVBMD_001 (Enhancement name SAPLMHD1). Just put a code to issue error message if SLED date is initial.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1812571576538477278?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1812571576538477278/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/config-setting-to-make-shelf-life-exp.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1812571576538477278'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1812571576538477278'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/config-setting-to-make-shelf-life-exp.html' title='Config setting to make Shelf Life Exp Date input mandatory in system'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/SniZ2BAQtiI/AAAAAAAACUo/ZP4y4qr1n28/s72-c/ScreenShot021.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1920901512760494109</id><published>2009-08-04T01:42:00.000+05:30</published><updated>2009-08-04T01:46:09.514+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP FI'/><title type='text'>Create New Screen Variant for transaction FKMT (FI Acct Assignment Model Management).</title><content type='html'>Data entry screen of transaction FKMT can be modified based on user requirement. There are five sap standard screen variant defined which user can select from menu Setting-&gt;Screen Variant.  &lt;br /&gt;&lt;br /&gt;SAP01      Standard one-line&lt;br /&gt;SAP02      Standard two lines&lt;br /&gt;SAP03      RE admin.: Object assignmt&lt;br /&gt;SAP04      RE: Service charges sett.&lt;br /&gt;SAP05      RE: Contract assignment&lt;br /&gt;&lt;br /&gt;Custom screen variant can be defined from customizing. &lt;br /&gt;To define custom screen variant for transaction FKMT, follow below menu path in SPRO&lt;br /&gt;&lt;br /&gt;Financial Accounting (New)-&gt;Financial Accounting Global Setting (New) -&gt; Document -&gt; Recurring Entries -&gt;  Account Assignment Models: Define Entry Screen Templates&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/SndEaW38QII/AAAAAAAACT8/pBoPIFR-XdE/s800/ScreenShot012.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;On the initial screen you will see the sap standard screen variants. You can either copy then modify the existing ones or can create one from scratch. &lt;br /&gt;&lt;br /&gt;Note: &lt;br /&gt;&lt;br /&gt;You can choose any field from structure KMZEI for input on FKMT screen.&lt;br /&gt;You can use ‘Standard Offset + length’ button to calculate the offset and length automatically.&lt;br /&gt;Field 'Equivalence number' (KMZEI-KMZIF) should be on the screen. You can have it at the end as it not displayed&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1920901512760494109?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1920901512760494109/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/create-new-screen-variant-for.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1920901512760494109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1920901512760494109'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/create-new-screen-variant-for.html' title='Create New Screen Variant for transaction FKMT (FI Acct Assignment Model Management).'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/SndEaW38QII/AAAAAAAACT8/pBoPIFR-XdE/s72-c/ScreenShot012.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5708611462576753627</id><published>2009-08-04T01:31:00.001+05:30</published><updated>2010-01-16T16:55:04.668+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Enhancement - Sales Order transactions  VA01/VA02/VA03</title><content type='html'>Transactions  VA01, VA02 and VA03 are used to create, change and display sales order respectively.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;User exit available&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_910&lt;/td&gt;&lt;td&gt;IS-OIL/TAS: Exit Change-Flag Output determination&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_911&lt;/td&gt;&lt;td&gt;TAS - Customer exit after creation of calloff&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_920&lt;/td&gt;&lt;td&gt;User Exit: TAS data Incompletion Log on Doc.-header-level&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_930&lt;/td&gt;&lt;td&gt;Userexit to allow overdelivery in Quantity schedule&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_001&lt;/td&gt;&lt;td&gt;User Exit for Determining the Billing Plan Type&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_002&lt;/td&gt;&lt;td&gt;Preassignment of Sold-to Party in Sales Documents&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_003&lt;/td&gt;&lt;td&gt;Rev.Rec.: Copy Requirements An Header Level&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_004&lt;/td&gt;&lt;td&gt;Rev.Rec.: Field Modification Sales&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;EXIT_SAPMV45A_005&lt;/td&gt;&lt;td&gt;Copyy Packing Proposal Into Outobund Delivery Orders&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Screen exit&lt;/b&gt;&lt;br /&gt;&lt;table border="1" &gt;&lt;tr&gt;&lt;td&gt;4309&lt;/td&gt;&lt;td&gt;4.0: Subscreen: Header - Additional data A&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4312&lt;/td&gt;&lt;td&gt;4.0: Subscreen: Header - Additional data B&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8309&lt;/td&gt;&lt;td&gt;Sales Document  Header    User Exit Header&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8310&lt;/td&gt;&lt;td&gt;Sales Document  Header    User Exit Header&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8459&lt;/td&gt;&lt;td&gt;Sales doc.  Item  User exit item (Additional data A)&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;8460&lt;/td&gt;&lt;td&gt;Sales Document Item User Exit Item (Additional data B)&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;PBO and PAI module of these screens are defined in user modifiable include, so correspoding code can written there.&lt;br /&gt;&lt;br /&gt;Apart from above mentioned user-exit there many form exits define in program where you can put custom code. These form exits are well documented in in program SAPMV45A with sample code. To see these form exits open program SAPMV45A in SE80 and expand 'subroutine' node of tree. All form starting with USEREXIT can be used to write custom code. Some of the commonly used are &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;USEREXIT_AVAIL_CHECK_CREDIT&lt;br /&gt;USEREXIT_CHECK_VBAK&lt;br /&gt;USEREXIT_CHECK_VBAP&lt;br /&gt;USEREXIT_CHECK_VBEP&lt;br /&gt;USEREXIT_CHECK_VBKD&lt;br /&gt;USEREXIT_CUST_MATERIAL_READ&lt;br /&gt;USEREXIT_NEW_PRICING_VBAP &lt;br /&gt;USEREXIT_NEW_PRICING_VBKD &lt;br /&gt;USEREXIT_NUMBER_RANGE &lt;br /&gt;USEREXIT_READ_DOCUMENT &lt;br /&gt;USEREXIT_REFRESH_DOCUMENT &lt;br /&gt;USEREXIT_SAVE_DOCUMENT &lt;br /&gt;USEREXIT_SAVE_DOCUMENT_PREPARE &lt;br /&gt;&lt;br /&gt;Most of the enhacement in VA01/VA02/VA03 are done using these form exits.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Adding additional input field to transaction:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Roughly using below step you can modify these transaction to include new input field.&lt;br /&gt;1) First include the new field in table VBAK or VBAP, depending on what level to want to add the input. VBAK is sales order header data and VBAP is sales order item data.&lt;br /&gt;2)Modify the screen exit to include you field.&lt;br /&gt;3)Implement PBO modules to enable disable fields based on transaction VA01, VA02 and VA03.&lt;br /&gt;4)Write code in PAI module or form-exit (depending on the requirement) to validate the input and give error message.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;BAPI related with Sales Order processing&lt;/b&gt;&lt;br /&gt;&lt;table border="1" &gt;&lt;tr&gt;&lt;td&gt;BAPI_SALESORDER_CHANGE&lt;/td&gt;&lt;td&gt;Change or delete sales order&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BAPI_SALESORDER_CREATEFROMDAT2&lt;/td&gt;&lt;td&gt;Create Sales Order&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BAPI_SALESORDER_GETLIST&lt;/td&gt;&lt;td&gt;Returns list of all Orders for Customer&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BAPI_SALESORDER_GETSTATUS&lt;/td&gt;&lt;td&gt;Returns status with regard to availability, processing status (for example, delivery status) and prices.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;BAPI_SALESORDER_SIMULATE&lt;/td&gt;&lt;td&gt;Same as Create Sales Order BAPI, however Sales Order is not updated. Simulate the Sales Order creation.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://service.sap.com/sap/support/notes/93091"&gt;Note 93091 - Information about the BAPIs in Sales and Distribution&lt;/a&gt;&lt;br /&gt;&lt;a href="https://service.sap.com/sap/support/notes/550431"&gt;Note 550431 - FAQ: BAPI in sales - general questions&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Tables related with sales order processing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;VBAK Sales Document: Header Data&lt;br /&gt;VBAP Sales Document: Item Data&lt;br /&gt;VBEP Sales Document: Schedule Line Data&lt;br /&gt;VBPA Sales Document: Partner&lt;br /&gt;VBUK Sales Document: Header Status and Administrative Data&lt;br /&gt;VBUP Sales Document: Header Status and Administrative Data&lt;br /&gt;VBFA Sales Document Flow&lt;br /&gt;VBKD Sales Document: Business Data&lt;br /&gt;VBKFZ Cumulative Quantity Corrections&lt;br /&gt;VBSN Change status relating to scheduling agreements&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-5708611462576753627?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5708611462576753627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/enhancement-sales-order-transactions.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5708611462576753627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5708611462576753627'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/08/enhancement-sales-order-transactions.html' title='Enhancement - Sales Order transactions  VA01/VA02/VA03'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5267925316587283703</id><published>2009-07-18T23:54:00.001+05:30</published><updated>2010-01-16T16:55:55.284+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='OLE Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Controlling Excel Using OLE Automation in ABAP</title><content type='html'>Excel remains the most powerful tool of the Microsoft office package, the ease of use and function available make it favorite among the users. I have seen people using the SAP report just as a tool to export the data in excel and then carry out the entire remaining task in Excel. Believe me they have compelling reason for that. There are function module and class available in SAP which will directly export (or import) the data from internal table to excel document, however in some complex situation you end up with no other solution but OLE Automation. &lt;br /&gt;&lt;br /&gt;OLE Automation method allow ABAP program to communicate with any Application which support OLE Automation. Excel is one of them. In simple terms you can consider whole Excel as an object and as long as you know structure of the class to which this object belong you can control it as you may like. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Working with excel has its own advantage, you don’t need to know the whole object model of excel to carry out your stuff. You can simply record a macro for the desire task you want to control from ABAP and then use that macro code with little modification in ABAP to carry out same thing from ABAP. Let’s work through it with an example.&lt;br /&gt;&lt;br /&gt;In below example we will download the data from table T005 and T005T to excel sheet with some formatting and then save it at specified location. To know what will be excel equivalent code to perform these activity we need to first record a macro in excel which will create a excel sheet, put some data on it with some formatting and save it.&lt;br /&gt;&lt;br /&gt;To records a macro select Tool-&gt;Macro-&gt;Record New Macro&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/KClP0qnvp3noMBPZtiXvGA?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIS_aP0P_I/AAAAAAAACPQ/MGCT8qHqKq4/s800/01.jpg" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Specify the name of macro and hit OK on next screen&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/M37qKduuR6h3YnjKL7_Npg?feat=embedwebsite"&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SmIS_dQwphI/AAAAAAAACPU/A_yHuR8jaZ8/s800/02.jpg" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;Once recording has started do the stuff you would like to do from ABAP, in this case I have created two columns with some formatting to it as seen in below screen shot. Once you are done stop the recording and to see the code generated choose menu Tool-&gt;Macro-&gt;Macro. &lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.co.uk/lh/photo/Z-ce56m_2ikzQ1S9UxJVvA?feat=embedwebsite"&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SmIS_ow6R2I/AAAAAAAACPY/xbsgdixM3YQ/s800/03.jpg" /&gt;&lt;/a&gt; &lt;br /&gt;&lt;br /&gt;On next screen select the macro name and press Edit button. You can now see the code which will very much look like below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Sub Macro1()&lt;br /&gt;'&lt;br /&gt;' Macro1 Macro&lt;br /&gt;' Macro recorded 14/07/2009 by kesarip&lt;br /&gt;'&lt;br /&gt;'&lt;br /&gt;Wookbooks.Add&lt;br /&gt;ActiveCell.FormulaR1C1 = "Country "&lt;br /&gt;Range("B1").Select&lt;br /&gt;ActiveCell.FormulaR1C1 = "Country Name"&lt;br /&gt;Range("A2").Select&lt;br /&gt;ActiveCell.FormulaR1C1 = "Uk"&lt;br /&gt;Range("B2").Select&lt;br /&gt;ActiveCell.FormulaR1C1 = "United Kingdom"&lt;br /&gt;ActiveWorkbook.SaveAs Filename:="H:\Book2.xls", FileFormat:=xlNormal, _&lt;br /&gt;Password:="", WriteResPassword:="", ReadOnlyRecommended:=False, _&lt;br /&gt;CreateBackup:=False&lt;br /&gt;End Sub&lt;/pre&gt;&lt;br /&gt;Lets analyse some code which we will use in ABAP.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;Workbooks.Add&lt;/pre&gt;will create new excel sheet.&lt;br /&gt;&lt;pre&gt;Range("B1").Select&lt;/pre&gt;will select a particular cell&lt;br /&gt;&lt;pre&gt;ActiveCell.FormulaR1C1 = "Coutry Name"&lt;/pre&gt;will put value in the selected cell.&lt;br /&gt;&lt;pre&gt;ActiveWorkbook.SaveAs&lt;/pre&gt;is to save the sheet.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT  zpwexcel.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Types and Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;TYPE-POOLS ole2 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TYPES: BEGIN OF ty_t005,&lt;br /&gt;land1 TYPE t005-land1,&lt;br /&gt;landx TYPE t005t-landx,&lt;br /&gt;END OF ty_t005.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_t005  TYPE TABLE OF ty_t005  ,&lt;br /&gt;ls_t005 TYPE ty_t005           .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: h_excel_application TYPE ole2_object,        " Excel object&lt;br /&gt;h_activewindow      TYPE ole2_object,        " Active Window&lt;br /&gt;h_work_books        TYPE ole2_object,        " List of workbooks&lt;br /&gt;h_work_book         TYPE ole2_object,        " Workbook&lt;br /&gt;h_active_cell       TYPE ole2_object.        " Cell&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : lv_row TYPE i   ,&lt;br /&gt;lv_col TYPE i   ,&lt;br /&gt;i_val  TYPE string ,&lt;br /&gt;l_prop TYPE i   .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT t005~land1&lt;br /&gt;t005t~landx&lt;br /&gt;INTO TABLE i_t005&lt;br /&gt;FROM t005 INNER JOIN t005t ON t005~land1 = t005t~land1&lt;br /&gt;WHERE t005t~spras = sy-langu .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      End of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;END-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CREATE OBJECT h_excel_application 'EXCEL.APPLICATION'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Workbooks.Add&lt;br /&gt;GET PROPERTY OF h_excel_application 'Workbooks' = h_work_books .&lt;br /&gt;CALL METHOD OF h_work_books 'Add' = h_work_book .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Set header values&lt;br /&gt;lv_row = 1 .&lt;br /&gt;lv_col = 1 .&lt;br /&gt;CALL METHOD OF h_excel_application 'Cells' = h_active_cell&lt;br /&gt;EXPORTING #1 = lv_row #2 = lv_col .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;i_val = 'Country code' .&lt;br /&gt;SET PROPERTY OF h_active_cell 'FormulaR1C1' = i_val .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;lv_row = 1 .&lt;br /&gt;lv_col = 2 .&lt;br /&gt;CALL METHOD OF h_excel_application 'Cells' = h_active_cell&lt;br /&gt;EXPORTING #1 = lv_row #2 = lv_col .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;i_val = 'Country Name' .&lt;br /&gt;SET PROPERTY OF h_active_cell 'FormulaR1C1' = i_val .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;LOOP AT i_t005 INTO ls_t005 .&lt;br /&gt;lv_row = sy-tabix + 1 .&lt;br /&gt;lv_col = 1 .&lt;br /&gt;CALL METHOD OF h_excel_application 'Cells' = h_active_cell&lt;br /&gt;EXPORTING #1 = lv_row #2 = lv_col .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;i_val = ls_t005-land1 .&lt;br /&gt;SET PROPERTY OF h_active_cell 'FormulaR1C1' = i_val .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;lv_col = 2 .&lt;br /&gt;CALL METHOD OF h_excel_application 'Cells' = h_active_cell&lt;br /&gt;EXPORTING #1 = lv_row #2 = lv_col .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;i_val = ls_t005-landx .&lt;br /&gt;SET PROPERTY OF h_active_cell 'FormulaR1C1' = i_val .&lt;br /&gt;ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Save&lt;br /&gt;CALL METHOD OF h_work_book 'SaveAs'&lt;br /&gt;EXPORTING&lt;br /&gt;#1 = 'H:\1.xls'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Close the current window&lt;br /&gt;GET PROPERTY OF h_excel_application 'ActiveWindow'  = h_activewindow .&lt;br /&gt;CALL METHOD OF h_activewindow 'Close' .&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-5267925316587283703?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5267925316587283703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/controlling-excel-using-ole-automation.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5267925316587283703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5267925316587283703'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/controlling-excel-using-ole-automation.html' title='Controlling Excel Using OLE Automation in ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/SmIS_aP0P_I/AAAAAAAACPQ/MGCT8qHqKq4/s72-c/01.jpg' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2667801294317593907</id><published>2009-07-05T01:58:00.000+05:30</published><updated>2009-07-05T02:22:40.668+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Render Charts in SAP using Google Chart API</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT zpwtest1 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_html TYPE w3htmltabtype,&lt;br /&gt;       g_url  TYPE w3url         .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: g_html_control  TYPE REF TO cl_gui_html_viewer .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  CALL SCREEN 100.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  STATUS_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SET PF-STATUS 'PF01' .&lt;br /&gt;  SET TITLEBAR 'TIL01' WITH 'Sample'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF g_html_control IS INITIAL .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CREATE OBJECT g_html_control&lt;br /&gt;      EXPORTING&lt;br /&gt;        parent = cl_gui_container=&gt;default_screen.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    PERFORM bar_chart .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL METHOD g_html_control-&gt;load_data&lt;br /&gt;      EXPORTING&lt;br /&gt;        type                 = 'text'&lt;br /&gt;        subtype              = 'html'&lt;br /&gt;      IMPORTING&lt;br /&gt;        assigned_url         = g_url&lt;br /&gt;      CHANGING&lt;br /&gt;        data_table           = i_html&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;        dp_invalid_parameter = 1&lt;br /&gt;        dp_error_general     = 2&lt;br /&gt;        cntl_error           = 3&lt;br /&gt;        OTHERS               = 4.&lt;br /&gt;    IF sy-subrc &lt;&gt; 0.&lt;br /&gt;      MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno&lt;br /&gt;                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL METHOD g_html_control-&gt;show_url&lt;br /&gt;      EXPORTING&lt;br /&gt;        url = g_url.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDIF .&lt;br /&gt;ENDMODULE.                 " STATUS_0100  OUTPUT&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  USER_COMMAND_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;  IF sy-ucomm = 'BACK' .&lt;br /&gt;    CLEAR g_html_control .&lt;br /&gt;    FREE g_html_control .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    LEAVE TO SCREEN 0 .&lt;br /&gt;  ENDIF.&lt;br /&gt;ENDMODULE.                 " USER_COMMAND_0100  INPUT&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  BAR_CHART&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM bar_chart .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA lv_html TYPE string .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CONCATENATE&lt;br /&gt;  '&amp;lt;html&amp;gt;'&lt;br /&gt;  '&amp;lt;body&amp;gt;'&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  '&amp;lt;img src="http://chart.apis.google.com/chart?'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*  Data&lt;/font&gt;&lt;br /&gt;  '&amp;amp;chd=t:10,20,90,40,70,60,50,40,20,40'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*  Chart Type&lt;/font&gt;&lt;br /&gt;  '&amp;amp;cht=bhs'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*  Size&lt;/font&gt;&lt;br /&gt;   '&amp;amp;chs=700x350'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*  Scale&lt;/font&gt;&lt;br /&gt;  '&amp;amp;chds=0,100'&lt;br /&gt;  '&amp;amp;chxt=x,y'&lt;br /&gt;  '&amp;amp;chxl=1:|Dollar|Yen|Pound|Franks|Euro|Ruble|Peso|Dirham|Rupee|Dinar|'&lt;br /&gt;            '0:|0|10|20|30|40|50|60|70|80|90|100'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Chart Heading&lt;/font&gt;&lt;br /&gt;  '&amp;amp;chtt=Sample+Bar+Chart'&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Backgroud lines&lt;/font&gt;&lt;br /&gt;  '&amp;amp;chg=10,0'&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  '&amp;amp;alt="Sample chart" /&amp;gt;'&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  '&amp;lt;/body&amp;gt;'&lt;br /&gt;  '&amp;lt;/html&amp;gt;'&lt;br /&gt;  INTO lv_html .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'HR_EFI_CONVERT_STRING_TO_TABLE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_string         = lv_html&lt;br /&gt;      i_tabline_length = 255&lt;br /&gt;    TABLES&lt;br /&gt;      et_table         = i_html.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    " BAR_CHART&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/Sk-7Gl_EfRI/AAAAAAAACOA/edQgshVViw8/s400/a1.GIF" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2667801294317593907?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2667801294317593907/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/render-charts-in-sap-using-google-chart.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2667801294317593907'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2667801294317593907'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/render-charts-in-sap-using-google-chart.html' title='Render Charts in SAP using Google Chart API'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-k3sT2kXNko/Sk-7Gl_EfRI/AAAAAAAACOA/edQgshVViw8/s72-c/a1.GIF' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-889103838092135547</id><published>2009-07-05T01:46:00.000+05:30</published><updated>2009-07-05T01:53:33.531+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><category scheme='http://www.blogger.com/atom/ns#' term='Abap Objects'/><title type='text'>Display ALV Grid (OOP) Fullscreen</title><content type='html'>Normally to display ALV Grid fullscreen we use CL_GUI_DOCKING_CONTAINER and put grid on it (or use FM method and live happily ever after). Problem with this approach is user can resize the docking container at runtime. Its not a big problem but you know how proud user feels when they discover this kind of stuff.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/Sk8aWgkkIfI/AAAAAAAACNo/i4aAcuK-uBE/s800/resizescr.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Anyway, the point is you can achieve fullscreen functionality with Custom Control so why use Docking Container.&lt;br /&gt;&lt;br /&gt;Simply define your screen bigger than the maximum resolution of any user. Put a Custom Control on the whole screen i.e. custom control should occupy all the area availble on the screen (assuming there is nothing else is there). Double on Custom Control and on the property, under group Resizing tick Vertical and Horizontal. And thats it, create object of CL_GUI_CUSTOM_CONTAINER and put your grid on it. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Sk8aW1WBD_I/AAAAAAAACNw/V0ujEE7qmRo/s800/custom%20property.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;While defining the Customer Container object do remember to specify all exception as in backgroud mode it throws exception and if you don't specify exception then your job will be in cancelled status.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;    CREATE OBJECT ob_cont&lt;br /&gt;      EXPORTING&lt;br /&gt;        container_name              = 'GRID'&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;        cntl_error                  = 1&lt;br /&gt;        cntl_system_error           = 2&lt;br /&gt;        create_error                = 3&lt;br /&gt;        lifetime_error              = 4&lt;br /&gt;        lifetime_dynpro_dynpro_link = 5.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/Sk8aW6l3PZI/AAAAAAAACNs/TbHja5Km3N8/s800/fullscr.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;If there is screen element on the right hand side of your Custom Control then you can not allow horizontal resizing. In that case uncheck 'Horizontal' resizing. Same is the case with Vertical scrolling if there is any screen element under you Custom Container.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-889103838092135547?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/889103838092135547/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/display-alv-grid-oop-fullscreen.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/889103838092135547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/889103838092135547'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/07/display-alv-grid-oop-fullscreen.html' title='Display ALV Grid (OOP) Fullscreen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_-k3sT2kXNko/Sk8aWgkkIfI/AAAAAAAACNo/i4aAcuK-uBE/s72-c/resizescr.JPG' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-9083786191533576570</id><published>2009-05-29T23:11:00.000+05:30</published><updated>2009-06-07T13:13:13.204+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web service'/><category scheme='http://www.blogger.com/atom/ns#' term='xml to ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='XSLT'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Processing xml with XSLT transformation in ABAP</title><content type='html'>XML string in ABAP can be directly converted to internal table or vice-versa using command &lt;b&gt;CALL TRANSFORMATION&lt;/b&gt;. Before you use the command you need to define XSLT transformation. XSLT transformation defines structure of XML data. CALL TRANSFORMATION then use this XSLT to process the xml and convert it to ABAP variable. Below sample code which consumes a Web service and process result XML string using CALL TRANSFORMATION to convert it into ABAP variables/internal table.&lt;br /&gt;&lt;br /&gt;Before we continue with ABAP part of it worth looking at webservice. This &lt;a href="http://www.ecubicle.net/driving.asmx"&gt;&lt;span style="font-weight:bold;"&gt;webservice GetDirection&lt;/span&gt;&lt;/a&gt; provides driving direction from one address to another based on parameter 'distanceUnit' and 'expresswayEnabled' (avoid motorway). &lt;br /&gt;&lt;br /&gt;Below is the screen shot of xml result, returned by webservice, which will be processed using CALL TRANFORMATION. Click on &lt;a href="http://www.ecubicle.net/driving.asmx/GetDirections?fromAddress=sg51tx&amp;toAddress=TW148HD&amp;distanceUnit=km&amp;expresswayEnabled=true"&gt;&lt;span style="font-weight:bold;"&gt;this link&lt;/span&gt;&lt;/a&gt; to see the XML result.&lt;br /&gt; &lt;br /&gt;&lt;img src = "http://lh4.ggpht.com/_-k3sT2kXNko/SiF_rDWmKrI/AAAAAAAACFg/5ZdFeJJOvfo/s720/06.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;In short data is organized in tags &lt;b&gt;&amp;lt;drivingdirections&amp;gt; &amp;lt;route&amp;gt; &amp;lt;totalDistance&amp;gt and &amp;lt;totalTime&amp;gt;&lt;/b&gt; . Tag &amp;lt;route&amp;gt; repeats for each driving instruction so for obvious reasons data in &amp;lt;routes&amp;gt; tag will result in internal table. XSLT file will have more or less same structure as below.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;&lt;br /&gt;&amp;lt;drivingdirections&amp;gt;&lt;br /&gt;  &amp;lt;route id="XX" distanceToTravel="XXXX" finalStep="XXXX"&amp;gt;XXXX&amp;lt;/route&amp;gt;&lt;br /&gt;  &amp;lt;totalDistance&amp;gt;XXX&amp;lt;/totalDistance&amp;gt;&lt;br /&gt;  &amp;lt;totalTime&amp;gt;XXX&amp;lt;/totalTime&amp;gt;&lt;br /&gt;&amp;lt;/drivingdirections&amp;gt;&lt;/pre&gt;&lt;br /&gt;To create XSLT file open transaction SE80, hit 'Edit Object' under 'More' tab enter name next to 'Transformation' and press 'New' button.&lt;br /&gt;&lt;br /&gt;&lt;img src = "http://lh6.ggpht.com/_-k3sT2kXNko/SiF_mCWgkwI/AAAAAAAACFM/7jz5o6UHQYo/s800/01.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Enter description and choose 'Simple Transformation' press Ok.&lt;br /&gt;&lt;br /&gt;&lt;img src = "http://lh5.ggpht.com/_-k3sT2kXNko/SiF_mEzHGuI/AAAAAAAACFQ/Sa1kcGgJFaU/s720/02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Below is screen shot thats shows how the final XSLT transformation looks like for above XML string. Below three lines defines the reference ABAP variables where the data will be transfered&lt;br /&gt;&lt;pre&gt;&lt;b&gt;&lt;br /&gt;  &amp;lt;tt:root name="T_ROUTE" type="?"/&amp;gt;&lt;br /&gt;  &amp;lt;tt:root name="TOTDISTANCE" type="?"/&amp;gt;&lt;br /&gt;  &amp;lt;tt:root name="TIME" type="?"/&amp;gt;&lt;/b&gt;&lt;/pre&gt;&lt;br /&gt;The structure of XML data is defined between tags&lt;br /&gt;&lt;b&gt;&lt;pre&gt;&lt;br /&gt;  &amp;lt;tt:template&amp;gt;&lt;br /&gt;  &amp;lt;/tt:template&amp;gt;&lt;/pre&gt;&lt;/b&gt;&lt;br /&gt;Note how &lt;b&gt;&amp;lt;route&amp;gt;&lt;/b&gt; tag is defined&lt;br /&gt;&lt;br /&gt;&lt;img src = "http://lh5.ggpht.com/_-k3sT2kXNko/SiF_mEfj6CI/AAAAAAAACFU/OgxoPZTEXbc/s400/03.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?sap.transform simple?&amp;gt;&lt;br /&gt;&amp;lt;tt:transform xmlns:tt="http://www.sap.com/transformation-templates" xmlns:ddic="http://www.sap.com/abapxml/types/dictionary" xmlns:def="http://www.sap.com/abapxml/types/defined"&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  &amp;lt;tt:root name="T_ROUTE" type="?"/&amp;gt;&lt;br /&gt;  &amp;lt;tt:root name="TOTDISTANCE" type="?"/&amp;gt;&lt;br /&gt;  &amp;lt;tt:root name="TIME" type="?"/&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  &amp;lt;tt:template&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    &amp;lt;drivingdirections&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      &amp;lt;tt:loop name="Route" ref="T_ROUTE"&amp;gt;&lt;br /&gt;        &amp;lt;route&amp;gt;&lt;br /&gt;          &amp;lt;tt:attribute name="id" value-ref="$Route.ID"/&amp;gt;&lt;br /&gt;          &amp;lt;tt:attribute name="distanceToTravel" value-ref="$Route.DISTANCE"/&amp;gt;&lt;br /&gt;          &amp;lt;tt:attribute name="finalStep" value-ref="$Route.FINAL"/&amp;gt;&lt;br /&gt;          &amp;lt;tt:value ref="$Route.ROUTETXT"/&amp;gt;&lt;br /&gt;        &amp;lt;/route&amp;gt;&lt;br /&gt;      &amp;lt;/tt:loop&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      &amp;lt;totalDistance&amp;gt;&lt;br /&gt;        &amp;lt;tt:value ref="TOTDISTANCE"/&amp;gt;&lt;br /&gt;      &amp;lt;/totalDistance&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      &amp;lt;totalTime&amp;gt;&lt;br /&gt;        &amp;lt;tt:value ref="TIME"/&amp;gt;&lt;br /&gt;      &amp;lt;/totalTime&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    &amp;lt;/drivingdirections&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  &amp;lt;/tt:template&amp;gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;lt;/tt:transform&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;And here is the sample code ...&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT  zpw_websrvice_direction.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Types and Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;DATA:  http_client    TYPE REF TO if_http_client ,&lt;br /&gt;       http_url       TYPE string                ,&lt;br /&gt;       p_content      TYPE string                .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : v_unit TYPE string ,&lt;br /&gt;       v_motor TYPE string .&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK m1 WITH FRAME .&lt;br /&gt;PARAMETERS : p_strt TYPE char7 ,&lt;br /&gt;             p_end  TYPE char7 .&lt;br /&gt;SELECTION-SCREEN SKIP 1  .&lt;br /&gt;PARAMETERS : p_mile TYPE char01 RADIOBUTTON GROUP r1 ,&lt;br /&gt;             p_km   TYPE char01 RADIOBUTTON GROUP r1 .&lt;br /&gt;SELECTION-SCREEN SKIP 1  .&lt;br /&gt;PARAMETERS : p_motor TYPE char01 AS CHECKBOX DEFAULT 'X' .&lt;br /&gt;SELECTION-SCREEN END OF BLOCK m1.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Build the url string based on input&lt;br /&gt;  IF p_mile = 'X' .&lt;br /&gt;    v_unit = 'mile' .&lt;br /&gt;  ELSE.&lt;br /&gt;    v_unit = 'km' .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF p_motor = 'X' .&lt;br /&gt;    v_motor = 'true' .&lt;br /&gt;  ELSE.&lt;br /&gt;    v_motor = 'false' .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CONCATENATE 'http://www.ecubicle.net/driving.asmx'&lt;br /&gt;              '/GetDirections?fromAddress=' p_strt&lt;br /&gt;              '&amp;toAddress=' p_end&lt;br /&gt;              '&amp;distanceUnit=' v_unit&lt;br /&gt;              '&amp;expresswayEnabled=' v_motor&lt;br /&gt;              INTO http_url .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Creation of new IF_HTTP_Client object&lt;/font&gt;&lt;br /&gt;  CALL METHOD cl_http_client=&gt;create_by_url&lt;br /&gt;    EXPORTING&lt;br /&gt;      url                = http_url&lt;br /&gt;    IMPORTING&lt;br /&gt;      client             = http_client&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      argument_not_found = 1&lt;br /&gt;      plugin_not_active  = 2&lt;br /&gt;      internal_error     = 3&lt;br /&gt;      OTHERS             = 4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  http_client-&gt;request-&gt;set_header_field( name  = '~request_method'&lt;br /&gt;                                          value = 'GET' ).&lt;br /&gt;&lt;font color="blue"&gt;* Send the request&lt;/font&gt;&lt;br /&gt;  http_client-&gt;send( ).&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Reterive the result&lt;/font&gt;&lt;br /&gt;  CALL METHOD http_client-&gt;receive&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      http_communication_failure = 1&lt;br /&gt;      http_invalid_state         = 2&lt;br /&gt;      http_processing_failed     = 3&lt;br /&gt;      OTHERS                     = 4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  p_content = http_client-&gt;response-&gt;get_cdata( ).&lt;br /&gt;  REPLACE  ALL OCCURRENCES OF '&amp;lt;' IN p_content WITH '&lt;' .&lt;br /&gt;  REPLACE ALL OCCURRENCES OF '&amp;gt;' IN p_content WITH '&gt;' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  TYPES : BEGIN OF ty_route ,&lt;br /&gt;            id       TYPE string ,&lt;br /&gt;            distance TYPE string ,&lt;br /&gt;            final    TYPE string ,&lt;br /&gt;            routetxt TYPE string ,&lt;br /&gt;           END OF ty_route .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : l_route TYPE TABLE OF ty_route ,&lt;br /&gt;         l_totdistance TYPE string ,&lt;br /&gt;         l_time TYPE string .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  TRY .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      CALL TRANSFORMATION zpw_direct&lt;br /&gt;            SOURCE XML p_content&lt;br /&gt;            RESULT     t_route = l_route&lt;br /&gt;                       totdistance = l_totdistance&lt;br /&gt;                       time =  l_time .&lt;br /&gt;    CATCH cx_st_error.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDTRY.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : ls_route TYPE ty_route .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT l_route INTO ls_route .&lt;br /&gt;    IF ls_route-final &lt;&gt; 'true' .&lt;br /&gt;      WRITE : /1 ls_route-id ,&lt;br /&gt;              10 ls_route-distance ,&lt;br /&gt;              20 ls_route-routetxt .&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE : / 'Total Distance : ' , l_totdistance ,&lt;br /&gt;          / 'Time           : ' , l_time        .&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src = "http://lh5.ggpht.com/_-k3sT2kXNko/SiF_mP_ryBI/AAAAAAAACFY/_MmKnMKt2l8/s720/04.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src = "http://lh3.ggpht.com/_-k3sT2kXNko/SiF_mJ9dOcI/AAAAAAAACFc/vqsjjFtQue0/s720/05.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Click here to read more about &lt;a href="http://sample-code-abap.blogspot.com/2009/05/simple-code-consume-web-service-using.html"&gt;Consuming Webservice in ABAP&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-9083786191533576570?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/9083786191533576570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/processing-xml-with-xslt-transformation.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9083786191533576570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9083786191533576570'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/processing-xml-with-xslt-transformation.html' title='Processing xml with XSLT transformation in ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/SiF_rDWmKrI/AAAAAAAACFg/5ZdFeJJOvfo/s72-c/06.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5554292855974568872</id><published>2009-05-22T04:25:00.000+05:30</published><updated>2009-05-22T04:31:36.551+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Use of Application Log FMs to display Message List/Log</title><content type='html'>&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/ShXbr57U8aI/AAAAAAAACEs/oRQhslH2ZbU/s800/AppLog.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Types and Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;DATA: l_log_handle        TYPE balloghndl,&lt;br /&gt;      l_s_log             TYPE bal_s_log ,&lt;br /&gt;      l_s_msg             TYPE bal_s_msg ,&lt;br /&gt;      l_msgno             TYPE symsgno   ,&lt;br /&gt;      l_s_display_profile TYPE bal_s_prof.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_t100  TYPE TABLE OF t100 ,&lt;br /&gt;       ls_t100 TYPE t100          .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;PARAMETERS : p_arbgb TYPE t100-arbgb OBLIGATORY DEFAULT 'SD' .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT *&lt;br /&gt;    INTO TABLE i_t100&lt;br /&gt;    FROM t100&lt;br /&gt;    WHERE sprsl = sy-langu&lt;br /&gt;     AND arbgb = p_arbgb .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      End of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;END-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Create an initial log file ------------------------------------------*&lt;/font&gt;&lt;br /&gt;  l_s_log-extnumber  = 'Messages'.&lt;br /&gt;  CALL FUNCTION 'BAL_LOG_CREATE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_s_log      = l_s_log&lt;br /&gt;    IMPORTING&lt;br /&gt;      e_log_handle = l_log_handle&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      OTHERS       = 1.&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA lv_int TYPE sy-tabix .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Fill up corresponding error messages to log --------------------------*&lt;/font&gt;&lt;br /&gt;  LOOP AT i_t100 INTO ls_t100.&lt;br /&gt;    CLEAR l_s_msg .&lt;br /&gt;    lv_int = sy-tabix MOD 3 .&lt;br /&gt;    IF lv_int = 0 .&lt;br /&gt;      l_s_msg-msgty = 'S' .&lt;br /&gt;    ELSEIF lv_int = 1 .&lt;br /&gt;      l_s_msg-msgty = 'E' .&lt;br /&gt;    ELSE.&lt;br /&gt;      l_s_msg-msgty = 'W' .&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    l_s_msg-msgid = ls_t100-arbgb .&lt;br /&gt;    l_s_msg-msgno = ls_t100-msgnr .&lt;br /&gt;    l_s_msg-msgv1 = '&amp;' .&lt;br /&gt;    l_s_msg-msgv2 = '&amp;' .&lt;br /&gt;    l_s_msg-msgv3 = '&amp;' .&lt;br /&gt;    l_s_msg-msgv4 = '&amp;' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL FUNCTION 'BAL_LOG_MSG_ADD'&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_log_handle = l_log_handle&lt;br /&gt;        i_s_msg      = l_s_msg&lt;br /&gt;      EXCEPTIONS&lt;br /&gt;        OTHERS       = 1.&lt;br /&gt;&lt;br /&gt;    IF sy-subrc &lt;&gt; 0 .&lt;br /&gt;    ENDIF .&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Prepare to display the error log -------------------------------------*&lt;/font&gt;&lt;br /&gt;  CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'&lt;br /&gt;    IMPORTING&lt;br /&gt;      e_s_display_profile = l_s_display_profile.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* l_s_display_profile-use_grid = 'X' .&lt;/font&gt;&lt;br /&gt;  l_s_display_profile-disvariant-report = sy-repid.&lt;br /&gt;  l_s_display_profile-disvariant-handle = 'LOG'.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Display error messages in grid ---------------------------------------*&lt;/font&gt;&lt;br /&gt;  CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_s_display_profile = l_s_display_profile&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      OTHERS              = 1.&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Delete the messages inserted to application log ----------------------*&lt;/font&gt;&lt;br /&gt;  CALL FUNCTION 'BAL_LOG_MSG_DELETE_ALL'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_log_handle  = l_log_handle&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      log_not_found = 1&lt;br /&gt;      OTHERS        = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-5554292855974568872?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5554292855974568872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/use-of-application-log-fms-to-display.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5554292855974568872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5554292855974568872'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/use-of-application-log-fms-to-display.html' title='Use of Application Log FMs to display Message List/Log'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/ShXbr57U8aI/AAAAAAAACEs/oRQhslH2ZbU/s72-c/AppLog.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2786339524194983081</id><published>2009-05-22T04:14:00.000+05:30</published><updated>2009-05-22T04:22:15.465+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Reset ALV Export Option for User</title><content type='html'>On any ALV screen when user selects Export-&gt;Spreadsheet they usually get a dialog box for selection of format in which output needs to be exported.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/ShXZZHxGJdI/AAAAAAAACEM/ldwKM5H5YMQ/s800/01.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;As long as user doesn't select 'Always Use selected format', this dialog will be presented every time user select to export. However once the 'Always Use Selected Format' is checked user will never get this dialog box and the selected format will get automatically selected while exporting the ALV List. &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/ShXZZJNebII/AAAAAAAACEQ/19kINJa09so/s800/02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Report SALV_BS_ADMIN_MAINTAIN is used to reset this setting. It's easy, run the report, select and delete the record for the specific user from report output and that user will get the dialog again.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/ShXZZC2S_1I/AAAAAAAACEU/lBMsEXvSoBY/s800/03.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;This works fine with all other format but ‘Excel (In Existing XXL)’. If user has selected this format and checked ‘Always Use selected format’ you will not see anything in report SALV_BS_ADMIN_MAINTAIN for that user unless parameter id SALV_BS_ADMIN_XXL is set in your profile (not users).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/ShXZZNV2UPI/AAAAAAAACEY/BgBpvOvfhis/s800/04.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2786339524194983081?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2786339524194983081/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/reset-alv-export-option-for-user.html#comment-form' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2786339524194983081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2786339524194983081'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/reset-alv-export-option-for-user.html' title='Reset ALV Export Option for User'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/ShXZZHxGJdI/AAAAAAAACEM/ldwKM5H5YMQ/s72-c/01.JPG' height='72' width='72'/><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6518086618220064211</id><published>2009-05-17T22:40:00.006+05:30</published><updated>2011-12-06T19:34:42.938+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Web service'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Simple Code to consume Web service using SAP ABAP</title><content type='html'>Below is very simple code, which demonstration how to call a webservice using class CL_HTTP_CLIENT. Web service used in this example is &lt;a href="http://www.webservicex.net/globalweather.asmx?op=GetCitiesByCountry"&gt;GetCitiesByCountry&lt;/a&gt; which returns all major cities by country name. It returns the result in xml format. The request is invoke in form &lt;a href="http://www.webservicex.net/globalweather.asmx/GetCitiesByCountry?CountryName=india"&gt;http://www.webservicex.net/globalweather.asmx/GetCitiesByCountry?CountryName=india&lt;/a&gt;. &lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="font-size: medium; margin-left: 20px;"&gt;&lt;pre&gt;REPORT  zpw_webservice.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;PARAMETERS : p_cnt TYPE t005t-landx .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Types and Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;DATA:  http_client    TYPE REF TO if_http_client ,&lt;br /&gt;http_url       TYPE string                ,&lt;br /&gt;p_content      TYPE string                .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Build the url string based on input&lt;/font&gt;&lt;br /&gt;CONCATENATE 'http://www.webservicex.net/globalweather.asmx'&lt;br /&gt;'/GetCitiesByCountry?CountryName='&lt;br /&gt;p_cnt&lt;br /&gt;INTO http_url .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Creation of new IF_HTTP_Client object&lt;/font&gt;&lt;br /&gt;CALL METHOD cl_http_client=&gt;create_by_url&lt;br /&gt;EXPORTING&lt;br /&gt;url                = http_url&lt;br /&gt;IMPORTING&lt;br /&gt;client             = http_client&lt;br /&gt;EXCEPTIONS&lt;br /&gt;argument_not_found = 1&lt;br /&gt;plugin_not_active  = 2&lt;br /&gt;internal_error     = 3&lt;br /&gt;OTHERS             = 4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;http_client-&gt;request-&gt;set_header_field( name  = '~request_method'&lt;br /&gt;value = 'GET' ).&lt;br /&gt;&lt;font color="blue"&gt;* Send the request&lt;/font&gt;&lt;br /&gt;http_client-&gt;send( ).&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Reterive the result&lt;/font&gt;&lt;br /&gt;CALL METHOD http_client-&gt;receive&lt;br /&gt;EXCEPTIONS&lt;br /&gt;http_communication_failure = 1&lt;br /&gt;http_invalid_state         = 2&lt;br /&gt;http_processing_failed     = 3&lt;br /&gt;OTHERS                     = 4.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;p_content = http_client-&gt;response-&gt;get_cdata( ).&lt;br /&gt;REPLACE  ALL OCCURRENCES OF '&amp;amp;lt;' IN p_content WITH '&lt;' .&lt;br /&gt;REPLACE ALL OCCURRENCES OF '&amp;amp;gt;' IN p_content WITH '&gt;' .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Processing the string&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;DATA : moff  TYPE syst-tabix ,&lt;br /&gt;moff1 TYPE syst-tabix ,&lt;br /&gt;len   TYPE syst-tabix .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DO .&lt;br /&gt;   FIND '&amp;lt;City&amp;gt;' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff .&lt;br /&gt;  IF sy-subrc = 0 .&lt;br /&gt;    moff = moff + 6 .&lt;br /&gt;    FIND '&amp;lt;/City&amp;gt;' IN SECTION OFFSET moff OF p_content IGNORING CASE MATCH OFFSET moff1 .&lt;br /&gt;    len = moff1 - moff .&lt;br /&gt;    WRITE : / p_content+moff(len) .&lt;br /&gt;  ELSE.&lt;br /&gt;    EXIT.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDDO .&lt;br /&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;In this code processing of XML string is done using FIND statement. SAP has introduced command &lt;span style="font-weight:bold;"&gt;CALL TRANSFORMATION&lt;/span&gt; since Basis release 6.10 for XML processing. This command CALL TRANSFORMATION process the whole XML string based on defined transformation and return it in variable/internal table. Transformations can be defined using transaction SE80. Ok I am leaving this topic for next blog ;)&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/ShBET9d9_yI/AAAAAAAACDc/OwBzAbJ0N5M/s800/01.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/ShBET4QzrLI/AAAAAAAACDg/1CQpM4hpfi8/s800/02.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6518086618220064211?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6518086618220064211/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/simple-code-consume-web-service-using.html#comment-form' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6518086618220064211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6518086618220064211'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/simple-code-consume-web-service-using.html' title='Simple Code to consume Web service using SAP ABAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/_-k3sT2kXNko/ShBET9d9_yI/AAAAAAAACDc/OwBzAbJ0N5M/s72-c/01.JPG' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7431429695540921258</id><published>2009-05-13T12:20:00.000+05:30</published><updated>2009-05-17T22:16:40.169+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Creating custom page format for sapscript/smartform</title><content type='html'>You can print any size of output from SAP, it all depends on what page format is defined and configured in your SAP system. Most of the standard page format are already defined in SAP but often you come across the situation where the required output doesn’t even come close to any of these predefined page format. Printing cheques and receipts are some common example. Defining and configuring Page format is multi-step process and often is printer specific. In short its very easy to get your setting wrong and situation is worse when printer is physically away from you.&lt;br /&gt;&lt;br /&gt;Its very important to understand how this page format works in SAP. The process starts with defining the Page Format, but you need few more setting to actually print this page size on printer. Page format just define the size of page for sapscript (this size info defined in page format is not passed to printer), next step is to define Format type which defines 'Type of format' and what orientation are allowed with this page format. It is important to note that Page Format and Format type should have same name. Well, you can argue why do we need to define Format Type. To find out that, which you may find bit confusing refer sap note 2374. Still you can not print with this page size on printer. To allow printer to use this new page format you need to add this page format to device type of printer. This step will enable you to print the output but correct page size information will not be passed to printer. You need to actually put printer specific code to set desire page size on printer.&lt;br /&gt;&lt;br /&gt;Before we start it worth checking where do we specify page format in sapscript.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Sgpr9pOnf4I/AAAAAAAACAY/v-GFBIBPUh4/s800/01.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Now let us go through each step with screen shot. You need to have access to transaction SPAD and changes to the repository and cross-client customizing should be permitted in the client where you will create/change page format.&lt;br /&gt;&lt;br /&gt;Execute transaction SPAD. By default transaction will not show all the tabs, you need to click on 'Full administration' to get the desire tab.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/Sgpr9gHP8yI/AAAAAAAACAc/-iLt0RCE4Cs/s800/02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Go to 'Device Types' tabs and hit 'Display' button next to Page Formats.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/Sgpr9qug9aI/AAAAAAAACAg/sOwviDMM3Tc/s800/03.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;On next screen hit 'change' button then you will button to create new Page format, now press New button.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/Sgpr9rzRDsI/AAAAAAAACAk/qvtWEJXh3q4/s800/04.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Fill in the required input, below is an example.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/_-k3sT2kXNko/Sgpr9yMXw9I/AAAAAAAACAo/qJTA62JdtXc/s800/05.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Congrats you just created a new page format.&lt;br /&gt;&lt;br /&gt;At this stage you can use this page format in sapscript, however you can not print that sapscript. This information of page dimension is just for sapscript. You will get warning message while adding page format to sapscript 'There is no form for page format XYZ' and error message while printing 'Device type ABC does not support page format XYZ'.&lt;br /&gt;&lt;br /&gt;Next step is to create Format Type. Remember Format Type should have same name as your Page Format name. Start from transaction SPAD, on 'Device Type’ tab press display button next to 'Format Type'. Click on change then new button and create Format Type as shown in screen-shot below.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SgpsGd-MH7I/AAAAAAAACAw/zZvMa5yfKf8/s800/07.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SgpsGvCKp0I/AAAAAAAACA0/pj2ax5lLU-A/s800/08.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SgpsGqjtFHI/AAAAAAAACA4/0T4Ciq6krwQ/s800/09.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;To allow printer to use this new Format Type you need to add this format to device type of printer. You can find the device type of printer from table TSP03D, it is stored in field &lt;span style="font-weight:bold;"&gt;PATYPE&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;On 'Device Types' table enter Device name and press Display button next to it.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SgpsGjhvNuI/AAAAAAAACA8/r25B41xeqkY/s800/10.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Go in change mode and press 'Formats'&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/SgpsM8hClgI/AAAAAAAACBA/qSW4QENVdA0/s800/11.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;On next screen press ‘New’ button and enter 'Format Type'.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SgpsNCvoylI/AAAAAAAACBE/FJF5VcuvBc8/s800/12.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Once the format type added to device type, double click on the line (on first column). On next screen as shown below double click on 'Printer initialization'&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/_-k3sT2kXNko/SgpsNOxouDI/AAAAAAAACBI/fQR3Au-Azjw/s800/13.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Input following code, this code will actually set the page length on printer. Page length is defined under the code '# set page length 72 lines'. Its defined in hex and is defined in lines. You might have to do some math to convert your page length from CM/MM to line considering lines per inch value set.&lt;br /&gt;&lt;br /&gt;For example in this particular case the page length define Page format is  102 mm which is 4 inches. Using setting 6 lines per inch 4 inches comes out to be 24 lines. (ok, the comment is wrong, it should be '# set page length 24 lines'). And in hex 24 is represented as 18.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/_-k3sT2kXNko/SgpsNLdbu1I/AAAAAAAACBM/2oy7OHz5EVs/s800/14.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;You might need to add this format and put this code for each device type of each printer on which you are planning to print the output.&lt;br /&gt;&lt;br /&gt;With all these setting in place you can, hopefully, print the output on printer with correct page format.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7431429695540921258?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7431429695540921258/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/creating-custom-page-format-for.html#comment-form' title='14 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7431429695540921258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7431429695540921258'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/creating-custom-page-format-for.html' title='Creating custom page format for sapscript/smartform'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/Sgpr9pOnf4I/AAAAAAAACAY/v-GFBIBPUh4/s72-c/01.JPG' height='72' width='72'/><thr:total>14</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-2434097883202765994</id><published>2009-04-19T20:16:00.000+05:30</published><updated>2009-04-20T02:54:53.192+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Links</title><content type='html'>&lt;a href="https://www.sdn.sap.com/irj/sdn/weblogs?blog=/pub/wlg/781"&gt;A very useful blog, discuss about the various configuration setting in SAP to send email from SAP.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.saptechnical.com/Tutorials/LSMW/BAPIinLSMW/BL1.htm"&gt;Step-by-Step Guide for using BAPI in LSMW including screen-shots.&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.sdn.sap.com/irj/scn/wiki?path=/display/ABAP/Smartform+Send+via+Email"&gt;Sample code to send smartform output as PDF attachement in mail to external email id.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-2434097883202765994?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/2434097883202765994/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/10/links.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2434097883202765994'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/2434097883202765994'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/10/links.html' title='Links'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8449736528648500010</id><published>2009-03-17T22:18:00.000+05:30</published><updated>2009-05-22T04:33:40.269+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>SAP Factory Calendar</title><content type='html'>Function module DATE_CONVERT_TO_FACTORYDATE can be used to check if a particular day is holiday. Below is the sample code to demosntration the use of functional module.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT  zsample.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : lv_date TYPE syst-datum  ,&lt;br /&gt;       lv_ind  TYPE scal-indicator .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;lv_date = sy-datum .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DO 365 TIMES .&lt;br /&gt;&amp;nbsp;&lt;br /&gt; CALL FUNCTION 'DATE_CONVERT_TO_FACTORYDATE'&lt;br /&gt;   EXPORTING&lt;br /&gt;     date                 = lv_date&lt;br /&gt;     factory_calendar_id  = 'GB'&lt;br /&gt;   IMPORTING&lt;br /&gt;     workingday_indicator = lv_ind.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; IF lv_ind = space .&lt;br /&gt;   WRITE : / lv_date .&lt;br /&gt; ELSEIF lv_ind = '+' .&lt;br /&gt;   WRITE : / lv_date , 'Holiday' .&lt;br /&gt; ELSE.&lt;br /&gt;   WRITE : / lv_date , '########' .&lt;br /&gt; ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt; lv_date = lv_date + 1 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDDO .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-8449736528648500010?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8449736528648500010/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/sap-factory-calender.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8449736528648500010'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8449736528648500010'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/sap-factory-calender.html' title='SAP Factory Calendar'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-9136842004114759545</id><published>2009-02-22T05:06:00.001+05:30</published><updated>2011-07-08T18:48:35.541+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Traffic Light on Selection Screen</title><content type='html'>Just a quick reference code to put traffic light option buttons on selection screen&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/_-k3sT2kXNko/ShXXNwH3B9I/AAAAAAAACEE/DmeweMaqun4/s800/TrafficLight.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;&amp;nbsp;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Types and Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;CONSTANTS:  c_green           TYPE icon_d           VALUE '@08@'     ,&lt;br /&gt;c_amber           TYPE icon_d           VALUE '@09@'     ,&lt;br /&gt;c_red             TYPE icon_d           VALUE '@0A@'     .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;SELECTION-SCREEN BEGIN OF BLOCK main10 WITH FRAME.&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;SELECTION-SCREEN COMMENT 01(31) v_cap .&lt;br /&gt;PARAMETERS : p_all TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 40(5) v_all FOR FIELD p_all .&lt;br /&gt;PARAMETERS : p_red TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 47(10) v_red FOR FIELD p_red .&lt;br /&gt;PARAMETERS : p_amber TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 60(10) v_amber FOR FIELD p_amber .&lt;br /&gt;PARAMETERS : p_green TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 73(10) v_green FOR FIELD p_green .&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;SELECTION-SCREEN END OF BLOCK main10 .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;v_cap   = 'Status'.&lt;br /&gt;v_all   = 'All'.&lt;br /&gt;v_red   = c_red .&lt;br /&gt;v_amber = c_amber .&lt;br /&gt;v_green = c_green .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-9136842004114759545?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/9136842004114759545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/traffic-light-on-selection-screen.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9136842004114759545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9136842004114759545'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/05/traffic-light-on-selection-screen.html' title='Traffic Light on Selection Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/_-k3sT2kXNko/ShXXNwH3B9I/AAAAAAAACEE/DmeweMaqun4/s72-c/TrafficLight.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8851938873259925048</id><published>2009-01-11T22:31:00.000+05:30</published><updated>2009-01-11T22:33:55.385+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Pricing Condition for Outline Agreement</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&lt;br /&gt;TABLES : ekko ,  ekpo , lfa1 , komk , komp , t001 , t001w , komv .&lt;br /&gt;&lt;br /&gt;DATA : tkomv  TYPE TABLE OF komv  .&lt;br /&gt;&lt;br /&gt;PARAMETER : p_ebeln TYPE ekpo-ebeln ,&lt;br /&gt;           p_ebelp TYPE ekpo-ebelp .&lt;br /&gt;&lt;br /&gt;SELECT SINGLE *&lt;br /&gt; FROM ekko&lt;br /&gt; WHERE ebeln = p_ebeln .&lt;br /&gt;&lt;br /&gt;SELECT SINGLE *&lt;br /&gt; FROM ekpo&lt;br /&gt; WHERE ebeln = p_ebeln&lt;br /&gt; AND ebelp = p_ebelp.&lt;br /&gt;&lt;br /&gt;SELECT SINGLE *&lt;br /&gt; FROM lfa1&lt;br /&gt; WHERE lifnr = ekko-lifnr .&lt;br /&gt;&lt;br /&gt;SELECT SINGLE *&lt;br /&gt; FROM t001&lt;br /&gt; WHERE bukrs = ekko-bukrs .&lt;br /&gt;&lt;br /&gt;SELECT SINGLE *&lt;br /&gt; FROM t001w&lt;br /&gt; WHERE werks = ekpo-werks .&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'ME_FILL_KOMK_PO'&lt;br /&gt; EXPORTING&lt;br /&gt;   i_ekko  = ekko&lt;br /&gt;   i_ekpo  = ekpo&lt;br /&gt;   i_lfa1  = lfa1&lt;br /&gt;   i_t001w = t001w&lt;br /&gt;   i_t001  = t001&lt;br /&gt;   i_kalsm = ekko-kalsm&lt;br /&gt;   i_kappl = 'M'&lt;br /&gt;   i_kvorg = '02'             "Preissimulation&lt;br /&gt; IMPORTING&lt;br /&gt;   e_komk  = komk.&lt;br /&gt;&lt;br /&gt;IF komk-prsdt EQ 0.&lt;br /&gt; komk-prsdt = sy-datlo.&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;komk-fbuda = sy-datlo.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'ME_FILL_KOMP_PO'&lt;br /&gt;    EXPORTING&lt;br /&gt;         i_ekpo  = ekpo&lt;br /&gt;         i_t001w = t001w&lt;br /&gt;         i_ekko  = ekko&lt;br /&gt;         i_komk  = komk&lt;br /&gt;    IMPORTING&lt;br /&gt;         e_komp  = komp.&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'PRICING'&lt;br /&gt; EXPORTING&lt;br /&gt;   calculation_type = 'B'&lt;br /&gt;   comm_head_i      = komk&lt;br /&gt;   comm_item_i      = komp&lt;br /&gt; IMPORTING&lt;br /&gt;   comm_head_e      = komk&lt;br /&gt;   comm_item_e      = komp&lt;br /&gt; TABLES&lt;br /&gt;   tkomv            = tkomv.&lt;br /&gt;&lt;br /&gt;LOOP AT tkomv INTO komv .&lt;br /&gt; WRITE : / komv-kschl , komv-kbetr CURRENCY komv-waers , komv-waers .&lt;br /&gt;ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-8851938873259925048?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8851938873259925048/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2009/01/pricing-condition-for-outline-agreement.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8851938873259925048'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8851938873259925048'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2009/01/pricing-condition-for-outline-agreement.html' title='Pricing Condition for Outline Agreement'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7335750503754285626</id><published>2008-12-18T01:13:00.000+05:30</published><updated>2008-12-18T02:07:00.340+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDI'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Create New IDoc Status</title><content type='html'>1. Use maintenance view &lt;span style="font-weight:bold;"&gt;VEDI_STATS&lt;/span&gt; to create new entry for IDOC status from transaction SM30. Save the entry in Workbench request. (You won't be able to see your status in WE47 yet).&lt;br /&gt;2. Using transaction SE11 enter new record to table &lt;span style="font-weight:bold;"&gt;STACUST&lt;/span&gt;. Follow menu path Utilities-&gt;Table Content-&gt;Create Entries. You need to assign status group to your new custom status here. To see all status groups use transaction &lt;span style="font-weight:bold;"&gt;WELI&lt;/span&gt;.&lt;br /&gt;3. In step 2, SAP might not ask for customizing request. In that case you need to attach IDoc status to customizing request manually using SE11/SE16.&lt;br /&gt;4. OK, now you can see new IDOC status in &lt;span style="font-weight:bold;"&gt;WE47&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Even though you categorizes IDOC status as Inbound or Outbound in Step 1 (VEDI_STATS), in BD87 it is hard-coded to treat IDOC as outbound only if it is less than 50.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7335750503754285626?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7335750503754285626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/10/create-new-idoc-status.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7335750503754285626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7335750503754285626'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/10/create-new-idoc-status.html' title='Create New IDoc Status'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3041020575046294083</id><published>2008-11-14T02:25:00.000+05:30</published><updated>2008-11-14T02:30:21.728+05:30</updated><title type='text'>Reterieve Sales Pricing Condition</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Report&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_kunnr TYPE kunre OBLIGATORY,&lt;br /&gt;             p_werks TYPE marc-werks OBLIGATORY,&lt;br /&gt;             p_matnr TYPE mara-matnr OBLIGATORY,&lt;br /&gt;             p_vkorg TYPE vkorg OBLIGATORY,&lt;br /&gt;             p_vtweg TYPE vtweg OBLIGATORY,&lt;br /&gt;             p_spart TYPE spart OBLIGATORY.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM simulate_pricing .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  simulate_pricing&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;FORM simulate_pricing .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : lt_items    TYPE TABLE OF bapiitemin  ,&lt;br /&gt;         lt_partners TYPE TABLE OF bapipartnr  ,&lt;br /&gt;         lt_pricing  TYPE TABLE OF bapicond    ,&lt;br /&gt;         lt_messages TYPE TABLE OF bapiret2    ,            "#EC NEEDED&lt;br /&gt;         ls_item     TYPE bapiitemin           ,&lt;br /&gt;         ls_partner  TYPE bapipartnr           ,&lt;br /&gt;         ls_head     TYPE bapisdhead           ,&lt;br /&gt;         ls_price    TYPE bapicond             ,&lt;br /&gt;         ls_message  TYPE bapiret2             ,            "#EC NEEDED&lt;br /&gt;         ls_return   TYPE bapireturn           ,            "#EC NEEDED&lt;br /&gt;         ls_vapma    TYPE vapma                ,&lt;br /&gt;         ls_vbap     TYPE vbap                 ,&lt;br /&gt;         ls_vbup     TYPE vbup                 ,&lt;br /&gt;         ls_mbew     TYPE mbew                 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Header&lt;br /&gt;  ls_head-doc_type = 'ZOR' .&lt;br /&gt;  ls_head-sales_org = p_vkorg .&lt;br /&gt;  ls_head-distr_chan = p_vtweg .&lt;br /&gt;  ls_head-division = p_spart .&lt;br /&gt;  ls_head-purch_no = 'DUMMY' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Partners&lt;br /&gt;  CLEAR ls_partner .&lt;br /&gt;  ls_partner-partn_role = 'AG' .&lt;br /&gt;  ls_partner-partn_numb = p_kunnr .&lt;br /&gt;  APPEND ls_partner TO lt_partners .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CLEAR ls_partner .&lt;br /&gt;  ls_partner-partn_role = 'WE' .&lt;br /&gt;  ls_partner-partn_numb = p_kunnr .&lt;br /&gt;  APPEND ls_partner TO lt_partners .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Items&lt;br /&gt;  CLEAR ls_item .&lt;br /&gt;  ls_item-material = p_matnr .&lt;br /&gt;  ls_item-plant    = p_werks .&lt;br /&gt;  APPEND ls_item TO lt_items .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'BAPI_SALESORDER_SIMULATE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      order_header_in    = ls_head&lt;br /&gt;    IMPORTING&lt;br /&gt;      return             = ls_return&lt;br /&gt;    TABLES&lt;br /&gt;      order_items_in     = lt_items&lt;br /&gt;      order_partners     = lt_partners&lt;br /&gt;      order_condition_ex = lt_pricing&lt;br /&gt;      messagetable       = lt_messages.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT lt_pricing INTO ls_price .&lt;br /&gt;    IF ls_price-condisacti = 'X' .&lt;br /&gt;      WRITE : / '@0A@' AS ICON .&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE : / '@08@' AS ICON .&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    WRITE : ls_price-cond_type .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    IF ls_price-currency IS NOT INITIAL .&lt;br /&gt;      WRITE : ls_price-cond_value CURRENCY ls_price-currency ,&lt;br /&gt;              ls_price-currency .&lt;br /&gt;    ELSE.&lt;br /&gt;      WRITE ls_price-cond_value DECIMALS 2.&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    IF ls_price-cond_p_unt IS NOT INITIAL .&lt;br /&gt;      WRITE : 'Per' ,&lt;br /&gt;              ls_price-cond_p_unt UNIT ls_price-cond_unit ,&lt;br /&gt;              ls_price-cond_unit .&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;ENDFORM.                    "simulate_pricing&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;/font&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-3041020575046294083?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3041020575046294083/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/11/reterieve-sales-pricing-condition.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3041020575046294083'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3041020575046294083'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/11/reterieve-sales-pricing-condition.html' title='Reterieve Sales Pricing Condition'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-9179773120879278809</id><published>2008-10-01T15:44:00.000+05:30</published><updated>2008-10-03T15:08:43.236+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Parameter ID to set tab in MM03</title><content type='html'>While implementing the drill down functionality for MM03 using statement CALL TRANSACTION.. SKIP INITIAL SCREEN you can set the initial tab in MM03 where user will land using parameter id MXX use following code for corresponding tabs.&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;K&lt;/td&gt;&lt;td&gt;Basic Data 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;C&lt;/td&gt;&lt;td&gt;Classification&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;V&lt;/td&gt;&lt;td&gt;Sales: Sales Org. Data 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;E&lt;/td&gt;&lt;td&gt;Purchasing&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;D&lt;/td&gt;&lt;td&gt;MRP 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;P&lt;/td&gt;&lt;td&gt;Forecasting&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;A&lt;/td&gt;&lt;td&gt;Work Scheduling&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;F&lt;/td&gt;&lt;td&gt;Production Resources/Tools&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;L&lt;/td&gt;&lt;td&gt;General Plant Data / Storage 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;S&lt;/td&gt;&lt;td&gt;Warehouse Management 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Q&lt;/td&gt;&lt;td&gt;Quality Management&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;B&lt;/td&gt;&lt;td&gt;Accounting 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;G&lt;/td&gt;&lt;td&gt;Costing 1&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;X&lt;/td&gt;&lt;td&gt;Plant Stock&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Z&lt;/td&gt;&lt;td&gt;Storage Location Stock&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-9179773120879278809?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/9179773120879278809/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/parameter-id-to-set-tab-in-mm03.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9179773120879278809'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9179773120879278809'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/parameter-id-to-set-tab-in-mm03.html' title='Parameter ID to set tab in MM03'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7369382397739324681</id><published>2008-09-30T02:14:00.000+05:30</published><updated>2008-10-11T00:58:16.648+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Clear Selection-Screen</title><content type='html'>After the report execution when user press 'Back' button the selection-screen is displayed with the values entered in first place. If you want the selection-screen to be all clear then add following lines of code at the end of END-OF-SELECTION event.&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;FIELD-SYMBOLS : &amp;lt;fs&amp;gt;  .&lt;br /&gt;  ASSIGN ('(RSDBRUNT)MEMKEY-INT_MODE') TO &amp;lt;fs&amp;gt; .&lt;br /&gt;  IF sy-subrc = 0 .&lt;br /&gt;    &amp;lt;FS&amp;gt; = '01' .&lt;br /&gt;  ENDIF.&lt;/pre&gt;&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/5434181335871059817-7369382397739324681?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7369382397739324681/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/clear-selection-screen.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7369382397739324681'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7369382397739324681'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/clear-selection-screen.html' title='Clear Selection-Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1053999843896180917</id><published>2008-09-26T13:47:00.001+05:30</published><updated>2008-09-27T02:07:01.251+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>ADD_TIME_TO_DATE</title><content type='html'>ADD_TIME_TO_DATE function module is very useful for mathematical operation on date. It can be used to add or subtract days, weeks, months or year from a given date. It takes care of all obvious complexities. Try it..&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Report&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA gv_date TYPE syst-datum .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Selection Screen&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;PARAMETER : p_date TYPE syst-datum DEFAULT '20080131' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CONSTANTS : c_day   TYPE mara-iprkz VALUE ' ' ,&lt;br /&gt;            c_week  TYPE mara-iprkz VALUE '1' ,&lt;br /&gt;            c_month TYPE mara-iprkz VALUE '2' ,&lt;br /&gt;            c_year  TYPE mara-iprkz VALUE '3' .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Add one day&lt;br /&gt;  PERFORM date_action USING p_date '1' c_day CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '1' , 'Day' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Add one week&lt;br /&gt;  PERFORM date_action USING p_date '1' c_week CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '1' , 'Week' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Add one month&lt;br /&gt;  PERFORM date_action USING p_date '1' c_month CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '1' , 'Month' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Add one year&lt;br /&gt;  PERFORM date_action USING p_date '1' c_year CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '1' , 'Year' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Subtract one day&lt;br /&gt;  PERFORM date_action USING p_date '-1' c_day CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '-1' , 'Day' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Subtract one Week&lt;br /&gt;  PERFORM date_action USING p_date '-1' c_week CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '-1' , 'Week' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Subtract one Month&lt;br /&gt;  PERFORM date_action USING p_date '-1' c_month CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '-1' , 'Month' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* Subtract one Year&lt;br /&gt;  PERFORM date_action USING p_date '-1' c_year CHANGING gv_date .&lt;br /&gt;  WRITE : / p_date , '-1' , 'Year' , gv_date .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  date_action&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;I_DATE     text&lt;br /&gt;*      --&gt;I_HOWMUCH  text&lt;br /&gt;*      --&gt;I_WHAT     text&lt;br /&gt;*      --&gt;C_DATE     text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM date_action USING i_date     TYPE syst-datum&lt;br /&gt;                       i_howmuch  TYPE mara-mhdhb&lt;br /&gt;                       i_what     TYPE mara-iprkz&lt;br /&gt;                 CHANGING c_date TYPE syst-datum .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'ADD_TIME_TO_DATE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      i_idate = i_date&lt;br /&gt;      i_time  = i_howmuch&lt;br /&gt;      i_iprkz = i_what&lt;br /&gt;    IMPORTING&lt;br /&gt;      o_idate = c_date.&lt;br /&gt;&lt;br /&gt;ENDFORM.                    "date_action&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-1053999843896180917?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1053999843896180917/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/addtimetodate.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1053999843896180917'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1053999843896180917'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/addtimetodate.html' title='ADD_TIME_TO_DATE'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3767265260121859463</id><published>2008-09-23T23:00:00.000+05:30</published><updated>2008-09-26T00:43:02.178+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Retrieve Purchase Order Pricing Conditions</title><content type='html'>Below code can be used to retrieve the pricing conditions of a Purchase Order which is shown in ME23N transaction.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZPWTEST2&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;REPORT  zpwtest2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES ekko .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;DATA : ls_head TYPE komk  ,&lt;br /&gt;       ls_item TYPE komp  ,&lt;br /&gt;       lt_komv  TYPE TABLE OF komv  ,&lt;br /&gt;       lt_komvd TYPE TABLE OF komvd ,&lt;br /&gt;       ls_komv  TYPE komv  .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_ebeln TYPE ekko-ebeln OBLIGATORY.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE * FROM ekko WHERE ebeln = p_ebeln .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; End of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;&lt;/font&gt;&amp;nbsp;&lt;br /&gt;END-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_head-mandt = sy-mandt.&lt;br /&gt;  ls_head-belnr = ekko-ebeln .&lt;br /&gt;  ls_head-kalsm = ekko-kalsm.&lt;br /&gt;  IF ls_head-kalsm IS INITIAL .&lt;br /&gt;    ls_head-kalsm = 'RM0000'.&lt;br /&gt;  ENDIF.&lt;br /&gt;  ls_head-kappl = 'M'.&lt;br /&gt;  ls_head-waerk = ekko-waers.&lt;br /&gt;  ls_head-knumv = ekko-knumv.&lt;br /&gt;  ls_head-lifnr = ekko-lifnr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'RV_PRICE_PRINT_REFRESH'&lt;br /&gt;    TABLES&lt;br /&gt;      tkomv = lt_komv.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'RV_PRICE_PRINT_ITEM'&lt;br /&gt;    EXPORTING&lt;br /&gt;      comm_head_i = ls_head&lt;br /&gt;      comm_item_i = ls_item&lt;br /&gt;    TABLES&lt;br /&gt;      tkomv       = lt_komv&lt;br /&gt;      tkomvd      = lt_komvd.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT lt_komv INTO ls_komv .&lt;br /&gt;    WRITE : / ls_komv-kschl ,&lt;br /&gt;              ls_komv-kbetr CURRENCY ls_komv-waers,&lt;br /&gt;              ls_komv-waers ,&lt;br /&gt;              ls_komv-kpein UNIT ls_komv-kmein,&lt;br /&gt;              ls_komv-kmein ,&lt;br /&gt;              ls_komv-kwert CURRENCY ls_komv-waers.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-3767265260121859463?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3767265260121859463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/retrieve-purchase-order-pricing.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3767265260121859463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3767265260121859463'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/retrieve-purchase-order-pricing.html' title='Retrieve Purchase Order Pricing Conditions'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7352932988133215034</id><published>2008-09-04T01:17:00.000+05:30</published><updated>2008-09-23T23:09:26.638+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='MD04'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Getting Statistic fields for stock - MD04</title><content type='html'>In transaction MD04 if you double click on Available Qty a pop-up screen will appear with various stock figure which is defined in structure MDSTA.&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SL70SRqWjWI/AAAAAAAABrA/2q9M_VbTFSY/s800/md04_01.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/pawankesari/SL70RkuDEFI/AAAAAAAABq4/DqZSyLdNl28/s800/md04_02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;These values are calculated by SAP standard code at run-time. Below code can be used to derive those values using material and plant as input&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Report  ZPWTEST&lt;br /&gt;*&amp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;REPORT  zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TYPE-POOLS m61x .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA mdsta TYPE mdsta .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETER : p_matnr TYPE marc-matnr ,&lt;br /&gt;            p_werks TYPE marc-werks .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM get_stock_fig USING p_matnr p_werks CHANGING mdsta .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  get_stock_fig&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*       text&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;*      --&gt;I_MATNR    text&lt;br /&gt;*      --&gt;I_WERKS    text&lt;br /&gt;*      --&gt;C_MDSTA    text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM get_stock_fig  USING    i_matnr&lt;br /&gt;                             i_werks&lt;br /&gt;                    CHANGING c_mdsta.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA  : ls_cm61m TYPE cm61m ,&lt;br /&gt;          ls_mdkp  TYPE mdkp  ,&lt;br /&gt;          ls_masel TYPE masel ,&lt;br /&gt;          ls_m61b  TYPE m61x_cm61b ,&lt;br /&gt;          cm61x    TYPE cm61x  ,&lt;br /&gt;          cm61w    TYPE cm61w  ,&lt;br /&gt;          ls_t399d TYPE t399d ,&lt;br /&gt;          ls_mt61d TYPE mt61d ,&lt;br /&gt;          lt_mdpsx TYPE TABLE OF mdps  ,&lt;br /&gt;          ls_t001w TYPE t001w ,&lt;br /&gt;          ls_t450n TYPE t450n ,&lt;br /&gt;          lt_mdez  TYPE TABLE OF mdez ,&lt;br /&gt;          cm61m  TYPE cm61m ,&lt;br /&gt;          mdsta  TYPE mdsta .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;    INTO ls_t001w&lt;br /&gt;    FROM t001w&lt;br /&gt;   WHERE werks = i_werks .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;     INTO ls_t450n&lt;br /&gt;     FROM t450n&lt;br /&gt;    WHERE tcode = 'MD04' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;    INTO ls_t399d&lt;br /&gt;    FROM t399d&lt;br /&gt;   WHERE werks = i_werks .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;    INTO ls_mdkp&lt;br /&gt;    FROM mdkp&lt;br /&gt;   WHERE dtart = 'MD'&lt;br /&gt;     AND matnr = i_matnr&lt;br /&gt;     AND plwrk = i_werks&lt;br /&gt;     AND plscn = '000' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'MD_READ_MATERIAL_SIMPLE'&lt;br /&gt;    EXPORTING&lt;br /&gt;      ewerks                      = i_werks&lt;br /&gt;      ematnr                      = i_matnr&lt;br /&gt;    CHANGING&lt;br /&gt;      cmt61d                      = ls_mt61d&lt;br /&gt;      ccm61b                      = ls_m61b&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      material_mrp_area_not_found = 1&lt;br /&gt;      missing_parameter           = 2&lt;br /&gt;      material_plant_not_found    = 3&lt;br /&gt;      material_mrp_area_deleted   = 4&lt;br /&gt;      OTHERS                      = 5.&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;&amp;nbsp;&lt;br /&gt;  IF ls_mt61d-fxhor IS INITIAL.&lt;br /&gt;    IF ls_m61b-berty IS INITIAL&lt;br /&gt;    OR ls_m61b-berty EQ i_werks.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      SELECT SINGLE fixhz&lt;br /&gt;        INTO ls_mt61d-fxhor&lt;br /&gt;        FROM  t438m&lt;br /&gt;       WHERE werks = ls_mt61d-werks&lt;br /&gt;         AND mtart = ls_mt61d-disgr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ELSE.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;      SELECT SINGLE fixhz&lt;br /&gt;        INTO ls_mt61d-fxhor&lt;br /&gt;        FROM  t438m&lt;br /&gt;       WHERE werks = ls_mt61d-werks&lt;br /&gt;         AND mtart = ls_m61b-disgr.&lt;br /&gt;&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* --------&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  MOVE ls_t450n-mdobj TO cm61x-plobj.&lt;br /&gt;  MOVE ls_t450n-mdaty TO cm61x-plauf.&lt;br /&gt;  MOVE ls_t450n-mdakt TO cm61x-plakt.&lt;br /&gt;  MOVE sy-datlo       TO cm61x-dispd.&lt;br /&gt;  MOVE '000'          TO cm61x-plscn.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* ---------------------&lt;/font&gt;&lt;br /&gt;  MOVE ls_t001w-fabkl TO cm61w-fabkl.&lt;br /&gt;  MOVE ls_t399d-umthz TO cm61w-umthz.&lt;br /&gt;  MOVE cm61x-dispd    TO cm61w-dispd.&lt;br /&gt;  MOVE ls_t399d-gterm TO cm61w-gterm.&lt;br /&gt;  MOVE ls_t399d-selfe TO cm61w-selfe.&lt;br /&gt;  MOVE ls_t399d-selbe TO cm61w-selbe.&lt;br /&gt;  MOVE ls_t399d-selqm TO cm61w-selqm.&lt;br /&gt;  MOVE ls_t399d-selba TO cm61w-selba.&lt;br /&gt;  MOVE ls_t399d-selpa TO cm61w-selpa.&lt;br /&gt;  MOVE ls_t399d-selpz TO cm61w-selpz.&lt;br /&gt;  MOVE ls_t399d-selzr TO cm61w-selzr.&lt;br /&gt;  MOVE ls_t399d-sella TO cm61w-sella.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'AUFBAUEN_MDPSX_ANZEIGEN'&lt;br /&gt;    EXPORTING&lt;br /&gt;      ecm61w = cm61w&lt;br /&gt;      ecm61x = cm61x&lt;br /&gt;      emt61d = ls_mt61d&lt;br /&gt;      et399d = ls_t399d&lt;br /&gt;      ecm61b = ls_m61b&lt;br /&gt;    IMPORTING&lt;br /&gt;      icm61m = cm61m&lt;br /&gt;      imdsta = mdsta&lt;br /&gt;    TABLES&lt;br /&gt;      mdpsx  = lt_mdpsx&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      error  = 1&lt;br /&gt;      OTHERS = 2.&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'MDEZX_AUFBAUEN'&lt;br /&gt;    EXPORTING&lt;br /&gt;      ecm61m = cm61m&lt;br /&gt;      emdkp  = ls_mdkp&lt;br /&gt;      ecm61b = ls_m61b&lt;br /&gt;      emt61d = ls_mt61d&lt;br /&gt;    IMPORTING&lt;br /&gt;      imasel = ls_masel&lt;br /&gt;    TABLES&lt;br /&gt;      mdezx  = lt_mdez&lt;br /&gt;      mdpsx  = lt_mdpsx.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'MDSTA_AUFBAUEN'&lt;br /&gt;    EXPORTING&lt;br /&gt;      emdsta = mdsta&lt;br /&gt;      einitf = 'S'&lt;br /&gt;      emt61d = ls_mt61d&lt;br /&gt;      ekzdwb = ls_t399d-xfan1&lt;br /&gt;      ekzumb = ls_t399d-kzumb&lt;br /&gt;      enfvbc = ls_t399d-nfvbc&lt;br /&gt;    IMPORTING&lt;br /&gt;      imdsta = c_mdsta&lt;br /&gt;    TABLES&lt;br /&gt;      mdpsx  = lt_mdpsx.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    " GET_STOCK_FIG&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-7352932988133215034?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7352932988133215034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/getting-statistic-fields-for-stock-md04.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7352932988133215034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7352932988133215034'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/getting-statistic-fields-for-stock-md04.html' title='Getting Statistic fields for stock - MD04'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pawankesari/SL70SRqWjWI/AAAAAAAABrA/2q9M_VbTFSY/s72-c/md04_01.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4468810396582967891</id><published>2008-09-04T01:12:00.001+05:30</published><updated>2011-07-08T18:49:08.660+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Displaying Icon on Selection Screen</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre&gt;REPORT  zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECTION-SCREEN BEGIN OF LINE.&lt;br /&gt;SELECTION-SCREEN COMMENT 01(20) v_cap .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_all TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 24(10) v_all FOR FIELD p_all .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_red TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 36(10) v_red FOR FIELD p_red .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_amber TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 48(10) v_amber FOR FIELD p_amber .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_green TYPE char01 RADIOBUTTON GROUP grp .&lt;br /&gt;SELECTION-SCREEN COMMENT 60(10) v_green FOR FIELD p_green .&lt;br /&gt;SELECTION-SCREEN END OF LINE.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*--------------------------------------------------------------------*&lt;br /&gt;* Initialization&lt;br /&gt;*--------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;v_cap = 'Demo Option Button' .&lt;br /&gt;v_all = 'All' .&lt;br /&gt;v_red = '@0A@' .&lt;br /&gt;v_amber = '@09@' .&lt;br /&gt;v_green = '@08@' .&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-4468810396582967891?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4468810396582967891/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/displaying-icon-on-selection-screen.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4468810396582967891'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4468810396582967891'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/09/displaying-icon-on-selection-screen.html' title='Displaying Icon on Selection Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1641305538396480383</id><published>2008-07-25T02:17:00.000+05:30</published><updated>2008-07-25T02:19:19.892+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Display ListBox in Parameter of Selection Screen</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TYPE-POOLS: vrm.&lt;br /&gt;DATA: name TYPE vrm_id,&lt;br /&gt;      list TYPE vrm_values,&lt;br /&gt;      value LIKE LINE OF list.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS: ps_parm(10) AS LISTBOX VISIBLE LENGTH 10.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;AT SELECTION-SCREEN OUTPUT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  name = 'PS_PARM'.&lt;br /&gt;  value-key = '1'.&lt;br /&gt;  value-text = 'LINE 1'.&lt;br /&gt;  APPEND value TO list.&lt;br /&gt;  value-key = '2'.&lt;br /&gt;  value-text = 'LINE 2'.&lt;br /&gt;  APPEND value TO list.&lt;br /&gt;  CALL FUNCTION 'VRM_SET_VALUES'&lt;br /&gt;       EXPORTING&lt;br /&gt;            id     = name&lt;br /&gt;            values = list.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;  WRITE: / 'PARAMETER:', ps_parm.&lt;/pre&gt;&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/5434181335871059817-1641305538396480383?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1641305538396480383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/display-listbox-in-parameter-of.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1641305538396480383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1641305538396480383'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/display-listbox-in-parameter-of.html' title='Display ListBox in Parameter of Selection Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6439120560211436728</id><published>2008-07-24T16:35:00.000+05:30</published><updated>2008-07-24T16:40:29.865+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='EDI'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Important EDI Transactions and Programs</title><content type='html'>SM59 - RFC Destination&lt;br /&gt;WE21 - Port Definition&lt;br /&gt;WE20 - Partner Profile&lt;br /&gt;&lt;br /&gt;WE31 - Idoc Segement Definition&lt;br /&gt;WE30 - Idoc Type Definition&lt;br /&gt;WE81 - Logical Message Type&lt;br /&gt;WE82 - Assign Message Type to Idoc&lt;br /&gt;&lt;br /&gt;WE41 - Process Code Outbound&lt;br /&gt;WE42 - Process Code Inbound&lt;br /&gt;&lt;br /&gt;WE02 - Display Idoc&lt;br /&gt;&lt;br /&gt;WE19 - Test Idoc Inbound&lt;br /&gt;WE16 - Test Idoc Inbound with File&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6439120560211436728?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6439120560211436728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/important-edi-transactions-and-programs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6439120560211436728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6439120560211436728'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/important-edi-transactions-and-programs.html' title='Important EDI Transactions and Programs'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-433432651740723526</id><published>2008-07-20T23:30:00.000+05:30</published><updated>2008-07-21T16:40:11.696+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Hide F8 Button on Selection Screen</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT ZREPORT.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA:&lt;br /&gt;  gt_exclude TYPE TABLE OF rsexfcode,&lt;br /&gt;  gs_exclude TYPE          rsexfcode.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS:&lt;br /&gt;  pa_test TYPE c.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;INITIALIZATION.&lt;br /&gt;  gs_exclude-fcode  = 'ONLI'.&lt;br /&gt;  APPEND gs_exclude TO gt_exclude.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;AT SELECTION-SCREEN OUTPUT.&lt;br /&gt;&amp;nbsp; &lt;br /&gt;  CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'&lt;br /&gt;    EXPORTING&lt;br /&gt;      p_status  = '%_00'&lt;br /&gt;      p_program = 'RSSYSTDB'&lt;br /&gt;    TABLES&lt;br /&gt;      p_exclude = gt_exclude.&lt;br /&gt;&amp;nbsp;&lt;/pre&gt;&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/5434181335871059817-433432651740723526?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/433432651740723526/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/hide-f8-button-on-selection-screen.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/433432651740723526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/433432651740723526'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/hide-f8-button-on-selection-screen.html' title='Hide F8 Button on Selection Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3096000185636506141</id><published>2008-07-20T23:29:00.001+05:30</published><updated>2008-07-21T16:47:25.732+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Find Obsolete Function Module</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;DATA it_rodir TYPE TABLE OF rodir.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT * &lt;br /&gt;  INTO TABLE it_rodir&lt;br /&gt;  FROM rodir&lt;br /&gt; WHERE objecttype = 'FUNC'&lt;br /&gt;   AND obsolete   = 'X'.&lt;/pre&gt;&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/5434181335871059817-3096000185636506141?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3096000185636506141/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/to-find-obsolete-function-module.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3096000185636506141'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3096000185636506141'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/to-find-obsolete-function-module.html' title='Find Obsolete Function Module'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4006697893275961107</id><published>2008-07-18T15:59:00.000+05:30</published><updated>2008-07-18T16:05:35.503+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Sample RS_COVERPAGE_SELECTIONS</title><content type='html'>Function Module RS_COVERPAGE_SELECTIONS is used to print user input on selection screen to report.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES : mara .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: BEGIN OF mtab_sel_options OCCURS 0,&lt;br /&gt;        flag(1) TYPE c,&lt;br /&gt;        olength TYPE x,&lt;br /&gt;        line  LIKE rsvar-infoline,&lt;br /&gt;      END OF mtab_sel_options.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS p_matnr TYPE mara-matnr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT-OPTIONS : s_matnr FOR mara-matnr .&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;----------------------------------------------------------&amp;*&lt;br /&gt;* Start of Selection&lt;br /&gt;*&amp;----------------------------------------------------------&amp;*&lt;/font&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'RS_COVERPAGE_SELECTIONS'&lt;br /&gt;    EXPORTING&lt;br /&gt;      report            = sy-repid&lt;br /&gt;      variant           = ''&lt;br /&gt;      no_import         = 'X'&lt;br /&gt;    TABLES&lt;br /&gt;      infotab           = mtab_sel_options&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      error_message     = 1&lt;br /&gt;      variant_not_found = 2&lt;br /&gt;      OTHERS            = 3.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT mtab_sel_options.&lt;br /&gt;    WRITE: / mtab_sel_options-line.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-4006697893275961107?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4006697893275961107/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sample-rscoverpageselections.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4006697893275961107'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4006697893275961107'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sample-rscoverpageselections.html' title='Sample RS_COVERPAGE_SELECTIONS'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3146229205297655608</id><published>2008-07-18T15:47:00.000+05:30</published><updated>2008-07-18T15:58:15.070+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>SAP ABAP Dynamic Internal table and Processing 02</title><content type='html'>Another method of creating and processing dynamic internal table in ABAP.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: lv_tablename TYPE string VALUE 'SFLIGHT'.&lt;br /&gt;DATA: lv_dref      TYPE REF TO data.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: sflighttype  TYPE REF TO cl_abap_structdescr,&lt;br /&gt;      tabletype    TYPE REF TO cl_abap_tabledescr,&lt;br /&gt;      comp_tab     TYPE cl_abap_structdescr=&gt;component_table,&lt;br /&gt;      new_comp_tab LIKE comp_tab,&lt;br /&gt;      linetype     TYPE REF TO cl_abap_structdescr,&lt;br /&gt;      dref         TYPE REF TO data.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;FIELD-SYMBOLS: &amp;lt;wa_comp&amp;gt; LIKE LINE OF comp_tab.&lt;br /&gt;FIELD-SYMBOLS: &amp;lt;table&amp;gt; TYPE ANY TABLE.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------&amp;&lt;br /&gt;* Start of Selection&lt;br /&gt;*&amp;---------------------------------------------------------------------&amp;&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;* Creation of dynamic internal table&lt;/font&gt;&lt;br /&gt;  CREATE DATA lv_dref TYPE TABLE OF (lv_tablename).&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  FIELD-SYMBOLS: &amp;lt;fs&amp;gt; TYPE STANDARD TABLE.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ASSIGN lv_dref-&gt;* TO &amp;lt;fs&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT *&lt;br /&gt;    FROM sflight&lt;br /&gt;    INTO TABLE &amp;lt;fs&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  sflighttype ?= cl_abap_typedescr=&gt;describe_by_name('SFLIGHT').&lt;br /&gt;  comp_tab = sflighttype-&gt;get_components( ).&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  LOOP AT comp_tab ASSIGNING &amp;lt;wa_comp&amp;gt;.&lt;br /&gt;    CASE &amp;lt;wa_comp&gt;-name.&lt;br /&gt;      WHEN 'CARRID' OR 'CONNID' OR 'FLDATE' OR 'PRICE' OR 'CURRENCY'.&lt;br /&gt;        APPEND &amp;lt;wa_comp&amp;gt; TO new_comp_tab.&lt;br /&gt;    ENDCASE.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  linetype = cl_abap_structdescr=&gt;create( new_comp_tab ).&lt;br /&gt;  tabletype = cl_abap_tabledescr=&gt;create(&lt;br /&gt;  p_line_type = linetype&lt;br /&gt;  p_table_kind = cl_abap_tabledescr=&gt;tablekind_std ).&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CREATE DATA dref TYPE HANDLE tabletype.&lt;br /&gt;  ASSIGN dref-&gt;* TO &amp;lt;table&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT * FROM sflight INTO CORRESPONDING FIELDS OF TABLE &amp;lt;table&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  FIELD-SYMBOLS: &amp;lt;wa_data&amp;gt; TYPE ANY.&lt;br /&gt;  FIELD-SYMBOLS: &amp;lt;wa_field&amp;gt; TYPE ANY.&lt;br /&gt;  LOOP AT &amp;lt;table&amp;gt; ASSIGNING &amp;lt;wa_data&amp;gt;.&lt;br /&gt;    WRITE: /.&lt;br /&gt;    LOOP AT new_comp_tab ASSIGNING &amp;lt;wa_comp&amp;gt;.&lt;br /&gt;      ASSIGN COMPONENT sy-tabix OF STRUCTURE &amp;lt;wa_data&amp;gt; TO &amp;lt;wa_field&amp;gt;.&lt;br /&gt;      WRITE: &amp;lt;wa_field&amp;gt;.&lt;br /&gt;    ENDLOOP.&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-3146229205297655608?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3146229205297655608/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sap-abap-dynamic-internal-table-and.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3146229205297655608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3146229205297655608'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sap-abap-dynamic-internal-table-and.html' title='SAP ABAP Dynamic Internal table and Processing 02'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3304376105121344883</id><published>2008-07-18T15:02:00.000+05:30</published><updated>2008-07-18T15:57:10.136+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>SAP ABAP Dynamic Internal table and Processing 01</title><content type='html'>Sample code for creating dynamic internal table using method cl_alv_table_create=&gt;create_dynamic_table and then processing the record in table.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: lt_data TYPE REF TO data.&lt;br /&gt;DATA: lt_fieldcatalog TYPE lvc_t_fcat.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: ls_fieldcatalog TYPE lvc_s_fcat.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA: new_line TYPE REF TO data.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;FIELD-SYMBOLS: &amp;lt;fs_data&amp;gt; TYPE REF TO data,&lt;br /&gt;               &amp;lt;fs_1&amp;gt; TYPE ANY TABLE,&lt;br /&gt;               &amp;lt;fs_2&amp;gt;,&lt;br /&gt;               &amp;lt;fs_3&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;-------------------------------------------------------------------&amp;&lt;br /&gt;*  START-OF-SELECTION&lt;br /&gt;*&amp;-------------------------------------------------------------------&amp;&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'MANDT'.&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'CARRID'. &lt;font color="blue"&gt;"Fieldname&lt;/font&gt;&lt;br /&gt;  ls_fieldcatalog-inttype = 'C'. &lt;font color="blue"&gt;"Internal Type C-&gt; Character&lt;/font&gt;&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'CONNID'.&lt;br /&gt;  ls_fieldcatalog-inttype = 'N'.&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'FLDATE'.&lt;br /&gt;  ls_fieldcatalog-inttype = 'D'.&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'PRICE'.&lt;br /&gt;  ls_fieldcatalog-inttype = 'P'.&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ls_fieldcatalog-fieldname = 'CURRENCY'.&lt;br /&gt;  ls_fieldcatalog-inttype = 'C'.&lt;br /&gt;  APPEND ls_fieldcatalog TO lt_fieldcatalog.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ASSIGN lt_data TO &amp;lt;fs_data&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL METHOD cl_alv_table_create=&gt;create_dynamic_table&lt;br /&gt;       EXPORTING&lt;br /&gt;         it_fieldcatalog = lt_fieldcatalog&lt;br /&gt;       IMPORTING&lt;br /&gt;         ep_table = &amp;lt;fs_data&amp;gt;&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;         generate_subpool_dir_full = 1&lt;br /&gt;         OTHERS = 2  .&lt;br /&gt;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* So &lt;FS_1&gt; now points to our dynamic internal table.&lt;/font&gt;&lt;br /&gt;  ASSIGN &amp;lt;fs_data&amp;gt;-&gt;* TO &amp;lt;fs_1&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Next step is to create a work area for our dynamic internal table.&lt;/font&gt;&lt;br /&gt;  CREATE DATA new_line LIKE LINE OF &amp;lt;fs_1&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* A field-symbol to access that work area&lt;/font&gt;&lt;br /&gt;  ASSIGN new_line-&gt;*  TO &amp;lt;fs_2&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* And to put the data in the internal table&lt;/font&gt;&lt;br /&gt;  SELECT mandt&lt;br /&gt;         carrid&lt;br /&gt;         connid&lt;br /&gt;         fldate&lt;br /&gt;         price&lt;br /&gt;         currency&lt;br /&gt;    FROM sflight&lt;br /&gt;    INTO CORRESPONDING FIELDS OF TABLE &amp;lt;fs_1&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Access contents of internal table&lt;/font&gt;&lt;br /&gt;  LOOP AT &amp;lt;fs_1&amp;gt; ASSIGNING &amp;lt;fs_2&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ASSIGN COMPONENT 2 OF STRUCTURE &amp;lt;fs_2&amp;gt; TO &amp;lt;fs_3&amp;gt;.&lt;br /&gt;    WRITE: / &amp;lt;fs_3&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    ASSIGN COMPONENT 3 OF STRUCTURE &amp;lt;fs_2&amp;gt; TO &amp;lt;fs_3&amp;gt;.&lt;br /&gt;    WRITE: &amp;lt;fs_3&amp;gt;.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDLOOP.&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-3304376105121344883?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3304376105121344883/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/dynamic-internal-table-and-processing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3304376105121344883'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3304376105121344883'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/dynamic-internal-table-and-processing.html' title='SAP ABAP Dynamic Internal table and Processing 01'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7526732334607012146</id><published>2008-07-08T02:15:00.000+05:30</published><updated>2008-07-08T02:27:06.892+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smartforms'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Smartform/Sapscript Page Counter - Mode</title><content type='html'>Smart Forms records page numbering using page counters. You query these using system fields&lt;br /&gt;&lt;br /&gt;&amp;SFSY-PAGE&amp; for the current page number&lt;br /&gt;&amp;SFSY-FORMPAGES&amp; for the total number of pages in the form&lt;br /&gt;&amp;SFSY-JOBPAGE&amp; for the total number of pages of all forms in the print job&lt;br /&gt;&lt;br /&gt;You can use the following modes to define which values the different page counters can accept&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Initialize&lt;/strong&gt; : This will reset the page counter.&lt;br /&gt;&lt;strong&gt;Increase&lt;/strong&gt; : Increase the page counter by 1.&lt;br /&gt;&lt;strong&gt;Leave Counter Unchanged&lt;/strong&gt; : Does not increase page counter.&lt;br /&gt;&lt;strong&gt;Page and Total Page Unchanged&lt;/strong&gt; : Hold all the values.&lt;br /&gt;&lt;br /&gt;Initialize, Increase, and Hold only change &amp;SFSY-PAGE&amp; accordingly. &amp;SFSY-FORMPAGES&amp; and &amp;SFSY-JOBPAGES&amp; are increased by one regardless of this setting.&lt;br /&gt;&lt;br /&gt;Page and Total Page Unchanged has the effect that not only &amp;SFSY-PAGE&amp; but also &amp;SFSY-FORMPAGES&amp; remain unchanged.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SHKAL0hlSLI/AAAAAAAABiQ/OpSxaZII6Sw/s800/s1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Page numbering mode of a form page&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Mode of the counter of a form page.&lt;br /&gt;&lt;br /&gt;The page counter can be set so that the number of the previous page is incremented, the page number is reset to its initial value, or the previous page number is repeated.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SHKAMA2m-SI/AAAAAAAABiY/B5VXFqgxh_o/s800/S2.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7526732334607012146?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7526732334607012146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/smartformsapscript-page-counter-mode.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7526732334607012146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7526732334607012146'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/smartformsapscript-page-counter-mode.html' title='Smartform/Sapscript Page Counter - Mode'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/pawankesari/SHKAL0hlSLI/AAAAAAAABiQ/OpSxaZII6Sw/s72-c/s1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-228707848896672274</id><published>2008-07-03T17:01:00.000+05:30</published><updated>2008-07-09T19:59:28.751+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP SD'/><title type='text'>SAP SD Pricing Overview</title><content type='html'>&lt;iframe src='http://docs.google.com/EmbedSlideshow?docid=ddbm5j9n_10ggmmssp9' frameborder='0' width='410' height='342'&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-228707848896672274?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/228707848896672274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sap-sd-pricing-overview.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/228707848896672274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/228707848896672274'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/07/sap-sd-pricing-overview.html' title='SAP SD Pricing Overview'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1675038013221008640</id><published>2008-06-24T20:40:00.000+05:30</published><updated>2008-06-24T20:45:26.727+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Transporting Table Entry</title><content type='html'>Content of a table can be transported from dev to quality and to production using transport system. First you need to attach the table entry to a transport and then same procedure applies as in case of transporting abap changes.&lt;br /&gt;&lt;br /&gt;Step 1: Open the content of table which you want to transport using transaction SE11. Select 'Transport Entry' from menu.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SGENBaja2VI/AAAAAAAABdg/tihB6gGu26c/s800/t1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : If you already have a transport then enter in Request input otherwise click on 'new' button to create transport.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SGENBpnG8JI/AAAAAAAABdo/pJlqbWBpiq4/s800/t2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 : Following screen will appear, enter some description and press Save.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SGENB-7QOCI/AAAAAAAABdw/5dkmrBm6RTY/s800/t3.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 4 : A new transport will be created and filled in previous screen as shown in below screen shot. Press OK and you are done.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/pawankesari/SGENCGFawGI/AAAAAAAABd4/aHQ-Ft6vjAc/s800/t4.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Now if you see the transport in SE09 you will find that table contenr were attached to transport. Follow the regular transport procedure to transport these table contect further in your SAP landscape.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SGENCYumWoI/AAAAAAAABeA/TTBhVXE6SJY/s800/t5.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1675038013221008640?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1675038013221008640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/transporting-table-entry.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1675038013221008640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1675038013221008640'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/transporting-table-entry.html' title='Transporting Table Entry'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh5.ggpht.com/pawankesari/SGENBaja2VI/AAAAAAAABdg/tihB6gGu26c/s72-c/t1.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3999028906161133839</id><published>2008-06-24T19:35:00.000+05:30</published><updated>2009-07-25T02:33:47.739+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Abap Objects'/><title type='text'>Sample/Demo code availble in SAP</title><content type='html'>SAP has sample programs for all the important functionality available for developer to create report and user interface. Here is the list of important sample program which can be refered while using bespoke functionality.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;ALV List&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;Sample program on REUSE_ALV_LIST_DISPLAY which demonstrate interactive alv, how to show icon on alv, how to show checkbox on alv, how to put hotspot, all these options are available on selection-screen.&lt;/td&gt;&lt;td&gt;BALVSD01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Simple sample program to demonstrate the use of REUSE_ALV_LIST_DISPLAY.&lt;/td&gt;&lt;td&gt;BALVSD02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sample program for Hierarchical ALV List using REUSE_ALV_HIERSEQ_LIST_DISPLAY.&lt;/td&gt;&lt;td&gt;BALVHD01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sample program on how to use REUSE_ALV_POPUP_TO_SELECT. This FM gives popup to user with ALV List to select a particular row.&lt;/td&gt;&lt;td&gt;BALV_POPUP_TO_SELECT&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sample program on how to create multiple ALV on same report using block list technique. Fm used for block list alv are REUSE_ALV_BLOCK_LIST_INIT, REUSE_ALV_BLOCK_LIST_APPEND, REUSE_ALV_BLOCK_LIST_DISPLAY&lt;/td&gt;&lt;td&gt;BALVBT01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Sample program on REUSE_ALV_GRID_DISPLAY&lt;/td&gt;&lt;td&gt;BALVSD02_GRID&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Application Log Demo programs&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;Simple Sample Code to create and display Application Log&lt;/td&gt;&lt;td&gt;SBAL_DEMO_01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Demo program to show all possible formats of displaying Application log&lt;/td&gt;&lt;td&gt;SBAL_DEMO_04&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Report Object Oriented ALV Grid using class CL_GUI_ALV_GRID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;Processing Print Events&lt;/td&gt;&lt;td&gt;BCALV_GRID_01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Display Detail List in Dialog Box Container, Interaction in OO grid adding listener for double click event&lt;/td&gt;&lt;td&gt;BCALV_GRID_02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Detail List in Dialog Window, displaying a second ALV Control in a dialog dynpro.&lt;/td&gt;&lt;td&gt;BCALV_GRID_03&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Display Exceptions (LEDs or Traffic Lights)&lt;/td&gt;&lt;td&gt;BCALV_GRID_04&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Add a Self-Defined Button to the Toolbar&lt;/td&gt;&lt;td&gt;BCALV_GRID_05&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Define Self-Defined Context Menu&lt;/td&gt;&lt;td&gt;BCALV_GRID_06&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Define a Menu in the Toolbar&lt;/td&gt;&lt;td&gt;BCALV_GRID_07&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Define a Menu with Default Pushbutton&lt;/td&gt;&lt;td&gt;BCALV_GRID_08&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Saving Options for Layouts&lt;/td&gt;&lt;td&gt;BCALV_GRID_09&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Load a layout before list display&lt;/td&gt;&lt;td&gt;BCALV_GRID_10&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Test for new layout function modules&lt;/td&gt;&lt;td&gt;BCALV_GRID_11&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Data Input using Object Oriented ALV Grid using class CL_GUI_ALV_GRID&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;Switch on and off the ready-for-input status of the entire grid&lt;/td&gt;&lt;td&gt;BCALV_EDIT_01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Define ready-for-input status at cell level&lt;/td&gt;&lt;td&gt;BCALV_EDIT_02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Verification of modified cells&lt;/td&gt;&lt;td&gt;BCALV_EDIT_03&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Delete and append rows&lt;/td&gt;&lt;td&gt;BCALV_EDIT_04&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Checkboxes&lt;/td&gt;&lt;td&gt;BCALV_EDIT_05&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dropdown Listbox at Column Level&lt;/td&gt;&lt;td&gt;BCALV_EDIT_06&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Dropdown Listbox at Cell Level&lt;/td&gt;&lt;td&gt;BCALV_EDIT_07&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Integrate Non-Standard F4 Help&lt;/td&gt;&lt;td&gt;BCALV_EDIT_08&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Object Oriented ALV Tree using class CL_GUI_ALV_TREE&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;ALV Tree Control: Build Up the Hierarchy Tree&lt;/td&gt;&lt;td&gt;BCALV_TREE_01&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALV Tree Control: Event Handling&lt;/td&gt;&lt;td&gt;BCALV_TREE_02&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALV Tree Control: Use an Own Context Menu&lt;/td&gt;&lt;td&gt;BCALV_TREE_03&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALV Tree Control: Add a Button to the Toolbar&lt;/td&gt;&lt;td&gt;BCALV_TREE_04&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALV Tree Control: Add a Menu to the Toolbar&lt;/td&gt;&lt;td&gt;BCALV_TREE_05&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;ALV tree control: Icon column and icon for nodes/items&lt;/td&gt;&lt;td&gt;BCALV_TREE_06&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;You may like to read these blogs&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/07/display-alv-grid-oop-fullscreen.html"&gt;Display ALV Grid (OOP) Fullscreen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/use-of-application-log-fms-to-display.html"&gt;Use of Application Log FMs to display Message List/Log&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/creating-custom-page-format-for.html"&gt;Creating custom page format for sapscript/smartform&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/reset-alv-export-option-for-user.html"&gt;Reset ALV Export Option for User&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-3999028906161133839?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3999028906161133839/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/sampledemo-code-availble-in-sap.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3999028906161133839'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3999028906161133839'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/sampledemo-code-availble-in-sap.html' title='Sample/Demo code availble in SAP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8178725674844090626</id><published>2008-06-24T18:16:00.001+05:30</published><updated>2010-01-21T20:49:59.316+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='Module Pool'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>SELECT-OPTION in Module Pool Screen</title><content type='html'>My favourite interview question 'Can you define select option in module pool?'... Why not? .... How?...&lt;br /&gt;&lt;br /&gt;The key for having select-option in module pool is loading selection-screen in module pool screen. We know that defining a select option in selection screen is just a matter of line. But do you know that selection screen can be defined as subscreen and that can be loaded into subscreen area module pool program. Bingo!! You got the solution. Still confused follow below steps &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Step 1: Create a report with following code.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;code class="jive-code jive-java"&gt;REPORT zreport  .&lt;br /&gt;&lt;br /&gt;TABLES : ekko , ekpo .&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SELECTION-SCREEN BEGIN OF SCREEN 300 AS SUBSCREEN.&lt;br /&gt;PARAMETERS     : p_bukrs  TYPE ekko-bukrs OBLIGATORY DEFAULT '1000'.&lt;br /&gt;SELECT-OPTIONS : s_ebeln  FOR  ekko-ebeln ,&lt;br /&gt;s_ebelp  FOR  ekpo-ebelp .&lt;br /&gt;SELECTION-SCREEN END OF SCREEN 300 .&lt;/strong&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL SCREEN 100 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  status_0100  OUTPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;SET PF-STATUS 'ZPF01' .&lt;br /&gt;SET TITLEBAR 'ZTITLE01' .&lt;br /&gt;ENDMODULE.                 " status_0100  OUTPUT&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Module  user_command_0100  INPUT&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;IF sy-ucomm = 'BACK' OR sy-ucomm = 'EXIT' .&lt;br /&gt;LEAVE TO SCREEN 0 .&lt;br /&gt;ENDIF.&lt;br /&gt;ENDMODULE.                 " user_command_0100  INPUT&lt;br /&gt;&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Define screen 100 with subcreen area SUB_1 as shown in below screen shot.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SGDsahqL00I/AAAAAAAABcE/TK6swUl9DqU/s800/Screen_painter.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Also define PF status and title bar with names  'ZPF01' and 'ZTITLE01' respectively. This is not shown in any screen shot.&lt;br /&gt;&lt;br /&gt;Step 3 : Put code in PBO and PA1 of screen as shown in below screen shot.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SGDsbPas4MI/AAAAAAAABcM/ZBB6D5a-BMw/s800/Screen_painter1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Activate all objects and execute the report you should get following module pool screen with select-options.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SGDsbEz0OpI/AAAAAAAABcU/mwdiKQ5wz_4/s800/Screen_painter2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Try these..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/07/display-alv-grid-oop-fullscreen.html"&gt;Display ALV Grid (OOP) Fullscreen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/use-of-application-log-fms-to-display.html"&gt;Use of Application Log FMs to display Message List/Log&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/creating-custom-page-format-for.html"&gt;Creating custom page format for sapscript/smartform&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/reset-alv-export-option-for-user.html"&gt;Reset ALV Export Option for User&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-8178725674844090626?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8178725674844090626/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/select-option-in-module-pool-screen.html#comment-form' title='12 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8178725674844090626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8178725674844090626'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/select-option-in-module-pool-screen.html' title='SELECT-OPTION in Module Pool Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pawankesari/SGDsahqL00I/AAAAAAAABcE/TK6swUl9DqU/s72-c/Screen_painter.JPG' height='72' width='72'/><thr:total>12</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-9132406972926337482</id><published>2008-06-23T00:04:00.000+05:30</published><updated>2008-07-04T00:26:59.320+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Add your own pattern in SE38</title><content type='html'>SAP allow user to customize its most of the feature and so is the 'Pattern' feature which very handy for developers. You can actually add your own patterns to the existing ones. Below is the example with step-by-step screen shot. In this example I will create a pattern with name ZREP_TIT.&lt;br /&gt;&lt;br /&gt;Step 1 : Open any report in SE38 and click 'Create Pattern' , follow the menu path as shown in below screen shot.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/pawankesari/SF6ake1oeUI/AAAAAAAABaU/9bdOLRcN3SY/s400/p1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 2 : Enter the text which you want to appear when you select the pattern once it is created, then press save button. Once the text is saved exit this screen.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SF6akjIyYjI/AAAAAAAABac/yOfKqWMYIAU/s800/p2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 3 : At this point the pattern is created. Lets use it in a report. In SE38 select the 'Pattern' button.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SF6alp_aVrI/AAAAAAAABas/ntZDQC6s_Rw/s800/P3.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Step 4 : Select 'Other Pattern' and enter 'ZREP_TIT' and you should get the text which you entered in Step 2.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SF6amBM6LoI/AAAAAAAABa0/8seopPMDwS0/s800/p4.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SF6alDmzv9I/AAAAAAAABak/P8LAupDn3e4/s800/p5.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;This is just an example, now you have to think about the scenarios which can be converted into Patterns and used again and again to save development time.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-9132406972926337482?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/9132406972926337482/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/add-your-own-pattern-in-se38.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9132406972926337482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/9132406972926337482'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/add-your-own-pattern-in-se38.html' title='Add your own pattern in SE38'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh4.ggpht.com/pawankesari/SF6ake1oeUI/AAAAAAAABaU/9bdOLRcN3SY/s72-c/p1.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5009662403514989528</id><published>2008-06-20T13:21:00.001+05:30</published><updated>2008-06-28T14:32:09.444+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Call Transaction in New Window</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;code class="jive-code jive-java"&gt;&lt;font color="blue"&gt;call function 'ABAP4_CALL_TRANSACTION'&lt;br /&gt;        starting new task ivbak-vbeln&lt;br /&gt;        exporting&lt;br /&gt;          tcode                         = 'VA03'&lt;br /&gt;          skip_screen                   = 'X'&lt;br /&gt;       tables&lt;br /&gt;          spagpa_tab                    = ispa&lt;br /&gt;       exceptions&lt;br /&gt;         call_transaction_denied       = 1&lt;br /&gt;         tcode_invalid                 = 2&lt;br /&gt;         others                        = 3.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;/font&gt;&lt;br /&gt;&lt;/code&gt;&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/5434181335871059817-5009662403514989528?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5009662403514989528/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/call-transaction-in-new-window.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5009662403514989528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5009662403514989528'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/call-transaction-in-new-window.html' title='Call Transaction in New Window'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7837979602629963834</id><published>2008-06-20T13:17:00.001+05:30</published><updated>2008-06-20T13:19:00.369+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP Mail'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Minimum Code Required to Send SAP Mail</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;&lt;br /&gt;REPORT  ztest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CONSTANTS : c_high TYPE sodocchgi1-priority VALUE '1' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : i_content TYPE TABLE OF solisti1  ,&lt;br /&gt;       i_rec     TYPE TABLE OF somlreci1 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : wa_docdata TYPE sodocchgi1 ,&lt;br /&gt;       wa_content TYPE solisti1   ,&lt;br /&gt;       wa_rec     TYPE somlreci1  .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Fill document data&lt;/font&gt;&lt;br /&gt;wa_docdata-obj_name    = 'MESSAGE' .&lt;br /&gt;wa_docdata-obj_descr   = 'test'    .&lt;br /&gt;wa_docdata-obj_langu   = 'E'       .&lt;br /&gt;wa_docdata-sensitivty  = 'F'       .&lt;br /&gt;wa_docdata-obj_prio    = c_high    .&lt;br /&gt;wa_docdata-no_change   = 'X'       .&lt;br /&gt;wa_docdata-priority    = c_high    .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Fill object content&lt;/font&gt;&lt;br /&gt;CLEAR wa_content .&lt;br /&gt;wa_content-line = 'test mail' .&lt;br /&gt;APPEND wa_content TO i_content .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* Fill receivers&lt;/font&gt;&lt;br /&gt;CLEAR wa_rec .&lt;br /&gt;wa_rec-receiver = sy-uname .&lt;br /&gt;wa_rec-rec_type = 'B'.&lt;br /&gt;APPEND wa_rec TO i_rec .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL FUNCTION 'SO_NEW_DOCUMENT_SEND_API1'&lt;br /&gt;  EXPORTING&lt;br /&gt;    document_data              = wa_docdata&lt;br /&gt;  TABLES&lt;br /&gt;    object_content             = i_content&lt;br /&gt;    receivers                  = i_rec&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;&amp;nbsp;&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;/code&gt;&lt;/pre&gt;&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/5434181335871059817-7837979602629963834?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7837979602629963834/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/minimum-code-required-to-send-sap-mail.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7837979602629963834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7837979602629963834'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/minimum-code-required-to-send-sap-mail.html' title='Minimum Code Required to Send SAP Mail'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8081319968065758811</id><published>2008-06-20T13:11:00.000+05:30</published><updated>2008-07-09T19:59:57.452+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Calculate Tax of Purchase order Line Item</title><content type='html'>To display a Tax of a Purchase Order line item follow these screen-shots.&lt;br /&gt;&lt;br /&gt;1. Open a PO in ME23N. Select 'Invoice' tab and click on 'Taxes' button.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SHTKgnrvxmI/AAAAAAAABjw/-OAMrwxiHRE/s800/PO-1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;2. There you see the tax for the PO line item&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SF5JNagrKDI/AAAAAAAABY8/10JSwiGyorg/s800/PO-2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;These were two simple step to get the Tax for PO line item, however if you are unfortunate enough to get requirement to display Tax in PO report then you have to debug tones of SAP standard code to determine how SAP calculated that or you can copy below code.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;&lt;br /&gt;REPORT zreport10 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES : ekko , ekpo , t001 , komk , komp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA mwsbp TYPE komp-mwsbp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;PARAMETERS : p_ebeln TYPE ekpo-ebeln ,&lt;br /&gt;             p_ebelp TYPE ekpo-ebelp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  PERFORM calculate_tax USING p_ebeln p_ebelp CHANGING mwsbp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  WRITE mwsbp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;*       FORM calculate_tax                                            *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM calculate_tax USING    p_ebeln TYPE ekpo-ebeln&lt;br /&gt;                            p_ebelp TYPE ekpo-ebelp&lt;br /&gt;                   CHANGING p_mwsbp TYPE komp-mwsbp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CONSTANTS: bstyp-info VALUE 'I',&lt;br /&gt;             bstyp-ordr VALUE 'W',&lt;br /&gt;             bstyp-banf VALUE 'B',&lt;br /&gt;             bstyp-best VALUE 'F',&lt;br /&gt;             bstyp-anfr VALUE 'A',&lt;br /&gt;             bstyp-kont VALUE 'K',&lt;br /&gt;             bstyp-lfpl VALUE 'L',&lt;br /&gt;             bstyp-lerf VALUE 'Q'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : taxcom TYPE taxcom ,&lt;br /&gt;         t_konv TYPE TABLE OF komv WITH HEADER LINE .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA: BEGIN OF tkomv OCCURS 50.&lt;br /&gt;          INCLUDE STRUCTURE komv.&lt;br /&gt;  DATA: END OF tkomv.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA: BEGIN OF tkomvd OCCURS 50. "Belegkonditionen&lt;br /&gt;          INCLUDE STRUCTURE komvd.&lt;br /&gt;  DATA: END OF tkomvd.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA : BEGIN OF tkomvh OCCURS 50.&lt;br /&gt;          INCLUDE STRUCTURE komv.&lt;br /&gt;  DATA : vtext LIKE t685t-vtext.&lt;br /&gt;  DATA : END OF tkomvh.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;    INTO ekko&lt;br /&gt;    FROM ekko&lt;br /&gt;   WHERE ebeln = p_ebeln .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;     INTO ekpo&lt;br /&gt;     FROM ekpo&lt;br /&gt;    WHERE ebeln = p_ebeln&lt;br /&gt;      AND ebelp = p_ebelp .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT SINGLE *&lt;br /&gt;    INTO t001&lt;br /&gt;    FROM t001&lt;br /&gt;   WHERE bukrs = ekko-bukrs .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  taxcom-bukrs = ekpo-bukrs.&lt;br /&gt;  taxcom-budat = ekko-bedat.&lt;br /&gt;  taxcom-waers = ekko-waers.&lt;br /&gt;  taxcom-kposn = ekpo-ebelp.&lt;br /&gt;  taxcom-mwskz = ekpo-mwskz.&lt;br /&gt;  taxcom-txjcd = ekpo-txjcd.&lt;br /&gt;  taxcom-shkzg = 'H'.&lt;br /&gt;  taxcom-xmwst = 'X'.&lt;br /&gt;  IF ekko-bstyp EQ bstyp-best.&lt;br /&gt;    taxcom-wrbtr = ekpo-netwr.&lt;br /&gt;  ELSE.&lt;br /&gt;    taxcom-wrbtr = ekpo-zwert.&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  taxcom-lifnr = ekko-lifnr.&lt;br /&gt;  taxcom-land1 = ekko-lands.&lt;br /&gt;  taxcom-ekorg = ekko-ekorg.&lt;br /&gt;  taxcom-hwaer = t001-waers.&lt;br /&gt;  taxcom-llief = ekko-llief.&lt;br /&gt;  taxcom-bldat = ekko-bedat.&lt;br /&gt;  taxcom-matnr = ekpo-ematn.&lt;br /&gt;  taxcom-werks = ekpo-werks.&lt;br /&gt;  taxcom-bwtar = ekpo-bwtar.&lt;br /&gt;  taxcom-matkl = ekpo-matkl.&lt;br /&gt;  taxcom-meins = ekpo-meins.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF ekko-bstyp EQ bstyp-best.&lt;br /&gt;    taxcom-mglme = ekpo-menge.&lt;br /&gt;  ELSE.&lt;br /&gt;    IF ekko-bstyp EQ bstyp-kont AND ekpo-abmng GT 0.&lt;br /&gt;      taxcom-mglme = ekpo-abmng.&lt;br /&gt;    ELSE.&lt;br /&gt;      taxcom-mglme = ekpo-ktmng.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF taxcom-mglme EQ 0.&lt;br /&gt;    taxcom-mglme = 1000.&lt;br /&gt;  ENDIF.&lt;br /&gt;  taxcom-mtart = ekpo-mtart.&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'J_1BSA_COMPONENT_ACTIVE'&lt;br /&gt;       EXPORTING&lt;br /&gt;            bukrs                = ekko-bukrs&lt;br /&gt;            component            = 'BR'&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            component_not_active = 1&lt;br /&gt;            OTHERS               = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-subrc IS INITIAL.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    komk-mandt = ekko-mandt.&lt;br /&gt;    komk-kalsm = ekko-kalsm.&lt;br /&gt;    IF ekko-kalsm = ''.&lt;br /&gt;      komk-kalsm = 'RM0000'.&lt;br /&gt;    ENDIF.&lt;br /&gt;    komk-kappl = 'M'.&lt;br /&gt;    komk-waerk = ekko-waers.&lt;br /&gt;    komk-knumv = ekko-knumv.&lt;br /&gt;    komk-lifnr = ekko-lifnr.&lt;br /&gt;    komp-kposn = ekpo-ebelp.&lt;br /&gt;    komp-matnr = ekpo-matnr.&lt;br /&gt;    komp-werks = ekpo-werks.&lt;br /&gt;    komp-matkl = ekpo-matkl.&lt;br /&gt;    komp-infnr = ekpo-infnr.&lt;br /&gt;    komp-evrtn = ekpo-konnr.&lt;br /&gt;    komp-evrtp = ekpo-ktpnr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL FUNCTION 'RV_PRICE_PRINT_ITEM'&lt;br /&gt;         EXPORTING&lt;br /&gt;              comm_head_i = komk&lt;br /&gt;              comm_item_i = komp&lt;br /&gt;              language    = 'E'&lt;br /&gt;         TABLES&lt;br /&gt;              tkomv       = tkomv&lt;br /&gt;              tkomvd      = tkomvd.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CALL FUNCTION 'J_1B_NF_PO_DISCOUNTS'&lt;br /&gt;         EXPORTING&lt;br /&gt;              i_kalsm = ekko-kalsm&lt;br /&gt;              i_ekpo  = ekpo&lt;br /&gt;         IMPORTING&lt;br /&gt;              e_ekpo  = ekpo&lt;br /&gt;         TABLES&lt;br /&gt;              i_konv  = t_konv.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    IF NOT ekko-llief IS INITIAL.&lt;br /&gt;      taxcom-lifnr = ekko-llief.&lt;br /&gt;    ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'FIND_TAX_SPREADSHEET'&lt;br /&gt;       EXPORTING&lt;br /&gt;            buchungskreis = t001-bukrs&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            not_found     = 1&lt;br /&gt;            OTHERS        = 2.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'CALCULATE_TAX_ITEM'&lt;br /&gt;       EXPORTING&lt;br /&gt;            i_taxcom            = taxcom&lt;br /&gt;       IMPORTING&lt;br /&gt;            e_taxcom            = taxcom&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            mwskz_not_defined   = 1&lt;br /&gt;            mwskz_not_found     = 2&lt;br /&gt;            mwskz_not_valid     = 3&lt;br /&gt;            steuerbetrag_falsch = 4&lt;br /&gt;            country_not_found   = 5&lt;br /&gt;            OTHERS              = 6.&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;br /&gt;  p_mwsbp = taxcom-wmwst  .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    " calculate_tax&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&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/5434181335871059817-8081319968065758811?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8081319968065758811/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/calculate-tax-of-purchase-order-line.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8081319968065758811'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8081319968065758811'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/calculate-tax-of-purchase-order-line.html' title='Calculate Tax of Purchase order Line Item'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pawankesari/SHTKgnrvxmI/AAAAAAAABjw/-OAMrwxiHRE/s72-c/PO-1.JPG' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-8856899015044971396</id><published>2008-06-20T13:03:00.000+05:30</published><updated>2008-06-20T13:08:46.253+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP Mail'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Send report as attachment in background</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;&lt;br /&gt;&lt;br /&gt;REPORT zpwtest .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES : t001 .&lt;br /&gt;TYPE-POOLS slis .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : t_t001     TYPE TABLE OF t001        ,&lt;br /&gt;       t_abaplist TYPE TABLE OF abaplist    .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : w_abaplist TYPE abaplist .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT-OPTIONS : s_bukrs FOR t001-bukrs OBLIGATORY .&lt;br /&gt;PARAMETERS     : p_list  TYPE c NO-DISPLAY .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  IF sy-batch = 'X' AND p_list IS INITIAL .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*   Submit report and get list in memory&lt;/font&gt;&lt;br /&gt;    SUBMIT zpwtest EXPORTING LIST TO MEMORY&lt;br /&gt;                   WITH s_bukrs IN s_bukrs&lt;br /&gt;                   WITH p_list = 'X'&lt;br /&gt;               AND RETURN.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*   Get the list from memory.&lt;/font&gt;&lt;br /&gt;    CALL FUNCTION 'LIST_FROM_MEMORY'&lt;br /&gt;         TABLES&lt;br /&gt;              listobject = t_abaplist&lt;br /&gt;         EXCEPTIONS&lt;br /&gt;              not_found  = 1&lt;br /&gt;              OTHERS     = 2.&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;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*   Send report to mail receipent&lt;/font&gt;&lt;br /&gt;    PERFORM send_mail .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  ELSE.&lt;br /&gt;    PERFORM select_data .&lt;br /&gt;    PERFORM display_data .&lt;br /&gt;  ENDIF.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*SO_NEW_DOCUMENT_SEND_API1&lt;br /&gt;&amp;nbsp;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  select_data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM select_data.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  SELECT *&lt;br /&gt;    INTO TABLE t_t001&lt;br /&gt;    FROM t001&lt;br /&gt;   WHERE bukrs IN s_bukrs .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    " select_data&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  display_data&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM display_data.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;br /&gt;       EXPORTING&lt;br /&gt;            i_structure_name = 'T001'&lt;br /&gt;       TABLES&lt;br /&gt;            t_outtab         = t_t001&lt;br /&gt;       EXCEPTIONS&lt;br /&gt;            program_error    = 1&lt;br /&gt;            OTHERS           = 2.&lt;br /&gt;&amp;nbsp;&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;&amp;nbsp;&lt;br /&gt;ENDFORM.                    " display_data&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;      Form  send_mail&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM send_mail.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DATA: message_content LIKE soli OCCURS 10 WITH HEADER LINE,&lt;br /&gt;        receiver_list LIKE soos1 OCCURS 5 WITH HEADER LINE,&lt;br /&gt;        packing_list LIKE soxpl OCCURS 2 WITH HEADER LINE,&lt;br /&gt;        listobject LIKE abaplist OCCURS 10,&lt;br /&gt;        compressed_attachment LIKE soli OCCURS 100 WITH HEADER LINE,&lt;br /&gt;        w_object_hd_change LIKE sood1,&lt;br /&gt;        compressed_size LIKE sy-index.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*  Fot external email id&lt;br /&gt;*  receiver_list-recextnam = 'XXXXXXXXXXXX@XXXXXX.COM'.&lt;br /&gt;*  receiver_list-recesc = 'E'.&lt;br /&gt;*  receiver_list-sndart = 'INT'.&lt;br /&gt;*  receiver_list-sndpri = '1'.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;* FOr internal email id&lt;/font&gt;&lt;br /&gt;  receiver_list-recnam = sy-uname .&lt;br /&gt;  receiver_list-esc_des = 'B'.&lt;br /&gt;  APPEND receiver_list.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;* General data&lt;/font&gt;&lt;br /&gt;  w_object_hd_change-objla = sy-langu.&lt;br /&gt;  w_object_hd_change-objnam = 'Object name'.&lt;br /&gt;  w_object_hd_change-objsns = 'P'.&lt;br /&gt;&lt;font color="blue"&gt;* Mail subject&lt;/font&gt;&lt;br /&gt;  w_object_hd_change-objdes = 'Message subject'.&lt;br /&gt;&lt;font color="blue"&gt;* Mail body&lt;/font&gt;&lt;br /&gt;  APPEND 'Message content' TO message_content.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'TABLE_COMPRESS'&lt;br /&gt;       IMPORTING&lt;br /&gt;            compressed_size = compressed_size&lt;br /&gt;       TABLES&lt;br /&gt;            in              = t_abaplist&lt;br /&gt;            out             = compressed_attachment.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  DESCRIBE TABLE compressed_attachment.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CLEAR packing_list.&lt;br /&gt;  packing_list-transf_bin = 'X'.&lt;br /&gt;  packing_list-head_start = 0.&lt;br /&gt;  packing_list-head_num = 0.&lt;br /&gt;  packing_list-body_start = 1.&lt;br /&gt;  packing_list-body_num = sy-tfill.&lt;br /&gt;  packing_list-objtp = 'ALI'.&lt;br /&gt;  packing_list-objnam = 'Object name'.&lt;br /&gt;  packing_list-objdes = 'Attachment description'.&lt;br /&gt;  packing_list-objlen = compressed_size.&lt;br /&gt;  APPEND packing_list.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CALL FUNCTION 'SO_OBJECT_SEND'&lt;br /&gt;       EXPORTING&lt;br /&gt;            object_hd_change = w_object_hd_change&lt;br /&gt;            object_type      = 'RAW'&lt;br /&gt;            owner            = sy-uname&lt;br /&gt;       TABLES&lt;br /&gt;            objcont          = message_content&lt;br /&gt;            receivers        = receiver_list&lt;br /&gt;            packing_list     = packing_list&lt;br /&gt;            att_cont         = compressed_attachment.&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDFORM.                    " send_mail&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&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/5434181335871059817-8856899015044971396?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/8856899015044971396/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/send-report-as-attachment-in-background.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8856899015044971396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/8856899015044971396'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/send-report-as-attachment-in-background.html' title='Send report as attachment in background'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-3254133785046142698</id><published>2008-06-18T15:21:00.001+05:30</published><updated>2008-06-22T23:55:39.798+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Button on Selection-Screen</title><content type='html'>&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;REPORT zreport .&lt;br /&gt;TABLES: sscrfields.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA smp_dyntxt TYPE smp_dyntxt.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECTION-SCREEN FUNCTION KEY 1.&lt;br /&gt;PARAMETERS : p_m TYPE mara-matnr .&lt;br&gt;&lt;br&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; INITIALIZATION&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;INITIALIZATION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CLEAR smp_dyntxt.&lt;br /&gt;  smp_dyntxt-text = text-t01.&lt;br /&gt;  smp_dyntxt-icon_id = '@GX@'.&lt;br /&gt;  smp_dyntxt-icon_text = 'Icon'.&lt;br /&gt;  smp_dyntxt-quickinfo = 'Quick Info Text'.&lt;br /&gt;  smp_dyntxt-path = 'T'.&lt;br /&gt;  sscrfields-functxt_01 = smp_dyntxt.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;font color="blue"&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; AT SELECTION-SCREEN&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;AT SELECTION-SCREEN.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;  CASE sscrfields-ucomm.&lt;br /&gt;    WHEN 'FC01'.&lt;br /&gt;  ENDCASE .&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Here is the screen which you will get &lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SF5JMu22NiI/AAAAAAAABYs/pzHoquNuMCI/s400/icon-on-selection-screen.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-3254133785046142698?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/3254133785046142698/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/button-on-selection-screen.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3254133785046142698'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/3254133785046142698'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/button-on-selection-screen.html' title='Button on Selection-Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/pawankesari/SF5JMu22NiI/AAAAAAAABYs/pzHoquNuMCI/s72-c/icon-on-selection-screen.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-572456396689509799</id><published>2008-06-11T17:34:00.000+05:30</published><updated>2009-07-25T02:36:07.888+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Displaying Two ALV Grid on Screen</title><content type='html'>In this tutorial I will try to explain how to display multiple ALV Grid on a single screen. This is a very simple concept, to render or to draw a ALV grid on a screen you need a CONTAINER. Usually we create a CONTAINER with class CL_GUI_CUSTOM_CONTAINER and pass this CONTAINER object while creating ALV grid in parameter I_PARENT. Now to display multiple ALV grid you need multiple CONTAINER, here the class CL_GUI_EAST_SPLITTER_CONTAINER comes in the picture. This class divides a particular CONTAINER into two and give you two CONTAINER in return. How it divides depend on the parameter you pass while creating object. You can divide it horizontally by passing argument CL_GUI_EAST_SPLITTER_CONTAINER=&gt;ORIENTATION_HORIZONTAL or vertically by passing argument CL_GUI_EAST_SPLITTER_CONTAINER=&gt;orientation_VERTICAL. Since it will give you two CONTAINER you can further divide resulting CONATINER into two. So each time you create a object of CL_GUI_EAST_SPLITTER_CONTAINER you get one more CONTAINER. Finally you can use these CONATINER to create ALV Grids, or any GUI controls for example CL_GUI_ALV_TREE or CL_GUI_MOVIE (SAP Movie Control.. sounds interesting).&lt;br /&gt;&lt;br /&gt;If you are confuse with above explanation then just forgot it and see the example. I have created a SCREEN 100 with custom container name 'CONTAINER'.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SE_TSrCo7ZI/AAAAAAAABUo/Sh9cdxuuuDA/s800/custom.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Below is the code for above screen shot.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;REPORT zreport.&lt;br /&gt;TABLES : scarr .&lt;br /&gt;DATA : it_scarr TYPE TABLE OF scarr .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;DATA : ob_custom TYPE REF TO cl_gui_custom_container ,&lt;br /&gt;       ob_split1 TYPE REF TO cl_gui_easy_splitter_container ,&lt;br /&gt;       ob_split2 TYPE REF TO cl_gui_easy_splitter_container ,&lt;br /&gt;       ob_grid1  TYPE REF TO cl_gui_alv_grid ,&lt;br /&gt;       ob_grid2  TYPE REF TO cl_gui_alv_grid ,&lt;br /&gt;       ob_grid3  TYPE REF TO cl_gui_alv_grid .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT-OPTIONS : s_carrid FOR scarr-carrid .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;SELECT *&lt;br /&gt;  INTO TABLE it_scarr&lt;br /&gt;  FROM scarr&lt;br /&gt; WHERE carrid IN s_carrid .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CALL SCREEN 100 .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Module status_0100 OUTPUT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;* text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;MODULE status_0100 OUTPUT.&lt;br /&gt;   SET TITLEBAR 'ZTITLE01' .&lt;br /&gt;   SET PF-STATUS 'ZPF01' .&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;* This will create a container&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   CREATE OBJECT ob_custom&lt;br /&gt;      EXPORTING&lt;br /&gt;        container_name = 'CONTAINER' .&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;* This spit the container OB_CUSTOM into two&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;   CREATE OBJECT ob_split1&lt;br /&gt;      EXPORTING&lt;br /&gt;        parent = ob_custom&lt;br /&gt;        orientation = cl_gui_easy_splitter_container=&gt;orientation_vertical .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;* Now we have two container&lt;br /&gt;* OB_SPLIT1-&gt;TOP_LEFT_CONTAINER&lt;br /&gt;* OB_SPLIT1-&gt;BOTTOM_RIGHT_CONTAINER&lt;br /&gt;* Since these two are itself a container we can further devide them into two.&lt;br /&gt;* Let try to divide OB_SPLIT1-&gt;BOTTOM_RIGHT_CONTAINER into two&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;    CREATE OBJECT ob_split2&lt;br /&gt;       EXPORTING&lt;br /&gt;          parent = ob_split1-&gt;bottom_right_container&lt;br /&gt;          orientation = cl_gui_easy_splitter_container=&gt;orientation_horizontal .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;* Now we have total 3 container available with us&lt;br /&gt;* OB_SPLIT1-&gt;TOP_LEFT_CONTAINER&lt;br /&gt;* OB_SPLIT2-&gt;TOP_LEFT_CONTAINER&lt;br /&gt;* OB_SPLIT2-&gt;BOTTOM_RIGHT_CONTAINER&lt;br /&gt;* Note that OB_SPLIT1-&gt;BOTTOM_RIGHT_CONTAINER is not available because we divided&lt;br /&gt;* that into two.&lt;br /&gt;* Now Put a grid in each container&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CREATE OBJECT ob_grid1&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_parent = ob_split1-&gt;top_left_container .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CREATE OBJECT ob_grid2&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_parent = ob_split2-&gt;top_left_container .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CREATE OBJECT ob_grid3&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_parent = ob_split2-&gt;bottom_right_container .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CALL METHOD ob_grid1-&gt;set_table_for_first_display&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_structure_name = 'SCARR'&lt;br /&gt;      CHANGING&lt;br /&gt;        it_outtab = it_scarr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CALL METHOD ob_grid2-&gt;set_table_for_first_display&lt;br /&gt;      EXPORTING&lt;br /&gt;         i_structure_name = 'SCARR'&lt;br /&gt;      CHANGING&lt;br /&gt;         it_outtab = it_scarr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;   CALL METHOD ob_grid3-&gt;set_table_for_first_display&lt;br /&gt;      EXPORTING&lt;br /&gt;        i_structure_name = 'SCARR'&lt;br /&gt;      CHANGING&lt;br /&gt;        it_outtab = it_scarr.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;ENDMODULE. " status_0100 OUTPUT&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="font-family:courier new;color:#000099;"&gt;&lt;strong&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp;amp; Module user_command_0100 INPUT&lt;br /&gt;*&amp;amp;---------------------------------------------------------------------*&lt;br /&gt;* text&lt;br /&gt;*----------------------------------------------------------------------*&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;MODULE user_command_0100 INPUT.&lt;br /&gt;&lt;br /&gt;   IF sy-ucomm = 'BACK' OR sy-ucomm = 'EXIT' .&lt;br /&gt;      FREE : ob_grid1 ,&lt;br /&gt;             ob_grid2 ,&lt;br /&gt;             ob_grid3 ,&lt;br /&gt;             ob_split1 ,&lt;br /&gt;             ob_split2 ,&lt;br /&gt;             ob_custom .&lt;br /&gt;&lt;br /&gt;       LEAVE TO SCREEN 0 .&lt;br /&gt;   ENDIF.&lt;br /&gt;&lt;br /&gt;ENDMODULE. " user_command_0100 INPUT&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Recommended blogs&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/07/display-alv-grid-oop-fullscreen.html"&gt;Display ALV Grid (OOP) Fullscreen&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/use-of-application-log-fms-to-display.html"&gt;Use of Application Log FMs to display Message List/Log&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/creating-custom-page-format-for.html"&gt;Creating custom page format for sapscript/smartform&lt;/a&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2009/05/reset-alv-export-option-for-user.html"&gt;Reset ALV Export Option for User&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-572456396689509799?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/572456396689509799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/displaying-two-alv-grid-on-screen.html#comment-form' title='20 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/572456396689509799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/572456396689509799'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/displaying-two-alv-grid-on-screen.html' title='Displaying Two ALV Grid on Screen'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pawankesari/SE_TSrCo7ZI/AAAAAAAABUo/Sh9cdxuuuDA/s72-c/custom.JPG' height='72' width='72'/><thr:total>20</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-809315598588416807</id><published>2008-06-11T14:31:00.000+05:30</published><updated>2008-06-11T17:11:12.772+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Utility'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Function Module for getting information of Dictionary Object</title><content type='html'>&lt;table width="100%" border=1&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_DOMA_GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;To get information of domain e.g. data type, length, value table, check table and also value range.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_DTEL_GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;To get information of Data Element e.g. description, output length, memory id, texts etc.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_TABL_GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;To get information of Data Dictionary Table, its give type of table, field name, corresponding data element and domain. Bassically all the information available in SE11 will be provided by this FM. It can also be used to get information for structures.&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_TABT_PUT&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;To get information of Technical Setting of table&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_TTYP_GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;To read information of a Table Type from the ABAP Dictionary&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;strong&gt;DDIF_VIEW_GET&lt;/strong&gt;&lt;/td&gt;&lt;td&gt;Reads the Dictionary sources of a view.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-809315598588416807?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/809315598588416807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/function-module-for-getting-information.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/809315598588416807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/809315598588416807'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/function-module-for-getting-information.html' title='Function Module for getting information of Dictionary Object'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-5159927337033049965</id><published>2008-06-05T19:27:00.000+05:30</published><updated>2008-07-03T16:33:07.042+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='HR ABAP'/><title type='text'>HR ABAP 02 - Getting Started - LDB PNP</title><content type='html'>This blog belong to the series of blogs on HR ABAP. You may like to read following blogs first before you read this one.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://sample-code-abap.blogspot.com/2008/05/hr-abap-data-stuctures-infotypes.html"&gt;HR ABAP 01- Data Stuctures - Infotypes Explained&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Assuming that you already have knowledge of ABAP, I will try to explain thing specific/different to HR-ABAP. So when I write statement INCLUDE or TABLE I will not explain the meaning of it, rather I will more concentrate on the syntax uncommon to ABAP but required in HR-ABAP.&lt;br /&gt;&lt;br /&gt;Logical database PNP can be activated/used by specifying it in program attributes in SE38. We use logical database in HR ABAP to retrieve data. It fulfill three main function:&lt;br /&gt;&lt;br /&gt;1. Logical database take care of the relation between the infotypes and retrieve correct information for you for each employee. You don’t have to worry about the primary key and foreign key extra.&lt;br /&gt;2. It provides you a consistent selection screen and automatic screening of data based on the input by user on selection screen.&lt;br /&gt;3. Last but not the least is implicit authorization check. Authorization issue is taken care by logical database centrally.&lt;br /&gt;&lt;br /&gt;This how a selection screen will look when you use logical database PNP (by default).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEfweyD48oI/AAAAAAAABRc/fddsllUsTZA/s400/hr-1-02.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Consider following piece of code…&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SEfweWLZPqI/AAAAAAAABRU/gGbqkIEj3jA/s400/hr-1-01.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;The INFOTYPE nnnn statement creates an internal table with the name Pnnnn for each declared infotype.&lt;br /&gt;&lt;br /&gt;When the GET event occurs, the tabke of declared infotypes are filled with all of the record that exist for personnel number. The field PERNR-PERNE contains the personnel number.&lt;br /&gt;&lt;br /&gt;When the GET event occurs, all internal infotype tables are filled. Therefore, only declare the infotypes you wish to process.&lt;br /&gt;&lt;br /&gt;PROVIDE..ENDPROVIDE statement loops at all records of P0002 whose validity period overlaps the period selected in selection-screen. Selection-screen period is stored in PN-BEGDA and PN-ENDDA. PN Structure is defines in include DBDPNPCOM.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEfwgqjx1AI/AAAAAAAABRk/ySWPUnnV0Lw/s400/hr-1-03.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;For example, if you choose current year in selection-screen, PN-BEGDA contains the first day of the year and PN-ENDDA contains the last day of the year. If you do not enter any data for the period in selection screen , PN-BEGDA contains the low date (01-01-1800) and PN-ENNDA contains the high date (31-12-9999) .&lt;br /&gt;&lt;br /&gt;PROVIDE.. ENDPROVIDE can be replaced by LOOP.. ENLOOP statement, however PROVIDE.. ENDPROVIDE offer a wide variety of options.&lt;br /&gt;&lt;br /&gt;For example, if the infotype you are processing contains subtype then you must include WHERE option in PROVIDE..ENDPROVIDE. In below example, processing of the infotype Address (0006) is restricted to subtype 1 (Permanent Address).&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEfwhAmfEXI/AAAAAAAABRs/sSU_q_fW5JI/s288/hr-1-04.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Frequently, you only want to display employees with data of specific infotype. In this case use the CHECK LINES(Pnnnn) statement to determine the number of filled line of an infotype table. See screen-shot below.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEfwiC5zcNI/AAAAAAAABR0/mJXbpMzmYgs/s288/hr-1-05.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;PROVIDE..ENDPROVIDE provides data for a specific period, that is according to the data selection period. In case more than one data exist for a specific period, only most recent or olderst infotype record is required from the selected period, rather than all of the records. The &lt;a href="http://help.sap.com/saphelp_46c/helpdata/en/60/d8bc17576311d189270000e8322f96/content.htm"&gt;RP_PROVIDE_FROM_LAST&lt;/a&gt; and &lt;a href="http://help.sap.com/saphelp_46c/helpdata/en/60/d8bc0a576311d189270000e8322f96/content.htm"&gt;RP_PROVIDE_FROM_FRST&lt;/a&gt; macro can be used in such situation.&lt;br /&gt;&lt;br /&gt;Once again consider the selection-screen of a typical HR-ABAP report.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEfweyD48oI/AAAAAAAABRc/fddsllUsTZA/s400/hr-1-02.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;Selection-screen is divided in two parts namely period and personal selection. Person selection is used to determine a group of employees for whom an evaluation takes place. For example, all of the monthly wage earners in a particular personnel subarea. The selection screen enables you to change the sort sequence for HR records.&lt;br /&gt;&lt;br /&gt;The data from the start and end dates of the data selection period is transferred to fields PN-BEGDA and PN-ENDDA. If you use a data selection period, infotype data records are entered in the PROVIDE loop of their validity periods overlap with the period selected by at least one day.&lt;br /&gt;&lt;br /&gt;The start and end dated of the person selection period that are entered by the use are available in the field PN-BEGPS and PN-ENDPS. This interval is the criterion used for selecting personnel number to be processed. All personnel numbers that fulfill the selection criteria specified at any given time in the person selection period entered by the user are used in processing.&lt;br /&gt;&lt;br /&gt;If the period is specified using radio button, the fields PN-BEGDA/ENDDA and PN-BEGPS/ENDPS contains the same period.&lt;br /&gt;&lt;br /&gt;All the selection-screen parameters define in report will appear after these two blocks.&lt;br /&gt;&lt;br /&gt;All the fields are defined in include DBPNPSEL; as usual initial values can be set in INITIALIZATION event.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-5159927337033049965?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/5159927337033049965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/hr-abap-02-getting-started-ldb-pnp.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5159927337033049965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/5159927337033049965'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/06/hr-abap-02-getting-started-ldb-pnp.html' title='HR ABAP 02 - Getting Started - LDB PNP'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh3.ggpht.com/pawankesari/SEfweyD48oI/AAAAAAAABRc/fddsllUsTZA/s72-c/hr-1-02.jpg' height='72' width='72'/><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6227386868891125564</id><published>2008-05-31T15:34:00.002+05:30</published><updated>2010-10-12T17:41:25.711+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='HR ABAP'/><title type='text'>HR ABAP 01- Data Stuctures - Infotypes Explained</title><content type='html'>Infotypes are information unit in HR. You can call Infotypes a structure, but if you do so then there will not be any difference in ABAP and HR-ABAP. &lt;br /&gt;Groups of related data fields are bundled into Infotypes. Infotypes facilitates data entry and allow data to be saved for specific period; it serves as template for users to enter data. There is a time constraint in Infotypes, which determine how Infotype react to each other in terms of time. Several Infotypes have subtypes, which breakdown information further.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SEPv_FTaiRI/AAAAAAAABN8/4069xnIjoUI/s400/hr1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Database in HR includes transparent table and Cluster tables. Pannnn, PBnnnn and HRPnnnn are the transparent table and PCLn are clustered tables. In HR programming data is not directle extracted from these tables. &lt;br /&gt;&lt;br /&gt;Infotypes are grouped in different number range.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;table border=1 width="100%"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;0000-0999&lt;/td&gt;&lt;td&gt;HR Master data&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;1000-1999&lt;/td&gt;&lt;td&gt;Personal Planning&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;2000-2999&lt;/td&gt;&lt;td&gt;Time Management&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;4000-4999&lt;/td&gt;&lt;td&gt;Recruitment&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;9000-9999&lt;/td&gt;&lt;td&gt;Customer Specific&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Technical Data Structures of Infotypes in Personal Administration&lt;/strong&gt;&lt;br /&gt;Each PAnnnn infotype table is defined in ABAP Dictionary using structure PAKEY, PSHD1 and PSnnnn.  PAKEY and PSHD1 contains infotype table key field and administrative information on the infotype record. PSnnnn actually contains infotype specific information and data.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.ggpht.com/pawankesari/SEPwEx0dJ_I/AAAAAAAABOE/BgZ7Md06MC8/s400/hr3.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Each personnel administration infotype contains an include CI_Pnnnn in data structure PSnnnn. Customer-specific fields can be added to this include as enhancement to an infotype. In standard SAP system this include is empty.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh5.ggpht.com/pawankesari/SEPwFWv0H1I/AAAAAAAABOM/0VeCi7PG6WE/s400/hr2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;Logical structure Pnnnn is used within program to store the data from Infotypes. The structure of Pnnnn is given below. No data record exits in database for this structure. These logical structures are primarily used in HR to avoid direct database access.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SEPwFshAjZI/AAAAAAAABOU/m2HOqLFDYKk/s400/hr4.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;The Pnnnn structure contains an infotype's key fields and data fields. It contains INFTY field for infotype number, it does not contains MANDT field.&lt;br /&gt;&lt;br /&gt;Structure Qnnnn exists for many infotypes. It contains screen field for data entry.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Control Data for Infotypes.&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Each infotype have several dependent objects. Table T777D contains name for all infotype-dependent repository object such as table, structures, program subtypes and idocs.&lt;br /&gt;&lt;br /&gt;Table T77ID supplements the above table for reason of memory space.&lt;br /&gt;&lt;br /&gt;Apart from above two table T582A and T77CD exists to enable customer-specific setting for administration and planning respectively.&lt;br /&gt;&lt;br /&gt;Report RHT777DCHECK can be used to see whether a infotype is consistently defined in the SAP System or not.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Subtypes&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Subtypes are used to further break down infotypes, for example, to further classify infotype 0006 into main address, second address, business address and so on. As explained about subtype information can be found in control table T777D. Usually subtype field is SUBTY however it may also be field other than that and contains value of the subtype. In that case table T777D will have that information. See screen shot below for the subtype field for infotype 0006.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEPwF-24VjI/AAAAAAAABOc/jTHP4LwYtVw/s400/hr5.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.ggpht.com/pawankesari/SEPwG2dItfI/AAAAAAAABOs/11reN9qSFlI/s400/hr6.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.ggpht.com/pawankesari/SEPwGYVZBHI/AAAAAAAABOk/iloUzxSwb1s/s400/hr7.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6227386868891125564?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6227386868891125564/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/hr-abap-data-stuctures-infotypes.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6227386868891125564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6227386868891125564'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/hr-abap-data-stuctures-infotypes.html' title='HR ABAP 01- Data Stuctures - Infotypes Explained'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/pawankesari/SEPv_FTaiRI/AAAAAAAABN8/4069xnIjoUI/s72-c/hr1.JPG' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-1845684921587560792</id><published>2008-05-19T21:21:00.000+05:30</published><updated>2008-06-03T16:04:01.874+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Debug a Background Job</title><content type='html'>How to debug a background job?&lt;br /&gt;Goto SM37 select the job which you want to debug and type &lt;strong&gt;JDBG&lt;/strong&gt; in the OK-code, press Enter. Remember the key word JDBG.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-1845684921587560792?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/1845684921587560792/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/debug-background-job.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1845684921587560792'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/1845684921587560792'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/debug-background-job.html' title='Debug a Background Job'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4157339355153511304</id><published>2008-05-09T19:38:00.000+05:30</published><updated>2008-05-09T19:41:55.412+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Smartforms'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP Notes'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Problem with Printing Page Number in Smartforms</title><content type='html'>Total page number is displayed as '*'. A Smart Form has 10 or more pages. If you use SFSY-FORMPAGES to display the total number of pages, then you see only '*' on all pages between 1 and 9.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Reason&lt;/strong&gt; Error in the 'symbol_write' subroutine. The length of SFSY_FORMPAGES was processed incorrect, even if you reserved enough space by using a formatting option like (3ZC).&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Solution&lt;/strong&gt; Apply  SAP Note Number: 779492&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-4157339355153511304?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4157339355153511304/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/problem-with-printing-page-number-in.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4157339355153511304'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4157339355153511304'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/05/problem-with-printing-page-number-in.html' title='Problem with Printing Page Number in Smartforms'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7443001286566013461</id><published>2008-02-18T20:02:00.002+05:30</published><updated>2011-07-08T18:49:37.912+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Dynamic'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Dynamic Selection Screen/Capturing Option button click</title><content type='html'>This sample code illustrate how to captue a click of option button on selection screen and then based on the option button selected respective input will be made available to user to input data.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px; font-size: medium"&gt;&lt;pre class="jive-pre"&gt;&lt;code class="jive-code jive-java"&gt;REPORT zpwtest.&lt;br /&gt;&amp;nbsp;&lt;br /&gt;TABLES : mara ,&lt;br /&gt;t001 ,&lt;br /&gt;t001w .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;CONSTANTS : c_yes TYPE c VALUE '1' ,&lt;br /&gt;c_no TYPE c VALUE '0' .&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;*Define three option button with USER-COMMAND clause&lt;br /&gt;*Note the in option button group you can specify USER-COMMAND only once&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;PARAMETERS : p_opt1 TYPE c RADIOBUTTON GROUP radi USER-COMMAND op1 , "Material&lt;br /&gt;p_opt2 TYPE c RADIOBUTTON GROUP radi ,                  "Company Code&lt;br /&gt;p_opt3 TYPE c RADIOBUTTON GROUP radi .                  "Plant&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#3333ff;"&gt;*Define user inputs for respective option button, uset MODIF ID&lt;br /&gt;*to identify the control as run time&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;SELECT-OPTIONS : s_mara FOR mara-matnr MODIF ID op1 , &lt;span style="color:#3333ff;"&gt;"Material &lt;/span&gt;&lt;br /&gt;s_bukrs FOR t001-bukrs MODIF ID op2 , &lt;span style="color:#3333ff;"&gt;"Company Code&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;s_werks FOR t001w-werks MODIF ID op3 . &lt;span style="color:#3333ff;"&gt;"Plant&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;*At selecttion screen output act as PBO where we can change the screen&lt;br /&gt;*attributes, inside LOOP AT SCREEN&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;AT SELECTION-SCREEN OUTPUT .&lt;br /&gt;&lt;br /&gt;LOOP AT SCREEN .&lt;br /&gt;&lt;br /&gt;IF screen-group1 = 'OP1' .&lt;br /&gt;IF p_opt1 = 'X' .&lt;br /&gt;screen-invisible = c_no .&lt;br /&gt;screen-active = c_yes .&lt;br /&gt;ELSE.&lt;br /&gt;screen-invisible = c_yes .&lt;br /&gt;screen-active = c_no .&lt;br /&gt;ENDIF.&lt;br /&gt;MODIFY SCREEN .&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;IF screen-group1 = 'OP2' .&lt;br /&gt;IF p_opt2 = 'X' .&lt;br /&gt;screen-invisible = c_no .&lt;br /&gt;screen-active = c_yes .&lt;br /&gt;ELSE.&lt;br /&gt;screen-invisible = c_yes .&lt;br /&gt;screen-active = c_no .&lt;br /&gt;ENDIF.&lt;br /&gt;MODIFY SCREEN .&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;IF screen-group1 = 'OP3' .&lt;br /&gt;IF p_opt3 = 'X' .&lt;br /&gt;screen-invisible = c_no .&lt;br /&gt;screen-active = c_yes .&lt;br /&gt;ELSE.&lt;br /&gt;screen-invisible = c_yes .&lt;br /&gt;screen-active = c_no .&lt;br /&gt;ENDIF.&lt;br /&gt;MODIFY SCREEN .&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;ENDLOOP.&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.google.com/pawankesari/R7mWwkmWOkI/AAAAAAAAAqA/ToiqsjZEmeI/s400/opt1.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh6.google.com/pawankesari/R7mWzkmWOlI/AAAAAAAAAqI/eoojeoMmIw4/s400/opt2.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh4.google.com/pawankesari/R7mW0EmWOmI/AAAAAAAAAqQ/fHLD8J76uAo/s400/opt3.JPG" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7443001286566013461?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7443001286566013461/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/dynamic-selection-screencapturing.html#comment-form' title='10 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7443001286566013461'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7443001286566013461'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/dynamic-selection-screencapturing.html' title='Dynamic Selection Screen/Capturing Option button click'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>10</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7023738523638994803</id><published>2008-02-12T22:41:00.000+05:30</published><updated>2008-02-12T23:18:04.438+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='SAP MM'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>SAP MM Document Flow, Transaction and Tables</title><content type='html'>MM Process Flow&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Purchase Requisition (ME51N)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Material requirement are identified either by the user, department or via material planning and control. For example a MRP Run in production planning or material falling short of reorder-point can automatically generate Purchase Requisition. At the same time PR can be created manually in the system.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Source Determination - RFQ (ME41)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Identify the possible source of supply based on the past order and existing long term purchase contract. Then create Request for Quotation, which can be then sent electronically to vendors.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Vendor Selection and Comparision of Quotation (ME49)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;After receiving quotation system is capable to simulate pricing scenarios, allowing user to compare number of quotations and sent rejection letter automarically.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Purchase Order (ME21N)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Data from Quotation or Purchase Requisition can be adopted to create Purchase Orders. Purchase Order is then sent to Vendor to supply the goods.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Purchase Order Follow ups ME91, ME91F, ME92F&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Reminder can be sent to vendors at predefined intervals.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Goods Receipts (MB01)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Goods were received.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;7. Invoice Verification (MIRO)&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Along with the goods vendor also submits Invoice, system verifies then invoice against the quantity received and PO data. The account payable clerk is notified.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Important Transactions in MM &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;MM01&lt;/strong&gt; Material Creation&lt;br /&gt;&lt;strong&gt;Me51N&lt;/strong&gt; Purchase Requisition&lt;br /&gt;&lt;strong&gt;Me41&lt;/strong&gt; Request for Quotation&lt;br /&gt;&lt;strong&gt;Me49&lt;/strong&gt; Comparision of Quotation&lt;br /&gt;&lt;strong&gt;Me21N&lt;/strong&gt; Purchase Order Creation&lt;br /&gt;&lt;strong&gt;MIGO, MB01&lt;/strong&gt; Goods Receipt&lt;br /&gt;&lt;strong&gt;MIRO&lt;/strong&gt; Invoice Verification&lt;br /&gt;&lt;strong&gt;MB1A&lt;/strong&gt; Good Issue&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Tables in MM&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;MARA&lt;/strong&gt; Material General&lt;br /&gt;&lt;strong&gt;MARC&lt;/strong&gt; Material Plant Data&lt;br /&gt;&lt;strong&gt;MAKT &lt;/strong&gt;Material Description&lt;br /&gt;&lt;strong&gt;MARD&lt;/strong&gt; Material Storage Location Data&lt;br /&gt;&lt;strong&gt;MAST&lt;/strong&gt; Material BOM Link&lt;br /&gt;&lt;strong&gt;MBEW&lt;/strong&gt; Material Valuation&lt;br /&gt;&lt;strong&gt;MKPF&lt;/strong&gt; Material Document Header&lt;br /&gt;&lt;strong&gt;MSEG&lt;/strong&gt; Mateial Document Line Item&lt;br /&gt;&lt;strong&gt;MVKE&lt;/strong&gt; Mateial Sales Data&lt;br /&gt;&lt;strong&gt;T023&lt;/strong&gt; Material Group&lt;br /&gt;&lt;strong&gt;T024&lt;/strong&gt; Pruchase Organisation&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EBAN&lt;/strong&gt; Purchase Requisition&lt;br /&gt;&lt;strong&gt;EBKN&lt;/strong&gt; Account Assignment Purchase Requisition&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EINA&lt;/strong&gt; Purchasing Info Record - General Data&lt;br /&gt;&lt;strong&gt;EINE&lt;/strong&gt; Purchase Info Record - Purchase Organisation Data&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;EKKO&lt;/strong&gt; Purchase Order Header Data&lt;br /&gt;&lt;strong&gt;EKPO&lt;/strong&gt; Purchase Order Line Item Data&lt;br /&gt;&lt;strong&gt;EKKN&lt;/strong&gt; Account Assignment Purchase Order&lt;br /&gt;&lt;strong&gt;EKBE&lt;/strong&gt; History Purchase Order&lt;br /&gt;&lt;strong&gt;EKET&lt;/strong&gt; Scheduling Agreement Purchase Order&lt;br /&gt;&lt;strong&gt;EKAB&lt;/strong&gt; Release Documentation&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-7023738523638994803?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7023738523638994803/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/sap-mm-document-flow-transaction-and.html#comment-form' title='5 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7023738523638994803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7023738523638994803'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/sap-mm-document-flow-transaction-and.html' title='SAP MM Document Flow, Transaction and Tables'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>5</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-840519145092114323</id><published>2008-02-07T18:22:00.000+05:30</published><updated>2008-06-11T20:29:12.398+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Selection-Screen'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Restrict options available with SELECT-OPTIONS</title><content type='html'>&lt;strong&gt;Type : Sample Code&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Coded/Tested on Ver : SAP R/3 Enterprise&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;FM to SELECT_OPTIONS_RESTRICT can be use to supress options available with a SELECT-OPTIONS on a selection screen.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;REPORT zpwtest.&lt;br /&gt;&lt;br /&gt;*Include type pool SSCR &lt;br /&gt;TYPE-POOLS sscr.&lt;br /&gt;TABLES : marc.&lt;br /&gt;&lt;br /&gt;*Define the object to be passed to the RESTRICTION parameter&lt;br /&gt;DATA restrict TYPE sscr_restrict.&lt;br /&gt;&lt;br /&gt;*Auxiliary objects for filling RESTRICT &lt;br /&gt;DATA : optlist TYPE sscr_opt_list,&lt;br /&gt;ass TYPE sscr_ass.&lt;br /&gt;&lt;br /&gt;*Defining the selection-screen &lt;br /&gt;SELECT-OPTIONS : s_matnr FOR marc-matnr,&lt;br /&gt;s_werks FOR marc-werks.&lt;br /&gt;&lt;br /&gt;INITIALIZATION.&lt;br /&gt;&lt;br /&gt;*Restricting the MATNR selection to only EQ and 'BT'.&lt;br /&gt;optlist-name = 'OBJECTKEY1'.&lt;br /&gt;optlist-options-eq = 'X'.&lt;br /&gt;optlist-options-bt = 'X'.&lt;br /&gt;APPEND optlist TO restrict-opt_list_tab. &lt;br /&gt;&lt;br /&gt;ass-kind = 'S'.&lt;br /&gt;ass-name = 'S_MATNR'.&lt;br /&gt;ass-sg_main = 'I'.&lt;br /&gt;ass-sg_addy = space.&lt;br /&gt;ass-op_main = 'OBJECTKEY1'.&lt;br /&gt;APPEND ass TO restrict-ass_tab.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.google.com/pawankesari/R6sCQUCijJI/AAAAAAAAAo4/AsdrKCM2VTk/s400/Restrict_SO_02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;*Restricting the WERKS selection to CP, GE, LT, NE.&lt;br /&gt;optlist-name = 'OBJECTKEY2'.&lt;br /&gt;optlist-options-cp = 'X'.&lt;br /&gt;optlist-options-ge = 'X'.&lt;br /&gt;optlist-options-lt = 'X'.&lt;br /&gt;optlist-options-ne = 'X'.&lt;br /&gt;APPEND optlist TO restrict-opt_list_tab. &lt;br /&gt;&lt;br /&gt;ass-kind = 'S'.&lt;br /&gt;ass-name = 'S_WERKS'.&lt;br /&gt;ass-sg_main = 'I'.&lt;br /&gt;ass-sg_addy = space.&lt;br /&gt;ass-op_main = 'OBJECTKEY2'.&lt;br /&gt;APPEND ass TO restrict-ass_tab.&lt;br /&gt;&lt;br /&gt;&lt;img src="http://lh3.google.com/pawankesari/R6sCQUCijJI/AAAAAAAAAo4/AsdrKCM2VTk/s400/Restrict_SO_02.JPG" /&gt;&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'&lt;br /&gt;EXPORTING&lt;br /&gt;restriction = restrict&lt;br /&gt;EXCEPTIONS&lt;br /&gt;too_late = 1&lt;br /&gt;repeated = 2&lt;br /&gt;selopt_without_options = 3&lt;br /&gt;selopt_without_signs = 4&lt;br /&gt;invalid_sign = 5&lt;br /&gt;empty_option_list = 6&lt;br /&gt;invalid_kind = 7&lt;br /&gt;repeated_kind_a = 8&lt;br /&gt;OTHERS = 9.&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;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-840519145092114323?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/840519145092114323/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/restrict-options-available-with-select.html#comment-form' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/840519145092114323'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/840519145092114323'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/restrict-options-available-with-select.html' title='Restrict options available with SELECT-OPTIONS'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-4482130133360794988</id><published>2008-02-01T15:18:00.000+05:30</published><updated>2008-02-01T21:17:12.937+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Applying Change Document Technique on you Custom Table</title><content type='html'>&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Type : Tutorial&lt;br /&gt;Coded/Tested on Ver : SAP R/3 Enterprise&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Change document concept is used to track down changes made to the data SAP. Whenever there is a change in data Change documents are created and stored in table CDHR, CDPOS. Data stored in table CDHDR and CDPOS, records all aspect of the changes made for example date, time, userid, table name, field name, old values, new values, currency and unit value if value changed happens to be price or quantity.&lt;br /&gt;&lt;br /&gt;When you create custom table you need to follow some step before this whole concept work for you to record the changes. Overall there are three activities&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;1. Mark 'Change document' &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Mark 'Change document' checkbox of data elememt of each field where you want the changes to be logged. Later on when system goes to log the changes, the dictionary is searched for which fields are to be logged for each table in the object definition.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5162016427009543250"&gt;&lt;img src="http://lh5.google.com/pawankesari/R6Mql0CijFI/AAAAAAAAAmU/yoVwOMUWl08/s400/SCDO_00.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;strong&gt;2. Create 'Change Document Object' using transaction SCDO &lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A change document object definition contains the tables which represent a commercial object in the system. The definition can also specify whether the deletion of individual fields is to be documented. If a table contains fields whose values refer to units and currency fields, the associated table, containing the units and currencies, can also be specified.&lt;br /&gt;&lt;br /&gt;2.a . Run transaction SCDO and press Create button&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161983974236654498"&gt;&lt;img src="http://lh5.google.com/pawankesari/R6MNE0Cii6I/AAAAAAAAAjc/8U3aoJ93oh8/s288/SCDO_01.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.b. Enter name of the object class, this will be represent your object centrally in Change Document.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161983978531621810"&gt;&lt;img src="http://lh6.google.com/pawankesari/R6MNFECii7I/AAAAAAAAAjk/Flwv-8vdIls/s400/SCDO_02.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.c. On next screen enter description of the object then add tables to it. In this example we have only one table 'ZMM_REQ_MATTYP', however in real life scenario a object class can have more than one table. For example the object class BANF was defined for the change document object "Purchase requisition", which consists of the tables EBAN (purchase requisition) and EBKN (purchase requisition account assignment).&lt;br /&gt;&lt;br /&gt;In case of a object class with multiple table we use Object ID to differentiate between different table, .e.g. The object value BANF with the object ID "3000000000" consists of the records of the tables EBAN and EBKN with the order number "3000000000".&lt;br /&gt;&lt;br /&gt;After inputting all relevant tables, choose Insert entries. The new entries are copied into the display. Then save your record.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161983982826589122"&gt;&lt;img src="http://lh3.google.com/pawankesari/R6MNFUCii8I/AAAAAAAAAjs/gpMkYEXv06g/s400/SCDO_03.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.d. We need to generate the Function Module which we will use in our program to create Change Document. We need to call these function module each time we perform any modification on data. Choose 'Generate update pgm' from Utilities menu.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161983991416523746"&gt;&lt;img src="http://lh5.google.com/pawankesari/R6MNF0Cii-I/AAAAAAAAAj8/1UrU1z7XWt4/s400/SCDO_05.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.e. Input function group name and press 'Generate' button.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161983995711491058"&gt;&lt;img src="http://lh6.google.com/pawankesari/R6MNGECii_I/AAAAAAAAAkE/xigDg_Un3TU/s400/SCDO_06.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.f. Confirm following information and press 'Save' button&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161984000006458370"&gt;&lt;img src="http://lh3.google.com/pawankesari/R6MNGUCijAI/AAAAAAAAAkM/RJOgW3z69aQ/s400/SCDO_07.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You will get message 'All generation made for object xxxxx' if everything goes well..&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161984000006458386"&gt;&lt;img src="http://lh3.google.com/pawankesari/R6MNGUCijBI/AAAAAAAAAkU/mi9kLowZJ-k/s400/SCDO_08.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Above procedure will create function group with function module Z&lt;em&gt;object_name&lt;/em&gt;_WRITE_DOCUMENT. We need to call this function module before we execute any MODIFY, INSERT or DELETE command&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161984004301425698"&gt;&lt;img src="http://lh4.google.com/pawankesari/R6MNGkCijCI/AAAAAAAAAkc/s7ytWVmoxsc/s400/SCDO_09.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161984021481294898"&gt;&lt;img src="http://lh4.google.com/pawankesari/R6MNHkCijDI/AAAAAAAAAkk/FfllEA9siyU/s400/SCDO_10.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5162014773447134274"&gt;&lt;img src="http://lh4.google.com/pawankesari/R6MpFkCijEI/AAAAAAAAAlw/Yv4xIN8YSD8/s400/SCDO_11.JPG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-4482130133360794988?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/4482130133360794988/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/applying-change-document-technique-on.html#comment-form' title='8 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4482130133360794988'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/4482130133360794988'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/02/applying-change-document-technique-on.html' title='Applying Change Document Technique on you Custom Table'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>8</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7418159107683223623</id><published>2008-01-31T20:37:00.002+05:30</published><updated>2010-01-21T20:45:47.149+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='ALV List'/><category scheme='http://www.blogger.com/atom/ns#' term='Report'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Multiple Lines Header and Records in ALV List</title><content type='html'>&lt;strong&gt;Type : Sample Code&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Coded/Tested on Ver : SAP R/3 Enterprise &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Few days back I faced a wierd user requirement to print multiple line header in ALV. Thank god user agreed to do this report in ALV List, in which I managed to print the header in multiple lines. Here is the sample program which shows how to achieve this functionality. Using similar technique one can print a long record in multiple lines. See screen shot below. Last column of the report is printed in multiple rows. Function Module &lt;strong&gt;RKD_WORD_WRAP &lt;/strong&gt;is used to split the content into multiple lines.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5161659180219796370"&gt;&lt;img src="http://lh5.google.com/pawankesari/R6HlrUCii5I/AAAAAAAAAi8/6HOJWEQdv88/s400/Multiple-Line-Ouput.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;pre&gt;REPORT zpw_alv_multipleline .&lt;br /&gt;TYPE-POOLS slis .&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Data Declarations&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;CONSTANTS : c_len TYPE i VALUE 20 .&lt;br /&gt;&lt;br /&gt;TYPES : BEGIN OF ty_t100 ,&lt;br /&gt;sprsl TYPE t100-sprsl ,&lt;br /&gt;arbgb TYPE t100-arbgb ,&lt;br /&gt;msgnr TYPE t100-msgnr ,&lt;br /&gt;text TYPE t100-text ,&lt;br /&gt;fline TYPE t100-text ,&lt;br /&gt;END OF ty_t100 .&lt;br /&gt;&lt;br /&gt;TYPES : BEGIN OF ty_wrd ,&lt;br /&gt;text TYPE char20 ,&lt;br /&gt;END OF ty_wrd .&lt;br /&gt;&lt;br /&gt;DATA : it_t100 TYPE TABLE OF ty_t100    ,&lt;br /&gt;it_sentence TYPE TABLE OF ty_wrd ,&lt;br /&gt;wa_t100 TYPE ty_t100             ,&lt;br /&gt;wa_word TYPE ty_wrd              ,&lt;br /&gt;v_repid TYPE syst-repid          ,&lt;br /&gt;v_tabix TYPE syst-tabix          .&lt;br /&gt;&lt;br /&gt;DATA : it_fld TYPE slis_t_fieldcat_alv ,&lt;br /&gt;it_evt TYPE slis_t_event        ,&lt;br /&gt;wa_fld TYPE slis_fieldcat_alv   ,&lt;br /&gt;wa_evt TYPE slis_alv_event      ,&lt;br /&gt;wa_lay TYPE slis_layout_alv     .&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Initialization&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;INITIALIZATION .&lt;br /&gt;v_repid = sy-repid .&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*----------------------------------------------------------------------*&lt;br /&gt;* Start of Selection&lt;br /&gt;*----------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;* Get some test data to display in ALV List&lt;/font&gt;&lt;br /&gt;SELECT *&lt;br /&gt;INTO TABLE it_t100&lt;br /&gt;FROM t100&lt;br /&gt;WHERE sprsl = 'EN'&lt;br /&gt;AND arbgb = '00' .&lt;br /&gt;&lt;br /&gt;LOOP AT it_t100 INTO wa_t100 .&lt;br /&gt;v_tabix = sy-tabix .&lt;br /&gt;CLEAR : it_sentence .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;*   Word Wrap the text in multiple lines&lt;/font&gt;&lt;br /&gt;CALL FUNCTION 'RKD_WORD_WRAP'&lt;br /&gt;EXPORTING&lt;br /&gt;textline  = wa_t100-text&lt;br /&gt;outputlen = c_len&lt;br /&gt;TABLES&lt;br /&gt;out_lines = it_sentence.&lt;br /&gt;&lt;br /&gt;IF NOT it_sentence IS INITIAL .&lt;br /&gt;READ TABLE it_sentence INTO wa_word INDEX 1 .&lt;br /&gt;wa_t100-fline = wa_word-text .&lt;br /&gt;MODIFY it_t100 FROM wa_t100 INDEX v_tabix .&lt;br /&gt;ENDIF.&lt;br /&gt;&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;* Prepare fieldcatelog&lt;/font&gt;&lt;br /&gt;CLEAR wa_fld .&lt;br /&gt;wa_fld-fieldname = 'SPRSL' .&lt;br /&gt;wa_fld-ref_tabname = 'T100' .&lt;br /&gt;wa_fld-ref_fieldname = 'SPRSL' .&lt;br /&gt;APPEND wa_fld TO it_fld .&lt;br /&gt;&lt;br /&gt;CLEAR wa_fld .&lt;br /&gt;wa_fld-fieldname = 'ARBGB' .&lt;br /&gt;wa_fld-ref_tabname = 'T100' .&lt;br /&gt;wa_fld-ref_fieldname = 'ARBGB' .&lt;br /&gt;APPEND wa_fld TO it_fld .&lt;br /&gt;&lt;br /&gt;CLEAR wa_fld .&lt;br /&gt;wa_fld-fieldname = 'MSGNR' .&lt;br /&gt;wa_fld-ref_tabname = 'T100' .&lt;br /&gt;wa_fld-ref_fieldname = 'MSGNR' .&lt;br /&gt;APPEND wa_fld TO it_fld .&lt;br /&gt;&lt;br /&gt;CLEAR wa_fld .&lt;br /&gt;wa_fld-fieldname = 'FLINE' .&lt;br /&gt;wa_fld-inttype = 'CHAR' .&lt;br /&gt;wa_fld-outputlen = 20 .&lt;br /&gt;wa_fld-intlen = 20.&lt;br /&gt;wa_fld-seltext_l = 'Text' .&lt;br /&gt;wa_fld-ddictxt = 'L' .&lt;br /&gt;APPEND wa_fld TO it_fld .&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;* Get event.. we will handle BEFORE and AFTER line output&lt;/font&gt;&lt;br /&gt;CALL FUNCTION 'REUSE_ALV_EVENTS_GET'&lt;br /&gt;IMPORTING&lt;br /&gt;et_events = it_evt.&lt;br /&gt;&lt;br /&gt;READ TABLE it_evt INTO wa_evt&lt;br /&gt;WITH KEY name = slis_ev_after_line_output .&lt;br /&gt;wa_evt-form = slis_ev_after_line_output .&lt;br /&gt;MODIFY it_evt FROM wa_evt INDEX sy-tabix .&lt;br /&gt;&lt;br /&gt;READ TABLE it_evt INTO wa_evt&lt;br /&gt;WITH KEY name = slis_ev_top_of_page .&lt;br /&gt;wa_evt-form = slis_ev_top_of_page .&lt;br /&gt;MODIFY it_evt FROM wa_evt INDEX sy-tabix .&lt;br /&gt;wa_lay-no_colhead = 'X' .&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'&lt;br /&gt;EXPORTING&lt;br /&gt;i_callback_program = v_repid&lt;br /&gt;it_fieldcat        = it_fld&lt;br /&gt;is_layout          = wa_lay&lt;br /&gt;it_events          = it_evt&lt;br /&gt;TABLES&lt;br /&gt;t_outtab           = it_t100.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* FORM top_of_page *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM top_of_page .&lt;br /&gt;ULINE AT 1(58) .&lt;br /&gt;FORMAT COLOR COL_HEADING .&lt;br /&gt;WRITE: / sy-vline ,&lt;br /&gt;02 'Header1' ,&lt;br /&gt;10 sy-vline ,&lt;br /&gt;11 'Header1' ,&lt;br /&gt;31 sy-vline ,&lt;br /&gt;32 'Header1' ,&lt;br /&gt;37 sy-vline ,&lt;br /&gt;38 'Header1' ,&lt;br /&gt;58 sy-vline .&lt;br /&gt;WRITE: / sy-vline ,&lt;br /&gt;02 'Header2' ,&lt;br /&gt;10 sy-vline ,&lt;br /&gt;11 'Header2' ,&lt;br /&gt;31 sy-vline ,&lt;br /&gt;32 'Header2' ,&lt;br /&gt;37 sy-vline ,&lt;br /&gt;38 'Header2' ,&lt;br /&gt;58 sy-vline .&lt;br /&gt;&lt;br /&gt;ENDFORM.                    "top_of_page&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*---------------------------------------------------------------------*&lt;br /&gt;* FORM AFTER_LINE_OUTPUT *&lt;br /&gt;*---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM after_line_output USING rs_lineinfo TYPE slis_lineinfo .&lt;br /&gt;&lt;br /&gt;CLEAR : it_sentence ,&lt;br /&gt;wa_t100      .&lt;br /&gt;&lt;br /&gt;READ TABLE it_t100 INTO wa_t100 INDEX rs_lineinfo-tabindex .&lt;br /&gt;CHECK sy-subrc = 0 .&lt;br /&gt;&lt;br /&gt;CALL FUNCTION 'RKD_WORD_WRAP'&lt;br /&gt;EXPORTING&lt;br /&gt;textline  = wa_t100-text&lt;br /&gt;outputlen = c_len&lt;br /&gt;TABLES&lt;br /&gt;out_lines = it_sentence.&lt;br /&gt;&lt;br /&gt;DESCRIBE TABLE it_sentence LINES v_tabix .&lt;br /&gt;CHECK v_tabix &gt; 1 .&lt;br /&gt;&lt;br /&gt;LOOP AT it_sentence INTO wa_word FROM 2 .&lt;br /&gt;WRITE: / sy-vline ,&lt;br /&gt;10 sy-vline ,&lt;br /&gt;31 sy-vline ,&lt;br /&gt;37 sy-vline ,&lt;br /&gt;38 wa_word-text ,&lt;br /&gt;58 sy-vline .&lt;br /&gt;ENDLOOP.&lt;br /&gt;&lt;br /&gt;ENDFORM .                    "after_line_output&lt;br /&gt;&lt;/pre&gt;&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/5434181335871059817-7418159107683223623?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/7418159107683223623/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/01/printing-multiple-line-header-and.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7418159107683223623'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/7418159107683223623'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/01/printing-multiple-line-header-and.html' title='Multiple Lines Header and Records in ALV List'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-6511226199665878625</id><published>2008-01-31T15:41:00.001+05:30</published><updated>2008-07-03T17:50:15.362+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Open Dialog Box'/><category scheme='http://www.blogger.com/atom/ns#' term='Sample Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Standard Text'/><category scheme='http://www.blogger.com/atom/ns#' term='Utility'/><category scheme='http://www.blogger.com/atom/ns#' term='Translation'/><category scheme='http://www.blogger.com/atom/ns#' term='Upload Download'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><title type='text'>Code to Upload and Download Standard Texts</title><content type='html'>&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Type : Utility&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;Coded/Tested on Ver : SAP R/3 Enterprise&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;This program can be used to download Standard text to presentation server. Later one can modify the file with new language and corresponding translated text and upload it to create same standard text in new languages.&lt;br /&gt;&lt;br /&gt;&lt;div style="width:700px; background-image: url(http://lh4.ggpht.com/pawankesari/SFjq9TU2JsI/AAAAAAAABXk/eDtzOXp0VHo/s400/back_code.jpg)"&gt;&lt;div style="margin-left: 20px"&gt;&lt;br /&gt;&lt;pre&gt;REPORT zpwupld .&lt;br /&gt;&lt;br /&gt;TABLES thead .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; DATA&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;TYPES : BEGIN OF ty_text ,&lt;br /&gt;          tdobject TYPE stxh-tdobject ,&lt;br /&gt;          tdname TYPE stxh-tdname ,&lt;br /&gt;          tdid TYPE stxh-tdid ,&lt;br /&gt;          tdspras TYPE stxh-tdspras ,&lt;br /&gt;        END OF ty_text ,&lt;br /&gt;&lt;br /&gt;        BEGIN OF ty_data ,&lt;br /&gt;          tdobject TYPE stxh-tdobject ,&lt;br /&gt;          tdname TYPE stxh-tdname ,&lt;br /&gt;          tdid TYPE stxh-tdid ,&lt;br /&gt;          tdspras TYPE stxh-tdspras ,&lt;br /&gt;          line TYPE char2 ,&lt;br /&gt;          tdformat TYPE tdformat ,&lt;br /&gt;          tdline TYPE tdline ,&lt;br /&gt;        END OF ty_data .&lt;br /&gt;&lt;br /&gt;DATA : i_text TYPE TABLE OF ty_text ,&lt;br /&gt;       i_data TYPE TABLE OF ty_data .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; SELECTION-SCREEN&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;PARAMETERS : p_up TYPE c RADIOBUTTON GROUP radi ,&lt;br /&gt;             p_do TYPE c RADIOBUTTON GROUP radi .&lt;br /&gt;PARAMETERS : p_path TYPE text100 OBLIGATORY .&lt;br /&gt;SELECT-OPTIONS : s_name FOR thead-tdname NO-EXTENSION NO INTERVALS ,&lt;br /&gt;                 s_object FOR thead-tdobject NO-EXTENSION NO INTERVALS ,&lt;br /&gt;                 s_id FOR thead-tdid NO-EXTENSION NO INTERVALS ,&lt;br /&gt;                 s_lan FOR thead-tdspras NO-EXTENSION NO INTERVALS .&lt;br /&gt;PARAMETERS : p_over TYPE c AS CHECKBOX .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; AT SELECTION-SCREEN&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_path .&lt;br /&gt;  PERFORM get_file_help .&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; AT SELECTION-SCREEN&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;AT SELECTION-SCREEN .&lt;br /&gt;  IF p_do = 'X' .&lt;br /&gt;    IF s_name[] IS INITIAL .&lt;br /&gt;      MESSAGE e208(00) WITH 'Enter Text Name'.&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; START OF SELECTION&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;START-OF-SELECTION .&lt;br /&gt;  IF p_do = 'X' .&lt;br /&gt;    PERFORM select_data .&lt;br /&gt;  ENDIF.&lt;br /&gt;  IF p_up = 'X' .&lt;br /&gt;    PERFORM upload_and_update .&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Form get_file_help&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM get_file_help.&lt;br /&gt;  DATA : i_file TYPE filetable ,&lt;br /&gt;         w_file TYPE file_table ,&lt;br /&gt;         l_rc TYPE i ,&lt;br /&gt;         l_ua TYPE i .&lt;br /&gt;&lt;br /&gt;  CALL METHOD cl_gui_frontend_services=&gt;file_open_dialog&lt;br /&gt;    CHANGING&lt;br /&gt;      file_table              = i_file&lt;br /&gt;      rc                      = l_rc&lt;br /&gt;      user_action             = l_ua&lt;br /&gt;    EXCEPTIONS&lt;br /&gt;      file_open_dialog_failed = 1&lt;br /&gt;      cntl_error              = 2&lt;br /&gt;      error_no_gui            = 3&lt;br /&gt;      OTHERS                  = 4.&lt;br /&gt;&lt;br /&gt;  IF l_ua &lt;&gt; cl_gui_frontend_services=&gt;action_cancel .&lt;br /&gt;    READ TABLE i_file INTO w_file INDEX 1 .&lt;br /&gt;    IF sy-subrc = 0 .&lt;br /&gt;      p_path = w_file-filename .&lt;br /&gt;    ENDIF.&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;ENDFORM. " get_file_help&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Form SELECT_DATA&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM select_data.&lt;br /&gt;  DATA : w_text TYPE ty_text ,&lt;br /&gt;         i_std TYPE TABLE OF tline WITH HEADER LINE ,&lt;br /&gt;         w_data TYPE ty_data ,&lt;br /&gt;         l_file TYPE string .&lt;br /&gt;&lt;br /&gt;  SELECT tdobject&lt;br /&gt;         tdname&lt;br /&gt;         tdid&lt;br /&gt;         tdspras&lt;br /&gt;    INTO TABLE i_text&lt;br /&gt;    FROM stxh&lt;br /&gt;   WHERE tdobject IN s_object&lt;br /&gt;     AND tdname IN s_name&lt;br /&gt;     AND tdid IN s_id&lt;br /&gt;     AND tdspras IN s_lan .&lt;br /&gt;&lt;br /&gt;  IF sy-subrc &lt;&gt; 0 .&lt;br /&gt;    MESSAGE i208(00) WITH 'No Data Found!'.&lt;br /&gt;    LEAVE LIST-PROCESSING .&lt;br /&gt;  ENDIF.&lt;br /&gt;&lt;br /&gt;  LOOP AT i_text INTO w_text .&lt;br /&gt;    REFRESH i_std[] .&lt;br /&gt;&lt;br /&gt;    CALL FUNCTION 'READ_TEXT'&lt;br /&gt;      EXPORTING&lt;br /&gt;        id       = w_text-tdid&lt;br /&gt;        language = w_text-tdspras&lt;br /&gt;        name     = w_text-tdname&lt;br /&gt;        object   = w_text-tdobject&lt;br /&gt;      TABLES&lt;br /&gt;        lines    = i_std.&lt;br /&gt;&lt;br /&gt;    CLEAR w_data .&lt;br /&gt;    w_data-tdobject = w_text-tdobject .&lt;br /&gt;    w_data-tdname = w_text-tdname .&lt;br /&gt;    w_data-tdid = w_text-tdid .&lt;br /&gt;    w_data-tdspras = w_text-tdspras .&lt;br /&gt;&lt;br /&gt;    LOOP AT i_std .&lt;br /&gt;      w_data-line = sy-tabix .&lt;br /&gt;      WRITE w_data-line TO w_data-line RIGHT-JUSTIFIED .&lt;br /&gt;      TRANSLATE w_data-line USING ' 0' .&lt;br /&gt;      w_data-tdformat = i_std-tdformat .&lt;br /&gt;      w_data-tdline = i_std-tdline .&lt;br /&gt;      APPEND w_data TO i_data .&lt;br /&gt;    ENDLOOP.&lt;br /&gt;&lt;br /&gt;  ENDLOOP .&lt;br /&gt;&lt;br /&gt;  l_file = p_path .&lt;br /&gt;&lt;br /&gt;* This method call will download the internal table data&lt;br /&gt;* to path specified in variable l_file&lt;br /&gt;  CALL METHOD cl_gui_frontend_services=&gt;gui_download&lt;br /&gt;    EXPORTING&lt;br /&gt;      filename = l_file&lt;br /&gt;    CHANGING&lt;br /&gt;      data_tab = i_data.&lt;br /&gt;&lt;br /&gt;ENDFORM. " SELECT_DATA&lt;br /&gt;&lt;font color="blue"&gt;&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;br /&gt;*&amp; Form upload_and_update&lt;br /&gt;*&amp;---------------------------------------------------------------------*&lt;/font&gt;&lt;br /&gt;FORM upload_and_update .&lt;br /&gt;&lt;br /&gt;  DATA :  w_text TYPE ty_text ,&lt;br /&gt;          i_std TYPE TABLE OF tline WITH HEADER LINE ,&lt;br /&gt;          w_data TYPE ty_data ,&lt;br /&gt;          w_temp TYPE ty_data ,&lt;br /&gt;          l_file TYPE string ,&lt;br /&gt;          i_dd TYPE TABLE OF text_512 ,&lt;br /&gt;          w_dd TYPE text_512 ,&lt;br /&gt;          l_header TYPE thead ,&lt;br /&gt;          l_stxh TYPE stxh .&lt;br /&gt;          l_file = p_path .&lt;br /&gt;&lt;br /&gt;  CALL METHOD cl_gui_frontend_services=&gt;gui_upload&lt;br /&gt;    EXPORTING&lt;br /&gt;      filename = l_file&lt;br /&gt;    CHANGING&lt;br /&gt;      data_tab = i_dd.&lt;br /&gt;&lt;br /&gt;  LOOP AT i_dd INTO w_dd .&lt;br /&gt;    CLEAR w_data .&lt;br /&gt;    w_data-tdobject = w_dd+0(10) .&lt;br /&gt;    w_data-tdname = w_dd+10(70) .&lt;br /&gt;    w_data-tdid = w_dd+80(4) .&lt;br /&gt;    w_data-tdspras = w_dd+84(1) .&lt;br /&gt;    w_data-line = w_dd+85(2) .&lt;br /&gt;    w_data-tdformat = w_dd+87(2) .&lt;br /&gt;    w_data-tdline = w_dd+89(132).&lt;br /&gt;    APPEND w_data TO i_data .&lt;br /&gt;  ENDLOOP .&lt;br /&gt;&lt;br /&gt;  SORT i_data BY tdobject tdname tdid tdspras line.&lt;br /&gt;&lt;br /&gt;  LOOP AT i_data INTO w_data .&lt;br /&gt;    w_temp = w_data .&lt;br /&gt;    AT NEW tdspras .&lt;br /&gt;      CLEAR l_header .&lt;br /&gt;      REFRESH i_std .&lt;br /&gt;    ENDAT .&lt;br /&gt;&lt;br /&gt;    CLEAR i_std .&lt;br /&gt;    i_std-tdformat = w_temp-tdformat .&lt;br /&gt;    i_std-tdline = w_temp-tdline .&lt;br /&gt;    APPEND i_std .&lt;br /&gt;&lt;br /&gt;    AT END OF tdspras .&lt;br /&gt;      CLEAR l_stxh .&lt;br /&gt;&lt;br /&gt;      SELECT SINGLE *&lt;br /&gt;        INTO l_stxh&lt;br /&gt;        FROM stxh&lt;br /&gt;       WHERE tdobject = w_temp-tdobject&lt;br /&gt;         AND tdname = w_temp-tdname&lt;br /&gt;         AND tdid = w_temp-tdid&lt;br /&gt;         AND tdspras = w_temp-tdspras .&lt;br /&gt;&lt;br /&gt;      IF sy-subrc = 0 .&lt;br /&gt;        IF p_over = space .&lt;br /&gt;          WRITE : / w_temp-tdname COLOR COL_GROUP,&lt;br /&gt;          w_temp-tdspras COLOR COL_GROUP.&lt;br /&gt;          CONTINUE .&lt;br /&gt;        ENDIF.&lt;br /&gt;      ENDIF.&lt;br /&gt;      l_header-tdobject = w_temp-tdobject .&lt;br /&gt;      l_header-tdname = w_temp-tdname .&lt;br /&gt;      l_header-tdid = w_temp-tdid .&lt;br /&gt;      l_header-tdspras = w_temp-tdspras .&lt;br /&gt;&lt;br /&gt;      CALL FUNCTION 'SAVE_TEXT'&lt;br /&gt;        EXPORTING&lt;br /&gt;          header          = l_header&lt;br /&gt;          savemode_direct = 'X'&lt;br /&gt;        TABLES&lt;br /&gt;          lines           = i_std&lt;br /&gt;        EXCEPTIONS&lt;br /&gt;          id              = 1&lt;br /&gt;          language        = 2&lt;br /&gt;          name            = 3&lt;br /&gt;          object          = 4&lt;br /&gt;          OTHERS          = 5.&lt;br /&gt;&lt;br /&gt;      IF sy-subrc &lt;&gt; 0.&lt;br /&gt;        WRITE : / w_temp-tdname COLOR COL_NEGATIVE,&lt;br /&gt;        w_temp-tdspras COLOR COL_NEGATIVE.&lt;br /&gt;      ELSE.&lt;br /&gt;        WRITE : / w_temp-tdname COLOR COL_POSITIVE,&lt;br /&gt;        w_temp-tdspras COLOR COL_POSITIVE.&lt;br /&gt;      ENDIF.&lt;br /&gt;&lt;br /&gt;    ENDAT .&lt;br /&gt;  ENDLOOP .&lt;br /&gt;&lt;br /&gt;ENDFORM. " upload_and_update&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;strong&gt;To handle unicode chracters you need to take care of following &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;1. Your program should be unicode compatible .i.e. in SE38 goto Attributes of this upload dowload code and check that &lt;strong&gt;'Unicode check active'&lt;/strong&gt; is checked&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5164187189380287618"&gt;&lt;img src="http://lh4.google.com/pawankesari/R6rg40CijII/AAAAAAAAAoA/DIWqkVYYDE0/s400/Upload_checkbox.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2. In &lt;strong&gt;SAP GUI multibyte functionality&lt;/strong&gt; must be active.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5164185892300164210"&gt;&lt;img src="http://lh6.google.com/pawankesari/R6rftUCijHI/AAAAAAAAAnU/VLl3rK4A--w/s400/Upload_multi_byte.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This setting will take place only you restart you SAP logon pad .i.e. close all the session and restart the SAP Logon.&lt;br /&gt;&lt;br /&gt;3. The text file should be saved as &lt;strong&gt;'Unicode Encoding'&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://picasaweb.google.com/pawankesari/EBlog/photo#5164185883710229602"&gt;&lt;img src="http://lh4.google.com/pawankesari/R6rfs0CijGI/AAAAAAAAAnM/RhTjxETOhzE/s400/Upload_file_save.JPG" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/5434181335871059817-6511226199665878625?l=sample-code-abap.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://sample-code-abap.blogspot.com/feeds/6511226199665878625/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://sample-code-abap.blogspot.com/2008/01/sample-code-2.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6511226199665878625'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/5434181335871059817/posts/default/6511226199665878625'/><link rel='alternate' type='text/html' href='http://sample-code-abap.blogspot.com/2008/01/sample-code-2.html' title='Code to Upload and Download Standard Texts'/><author><name>Pawan Kesari</name><uri>http://www.blogger.com/profile/03266622363936771846</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='21' src='http://bp0.blogger.com/_-k3sT2kXNko/SE5LA7YBH_I/AAAAAAAABTI/6aEm7ZmYCUc/S220/IMG_5426.JPG'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-5434181335871059817.post-7963733693386090968</id><published>2008-01-31T15:39:00.000+05:30</published><updated>2009-05-17T22:14:51.702+05:30</updated><category scheme='http://www.blogger.com/atom/ns#' term='Sapscript'/><category scheme='http://www.blogger.com/atom/ns#' term='Formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='SAP ABAP'/><category scheme='http://www.blogger.com/atom/ns#' term='Quick Reference'/><title type='text'>Formatting Options Available in Sapscript</title><content type='html'>&lt;strong&gt;Type : Quick Reference&lt;br /&gt;Coded/Tested on Ver : SAP R/3 Enterprise&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;table width="100%" border="1"&gt;&lt;td&gt;Offset&lt;/td&gt;&lt;td&gt;&amp;amp;symbol+offset&amp;amp;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Output Length&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(length)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Omitting the Leading Sign&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(S)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Leading Sign to the Left and Right&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(&lt;)&amp;amp; , &amp;amp;symbol(&gt;)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Omitting Leading Zeros&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(Z)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Space Compression&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(C)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Number of Decimal Places&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(.N)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Omitting the Separator for ‘Thousands’&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(T)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Specifying an Exponent for Floating Point Numbers&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(EN)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Right-Justified Output&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(R)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Fill Characters&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(F f )&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Suppressing Output of Initial Values&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(I)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Ignoring Conversion Routines&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(K)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Local Dates (Currently Only for Japan)&lt;/td&gt;&lt;td&gt;&amp;amp;symbol(L)&amp;amp;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;Changing the Value of a Counter&lt;/td&gt;&lt;td&gt;&amp;amp;SAPSCRIPT-COUNTER_x(+)&amp;amp; - Increase counter by 1&lt;br /&gt;&amp;amp;SAPSCRIPT-COUNTER_x(
