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

<channel>
	<title>SAP Training, Tutorials, How-tos, News, Weblogs, Screencasts, SAP Jobs, Forums and much more, all on SAP &#187; ABAP</title>
	<atom:link href="http://saplab.org/category/abap/feed/" rel="self" type="application/rss+xml" />
	<link>http://saplab.org</link>
	<description>SAP Training, Tutorials, How-tos, News, Weblogs, Screencasts, SAP Jobs, Forums and much more, all on SAP</description>
	<lastBuildDate>Mon, 16 Jan 2012 12:19:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>SAT: New ABAP Runtime Analysis</title>
		<link>http://saplab.org/2011/02/sat-new-abap-runtime-analysis/</link>
		<comments>http://saplab.org/2011/02/sat-new-abap-runtime-analysis/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 12:35:19 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Emerging]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Netweaver]]></category>
		<category><![CDATA[Webcast]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Portal]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[TechEd]]></category>
		<category><![CDATA[Webdynpro ABAP]]></category>
		<category><![CDATA[Workflow]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1953</guid>
		<description><![CDATA[SAT is the new ABAP Runtime Analysis Tool of the SAP NetWeaver 7.0 EhP2 (successor of the SE30 transaction). This demo explores the SAT tools and shows how to use SAT for typical scenarios of ABAP runtime analysis, such as searching for performance bottlenecks, program flow analysis or memory consumption problems. Watch the Demo (20 [...]
Related posts:<ol>
<li><a href='http://saplab.org/2011/01/best-sap-sdn-blog-posts-from-2010/' rel='bookmark' title='Best SAP SDN Blog Posts from 2010'>Best SAP SDN Blog Posts from 2010</a></li>
<li><a href='http://saplab.org/2011/02/caffeine-abap-to-go/' rel='bookmark' title='Caffeine &#8211; ABAP to Go'>Caffeine &#8211; ABAP to Go</a></li>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2011%252F02%252Fsat-new-abap-runtime-analysis%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22SAT%3A%20New%20ABAP%20Runtime%20Analysis%22%20%7D);"></div>
<p>SAT is the new ABAP Runtime Analysis Tool of the SAP NetWeaver 7.0 EhP2 (successor of the SE30 transaction). This demo explores the SAT tools and shows how to use SAT for typical scenarios of ABAP runtime analysis, such as searching for performance bottlenecks, program flow analysis or memory consumption problems.</p>
<h4>Watch the Demo (20 min)</h4>
<div id="web-url"><a title="SAT: New ABAP Runtime Analysis" href="http://www.sdn.sap.com/irj/scn/elearn?rid=/library/uuid/d0c750c1-7d04-2e10-8492-a11b9219371d&#038;overridelayout=true" target="_blank">SAT: New ABAP Runtime Analysis (20 min.)</a></div>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2011/01/best-sap-sdn-blog-posts-from-2010/' rel='bookmark' title='Best SAP SDN Blog Posts from 2010'>Best SAP SDN Blog Posts from 2010</a></li>
<li><a href='http://saplab.org/2011/02/caffeine-abap-to-go/' rel='bookmark' title='Caffeine &#8211; ABAP to Go'>Caffeine &#8211; ABAP to Go</a></li>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2011/02/sat-new-abap-runtime-analysis/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Caffeine &#8211; ABAP to Go</title>
		<link>http://saplab.org/2011/02/caffeine-abap-to-go/</link>
		<comments>http://saplab.org/2011/02/caffeine-abap-to-go/#comments</comments>
		<pubDate>Wed, 09 Feb 2011 12:20:12 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[SAP Blogs & Resources]]></category>
		<category><![CDATA[Emerging]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[marketplace]]></category>
		<category><![CDATA[Netweaver]]></category>
		<category><![CDATA[On-Demand]]></category>
		<category><![CDATA[On-Device]]></category>
		<category><![CDATA[On-Premise]]></category>
		<category><![CDATA[System Tools]]></category>
		<category><![CDATA[Webdynpro ABAP]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1943</guid>
		<description><![CDATA[Caffeine is a toolset that allows execution of the ABAP language on alternative runtimes outside of the ABAP server. As of today, it supports the execution of a subset of ABAP on the JVM (Java), Dalvik VM (Android), iOS (Objective C), and JavaScript. Its core design is centered around high performance, multi platform execution and [...]
Related posts:<ol>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
<li><a href='http://saplab.org/2011/01/best-sap-sdn-blog-posts-from-2010/' rel='bookmark' title='Best SAP SDN Blog Posts from 2010'>Best SAP SDN Blog Posts from 2010</a></li>
<li><a href='http://saplab.org/2010/07/best-of-sap-sites-directory/' rel='bookmark' title='Best of SAP Sites Directory'>Best of SAP Sites Directory</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2011%252F02%252Fcaffeine-abap-to-go%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Caffeine%20-%20ABAP%20to%20Go%22%20%7D);"></div>
<p>Caffeine is a toolset that allows execution of the <a href="http://saplab.org/category/abap/" title="ABAP">ABAP</a> language on alternative runtimes outside of the ABAP server. As of today, it supports the execution of a subset of ABAP on the JVM (Java), Dalvik VM (Android), iOS (Objective C), and JavaScript. Its core design is centered around high performance, multi platform execution and multi threading.</p>
<p>Caffeine is at the moment a prototype project and proves the claims made. There is currently no relation to any current or future SAP product, but SAP is working on achieving this.</p>
<h2>What&#8217;s it for?</h2>
<p>Caffeine is a technology, not an application, and it can thus be applied to many use cases. Caffeine is not trying to enable the migration of existing ABAP code to other platforms, but is focusing on adding value to SAP’s On-Device, On-Demand, On-Premise strategy by making SAPs business programming language reach into spaces like mobile devices that our customer are looking to unlock and feed with information coming from the customers backend. Caffeine strives to help developers to build business applications that are better integrated from frontend to backend.</p>
<h2>Download Full Paper</h2>
<div id="download"><a title="Caffeine - ABAP to Go" href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/3039f3a1-47af-2d10-88ab-82982ede56fe?QuickLink=index&#038;overridelayout=true" target="_blank">Caffeine &#8211; ABAP to Go (PDF, 500KB)</a></div>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
<li><a href='http://saplab.org/2011/01/best-sap-sdn-blog-posts-from-2010/' rel='bookmark' title='Best SAP SDN Blog Posts from 2010'>Best SAP SDN Blog Posts from 2010</a></li>
<li><a href='http://saplab.org/2010/07/best-of-sap-sites-directory/' rel='bookmark' title='Best of SAP Sites Directory'>Best of SAP Sites Directory</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2011/02/caffeine-abap-to-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Many Lines of ABAP Code In Your System?</title>
		<link>http://saplab.org/2011/01/how-many-lines-of-abap-code-in-your-system/</link>
		<comments>http://saplab.org/2011/01/how-many-lines-of-abap-code-in-your-system/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 12:19:58 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Beginners]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[System Tools]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[SE37]]></category>
		<category><![CDATA[skills]]></category>
		<category><![CDATA[TCodes]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=471</guid>
		<description><![CDATA[I ran into a curious post by Sergio Ferrari which allows us to calculate how many lines of ABAP code we have in our systems. More than a curiosity, this simple tool can help us determine if our system is too overloaded with custom code or not. The author excluded ABAP generated by special frameworks, [...]
Related posts:<ol>
<li><a href='http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/' rel='bookmark' title='How to Send a System Message to another SAP User'>How to Send a System Message to another SAP User</a></li>
<li><a href='http://saplab.org/2009/10/one-minute-one-great-abap-tip/' rel='bookmark' title='One Minute, One Great ABAP Tip'>One Minute, One Great ABAP Tip</a></li>
<li><a href='http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/' rel='bookmark' title='TIP: Overide Lack of Authorization on a Transaction Code'>TIP: Overide Lack of Authorization on a Transaction Code</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2011%252F01%252Fhow-many-lines-of-abap-code-in-your-system%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22How%20Many%20Lines%20of%20ABAP%20Code%20In%20Your%20System%3F%22%20%7D);"></div>
<p>I ran into a curious post by <a title="Sergio Ferrari" href="https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/com.sap.sdn.businesscard.SDNBusinessCard?u=gpLTsZHMilgDbwR8d43B3Q%3D%3D" target="_blank" class="broken_link">Sergio Ferrari</a> which allows us to calculate how many lines of ABAP code we have in our systems. More than a curiosity, this simple tool can help us determine if our system is too overloaded with custom code or not.</p>
<p>The author excluded ABAP generated by special frameworks, like Report writer, SAP Query, Web Dynpro, LSMW,  and so on. He opted to do the filtering by Source System, Owner and Package. The release covered by this tool is ECC 6.0 an the following are also out of scope of this tool:</p>
<ul>
<li>BSP&#8217;s</li>
<li>Adobe Forms, Smartforms and SAPScript</li>
<li>XSLT/Web Services</li>
</ul>
<p>This utility was named ZSDN_simple_ABAP_SLOC_COUNT, and aims to be an an indicator. The author didn&#8217;t want to give it too much relevance, the idea is solely to be an useful tool and help us estimate the upgrade effort or to evaluate the amount of work allocated for each of our packages.</p>
<p>As a curiosity, the post also includes the following information, related to lines of code in known software systems:</p>
<ul>
<li>Windows XP:      45 million lines of code</li>
<li>Windows Vista:  50 million lines of code</li>
<li>Mac OS:              86 million lines of code</li>
<li>SAP (ABAP):      238 million lines of ABAP</li>
</ul>
<p>Copy the code from the textearea below and paste it in a new report in transaction code <strong>SE38</strong>.</p>
<pre class="php php" style="font-family:monospace;">*&amp;---------------------------------------------------------------------*
*&amp; Report  ZSDN_SIMPLE_ABAP_SLOC_COUNT
*&amp; Author: Andrea Olivieri, Sergio Ferrari
*&amp;         Techedge SpA
*&amp; Version: 1.0  - 2009/01/20
*&amp; Title   How many lines of custom ABAP code are inside your system?
*&amp;---------------------------------------------------------------------*
REPORT  zsdn_simple_abap_sloc_count_n LINE-SIZE 255.

* Global Data Type [ GDT <img src='http://saplab.org/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ]
TYPES: BEGIN OF ty_repository,
         devclass  TYPE tadir-devclass,
         name      TYPE trdir-name,
         object    TYPE tadir-object,
         srcsystem TYPE tadir-srcsystem,
         author    TYPE tadir-author,
         subc      TYPE trdir-subc,
         sloc      TYPE i,
       END OF ty_repository.
DATA: l_repository TYPE ty_repository.
DATA: t_repository TYPE STANDARD TABLE OF ty_repository.

* defining the selection-screen
TABLES: tadir.
SELECT-OPTIONS: xpack   FOR tadir-devclass,
                xobject FOR tadir-object,
                xauthor FOR tadir-obj_name.

INITIALIZATION.
  PERFORM init_select_options.

START-OF-SELECTION.
  PERFORM get_obj_set.
  PERFORM upd_obj_set_count_class_sloc.
  PERFORM count_prog_sloc.

END-OF-SELECTION.
  PERFORM alv.

*&amp;---------------------------------------------------------------------*
*&amp;      Form  init_select_options
*&amp;---------------------------------------------------------------------*
*       INCLUDE OBJECTS:  PROG, FUGR and CLAS
*       EXCLUDE PACKAGES: $TMP and from A to W
*       EXCLUDE USERS:    SAP, SAP*, DDIC
*----------------------------------------------------------------------*
FORM init_select_options.

* Include objects: PROG, FUGR and CLAS
  IF xobject[] IS INITIAL.
    xobject-sign   = 'I'. xobject-option = 'EQ'. xobject-low = 'PROG'.
APPEND xobject.
    xobject-sign   = 'I'. xobject-option = 'EQ'. xobject-low = 'FUGR'.
APPEND xobject.
    xobject-sign   = 'I'. xobject-option = 'EQ'. xobject-low = 'CLAS'.
APPEND xobject.
  ENDIF.

* Exclude packages: $TMP and from A to W
  IF xpack[] IS INITIAL.
    xpack-sign   = 'E'. xpack-option = 'BT'. xpack-low = 'A'. xpack-high
= 'WZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ'. APPEND xpack.
    xpack-sign   = 'E'. xpack-option = 'EQ'. xpack-low = '$TMP'. APPEND
xpack.
  ENDIF.

* Exclude objects belonging to users: SAP* and DDIC
  IF xauthor[] IS INITIAL.
    xauthor-sign   = 'E'. xauthor-option = 'EQ'.     xauthor-low =
'SAP'.  APPEND xauthor.
    xauthor-sign   = 'E'. xauthor-option = 'EQ'.     xauthor-low =
'SAP*'. APPEND xauthor.
    xauthor-sign   = 'E'. xauthor-option = 'EQ'.     xauthor-low =
'DDIC'. APPEND xauthor.
  ENDIF.
ENDFORM.                    "init_select_options

*&amp;---------------------------------------------------------------------*
*&amp;      Form  get_obj_set
*&amp;---------------------------------------------------------------------*
*       Get from TADIR
*----------------------------------------------------------------------*
FORM get_obj_set.
  DATA: l_tadir TYPE tadir.

  SELECT * FROM tadir INTO l_tadir
           WHERE pgmid      EQ 'R3TR'
           AND   obj_name   IN xauthor
           AND   object     IN xobject
           AND   devclass   IN xpack
            AND srcsystem   NE 'SAP'
           AND   author     IN xauthor.               "#EC CI_SGLSELECT
    IF NOT l_tadir-obj_name CP '_______________________________*'.
      MOVE-CORRESPONDING l_tadir TO l_repository.
      l_repository-name     = l_tadir-obj_name.
      l_repository-devclass = l_tadir-devclass.
      APPEND l_repository TO t_repository.
    ENDIF.
  ENDSELECT.
*
  SORT t_repository BY devclass name.

ENDFORM.                    "get_obj_set

*&amp;---------------------------------------------------------------------*
*&amp;      Form  upd_obj_set_count_class_sloc
*&amp;---------------------------------------------------------------------*
*       ...and Compute SLOC for CLAS
*----------------------------------------------------------------------*
FORM upd_obj_set_count_class_sloc.
  TYPE-POOLS: sedi.
  TYPES: BEGIN OF ty_irdir,
          name LIKE trdir-name,
          devc    LIKE tadir-devclass,
        END OF ty_irdir,
        BEGIN OF ty_itab,
          repname LIKE sy-repid,
          devc    LIKE tadir-devclass,
        END OF ty_itab,
        BEGIN OF ty_crdir,
          name LIKE trdir-name,
          subc LIKE trdir-subc,
          devc    LIKE tadir-devclass,
        END OF ty_crdir.

  DATA: save_tabix      TYPE sy-tabix,
        l_class         TYPE sobj_name,
        l_pgmid         TYPE pgmid,
        l_object        TYPE trobjtype,
        class_name      TYPE programm,
        class_pool_name TYPE programm,
        lclskey         TYPE seoclskey.
  DATA: sourceline      TYPE string.
  DATA: l_1st_char      TYPE c.

  DATA: l_irdir         TYPE ty_irdir,
        l_itab          TYPE ty_itab,
        l_itab1         TYPE ty_itab,
        l_crdir         TYPE ty_crdir.
  DATA: t_irdir TYPE STANDARD TABLE OF ty_irdir,
        t_itab  TYPE STANDARD TABLE OF ty_itab,
        t_itab1 TYPE STANDARD TABLE OF ty_itab,
        t_crdir TYPE STANDARD TABLE OF ty_crdir.

  DATA: l_sloc          TYPE i.

  LOOP AT t_repository INTO l_repository.
    save_tabix = sy-tabix.
    CASE l_repository-object.
      WHEN 'PROG'.
        SELECT SINGLE subc FROM trdir INTO l_repository-subc WHERE  name
= l_repository-name.
        IF sy-subrc = 0.
          MODIFY t_repository FROM l_repository INDEX save_tabix
TRANSPORTING subc .
        ENDIF.
      WHEN 'FUGR'.
        CONCATENATE 'SAPL' l_repository-name INTO l_irdir-name.
        l_irdir-devc = l_repository-devclass.
        APPEND l_irdir TO t_irdir.
        l_repository-name   = l_irdir-name.
        l_repository-object = 'PROG'.
        SELECT SINGLE subc FROM trdir INTO l_repository-subc WHERE  name
= l_repository-name.
        IF sy-subrc = 0.
          MODIFY t_repository FROM l_repository INDEX save_tabix
TRANSPORTING name object subc.
        ENDIF.
        CLEAR l_irdir.
      WHEN 'CLAS'.
        DATA source_new TYPE sedi_source.
        DATA l_inctype(5).

        class_name = l_repository-name.
        l_pgmid = 'R3TR'.
        l_object = l_repository-object.
        l_class = class_name.
        CALL FUNCTION 'SEO_CLASS_GET_CP_NAME'
          EXPORTING
            pgmid                 = l_pgmid
            object                = l_object
            obj_name              = l_class
          IMPORTING
            progname              = class_pool_name
          EXCEPTIONS
            no_class_or_interface = 1.

        IF sy-subrc = 0.
          SELECT SINGLE subc FROM trdir INTO l_repository-subc WHERE name
= class_pool_name.
        ENDIF.

        lclskey-clsname = cl_oo_classname_service=&gt;get_clsname_by_include(
class_name ).

        CLEAR l_class.
        CONCATENATE l_repository-name '%' INTO l_class.

        SELECT name FROM  trdir INTO TABLE t_crdir WHERE  name  LIKE
l_class.
        IF NOT t_crdir[] IS INITIAL.
          LOOP AT t_crdir INTO l_crdir.
            l_inctype = l_crdir-name+30(5) .
            REFRESH source_new.
            CALL FUNCTION 'SEO_CLASS_GET_INCLUDE_SOURCE'
              EXPORTING
                clskey                       = lclskey
                inctype                      = l_inctype
              IMPORTING
                source_expanded              = source_new
              EXCEPTIONS
                _internal_class_not_existing = 1
                not_existing                 = 2
                OTHERS                       = 3.
            CHECK sy-subrc = 0.

*           Compute SLOC !
            LOOP AT source_new INTO sourceline.
              l_1st_char = sourceline.
              IF    sourceline IS INITIAL
                 OR l_1st_char = '*'.
                DELETE source_new INDEX sy-tabix.
              ENDIF.
            ENDLOOP.
            l_sloc = LINES( source_new ).
            ADD l_sloc TO l_repository-sloc.
          ENDLOOP.
          MODIFY t_repository FROM l_repository INDEX save_tabix
TRANSPORTING sloc subc.
        ENDIF.
      WHEN OTHERS. CONTINUE.
    ENDCASE.

  ENDLOOP.

  IF t_irdir[] IS NOT INITIAL.
    LOOP AT t_irdir INTO l_irdir.
      REFRESH t_itab1.
      CALL FUNCTION 'GET_INCLUDES'
        EXPORTING
          progname = l_irdir-name
        TABLES
          incltab  = t_itab1.

*     append lines of t_itab1 to itab.
      LOOP AT t_itab1 INTO l_itab1.
        l_itab-repname = l_itab1-repname.
        l_itab-devc    = l_irdir-devc.    "Sometimes it's false
        APPEND l_itab TO t_itab.
        CLEAR l_itab.
      ENDLOOP.
    ENDLOOP.
  ENDIF.

  DATA: l_trdir TYPE trdir.

  LOOP AT t_itab INTO l_itab.
    SELECT SINGLE * FROM  trdir INTO l_trdir
           WHERE  name  = l_itab-repname
            AND    cnam  NOT LIKE 'SAP%'
            AND    cnam  &lt;&gt; 'DDIC'.
    CHECK sy-subrc = 0.

    MOVE-CORRESPONDING l_trdir TO l_repository.
    l_repository-devclass = l_itab-devc.
    l_repository-object   = 'PROG'.
    APPEND l_repository TO t_repository.

  ENDLOOP.

  SORT t_repository BY name object devclass.
  DELETE ADJACENT DUPLICATES FROM t_repository COMPARING name object
devclass.

ENDFORM.                    "upd_obj_set_count_class_sloc
*&amp;---------------------------------------------------------------------*
*&amp;      Form  count_prog_sloc
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM count_prog_sloc.
  DATA: l_prog     TYPE c LENGTH 30.
  DATA: isource    TYPE TABLE OF string.
  DATA: l_1st_char TYPE c.

  LOOP AT t_repository INTO l_repository WHERE object = 'PROG'.
*   Compute SLOC !
    l_prog = l_repository-name.
    READ REPORT l_prog INTO isource.
    DATA: l_source_line TYPE string.
    LOOP AT isource INTO l_source_line.
      l_1st_char = l_source_line.
      IF    l_source_line IS INITIAL     "Empty
         OR l_1st_char = '*'.            "Comment
        DELETE isource INDEX sy-tabix.
      ENDIF.
    ENDLOOP.
    l_repository-sloc = LINES( isource ).

*   Update SLOC into t_repository
    READ TABLE t_repository WITH TABLE KEY name     = l_repository-name
                                       devclass = l_repository-devclass
                                       object   = l_repository-object
                                       srcsystem = l_repository-srcsystem
                                       author    = l_repository-author
                                       subc      = l_repository-subc
                        TRANSPORTING NO FIELDS.
    IF sy-subrc = 0.
      MODIFY t_repository FROM l_repository INDEX sy-tabix TRANSPORTING
sloc.
    ENDIF.
  ENDLOOP.
ENDFORM.                    "count_prog_sloc

*&amp;---------------------------------------------------------------------*
*&amp;      Form  alv
*&amp;---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM alv.
  DATA: gr_table     TYPE REF TO cl_salv_table,
        gr_display   TYPE REF TO cl_salv_display_settings,
        gr_functions TYPE REF TO cl_salv_functions,
        gr_sorts     TYPE REF TO cl_salv_sorts,
        gr_agg       TYPE REF TO cl_salv_aggregations.
  TRY.
*     Create ALV table
      cl_salv_table=&gt;factory( IMPORTING r_salv_table = gr_table CHANGING
t_table = t_repository ).
*     Set zebra layout
      gr_display = gr_table-&gt;get_display_settings( ).
      gr_display-&gt;set_striped_pattern( cl_salv_display_settings=&gt;true ).
*     Display all standard function
      gr_functions = gr_table-&gt;get_functions( ).
      gr_functions-&gt;set_all( abap_true ).
*     Sort
      gr_sorts = gr_table-&gt;get_sorts( ).
      gr_sorts-&gt;add_sort( columnname = 'DEVCLASS' subtotal = abap_true ).
      gr_sorts-&gt;add_sort( columnname = 'NAME'     subtotal = abap_false ).
*     Totals
      gr_agg = gr_table-&gt;get_aggregations( ).
      gr_agg-&gt;add_aggregation( 'SLOC' ).
*     Display table
      gr_table-&gt;display( ).
    CATCH cx_salv_msg.
      WRITE: / 'Exception CX_SALV_MSG'.
    CATCH cx_salv_not_found.
      WRITE: / 'Exception CX_SALV_NOT_FOUND'.
    CATCH cx_salv_data_error.
      WRITE: / 'Exception CX_SALV_DATA_ERROR'.
    CATCH cx_salv_existing.
      WRITE: / 'Exception CX_SALV_EXISTING'.
  ENDTRY.
ENDFORM.                    "alv</pre>
<p><strong>Additional links and resources:</strong></p>
<ul>
<li><a title="Source lines of code" href="http://en.wikipedia.org/wiki/Lines_of_code" target="_blank">Source lines of code (wikipedia)</a></li>
</ul>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/' rel='bookmark' title='How to Send a System Message to another SAP User'>How to Send a System Message to another SAP User</a></li>
<li><a href='http://saplab.org/2009/10/one-minute-one-great-abap-tip/' rel='bookmark' title='One Minute, One Great ABAP Tip'>One Minute, One Great ABAP Tip</a></li>
<li><a href='http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/' rel='bookmark' title='TIP: Overide Lack of Authorization on a Transaction Code'>TIP: Overide Lack of Authorization on a Transaction Code</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2011/01/how-many-lines-of-abap-code-in-your-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SAP Sandbox onDemand</title>
		<link>http://saplab.org/2010/10/sap-sandbox-ondemand/</link>
		<comments>http://saplab.org/2010/10/sap-sandbox-ondemand/#comments</comments>
		<pubDate>Wed, 20 Oct 2010 15:50:33 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Beginners]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[FI/CO]]></category>
		<category><![CDATA[HCM/HR]]></category>
		<category><![CDATA[Logistics]]></category>
		<category><![CDATA[Netweaver]]></category>
		<category><![CDATA[PM]]></category>
		<category><![CDATA[SAP Career]]></category>
		<category><![CDATA[SD]]></category>
		<category><![CDATA[Workflow]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Emerging]]></category>
		<category><![CDATA[MiniSAP]]></category>
		<category><![CDATA[MM]]></category>
		<category><![CDATA[PP]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1875</guid>
		<description><![CDATA[Well I can say that this is a long awaited SAP launch and that will provide help to many users worldwide. If you&#8217;re like me, at a certain point in your SAP career, you felt the need to have your own SAP sandbox. Being for professional purposes or for your own personal skillset build, an [...]
Related posts:<ol>
<li><a href='http://saplab.org/2010/07/best-of-sap-sites-directory/' rel='bookmark' title='Best of SAP Sites Directory'>Best of SAP Sites Directory</a></li>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
<li><a href='http://saplab.org/2010/07/22-sap-how-tos-you-cant-miss/' rel='bookmark' title='22 SAP How To&#8217;s you can&#8217;t miss!'>22 SAP How To&#8217;s you can&#8217;t miss!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2010%252F10%252Fsap-sandbox-ondemand%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22SAP%20Sandbox%20onDemand%22%20%7D);"></div>
<p>Well I can say that this is a long awaited SAP launch and that will provide help to many users worldwide. If you&#8217;re like me, at a certain point in your SAP career, you felt the need to have your own SAP sandbox. Being for professional purposes or for your own personal skillset build, an SAP sandbox system is always handy and you can&#8217;t well perform this kind of experiments on your client development system.</p>
<p>Up until now, there weren&#8217;t many (viable) available solutions. There are some companies that provide you a paid service for you to have your own SAP system/client but usually expensive for most of us.</p>
<p>This month <a href="https://lod.sdn.sap.com/" target="_blank" rel="nofollow">Learning on Demand</a> by SAP launched a new service called <a href="https://cart.lod.sdn.sap.com/home.php?cat=680&amp;catexp=680" target="_blank" rel="nofollow" class="broken_link">SAP Sandbox onDemand</a>, which consists of an SAP ECC 6.0 system with sufficient basic data, such as customer and vendor master data, to enable substantial experimentation.  </p>
<p>Using this system, users can access the core ERP functionality of modules such as FI and CO, SD, HR and MM and can write and test ABAP code and modify SAP Netweaver settings and configurations. This offering will provide interested individuals with the ability to reinforce their existing SAP ERP knowledge and skills through experimentation in a live but safe environment.  It will also enable you to clarify areas of ambiguity in your knowledge or to test new functionality that they may be considering for an existing or new client.</p>
<p>Given that the SAP Sandbox onDemand is accessed via an SAP WebGUI, there is no need to install any client-side software on your PC, so you can start using the system immediately after receiving your access details.</p>
<p>Comparing with other and existing offers, SAP Sandbox onDemand has a fair price in my perspective: US$80 for 30 days access.</p>
<p><center><br />
<a href="https://lod.sdn.sap.com/index.jspa" target="_blank" rel="nofollow"><br />
<img src="http://saplab.org/wp-content/uploads/2010/10/sap-sandbox01.jpg" alt="SAP Sandbox onDemand" title="SAP Sandbox onDemand " width="400" height="275" class="aligncenter size-full wp-image-1878" /><br />
<br />
<h2>Click here for more info and start playing now!</a></h2>
<p></center></p>
<p>&nbsp;</p>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2010/07/best-of-sap-sites-directory/' rel='bookmark' title='Best of SAP Sites Directory'>Best of SAP Sites Directory</a></li>
<li><a href='http://saplab.org/2010/07/saplab-version-2-0-is-on-line/' rel='bookmark' title='SAPLAB Version 2.0 is on-line!'>SAPLAB Version 2.0 is on-line!</a></li>
<li><a href='http://saplab.org/2010/07/22-sap-how-tos-you-cant-miss/' rel='bookmark' title='22 SAP How To&#8217;s you can&#8217;t miss!'>22 SAP How To&#8217;s you can&#8217;t miss!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2010/10/sap-sandbox-ondemand/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>7 Web Dynpro Basic Tutorials</title>
		<link>http://saplab.org/2010/09/7-web-dynpro-basic-tutorials/</link>
		<comments>http://saplab.org/2010/09/7-web-dynpro-basic-tutorials/#comments</comments>
		<pubDate>Tue, 14 Sep 2010 10:09:02 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Beginners]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[SAP Blogs & Resources]]></category>
		<category><![CDATA[Webdynpro ABAP]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Portal]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1781</guid>
		<description><![CDATA[Hi everybody. As Web Dynpro evolves, so does ABAP programmers&#8217; interest over it. I keep receiving emails from professionals that want to start hands-on towards ABAP Web Dynpro but, mainly due to day-to-day engagement on their projects, they can&#8217;t start and end up delaying it. My suggestion is whenever you have 30 minutes, start from [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/02/messages-internationalization-with-web-dynpro-abap/' rel='bookmark' title='Internationalization with Web Dynpro ABAP'>Internationalization with Web Dynpro ABAP</a></li>
<li><a href='http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/' rel='bookmark' title='How to Send a System Message to another SAP User'>How to Send a System Message to another SAP User</a></li>
<li><a href='http://saplab.org/2010/07/22-sap-how-tos-you-cant-miss/' rel='bookmark' title='22 SAP How To&#8217;s you can&#8217;t miss!'>22 SAP How To&#8217;s you can&#8217;t miss!</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2010%252F09%252F7-web-dynpro-basic-tutorials%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%227%20Web%20Dynpro%20Basic%20Tutorials%22%20%7D);"></div>
<p>Hi everybody. As Web Dynpro evolves, so does ABAP programmers&#8217; interest over it. I keep receiving emails from professionals that want to start hands-on towards ABAP Web Dynpro but, mainly due to day-to-day engagement on their projects, they can&#8217;t start and end up delaying it. </p>
<p>My suggestion is whenever you have 30 minutes, start from the Basics and build your knowledge starting from here. In this post I include links to 7 basic tutorials and explanations, linking to SDN files, hoping they will help anyone wanting to start on <a href="http://saplab.org/category/webdynpro-abap/" title="ABAP Web Dynpro">ABAP Web Dynpro</a>.</p>
<h2>1 &#8211; Create a Simple Web Dynpro Application</h2>
<p>In this step-by-step tutorial you will create a simple Web Dynpro component, which consists of one view. For the view, you will create a view context, which is linked to a table element on the view layout and which contains the data from table SFLIGHT. This table will be displayed in the browser at runtime. Furthermore, you will create a Web Dynpro application for this simple Web Dynpro component, which can be run in the browser.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/cb243c45-0801-0010-eb9c-88669007f130?QuickLink=index&#038;overridelayout=true" target="_blank" title="Create a Simple Web Dynpro Application">1 &#8211; Create a Simple Web Dynpro Application</a></div>
<h2>2 &#8211; BAPI Usage</h2>
<p>This exercise demonstrates the usage of BAPIs and how to implement a view with input fields and a result table.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/9cb5d345-0801-0010-6a8e-fc57c23fd600?QuickLink=index&#038;overridelayout=true" target="_blank" title="BAPI Usage">2 &#8211; BAPI Usage</a></div>
<h2>3 &#8211; Navigation</h2>
<p>This tutorial demonstrates how easy it is to navigate between different views of the same Web Dynpro Application. It is shown by extending tutorial Web Dynpro for ABAP &#8211; BAPI Usage with additional view in order to display a message in the case that no flights are available for a particular start and destination combination. Of course, you will be able to return back to search for a new combination.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/cfb80249-0801-0010-3eaa-829afeac170f?QuickLink=index&#038;overridelayout=true" target="_blank" title="Web Dynpro ABAP Navigation">3 &#8211; Navigation</a></div>
<h2>4 &#8211; Display Bookings for Selected Flights</h2>
<p>In this tutorial, the BAPINAV component from Web Dynpro for ABAP &#8211; BAPI Navigation tutorial will be further enhanced to display a list of bookings for a selected flight. The context which contains the flights information will be enhanced with a sub node for the corresponding bookings. We will also show how the booking information is retrieved in a so called supply function and the context node bound to a new table UI element in the Main View.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/7a89b067-0801-0010-8192-a9896a60938e?QuickLink=index&#038;overridelayout=true" target="_blank" title="Display Bookings for Selected Flights">4 &#8211; Display Bookings for Selected Flights</a></div>
<h2>5 &#8211; Component and Application Configuration</h2>
<p>In Tutorial 3 you enhanced the Web Dynpro flight sample with a navigation to a separate view including a message for the case where no flights are found for a given search query. But some of your customers might prefer the former solution where the empty result table is displayed instead of jumping to a new view.</p>
<p>One possibility would be to have two slightly different Web Dynpro components. But it would obviously be better to have just one Web Dynpro component which can be configured somehow to behave in one or the other way. You can imagine that a real life application can have several such switches or parameters to steer the behavior of such a flexible application.</p>
<p>Therefore, Web Dynpro provides several techniques, such as configuration, personalization, or customization, in order to modify the UI or the navigation path of a delivered Web Dynpro application or component at the customer’s site.</p>
<p>This tutorial shows how to implement such a configuration for this simple example with two different possibilities to handle the case of no found flights.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/b52e13c3-0901-0010-8fa6-d11a51821b7c?QuickLink=index&#038;overridelayout=true" target="_blank" title="Component and Application Configuration">5 &#8211; Component and Application Configuration</a></div>
<h2>6 &#8211; Component Usage</h2>
<p>Prerequistes are Tutorial 3 &#8211; Navigation and Tutorial 4 – Display a list of bookings for a selected flight.<br />
Just to review back Tutorial 4, we created a context Flight_List which contains the flight information and it was advanced with sub-node BOOKINGS for the corresponding bookings. Automatically, the booking information was retrived in a new table (using supply function) which shows a list of bookings for a selected flight.</p>
<p><strong>Author(s): SAP AG</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/2e71ce83-0b01-0010-11a4-98c28a33195f?QuickLink=index&#038;overridelayout=true" target="_blank" title="Component Usage">6 &#8211; Component Usage</a></div>
<h2>7 &#8211; Column Coloring in ALV</h2>
<p>The article aims to help the professionals who have only ABAP knowledge and passion to develop their Web Dynpro knowledge in ABAP. This article provides the knowledge for understanding ALV in Web dynpro and coloring a column in ALV.</p>
<p><strong>Author(s): J.Jayanthi</strong></p>
<div id="download"><a href="http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/006c7f3a-c181-2d10-d6af-c4cbbcfeb5c8?QuickLink=index&#038;overridelayout=true" target="_blank" title="Web Dynpro: Column Coloring in ALV">7 &#8211; Column Coloring in ALV</a></div>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/02/messages-internationalization-with-web-dynpro-abap/' rel='bookmark' title='Internationalization with Web Dynpro ABAP'>Internationalization with Web Dynpro ABAP</a></li>
<li><a href='http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/' rel='bookmark' title='How to Send a System Message to another SAP User'>How to Send a System Message to another SAP User</a></li>
<li><a href='http://saplab.org/2010/07/22-sap-how-tos-you-cant-miss/' rel='bookmark' title='22 SAP How To&#8217;s you can&#8217;t miss!'>22 SAP How To&#8217;s you can&#8217;t miss!</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2010/09/7-web-dynpro-basic-tutorials/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Send a System Message to another SAP User</title>
		<link>http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/</link>
		<comments>http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 14:06:58 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Beginners]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[System Tools]]></category>
		<category><![CDATA[Basis]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[Function Module]]></category>
		<category><![CDATA[SE37]]></category>
		<category><![CDATA[TCodes]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1738</guid>
		<description><![CDATA[Imagine that you&#8217;re working configuring a certain SAP module, touching several tables and configuration spots. Sometimes it might happen that someone else is maintaining the same table that you need access. This standard Function Module could be useful in these cases, since you might not know an alternative way to contact the user locking the [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/03/how-to-do-a-system-trace/' rel='bookmark' title='How To Do A System Trace'>How To Do A System Trace</a></li>
<li><a href='http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/' rel='bookmark' title='TIP: Overide Lack of Authorization on a Transaction Code'>TIP: Overide Lack of Authorization on a Transaction Code</a></li>
<li><a href='http://saplab.org/2009/03/single-sign-on-sap-oss-user/' rel='bookmark' title='Single Sign-On with your SAP OSS User'>Single Sign-On with your SAP OSS User</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2010%252F07%252Fhow-to-send-a-system-message-to-another-sap-user%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22How%20to%20Send%20a%20System%20Message%20to%20another%20SAP%20User%22%20%7D);"></div>
<p>Imagine that you&#8217;re working configuring a certain SAP module, touching several tables and configuration spots. Sometimes it might happen that someone else is maintaining the same table that you need access. This standard Function Module could be useful in these cases, since you might not know an alternative way to contact the user locking the table or other SAP object. Since the system will display who is locking the table, you will know for whom to send the message.</p>
<p>Here&#8217;s how it goes.</p>
<h2>Trying to access the table</h2>
<p>When trying to maintain a certain table, the user will receive the following warning:</p>
<p style="text-align: center;"><img class="aligncenter" title="How to Send a System Message to another SAP User" src="http://saplab.org/wp-content/images/sap-system-message01.jpg" alt="" /></p>
<h2>Sending a system message using a standard SAP function module</h2>
<p>Once you&#8217;ve identified the user, access SE37 &#8211; assuming you have permission! In SE37 call SAP standard function module <strong>TH_POPUP</strong>.</p>
<p style="text-align: center;"><img class="aligncenter" title="How to Send a System Message to another SAP User" src="http://saplab.org/wp-content/images/sap-system-message02.jpg" alt="" /></p>
<p>Fill in the following input parameters:</p>
<p>- CLIENT: the system client on which you&#8217;re working on. If you don&#8217;t know this, take a look at the lower right status bar;<br />
- USER: the user for which you want the message to be delivered;<br />
- MESSAGE: the text message you want to deliver to the user;<br />
- MESSAGE_LEN: allows you to define a message length. Leave it empty;<br />
- CUT_BLANKS: allows you to specify if you want to trim existing spaces. Leave it empty.</p>
<p>To submit the message just hit <strong>&#8220;Execute (F8)&#8221;</strong></p>
<h2>What the user receives</h2>
<p>When you click on &#8220;Execute (F8)&#8221;, the destination user receives the following message as a pop-up:</p>
<p style="text-align: center;"><img class="aligncenter" title="How to Send a System Message to another SAP User" src="http://saplab.org/wp-content/images/sap-system-message03.jpg" alt="" /></p>
<p>This is just a simple system tool that can help you in a day to day basis, working with SAP.</p>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/03/how-to-do-a-system-trace/' rel='bookmark' title='How To Do A System Trace'>How To Do A System Trace</a></li>
<li><a href='http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/' rel='bookmark' title='TIP: Overide Lack of Authorization on a Transaction Code'>TIP: Overide Lack of Authorization on a Transaction Code</a></li>
<li><a href='http://saplab.org/2009/03/single-sign-on-sap-oss-user/' rel='bookmark' title='Single Sign-On with your SAP OSS User'>Single Sign-On with your SAP OSS User</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2010/07/how-to-send-a-system-message-to-another-sap-user/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Best of SAP Sites Directory</title>
		<link>http://saplab.org/2010/07/best-of-sap-sites-directory/</link>
		<comments>http://saplab.org/2010/07/best-of-sap-sites-directory/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 23:20:45 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Beginners]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[FI/CO]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[Logistics]]></category>
		<category><![CDATA[Netweaver]]></category>
		<category><![CDATA[PI]]></category>
		<category><![CDATA[PM]]></category>
		<category><![CDATA[PP]]></category>
		<category><![CDATA[SAP Blogs & Resources]]></category>
		<category><![CDATA[SD]]></category>
		<category><![CDATA[Beginner]]></category>
		<category><![CDATA[MM]]></category>
		<category><![CDATA[sap fi]]></category>
		<category><![CDATA[sap pp]]></category>

		<guid isPermaLink="false">http://saplab.org/slv2/?p=1613</guid>
		<description><![CDATA[The Best of SAP Sites Directory is a great resource if you&#8217;re looking for information on SAP, ABAP, Netweaver, FICO, SD, MM, PP, downloads and other SAP tutorials and user guides.  The Best of SAP Sites Directory blog is owned by eddai, who is also blogger and owner of SAP DOCS. The Best of SAP [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/05/tools-for-sap-portal/' rel='bookmark' title='Tools for SAP Portal'>Tools for SAP Portal</a></li>
<li><a href='http://saplab.org/2009/10/best-practices-for-sap-netweaver-portal-70/' rel='bookmark' title='Best Practices for SAP Netweaver Portal 7.0'>Best Practices for SAP Netweaver Portal 7.0</a></li>
<li><a href='http://saplab.org/2009/10/15-sap-frequently-asked-questions-faq/' rel='bookmark' title='15 SAP Frequently Asked Questions (FAQ)'>15 SAP Frequently Asked Questions (FAQ)</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2010%252F07%252Fbest-of-sap-sites-directory%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Best%20of%20SAP%20Sites%20Directory%22%20%7D);"></div>
<p>The <a title="Best of SAP Sites Directory" href="http://sapdocs.info/have-you-visited-socialsapdocsinfo/" target="_blank">Best of SAP Sites Directory</a> is a great resource if you&#8217;re looking for information on SAP, <a href="http://saplab.org/category/abap/">ABAP</a>, <a title="Netweaver" href="http://saplab.org/category/netweaver/" target="_blank">Netweaver</a>, <a title="FI/CO" href="http://saplab.org/category/fico/" target="_blank">FICO</a>, <a title="SD" href="http://saplab.org/category/sd/" target="_blank">SD</a>, <a title="MM" href="http://saplab.org/tag/mm/" target="_blank">MM</a>, <a title="PP" href="http://saplab.org/category/pp/" target="_blank">PP</a>, <a title="SAP Downloads" href="http://saplab.org/category/downloads/" target="_blank">downloads</a> and other SAP tutorials and user guides.  The <a title="Best of SAP Sites  Directory" href="http://sapdocs.info/have-you-visited-socialsapdocsinfo/" target="_blank">Best of SAP Sites Directory</a> blog is owned by eddai, who is also blogger and owner of <a href="http://sapdocs.info/" target="_blank">SAP DOCS</a>.</p>
<p><a title="Best of SAP Sites Directory" href="http://sapdocs.info/have-you-visited-socialsapdocsinfo/" target="_blank">The Best of SAP Sites Directory</a> is a SAP topics aggregator since it displays headlines from the most popular SAP sites on the internet.</p>
<p>Eddai leaves his welcome message:</p>
<blockquote><p>This site is the dashboard for the latest web-buzz, a single page that  encapsulates up-to-the-minute headlines from the most popular SAP sites  on the internet with a purpose of getting a quick glance on updates over  various categories. The lists will be enhanced in each categories by day. Hope you find this site useful.</p></blockquote>
<h3 style="text-align: center;"><a title="Home" href="http://sapdocs.info/have-you-visited-socialsapdocsinfo/">Click here to enter Best of SAP Sites  Directory</a></h3>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/05/tools-for-sap-portal/' rel='bookmark' title='Tools for SAP Portal'>Tools for SAP Portal</a></li>
<li><a href='http://saplab.org/2009/10/best-practices-for-sap-netweaver-portal-70/' rel='bookmark' title='Best Practices for SAP Netweaver Portal 7.0'>Best Practices for SAP Netweaver Portal 7.0</a></li>
<li><a href='http://saplab.org/2009/10/15-sap-frequently-asked-questions-faq/' rel='bookmark' title='15 SAP Frequently Asked Questions (FAQ)'>15 SAP Frequently Asked Questions (FAQ)</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2010/07/best-of-sap-sites-directory/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>TIP: Overide Lack of Authorization on a Transaction Code</title>
		<link>http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/</link>
		<comments>http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/#comments</comments>
		<pubDate>Tue, 16 Mar 2010 15:55:43 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[System Tools]]></category>
		<category><![CDATA[TCodes]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1455</guid>
		<description><![CDATA[When you just need to look on a specific transaction and you don&#8217;t have permission? Wait no more, this is a good and quick work-arround: - Go to transaction SE37, display the function module RS_TRANSACTION_TEST and place a break-point after instruction ( CALL &#8216;AUTH_CHECK_TCODE&#8217; ID &#8216;TCODE&#8217; FIELD objectname. ). - Go to transaction SE93, fill [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/03/sap-abap-transaction-codes/' rel='bookmark' title='SAP ABAP Transaction Codes'>SAP ABAP Transaction Codes</a></li>
<li><a href='http://saplab.org/2009/03/batch-input-concept/' rel='bookmark' title='Batch Input Concept'>Batch Input Concept</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2010%252F03%252Ftip-overide-lack-of-authorization-on-a-transaction-code%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22TIP%3A%20Overide%20Lack%20of%20Authorization%20on%20a%20Transaction%20Code%20%22%20%7D);"></div>
<p>When you just need to look on a specific transaction and you don&#8217;t have permission?<br />
Wait no more, this is a good and quick work-arround:</p>
<p style="text-align: left;">- Go to transaction <strong>SE37</strong>, display the function module <strong>RS_TRANSACTION_TEST</strong> and place a break-point after instruction ( CALL &#8216;AUTH_CHECK_TCODE&#8217; ID &#8216;TCODE&#8217; FIELD objectname. ).</p>
<p style="text-align: left;"><img class="aligncenter size-medium wp-image-1456" title="fm" src="http://saplab.org/wp-content/uploads/2010/03/fm-300x210.jpg" alt="" width="300" height="210" /></p>
<p>- Go to transaction <strong>SE93</strong>, fill the transaction code that you need to execute and press the test Button (F8).</p>
<p>The debug window will pop-up and you will find yourself on the breakpoint that you placed on the function module <strong>RS_TRANSACTION_TEST</strong>. Change the system variable SY-SUBRC to &#8217;0&#8242; and press F8. And then you will find yourself in the transaction that you needed.</p>
<p>Simple and Easy!</p>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/03/sap-abap-transaction-codes/' rel='bookmark' title='SAP ABAP Transaction Codes'>SAP ABAP Transaction Codes</a></li>
<li><a href='http://saplab.org/2009/03/batch-input-concept/' rel='bookmark' title='Batch Input Concept'>Batch Input Concept</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2010/03/tip-overide-lack-of-authorization-on-a-transaction-code/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>ECC6 Enhancement Framework in 100 lines</title>
		<link>http://saplab.org/2009/10/ecc6-enhancement-framework-in-100-lines/</link>
		<comments>http://saplab.org/2009/10/ecc6-enhancement-framework-in-100-lines/#comments</comments>
		<pubDate>Wed, 14 Oct 2009 14:57:39 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[Enhancements]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=1163</guid>
		<description><![CDATA[Once upon a time, there was a very clever person at Waldorf that decided that SAP standard coding could be possible to enhance without actually changing the standard code. A then Enhancement Framework was born. The approach that I usually take on the SAP training sessions that I provide is to highlight the Enhancement Framework [...]
No related posts.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2009%252F10%252Fecc6-enhancement-framework-in-100-lines%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22ECC6%20Enhancement%20Framework%20in%20100%20lines%22%20%7D);"></div>
<p>Once upon a time, there was a very clever person at Waldorf that decided that SAP standard coding could be possible to enhance without actually changing the standard code. A then Enhancement Framework was born.</p>
<p>The approach that I usually take on the SAP training sessions that I provide is to highlight the Enhancement Framework as a second layer of code sitting on top of SAP standard code. The two layers connect through anchor points. These anchor points are the <strong>BADIs</strong>, the enhancement points, sections etc.<br />
The real great advantage of using the Enhancement Framework is that upon an upgrade or installation of support packages, the new standard code enters directly on top of the standard layer without touching anything on the enhancement layer.</p>
<p><strong>1. Explicit VS Implicit Enhancement</strong></p>
<p>Implicit enhancement options are already in a predefined place attached to the standard code, they are provided by the framework. Explicit enhancement options need to be inserted explicitly.</p>
<p><strong>2. Explicit Enhancement</strong></p>
<ul>
<li>BADIs &#8211; The interface of the BADI is already defined (attributes, methods, etc). It&#8217;s up to the developer to create one or more implementations for this interface. BADIs execution can be subjected to filters and there are old and new BADIs. The old ones are based at code level where implementations are searched by means of code execution, they are performance costly and should be avoided. The new ones are based on the kernel level and give the ability of a fast run and low level of impact on performance.</li>
<li>These explicit enhancements that are new to this ECC6 framework are the ones which can be provided at a specific place &#8211; called <strong>Enhancement Point</strong>, and another which can be used to replace a set of statements &#8211; called <strong>Enhancement Section</strong>.</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1173" src="http://saplab.org/wp-content/uploads/2009/10/sap-enhancement-framework.jpg" alt="SAP Enhancement Framework" width="450" height="259" /></p>
<p><strong>3. Implicit Enhancement</strong></p>
<p>These enhancements are available at certain pre-defined places. For example:</p>
<ul>
<li>At the end of all the programs (Includes, Reports, Function pool, Module pool, etc.), after the last statement</li>
<li>At the beginning and end of all FORM subroutines</li>
<li>At the end of all <a title="ABAP" href="http://saplab.org/2009/03/what-is-abap/" target="_self">ABAP</a> Function Modules</li>
<li>At the end of all visibility areas (public, protected and private) of local class</li>
</ul>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1175" src="http://saplab.org/wp-content/uploads/2009/10/sap-enhancement-framework02.jpg" alt="SAP Enhancement Framework" width="450" height="266" /></p>
<p>Using these Enhancement Framework enhancing function modules, class-methods interfaces are also quite easy to perform. On our next posts we will approach all thes features and a less known one, the <strong>Dark Side of the Enhancement Framework.</strong></p>
<p>See you next time, on the dark side!</p>
<p><strong><em>About the author</em></strong></p>
<p><img src="http://en.gravatar.com/userimage/7650615/451b534d28fc8e08f85c5cd93c7126ba.jpeg" alt="" width="50" height="50" align="left" />Helder Goncalves (hfgoncalves) has been working with ABAP development for more than 9 years, covering all major modules, releases and technologies. <a title="About SAPLAB - Helder Gonçalves" href="http://saplab.org/about/#hfgoncalves">Click here</a> to view Helder&#8217;s full profile.</p>

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2009/10/ecc6-enhancement-framework-in-100-lines/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>One Minute, One Great ABAP Tip</title>
		<link>http://saplab.org/2009/10/one-minute-one-great-abap-tip/</link>
		<comments>http://saplab.org/2009/10/one-minute-one-great-abap-tip/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 14:27:57 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[Great SAP Tips]]></category>
		<category><![CDATA[Dynamic Tables]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=973</guid>
		<description><![CDATA[This is my first post for SAPLAB.org, so I&#8217;ve decided to write about something really simple yet powerful &#8211; building ABAP Dynamic Tables using RTTS ( From Release 6.40). RTTS stands for Run Time Type Services. Creating dynamic internal tables in ABAP programs can be very useful, dynamic coding can provide fast program running and [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/03/alv-report-sample/' rel='bookmark' title='ALV Report Sample'>ALV Report Sample</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2009%252F10%252Fone-minute-one-great-abap-tip%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22One%20Minute%2C%20One%20Great%20ABAP%20Tip%22%20%7D);"></div>
<p>This is my first post for SAPLAB.org, so I&#8217;ve decided to write about something really simple yet powerful &#8211; building ABAP Dynamic Tables using RTTS ( From Release 6.40). RTTS stands for <strong>Run Time Type Services</strong>.</p>
<p>Creating dynamic internal tables in ABAP programs can be very useful, dynamic coding can provide fast program running and easier maintenance. From release 6.40, RTTS has provided a new approach to dynamic table programming. Here’s an example of what I mean:</p>
<pre lang="abap">
REPORT Z_1MIN_1GREATTIP_RTTS.

TABLES PA0002.

* Table type
TYPES: BEGIN OF TY_PERNR_LIST,
         PERNR TYPE PERNR_D,
         BEGDA TYPE BEGDA,
         ENDDA TYPE ENDDA,
       END   OF TY_PERNR_LIST.

* Dynamic Table
DATA: LO_STRUCTDESCR   TYPE REF TO CL_ABAP_STRUCTDESCR,
      LO_ELEMDESCR  TYPE REF TO CL_ABAP_ELEMDESCR,
      LO_STRUCTDESCR_NEW TYPE REF TO CL_ABAP_STRUCTDESCR,
      LO_TABLEDESCR  TYPE REF TO CL_ABAP_TABLEDESCR,
      LO_DATA     TYPE REF TO DATA,
      LT_COMPONENT     TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
      LT_TOT_COMPONENT TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
      LA_COMPONENT     LIKE LINE OF LT_COMPONENT.

* Dynamic Selection fields
TYPES: BEGIN OF TY_FIELDCATALOG,
         FIELDNAME TYPE CHAR30,
       END   OF TY_FIELDCATALOG.
*
DATA:  LT_FIELDCATALOG TYPE STANDARD TABLE OF TY_FIELDCATALOG,
       LA_FIELDCATALOG TYPE TY_FIELDCATALOG.

* field symbols to access the dynamic table
FIELD-SYMBOLS: <FS_TAB>   TYPE ANY TABLE,
               <FS_LINE>  TYPE ANY,
               <FS_FIELD> TYPE ANY.
*
* Selection Screen
SELECT-OPTIONS: SO_PERNR FOR PA0002-PERNR.

START-OF-SELECTION.

* 1- Getting Components of type
  LO_STRUCTDESCR ?= CL_ABAP_TYPEDESCR=>DESCRIBE_BY_NAME( 'TY_PERNR_LIST' ).
  LT_COMPONENT  = LO_STRUCTDESCR->GET_COMPONENTS( ).
  APPEND LINES OF LT_COMPONENT TO LT_TOT_COMPONENT.

*   Element Description Last Name
  LO_ELEMDESCR ?= CL_ABAP_ELEMDESCR=>DESCRIBE_BY_NAME( 'PAD_NACHN' ).
*
*   Field name
  LA_COMPONENT-NAME = 'NACHN'.
*
*   Field type
  LA_COMPONENT-TYPE = CL_ABAP_ELEMDESCR=>GET_C(
                    P_LENGTH   = LO_ELEMDESCR->LENGTH ).
*
*   Filling the component table
  APPEND LA_COMPONENT TO LT_TOT_COMPONENT.
  CLEAR: LA_COMPONENT.

*   Element Description First Name
  LO_ELEMDESCR ?= CL_ABAP_ELEMDESCR=>DESCRIBE_BY_NAME( 'PAD_VORNA' ).
*
*   Field name
  LA_COMPONENT-NAME = 'VORNA'.
*
*   Field type
  LA_COMPONENT-TYPE = CL_ABAP_ELEMDESCR=>GET_C(
                     P_LENGTH   = LO_ELEMDESCR->LENGTH ).
*
*   Filling the component table
  APPEND LA_COMPONENT TO LT_TOT_COMPONENT.
  CLEAR: LA_COMPONENT.

*
* 3. Create a New Type
  LO_STRUCTDESCR_NEW = CL_ABAP_STRUCTDESCR=>CREATE( LT_TOT_COMPONENT ).
*
* 4. New Table type
  LO_TABLEDESCR = CL_ABAP_TABLEDESCR=>CREATE(
                  P_LINE_TYPE  = LO_STRUCTDESCR_NEW
                  P_TABLE_KIND = CL_ABAP_TABLEDESCR=>TABLEKIND_STD
                  P_UNIQUE     = ABAP_FALSE ).
*
* 5. data to handle the new table type
  CREATE DATA LO_DATA TYPE HANDLE LO_TABLEDESCR.
*
* 6. New internal table in the fieldsymbols
  ASSIGN LO_DATA->* TO <FS_TAB>.
*
*$*$*...............Dynamic Selection.............................*$*$*
* Filling up the table for the Selection fields of Select Query
  LOOP AT LT_TOT_COMPONENT INTO LA_COMPONENT.
    LA_FIELDCATALOG-FIELDNAME = LA_COMPONENT-NAME.
    APPEND LA_FIELDCATALOG TO LT_FIELDCATALOG.
    CLEAR: LA_COMPONENT, LA_FIELDCATALOG.
  ENDLOOP.
*
* Selecting data
  SELECT (LT_FIELDCATALOG)
         INTO  TABLE <FS_TAB>
         FROM  PA0002
         UP TO 10 ROWS
         WHERE PERNR IN SO_PERNR.
*
*$*$*...............Accessing dynamic table.......................*$*$*
  LOOP AT <FS_TAB> ASSIGNING <FS_LINE>.
    ASSIGN COMPONENT 'VORNA' OF STRUCTURE <FS_LINE> TO <FS_FIELD>.
    CONCATENATE 'Mr.' <FS_FIELD> INTO <FS_FIELD> SEPARATED BY SPACE.
  ENDLOOP.
*
*
*$*$*...............Displaying using SALV model...................*$*$*
*
  DATA: LO_ALV TYPE REF TO CL_SALV_TABLE.
*
  TRY.
      CL_SALV_TABLE=>FACTORY(
        EXPORTING
          LIST_DISPLAY = ABAP_FALSE
        IMPORTING
          R_SALV_TABLE = LO_ALV
        CHANGING
          T_TABLE      = <FS_TAB> ).
    CATCH CX_SALV_MSG .
  ENDTRY.
*
  LO_ALV->DISPLAY( ).
</pre>
<p>This is a good and quick way to create a dynamic <a title="ALV Sample Report" href="http://saplab.org/2009/03/alv-report-sample/">ALV report</a> in just a few lines of code. Please be sure to read up next on &#8220;1 minute &#8211; 1 Great Tip&#8221;: <em>ECC6 Enhancement Framework in 100 lines</em>.</p>
<p><strong><em>About the author</em></strong></p>
<p><img src="http://en.gravatar.com/userimage/7650615/451b534d28fc8e08f85c5cd93c7126ba.jpeg" alt="" width="50" height="50" align="left" />Helder Goncalves (hfgoncalves) has been working with ABAP development for more than 9 years, covering all major modules, releases and technologies. <a href="http://saplab.org/about/#hfgoncalves" title="About SAPLAB - Helder Gonçalves">Click here</a> to view Helder&#8217;s full profile.</p>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/03/alv-report-sample/' rel='bookmark' title='ALV Report Sample'>ALV Report Sample</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2009/10/one-minute-one-great-abap-tip/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ALV Report Sample</title>
		<link>http://saplab.org/2009/03/alv-report-sample/</link>
		<comments>http://saplab.org/2009/03/alv-report-sample/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 16:17:52 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[ERP]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=400</guid>
		<description><![CDATA[SAP provides a set of ALV (ABAP List Viewer) function modules which can be used to enhance the output of a Report. An ALV is a tool which enables the display of data in a grid, combining a better readability along with greater functionality, like sorting, filter, searching, exporting to Excel, etc. The included sample [...]
Related posts:<ol>
<li><a href='http://saplab.org/2009/03/batch-input-concept/' rel='bookmark' title='Batch Input Concept'>Batch Input Concept</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2009%252F03%252Falv-report-sample%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22ALV%20Report%20Sample%22%20%7D);"></div>
<p>SAP provides a set of ALV (ABAP List Viewer) function modules which can be used to enhance the output of a Report. An ALV is a tool which enables the display of data in a grid, combining a better readability along with greater functionality, like sorting, filter, searching, exporting to Excel, etc. The included sample code is for a simple ALV which will display materials based on a selection screen &#8220;From&#8230;To&#8221;.</p>
<p><strong>Steps to get this ALV running</strong></p>
<p>1. Enter transaction code SE38</p>
<p>2. Create a new Report (in the example called ZHR_MYALV)</p>
<p>3. Copy and paste the code below:</p>
<pre class="php php" style="font-family:monospace;">REPORT ZHR_MYALV.
*******************************************************************
*Simple example to use ALV and to define the ALV data in an internal
*table
********************************************************************
*data definition

tables:
marav. "Table MARA and table MAKT

*---------------------------------------------------------------------*
* Data to be displayed in ALV
* Using the following syntax, REUSE_ALV_FIELDCATALOG_MERGE can auto-
* matically determine the fieldstructure from this source program
Data:
begin of imat occurs 100,
matnr like marav-matnr, "Material number
maktx like marav-maktx, "Material short text
matkl like marav-matkl, "Material group (so you can test to make
                        " intermediate sums)
ntgew like marav-ntgew, "Net weight, numeric field (so you can test to
                        "make sums)
gewei like marav-gewei, "weight unit (just to be complete)
end of imat.

*---------------------------------------------------------------------*
* Other data needed
* field to store report name
data i_repid like sy-repid.
* field to check table length
data i_lines like sy-tabix.

*---------------------------------------------------------------------*
* Data for ALV display
TYPE-POOLS: SLIS.
data int_fcat type SLIS_T_FIELDCAT_ALV.

*---------------------------------------------------------------------*
select-options:
s_matnr for marav-matnr matchcode object MAT1.

*---------------------------------------------------------------------*
start-of-selection.

* read data into table imat
  select * from marav
  into corresponding fields of table imat
  where
  matnr in s_matnr.

* Check if material was found
  clear i_lines.
  describe table imat lines i_lines.
  if i_lines lt 1.
*   Using hardcoded write here for easy upload
    write: /
    'No materials found.'.
    exit.
  endif.

end-of-selection.

* To use ALV, we need either a reference to a structure defined in
* the SAP Data Dictionary (DDIC) or an in-program structure called
* the Field Catalog.
* The Field Catalog can be declared explicitly or generated by FUNCTION
* 'REUSE_ALV_FIELDCATALOG_MERGE' from an internal table from any
* report source, including this report.
*---------------------------------------------------------------------*

* Store report name
  i_repid = sy-repid.

* Create Fieldcatalogue from internal table
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      I_PROGRAM_NAME         = i_repid
      I_INTERNAL_TABNAME     = 'IMAT'  "capital letters!
      I_INCLNAME             = i_repid
    CHANGING
      CT_FIELDCAT            = int_fcat
    EXCEPTIONS
      INCONSISTENT_INTERFACE = 1
      PROGRAM_ERROR          = 2
      OTHERS                 = 3.
*explanations:
*    I_PROGRAM_NAME is the program which calls this function
*
*    I_INTERNAL_TABNAME is the name of the internal table which you want
*                       to display in ALV
*
*    I_INCLNAME is the ABAP-source where the internal table is defined
*               (DATA....)
*      CT_FIELDCAT contains the Fieldcatalouge that we need later for
*      ALV display

  IF SY-SUBRC &lt;&gt; 0.
    write: /
    'Returncode',
    sy-subrc,
    'from FUNCTION REUSE_ALV_FIELDCATALOG_MERGE'.
  ENDIF.

*This was the field catalog
*---------------------------------------------------------------------*
*

* Call for ALV list display
  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM = i_repid
      IT_FIELDCAT        = int_fcat
    TABLES
      T_OUTTAB           = imat
    EXCEPTIONS
      PROGRAM_ERROR      = 1
      OTHERS             = 2.

*explanations:
*    I_CALLBACK_PROGRAM is the program which calls this function
*
*    IT_FIELDCAT (just made by REUSE_ALV_FIELDCATALOG_MERGE) contains
*                 now the data definition needed for display
*
*    I_SAVE allows the user to save his own layouts
*
*      T_OUTTAB contains the data to be displayed in ALV

  IF SY-SUBRC &lt;&gt; 0.
    write: /
    'Returncode',
    sy-subrc,
    'from FUNCTION REUSE_ALV_LIST_DISPLAY'.
  ENDIF.</pre>
<p>4. Activate the report and click on &#8220;Direct Processing (F8)&#8221;</p>
<p>5. The selection screen will appear:</p>
<p><img class="aligncenter size-full wp-image-412" title="ALV Sample Report" src="http://saplab.org/wp-content/uploads/2009/03/alv-report02.jpg" alt="ALV Sample Report" width="525" height="160" /></p>
<p>6. Fill in some data parameters and click on &#8220;Execute (F8)&#8221; to display the result.</p>
<p><img class="aligncenter size-full wp-image-415" title="ALV Sample Report" src="http://saplab.org/wp-content/uploads/2009/03/alv-report031.jpg" alt="ALV Sample Report" width="525" height="572" /></p>
<p>This is an example that you can use and adapt to build your own ALV reports.</p>

<p>Related posts:<ol>
<li><a href='http://saplab.org/2009/03/batch-input-concept/' rel='bookmark' title='Batch Input Concept'>Batch Input Concept</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2009/03/alv-report-sample/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Batch Input Concept</title>
		<link>http://saplab.org/2009/03/batch-input-concept/</link>
		<comments>http://saplab.org/2009/03/batch-input-concept/#comments</comments>
		<pubDate>Sat, 07 Mar 2009 15:42:25 +0000</pubDate>
		<dc:creator>webmaster</dc:creator>
				<category><![CDATA[ABAP]]></category>
		<category><![CDATA[ERP]]></category>
		<category><![CDATA[System Tools]]></category>

		<guid isPermaLink="false">http://saplab.org/?p=384</guid>
		<description><![CDATA[A batch input session is a set of one or more calls to transactions along with the data to be processed by the transactions. The system normally executes the transactions in a session non-interactively, allowing rapid entry of bulk data into an R/3 System. A session records transactions and data in a special format that [...]
No related posts.]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_jade" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fsaplab.org%252F2009%252F03%252Fbatch-input-concept%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Batch%20Input%20Concept%22%20%7D);"></div>
<p>A batch input session is a set of one or more calls to transactions along with the data to be processed by the transactions. The system normally executes the transactions in a session non-interactively, allowing rapid entry of bulk data into an R/3 System.</p>
<p>A session records transactions and data in a special format that can be interpreted by the R/3 System. When the System reads a session, it uses the data in the session to simulate on-line entry of transactions and data. The System can call transactions and enter data using most of the facilities that are available to interactive users.</p>
<p>For example, the data that a session enters into transaction screens is subject to the same consistency checking as in normal interactive operation. Further, batch input sessions are subject to the user-based authorization checking that is performed by the system.</p>
<p>There are three batch input methods:</p>
<ol>
<li>In the <strong>Direct Input Method</strong>, the programs are provided by the SAP system. These programs are available for Standard Applications. Under this method, the data base is updated using a Function Module, which is responsible for executing the appropriate consistency checks.</li>
<li>In the <strong>Call Transaction Method</strong>, the ABAP Program reads the external data which is present on the Application or Presentation Server, and uses the ABAP Statement CALL TRANSACTION USING to run a SAP statement.</li>
<li>In the <strong>Session Method</strong> the program reads the data and the SAP system stores the data in a &#8220;Batch Input Session&#8221;. The session records the actions that are required to transfer data into the system using normal SAP transactions.</li>
</ol>
<p style="text-align: center;"><img class="size-full wp-image-385 aligncenter" title="Batch Input Concepts" src="http://saplab.org/wp-content/uploads/2009/03/batch-input.jpg" alt="Batch Input Concepts" width="388" height="498" /></p>
<p style="text-align: center;">Figure &#8211; Batch Input Session</p>
<h5>Copyright (c) 2009 &#8211; saplab.org.<br />
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free documentation License, Version 1.2 or any later version published by the Free Software Foundation, with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. Source: wikipedia.</h5>
<p style="text-align: left;">

<p>No related posts.</p>]]></content:encoded>
			<wfw:commentRss>http://saplab.org/2009/03/batch-input-concept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

