<?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>OO ABAP &#8211; SAP EWM Help</title>
	<atom:link href="https://www.sapewmhelp.com/question-category/ooabap/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.sapewmhelp.com</link>
	<description>SAP EWM questions answered by experts — ABAP, S/4HANA, warehouse management</description>
	<lastBuildDate>Thu, 25 Sep 2025 19:35:59 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0.2</generator>
	<item>
		<title>Pillar of OOP program</title>
		<link>https://www.sapewmhelp.com/question/pillar-of-oop-program/</link>
					<comments>https://www.sapewmhelp.com/question/pillar-of-oop-program/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 25 Sep 2025 19:35:59 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=pillar-of-oop-program</guid>

					<description><![CDATA[*&#38;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;* *&#38; Report  ZCLASS_TEST_DP_1 *&#38; *&#38;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;* *&#38; *&#38; *&#38;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;* REPORT zclass_test_dp_1. *pillars of oop &#8221; abstraction  &#8211;&#62; hiding the data. &#8221; encapsulation &#8211;&#62; variable + methods.  &#8211;&#62; capsule -&#62;  1 + 1 == &#8221; inheritance &#8211;&#62; parent child relation. &#8221; &#8211;&#62; child calss will inherit the property of parent class &#8221; polymorphism &#8221; multiple forms &#8211;&#62; 1 method &#8212; same name and differe param parent ==&#62; child class but with different paremeters. &#8211;&#62; method overriding. &#8221; method overloading is not there &#8211;&#62; same 2 same name and different parameters. PARAMETERS: p_num TYPE i. DATA: lv_tot TYPE i. CLASS lcl_main DEFINITION. PUBLIC SECTION. METHODS: get_data EXPORTING iv_num TYPE i. METHODS: set_data IMPORTING ev_num TYPE i. PROTECTED SECTION. PRIVATE SECTION. DATA : lv_num1 TYPE i. ENDCLASS. CLASS lcl_main IMPLEMENTATION. METHOD set_data. lv_num1 = ev_num. ENDMETHOD. METHOD get_data. iv_num = lv_num1. ENDMETHOD. ENDCLASS. &#8221; inheritance class lcl_child DEFINITION INHERITING FROM lcl_main. PUBLIC SECTION. METHODS: get_data REDEFINITION. METHODS: set_data REDEFINITION. PROTECTED SECTION. PRIVATE SECTION. data lv_child type i value 4. ENDCLASS. class lcl_child IMPLEMENTATION. method get_Data. &#8221; method overriding *    ev_tot = iv_num + iv_num2. &#8221; child will gor the child methods first then to parent method. super-&#62;get_data( IMPORTING iv_num = iv_num ). &#8221; way to calling the parent method ENDMETHOD. method set_Data. *    ev_tot = iv_num + iv_num2. &#8221; child will gor the child methods first then to parent method. super-&#62;set_data( EXPORTING ev_num = ev_num  ). &#8221; way to calling the parent method ENDMETHOD. ENDCLASS. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><!--StartFragment --><span><span>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*</span><br />
<span>*&amp; Report  ZCLASS_TEST_DP_1</span><br />
<span>*&amp;</span><br />
<span>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*</span><br />
<span>*&amp;</span><br />
<span>*&amp;</span><br />
<span>*&amp;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;*</span></p>
<p><span>REPORT </span>zclass_test_dp_1<span>.</span></p>
<p><span>*pillars of oop</span></p>
<p><span>&#8221; abstraction  &#8211;&gt; hiding the data.</span></p>
<p><span>&#8221; encapsulation &#8211;&gt; variable + methods.  &#8211;&gt; capsule -&gt;  1 + 1 ==</span><br />
<span>&#8221; inheritance &#8211;&gt; parent child relation.</span><br />
<span>&#8221; &#8211;&gt; child calss will inherit the property of parent class</span><br />
<span>&#8221; polymorphism</span><br />
<span>&#8221; multiple forms &#8211;&gt; 1 method &#8212; same name and differe param parent ==&gt; child class but with different paremeters. &#8211;&gt; method overriding.</span><br />
<span>&#8221; method overloading is not there &#8211;&gt; same 2 same name and different parameters.</span></p>
<p><span>PARAMETERS</span><span>: </span>p_num <span>TYPE </span><span>i</span><span>.</span><br />
<span>DATA</span><span>: </span>lv_tot <span>TYPE </span><span>i</span><span>.</span></p>
<p><span>CLASS </span>lcl_main <span>DEFINITION</span><span>.</span></p>
<p><span>PUBLIC </span><span>SECTION</span><span>.</span></p>
<p><span>METHODS</span><span>: </span>get_data <span>EXPORTING </span>iv_num <span>TYPE </span><span>i</span><span>.</span><br />
<span>METHODS</span><span>: </span>set_data <span>IMPORTING </span>ev_num <span>TYPE </span><span>i</span><span>.</span></p>
<p><span>PROTECTED </span><span>SECTION</span><span>.</span><br />
<span>PRIVATE </span><span>SECTION</span><span>.</span><br />
<span>DATA </span><span>: </span>lv_num1 <span>TYPE </span><span>i</span><span>.</span><br />
<span>ENDCLASS</span><span>.</span></p>
<p><span>CLASS </span>lcl_main <span>IMPLEMENTATION</span><span>.</span></p>
<p><span>METHOD </span>set_data<span>.</span><br />
lv_num1 <span>= </span>ev_num<span>.</span><br />
<span>ENDMETHOD</span><span>.</span></p>
<p><span>METHOD </span>get_data<span>.</span><br />
iv_num <span>= </span>lv_num1<span>.</span><br />
<span>ENDMETHOD</span><span>.</span></p>
<p><span>ENDCLASS</span><span>.</span></p>
<p><span>&#8221; inheritance</span><br />
<span>class </span>lcl_child <span>DEFINITION </span><span>INHERITING </span><span>FROM </span>lcl_main<span>.</span></p>
<p><span>PUBLIC </span><span>SECTION</span><span>.</span><br />
<span>METHODS</span><span>: </span>get_data <span>REDEFINITION</span><span>.</span><br />
<span>METHODS</span><span>: </span>set_data <span>REDEFINITION</span><span>.</span></p>
<p><span>PROTECTED </span><span>SECTION</span><span>.</span></p>
<p><span>PRIVATE </span><span>SECTION</span><span>.</span><br />
<span>data </span>lv_child <span>type </span><span>i </span><span>value </span><span>4</span><span>.</span><br />
<span>ENDCLASS</span><span>.</span></p>
<p><span>class </span>lcl_child <span>IMPLEMENTATION</span><span>.</span></p>
<p><span>method </span>get_Data<span>. </span><span>&#8221; method overriding</span><br />
<span>*    ev_tot = iv_num + iv_num2.</span><br />
<span>&#8221; child will gor the child methods first then to parent method.</span><br />
super<span>-&gt;</span>get_data<span>( </span><span>IMPORTING </span>iv_num <span>= </span>iv_num <span>)</span><span>. </span><span>&#8221; way to calling the parent method</span><br />
<span>ENDMETHOD</span><span>.</span></p>
<p><span>method </span>set_Data<span>.</span><br />
<span>*    ev_tot = iv_num + iv_num2.</span><br />
<span>&#8221; child will gor the child methods first then to parent method.</span><br />
super<span>-&gt;</span>set_data<span>( </span><span>EXPORTING </span>ev_num <span>= </span>ev_num  <span>)</span><span>. </span><span>&#8221; way to calling the parent method</span><br />
<span>ENDMETHOD</span><span>.</span><br />
<span>ENDCLASS</span><span>.</span></p>
<p><span>START-OF-SELECTION</span><span>.</span><br />
<span>DATA</span><span>(</span>lo_obj<span>) </span><span>= </span><span>NEW </span>lcl_main<span>( </span><span>)</span><span>.</span><br />
<span>DATA</span><span>(</span>lo_obj_child<span>) </span><span>= </span><span>NEW </span>lcl_child<span>( </span><span>)</span><span>.</span></p>
<p>lo_obj_child<span>-&gt;</span>set_data<span>(</span><br />
<span>EXPORTING</span><br />
ev_num <span>= </span>p_num <span>)</span><span>.</span><br />
lo_obj_child<span>-&gt;</span>get_data<span>(</span><br />
<span>IMPORTING</span><br />
iv_num <span>= </span>lv_tot<br />
<span>)</span><span>.</span></p>
<p><span>WRITE </span><span>: </span>lv_tot<span>.</span><br />
</span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/pillar-of-oop-program/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is CL_GUI_ALV_GRID?</title>
		<link>https://www.sapewmhelp.com/question/what-is-cl_gui_alv_grid/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-cl_gui_alv_grid/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Sun, 14 Sep 2025 20:01:24 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-cl_gui_alv_grid</guid>

					<description><![CDATA[It’s an ABAP OO class that displays data in a grid (table-like format) inside a screen container. Unlike the simpler CL_SALV_TABLE, this grid is fully interactive and customizable. Main Features Editable cells → You can let users change data directly in the grid. Field catalog → You define which columns to show, their titles, and [&#8230;]]]></description>
										<content:encoded><![CDATA[<ul>
<li>
<p>It’s an <strong>ABAP OO class</strong> that displays data in a <strong>grid (table-like format)</strong> inside a screen container.</p>
</li>
<li>
<p>Unlike the simpler <code>CL_SALV_TABLE</code>, this grid is <strong>fully interactive and customizable</strong>.</p>
</li>
</ul>
<p>Main Features</p>
<ol>
<li>
<p><strong>Editable cells</strong> → You can let users change data directly in the grid.</p>
</li>
<li>
<p><strong>Field catalog</strong> → You define which columns to show, their titles, and if they’re editable.</p>
</li>
<li>
<p><strong>Layout control</strong> → Zebra patterns, column widths, key columns, hotspots, etc.</p>
</li>
<li>
<p><strong>Events</strong> → You can react to user actions (e.g., double-click, toolbar buttons, cell value changes).</p>
</li>
<li>
<p><strong>Container-based</strong> → You need a custom control on a dynpro (screen) to host the ALV Grid.</p>
</li>
</ol>
<p>How it Works (Step-by-Step Flow)</p>
<ol>
<li>
<p><strong>Create a Screen (Dynpro)</strong></p>
<ul>
<li>
<p>Add a <strong>Custom Control</strong> (like a placeholder on the screen).</p>
</li>
<li>
<p>Give it a name, e.g., <code>CC_ALV</code>.</p>
</li>
</ul>
</li>
<li>
<p><strong>Create Container</strong></p>
<ul>
<li>
<p>In your program, create an object of class <code>CL_GUI_CUSTOM_CONTAINER</code> linked to <code>CC_ALV</code>.</p>
</li>
<li>
<p>This is the &#8220;holder&#8221; where the ALV will appear.</p>
</li>
</ul>
</li>
<li>
<p><strong>Create ALV Grid</strong></p>
<ul>
<li>
<p>Instantiate <code>CL_GUI_ALV_GRID</code> using the container as its parent.</p>
</li>
</ul>
</li>
<li>
<p><strong>Build Field Catalog</strong></p>
<ul>
<li>
<p>Define column properties (<code>FIELDNAME</code>, <code>SELTEXT_M</code>, <code>EDIT</code>, etc.).</p>
</li>
<li>
<p>Each entry describes how a column is shown in the ALV grid.</p>
</li>
</ul>
</li>
<li>
<p><strong>Pass Data to ALV</strong></p>
<ul>
<li>
<p>Call method <code>set_table_for_first_display</code> with your internal table (<code>IT_OUTTAB</code>) and the field catalog.</p>
</li>
</ul>
</li>
<li>
<p><strong>Display Grid</strong></p>
<ul>
<li>
<p>The ALV Grid now shows inside the screen.</p>
</li>
<li>
<p>Users can scroll, filter, sort, and (if allowed) edit data.</p>
</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<p>Steps to Implement <code>CL_GUI_ALV_GRID</code></p>
<h3 data-start="182" data-end="223">1. Create a Screen (e.g., Screen 100)</h3>
<ul>
<li>
<p>Go to SE80 → your program → create a screen (No. 100).</p>
</li>
<li>
<p>On the screen, draw a <strong>Custom Control</strong> (name it <code>CC_ALV</code>).</p>
</li>
<li>
<p>Add a GUI status (with functions BACK, EXIT, CANCEL).</p>
</li>
</ul>
<p>&nbsp;</p>
<p>REPORT z_alv_grid_editable.</p>
<p>************************************************************************<br />
* TYPES &amp; DATA DECLARATIONS<br />
************************************************************************<br />
TYPES: BEGIN OF ty_spfli,<br />
carrid TYPE spfli-carrid,<br />
connid TYPE spfli-connid,<br />
cityfrom TYPE spfli-cityfrom,<br />
cityto TYPE spfli-cityto,<br />
END OF ty_spfli.</p>
<p>DATA: gt_spfli TYPE TABLE OF ty_spfli,<br />
gs_spfli TYPE ty_spfli.</p>
<p>&#8221; ALV references<br />
DATA: go_container TYPE REF TO cl_gui_custom_container,<br />
go_alv TYPE REF TO cl_gui_alv_grid.</p>
<p>&#8221; Field catalog &amp; layout<br />
DATA: gt_fieldcat TYPE lvc_t_fcat,<br />
gs_fieldcat TYPE lvc_s_fcat,<br />
gs_layout TYPE lvc_s_layo.</p>
<p>************************************************************************<br />
* START-OF-SELECTION<br />
************************************************************************<br />
START-OF-SELECTION.<br />
&#8221; Fetch some demo data<br />
SELECT carrid connid cityfrom cityto<br />
FROM spfli<br />
INTO TABLE gt_spfli.</p>
<p>&#8221; Call ALV screen<br />
CALL SCREEN 100.</p>
<p>************************************************************************<br />
* MODULES FOR SCREEN 100<br />
************************************************************************<br />
MODULE status_0100 OUTPUT.<br />
SET PF-STATUS &#8216;MAIN&#8217;. &#8221; Create a status MAIN in GUI status</p>
<p>IF go_container IS INITIAL.<br />
&#8221; Create container linked to CC_ALV on screen<br />
CREATE OBJECT go_container<br />
EXPORTING container_name = &#8216;CC_ALV&#8217;.</p>
<p>&#8221; Create ALV Grid object<br />
CREATE OBJECT go_alv<br />
EXPORTING i_parent = go_container.</p>
<p>&#8221; Layout options<br />
gs_layout-zebra = abap_true. &#8221; striped display</p>
<p>&#8221; Build field catalog<br />
CLEAR gs_fieldcat.<br />
gs_fieldcat-fieldname = &#8216;CARRID&#8217;.<br />
gs_fieldcat-seltext_m = &#8216;Carrier ID&#8217;.<br />
gs_fieldcat-edit = abap_true. &#8221; Editable<br />
APPEND gs_fieldcat TO gt_fieldcat.</p>
<p>CLEAR gs_fieldcat.<br />
gs_fieldcat-fieldname = &#8216;CONNID&#8217;.<br />
gs_fieldcat-seltext_m = &#8216;Connection ID&#8217;.<br />
gs_fieldcat-edit = abap_true. &#8221; Editable<br />
APPEND gs_fieldcat TO gt_fieldcat.</p>
<p>CLEAR gs_fieldcat.<br />
gs_fieldcat-fieldname = &#8216;CITYFROM&#8217;.<br />
gs_fieldcat-seltext_m = &#8216;From City&#8217;.<br />
gs_fieldcat-edit = abap_true. &#8221; Editable<br />
APPEND gs_fieldcat TO gt_fieldcat.</p>
<p>CLEAR gs_fieldcat.<br />
gs_fieldcat-fieldname = &#8216;CITYTO&#8217;.<br />
gs_fieldcat-seltext_m = &#8216;To City&#8217;.<br />
gs_fieldcat-edit = abap_true. &#8221; Editable<br />
APPEND gs_fieldcat TO gt_fieldcat.</p>
<p>&#8221; Display data in ALV<br />
CALL METHOD go_alv-&gt;set_table_for_first_display<br />
EXPORTING<br />
is_layout = gs_layout<br />
CHANGING<br />
it_fieldcatalog = gt_fieldcat<br />
it_outtab = gt_spfli.<br />
ENDIF.<br />
ENDMODULE.</p>
<p>************************************************************************<br />
* Handle user commands<br />
************************************************************************<br />
MODULE user_command_0100 INPUT.<br />
CASE sy-ucomm.<br />
WHEN &#8216;BACK&#8217; OR &#8216;EXIT&#8217; OR &#8216;CANCEL&#8217;.<br />
LEAVE PROGRAM.<br />
ENDCASE.<br />
ENDMODULE.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-cl_gui_alv_grid/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Interface Implementation (Multiple Interfaces)</title>
		<link>https://www.sapewmhelp.com/question/interface-implementation-multiple-interfaces/</link>
					<comments>https://www.sapewmhelp.com/question/interface-implementation-multiple-interfaces/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 07:41:39 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=interface-implementation-multiple-interfaces</guid>

					<description><![CDATA[While ABAP classes can&#8217;t inherit from multiple classes, they can implement multiple interfaces, achieving interface-based multiple inheritance. INTERFACE if1.   METHODS: method1. ENDINTERFACE. INTERFACE if2.   METHODS: method2. ENDINTERFACE. CLASS my_class DEFINITION.   PUBLIC SECTION.     INTERFACES: if1, if2. ENDCLASS. CLASS my_class IMPLEMENTATION.   METHOD if1~method1.     WRITE: 'Method1 from IF1'.   ENDMETHOD.   METHOD if2~method2.     WRITE: 'Method2 from IF2'.   ENDMETHOD. ENDCLASS.]]></description>
										<content:encoded><![CDATA[<p>While ABAP classes can&#8217;t inherit from multiple classes, they can <strong>implement multiple interfaces</strong>, achieving <strong>interface-based multiple inheritance</strong>.</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code><!--StartFragment --><span><span>INTERFACE </span>if1<span>.</span>
  <span>METHODS</span><span>: </span>method1<span>.</span>
<span>ENDINTERFACE</span><span>.</span>

<span>INTERFACE </span>if2<span>.</span>
  <span>METHODS</span><span>: </span>method2<span>.</span>
<span>ENDINTERFACE</span><span>.</span>

<span>CLASS </span>my_class <span>DEFINITION</span><span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>INTERFACES</span><span>: </span>if1<span>, </span>if2<span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>my_class <span>IMPLEMENTATION</span><span>.</span>
  <span>METHOD </span>if1<span>~</span>method1<span>.</span>
    <span>WRITE</span><span>: </span><span>'Method1 from IF1'</span><span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>METHOD </span>if2<span>~</span>method2<span>.</span>
    <span>WRITE</span><span>: </span><span>'Method2 from IF2'</span><span>.</span>
  <span>ENDMETHOD</span><span>.</span>
<span>ENDCLASS</span><span>.</span></span> </code></pre>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/interface-implementation-multiple-interfaces/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Types of Inheritance in SAP OOABAP</title>
		<link>https://www.sapewmhelp.com/question/types-of-inheritance-in-sap-ooabap/</link>
					<comments>https://www.sapewmhelp.com/question/types-of-inheritance-in-sap-ooabap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 07:37:25 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=types-of-inheritance-in-sap-ooabap</guid>

					<description><![CDATA[1. Single Inheritance (Supported in ABAP) Definition: One subclass inherits from one superclass. Use: Most common form of inheritance. CLASS parent_class DEFINITION.  PUBLIC SECTION.    METHODS: display.ENDCLASS.CLASS parent_class IMPLEMENTATION.  METHOD display.    WRITE: 'Parent class method'.  ENDMETHOD.ENDCLASS.CLASS child_class DEFINITION INHERITING FROM parent_class.ENDCLASS.CLASS child_class IMPLEMENTATION.ENDCLASS. 2. Multilevel Inheritance (Supported in ABAP) Definition: A class inherits from a child class, which itself inherited from a parent class. Hierarchy: Grandparent → Parent → Child CLASS grandparent DEFINITION.  PUBLIC SECTION.    METHODS: method_gp.ENDCLASS.CLASS parent DEFINITION INHERITING FROM grandparent.  PUBLIC SECTION.    METHODS: method_p.ENDCLASS.CLASS child DEFINITION INHERITING FROM parent.  PUBLIC SECTION.    METHODS: method_c.ENDCLASS. 3. Hierarchical Inheritance (Supported via multilevel in [&#8230;]]]></description>
										<content:encoded><![CDATA[<h3 data-start="393" data-end="444">1. <strong>Single Inheritance</strong> <em>(Supported in ABAP)</em></h3>
<ul>
<li><strong>Definition:</strong> One subclass inherits from one superclass.</li>
<li><strong>Use:</strong> Most common form of inheritance.</li>
</ul>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code><!--StartFragment --><span><span>CLASS </span>parent_class <span>DEFINITION</span><span>.</span><br />  <span>PUBLIC </span><span>SECTION</span><span>.</span><br />    <span>METHODS</span><span>: </span>display<span>.</span><br /><span>ENDCLASS</span><span>.</span><br /><br /><span>CLASS </span>parent_class <span>IMPLEMENTATION</span><span>.</span><br />  <span>METHOD </span>display<span>.</span><br />    <span>WRITE</span><span>: </span><span>'Parent class method'</span><span>.</span><br />  <span>ENDMETHOD</span><span>.</span><br /><span>ENDCLASS</span><span>.</span><br /><br /><span>CLASS </span>child_class <span>DEFINITION </span><span>INHERITING </span><span>FROM </span>parent_class<span>.</span><br /><span>ENDCLASS</span><span>.</span><br /><br /><span>CLASS </span>child_class <span>IMPLEMENTATION</span><span>.</span><br /><span>ENDCLASS</span><span>.</span><br /></span> </code></pre>
<h3 data-start="972" data-end="1027">2. <strong>Multilevel Inheritance</strong> <em>(Supported in ABAP)</em></h3>
<ul>
<li><strong>Definition:</strong> A class inherits from a child class, which itself inherited from a parent class.</li>
<li><strong>Hierarchy:</strong> Grandparent → Parent → Child</li>
</ul>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-js" data-lang="JavaScript"><code><!--StartFragment --><span><span>CLASS </span>grandparent <span>DEFINITION</span><span>.</span><br />  <span>PUBLIC </span><span>SECTION</span><span>.</span><br />    <span>METHODS</span><span>: </span>method_gp<span>.</span><br /><span>ENDCLASS</span><span>.</span><br /><br /><span>CLASS </span>parent <span>DEFINITION </span><span>INHERITING </span><span>FROM </span>grandparent<span>.</span><br />  <span>PUBLIC </span><span>SECTION</span><span>.</span><br />    <span>METHODS</span><span>: </span>method_p<span>.</span><br /><span>ENDCLASS</span><span>.</span><br /><br /><span>CLASS </span>child <span>DEFINITION </span><span>INHERITING </span><span>FROM </span>parent<span>.</span><br />  <span>PUBLIC </span><span>SECTION</span><span>.</span><br />    <span>METHODS</span><span>: </span>method_c<span>.</span><br /><span>ENDCLASS</span><span>.</span></span> </code></pre>
<h3 data-start="1494" data-end="1566">3. <strong>Hierarchical Inheritance</strong> <em>(Supported via multilevel in ABAP)</em></h3>
<ul>
<li><strong>Definition:</strong> Similar to multilevel, but describes a tree of inheritance.</li>
<li>ABAP supports this by chaining multiple single inheritances.</li>
</ul>
<h3 data-start="1715" data-end="1783">4. <strong>Multiple Inheritance</strong> <em>(❌ Not Supported Directly in ABAP)</em></h3>
<ul>
<li><strong>Definition:</strong> A class inherits from more than one superclass.</li>
<li><strong>ABAP Limitation:</strong> ABAP allows a class to inherit from <strong>only one class</strong> directly.</li>
<li><strong>Alternative:</strong> Use <strong>interfaces</strong> to simulate multiple inheritance.</li>
</ul>
</div>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/types-of-inheritance-in-sap-ooabap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>what are access specifiers in SAP and tell the difference between them and explain their use ?</title>
		<link>https://www.sapewmhelp.com/question/what-are-access-specifiers-in-sap-and-tell-the-difference-between-them-and-explain-their-use/</link>
					<comments>https://www.sapewmhelp.com/question/what-are-access-specifiers-in-sap-and-tell-the-difference-between-them-and-explain-their-use/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Mon, 04 Aug 2025 18:30:55 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-are-access-specifiers-in-sap-and-tell-the-difference-between-them-and-explain-their-use</guid>

					<description><![CDATA[Access specifiers define the visibility and accessibility of class components such as attributes, methods, and events. They help in implementing encapsulation, a core concept of object-oriented programming (OOP), by controlling which parts of a class can be accessed from outside the class or by its subclasses. There are three main access specifiers in SAP ABAP: [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Access specifiers define the visibility and accessibility of class components such as attributes, methods, and events. They help in implementing encapsulation, a core concept of object-oriented programming (OOP), by controlling which parts of a class can be accessed from outside the class or by its subclasses.</p>
<p>There are three main access specifiers in SAP ABAP:</p>
<p>1. PUBLIC</p>
<p>2. PROTECTED</p>
<p>3. PRIVATE</p>
<p><strong>Steps to Use Access Specifiers in ABAP Classes</strong></p>
<p>1. Create a class using CLASS&#8230;ENDCLASS.</p>
<p>2. Define sections for PUBLIC, PROTECTED, and PRIVATE using PUBLIC SECTION, PROTECTED SECTION, PRIVATE SECTION.</p>
<p>3. Place the methods or attributes under the appropriate section based on the intended visibility.</p>
<p>4. Instantiate the class and test accessibility from outside and inside (e.g., subclasses).</p>
<p><strong>Access Specifier Visibility Scope Accessible From Use Case Example</strong></p>
<p>PUBLIC High Anywhere (outside class too) General methods available to all</p>
<p>PROTECTED Medium Inside class + subclasses Internal logic exposed to subclasses only</p>
<p>PRIVATE Low Only inside the class Helper methods/data hidden from outside</p>
<p><strong>Access specifiers in SAP ABAP enable secure and modular class design:</strong></p>
<p>· Use PUBLIC for features meant to be openly accessible.</p>
<p>· Use PROTECTED when you want subclass access but hide from external calls.</p>
<p>· Use PRIVATE to fully encapsulate internal logic or helper routines.</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/ppp.png" /></p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/ppp2.png" /></p>
<p>so Outside the class</p>
<p>we cannot call the Private and protected Methods or attributes</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-are-access-specifiers-in-sap-and-tell-the-difference-between-them-and-explain-their-use/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is an Interface in SAP ABAP?</title>
		<link>https://www.sapewmhelp.com/question/what-is-an-interface-in-sap-abap/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-an-interface-in-sap-abap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Sun, 03 Aug 2025 06:42:49 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-an-interface-in-sap-abap</guid>

					<description><![CDATA[An interface in ABAP defines a contract that any implementing class must follow. It contains only declarations of: Methods (without implementation) Constants Types Attributes Interfaces do not contain implementation. Any class that implements an interface must provide the logic for all its methods. Feature Description No implementation Only method signatures are defined. Multiple interfaces A [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>An interface in ABAP defines a contract that any implementing class must follow. It contains only declarations of:</p>
<ul>
<li>Methods (without implementation)</li>
<li>Constants</li>
<li>Types</li>
<li>Attributes</li>
</ul>
<p>Interfaces do not contain implementation. Any class that implements an interface must provide the logic for all its methods.</p>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>No implementation</td>
<td>Only method signatures are defined.</td>
</tr>
<tr>
<td>Multiple interfaces</td>
<td>A class can implement <strong>more than one</strong> interface.</td>
</tr>
<tr>
<td>Full implementation required</td>
<td>All interface methods <strong>must be implemented</strong> in the class.</td>
</tr>
<tr>
<td>Promotes loose coupling</td>
<td>Ideal for modular, testable, flexible code.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>Code:</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code><!--StartFragment --><span><span>REPORT </span>zrep_lclclass<span>.</span>

<span>INTERFACE </span>if_animal<span>.</span>
  <span>METHODS</span><span>:</span>
    speak<span>,</span>
    <span>move</span><span>.</span>
<span>ENDINTERFACE</span><span>.</span>

<span>" Class that implements the interface</span>
<span>CLASS </span>lcl_dog <span>DEFINITION</span><span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>INTERFACES</span><span>: </span>if_animal<span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>lcl_dog <span>IMPLEMENTATION</span><span>.</span>
  <span>METHOD </span>if_animal<span>~</span>speak<span>.</span>
    <span>WRITE</span><span>: </span>'Woof!'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>METHOD </span>if_animal<span>~</span><span>move</span><span>.</span>
    <span>WRITE</span><span>: </span>'Dog <span>is </span>running'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>START-OF-SELECTION</span><span>.</span>
  <span>DATA</span><span>(</span>lo_dog<span>) </span><span>= </span><span>NEW </span>lcl_dog<span>( </span><span>)</span><span>.</span>
  lo_dog<span>-&gt;</span>if_animal<span>~</span>speak<span>( </span><span>)</span><span>.</span>
  lo_dog<span>-&gt;</span>if_animal<span>~</span><span>move</span><span>( </span><span>)</span><span>.</span></span> </code></pre>
<p>Output:</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/interface.png" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-an-interface-in-sap-abap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is an Abstract Class in SAP ABAP?</title>
		<link>https://www.sapewmhelp.com/question/what-is-an-abstract-class-in-sap-abap/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-an-abstract-class-in-sap-abap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Sun, 03 Aug 2025 06:37:17 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-an-abstract-class-in-sap-abap</guid>

					<description><![CDATA[An abstract class is a class that cannot be instantiated directly. It serves as a blueprint for other classes. Abstract classes typically include: Abstract methods, which are declared but not implemented. Concrete methods, which can be implemented and inherited. Feature Description Not instantiable Cannot use CREATE OBJECT on abstract classes. Used for inheritance Serve as [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>An abstract class is a class that cannot be instantiated directly. It serves as a blueprint for other classes. Abstract classes typically include:</p>
<ul>
<li>Abstract methods, which are declared but not implemented.</li>
<li>Concrete methods, which can be implemented and inherited.</li>
</ul>
<table>
<thead>
<tr>
<th>Feature</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>Not instantiable</td>
<td>Cannot use <code>CREATE OBJECT</code> on abstract classes.</td>
</tr>
<tr>
<td>Used for inheritance</td>
<td>Serve as base classes for child classes.</td>
</tr>
<tr>
<td>Can contain abstract methods</td>
<td>These must be implemented in subclasses.</td>
</tr>
<tr>
<td>Can contain concrete methods</td>
<td>These can be used directly by child classes.</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code><!--StartFragment --><span><span>REPORT </span>zrep_lclclass<span>.</span>

<span>CLASS </span>lcl_animal <span>DEFINITION </span>ABSTRACT<span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>METHODS</span><span>:</span>
      speak ABSTRACT<span>,</span>
      <span>move</span><span>.         </span><span>" This can be implemented if needed</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>lcl_animal <span>IMPLEMENTATION</span><span>.</span>
  <span>METHOD </span><span>move</span><span>.</span>
    <span>WRITE</span><span>: </span>'Animal <span>is </span>moving'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>" Concrete subclass</span>
<span>CLASS </span>lcl_dog <span>DEFINITION </span><span>INHERITING </span><span>FROM </span>lcl_animal<span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>METHODS</span><span>:</span>
      speak <span>REDEFINITION</span><span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>lcl_dog <span>IMPLEMENTATION</span><span>.</span>
  <span>METHOD </span>speak<span>.</span>
    <span>WRITE</span><span>: </span>'Woof!'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>START-OF-SELECTION</span><span>.</span>
  <span>" Parent Class</span>
  <span>DATA</span><span>(</span>lo_animal<span>) </span><span>= </span><span>NEW </span>lcl_animal<span>( </span><span>)</span><span>.</span>
  lo_animal<span>-&gt;</span>speak<span>( </span><span>)</span><span>.</span>
  <span>WRITE</span><span>: </span>'Animal can speak'<span>.</span>
  <span>SKIP</span><span>.</span>
  <span>" child class</span>
  <span>DATA</span><span>(</span>lo_dog<span>) </span><span>= </span><span>NEW </span>lcl_dog<span>( </span><span>)</span><span>.</span>
  lo_dog<span>-&gt;</span>speak<span>( </span><span>)</span><span>.</span>
  lo_dog<span>-&gt;</span><span>move</span><span>( </span><span>)</span><span>.</span></span> </code></pre>
<p>Output:<br />
Check the Program ( CTRL + F2 ).<br />
<img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/abstract-class.png" /></p>
<p>if not initated the Parent class then the output will be.<br />
<img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/abstract-class-2.png" /></p>
<p>Output:<br />
<img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/abstract-class-3.png" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-an-abstract-class-in-sap-abap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Constructor in ABAP</title>
		<link>https://www.sapewmhelp.com/question/constructor-in-abap/</link>
					<comments>https://www.sapewmhelp.com/question/constructor-in-abap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 31 Jul 2025 20:15:51 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=constructor-in-abap</guid>

					<description><![CDATA[A constructor is a special method automatically called when an object is created using CREATE OBJECT or NEW. Types of Constructors in ABAP Type Method Name Called On Purpose Instance Constructor CONSTRUCTOR When an object is created (NEW or CREATE OBJECT) To initialize instance-specific data Class Constructor CLASS_CONSTRUCTOR When the class is first used To [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A constructor is a special method automatically called when an object is created using CREATE OBJECT or NEW.</p>
<p>Types of Constructors in ABAP</p>
<table data-start="279" data-end="781">
<thead>
<tr>
<th data-start="279" data-end="304" data-col-size="sm">Type</th>
<th data-start="304" data-end="322" data-col-size="sm">Method Name</th>
<th data-start="322" data-end="350" data-col-size="md">Called On</th>
<th data-start="350" data-end="389" data-col-size="sm">Purpose</th>
</tr>
</thead>
<tbody>
<tr>
<td><strong>Instance Constructor</strong></td>
<td><code>CONSTRUCTOR</code></td>
<td>When an object is created (<code>NEW</code> or <code>CREATE OBJECT</code>)</td>
<td>To initialize <strong>instance-specific</strong> data</td>
</tr>
<tr>
<td><strong>Class Constructor</strong></td>
<td><code>CLASS_CONSTRUCTOR</code></td>
<td>When the class is <strong>first used</strong></td>
<td>To initialize <strong>class-level (static)</strong> data</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code><!--StartFragment --><span><span>REPORT </span>zrep_lclclass<span>.</span>

<span>CLASS </span>zcl_demo <span>DEFINITION</span><span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>METHODS</span><span>: </span>constructor<span>,               </span><span>" Instance constructor</span>
             display_instance_value<span>.</span>

    <span>CLASS-METHODS</span><span>: </span>class_constructor<span>,  </span><span>" Class constructor</span>
                   display_class_value<span>.</span>

  <span>PRIVATE </span><span>SECTION</span><span>.</span>
    <span>DATA</span><span>: </span>lv_instance_val <span>TYPE </span>string<span>.</span>
    <span>CLASS-DATA</span><span>: </span>gv_class_val <span>TYPE </span>string<span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>zcl_demo <span>IMPLEMENTATION</span><span>.</span>

  <span>" Instance Constructor</span>
  <span>METHOD </span>constructor<span>.</span>
    lv_instance_val <span>= </span>'Initialized <span>in </span>CONSTRUCTOR'<span>.</span>
    <span>WRITE</span><span>: </span>/ '&gt;&gt; Instance CONSTRUCTOR called'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>" Class Constructor</span>
  <span>METHOD </span>class_constructor<span>.</span>
    gv_class_val <span>= </span>'Initialized <span>in </span>CLASS_CONSTRUCTOR'<span>.</span>
    <span>WRITE</span><span>: </span>/ '&gt;&gt; CLASS_CONSTRUCTOR called <span>(</span>only once<span>)</span>'<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>METHOD </span>display_instance_value<span>.</span>
    <span>WRITE</span><span>: </span>/ 'Instance <span>value</span><span>:</span>'<span>, </span>lv_instance_val<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>METHOD </span>display_class_value<span>.</span>
    <span>WRITE</span><span>: </span>/ 'Class <span>value</span><span>:</span>'<span>, </span>gv_class_val<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

<span>ENDCLASS</span><span>.</span>

<span>START-OF-SELECTION</span><span>.</span>

<span>* Access class method (triggers class constructor first time)</span>
  zcl_demo<span>=&gt;</span>display_class_value<span>( </span><span>)</span><span>.</span>

  <span>SKIP</span><span>.</span>

<span>* Create object (triggers instance constructor)</span>
  <span>DATA</span><span>(</span>lo_obj1<span>) </span><span>= </span><span>NEW </span>zcl_demo<span>( </span><span>)</span><span>.</span>
  lo_obj1<span>-&gt;</span>display_instance_value<span>( </span><span>)</span><span>.</span>

  <span>SKIP</span><span>.</span>

<span>* Create another object (instance constructor runs again, but not class constructor)</span>
  <span>DATA</span><span>(</span>lo_obj2<span>) </span><span>= </span><span>NEW </span>zcl_demo<span>( </span><span>)</span><span>.</span>
  lo_obj2<span>-&gt;</span>display_instance_value<span>( </span><span>)</span><span>.</span>

  <span>SKIP</span><span>.</span>

<span>* Access class method again (class constructor NOT triggered again)</span>
  zcl_demo<span>=&gt;</span>display_class_value<span>( </span><span>)</span><span>.</span></span> </code></pre>
<p>Output:</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/constructor-and-type.png" /></p>
</div>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/constructor-in-abap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is Singleton Class ? how to use Singleton class in SAP ABAP ?</title>
		<link>https://www.sapewmhelp.com/question/what-is-singleton-class-how-to-use-singleton-class-in-sap-abap/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-singleton-class-how-to-use-singleton-class-in-sap-abap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 31 Jul 2025 19:28:18 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-singleton-class-how-to-use-singleton-class-in-sap-abap</guid>

					<description><![CDATA[A Singleton class is a design pattern that restricts the instantiation of a class to one single object throughout the lifecycle of a program. This is useful when exactly one object is needed to coordinate actions across the system — such as logging, configuration management, or connection handling. Key Characteristics of Singleton Pattern: Only one instance of the class [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>A<span> </span><strong>Singleton class</strong><span> </span>is a design pattern that restricts the instantiation of a class to<span> </span><strong>one single object</strong><span> </span>throughout the lifecycle of a program. This is useful when exactly one object is needed to coordinate actions across the system — such as logging, configuration management, or connection handling.</p>
<h3 data-start="346" data-end="391">Key Characteristics of Singleton Pattern:</h3>
<ul>
<li>Only one instance of the class exists.</li>
<li>The class controls its own instantiation.</li>
<li>A global access point is provided to access.</li>
</ul>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code><!--StartFragment --><span><span>*&amp;---------------------------------------------------------------------*</span>
<span>*&amp; Report  ZREP_LCLCLASS</span>
<span>*&amp;</span>
<span>*&amp;---------------------------------------------------------------------*</span>
<span>*&amp;</span>
<span>*&amp;</span>
<span>*&amp;---------------------------------------------------------------------*</span>

<span>REPORT </span>zrep_lclclass<span>.</span>

<span>CLASS </span>lcl_class_singleton <span>DEFINITION </span><span>CREATE </span><span>PRIVATE</span><span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
  <span>" to check the instance is created or not.</span>
    <span>CLASS-METHODS</span><span>: </span>m_factory RETURNING <span>VALUE</span><span>(</span>r_instance<span>) </span><span>TYPE </span><span>REF </span><span>TO </span>lcl_class_singleton<span>.</span>
  <span>" getter and setter methods</span>
    <span>METHODS </span><span>: </span>get_attribute RETURNING <span>VALUE</span><span>(</span>r_attribute<span>) </span><span>TYPE </span><span>i</span><span>,</span>
              set_attribute <span>IMPORTING </span>m_attribute <span>TYPE </span><span>i</span><span>.</span>

  <span>PRIVATE </span><span>SECTION</span><span>.</span>
<span>*    CLASS-DATA: obj_instance TYPE REF TO lcl_class_singleton.</span>
    <span>DATA </span>gv_attribute <span>TYPE </span><span>i</span><span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>class </span>lcl_class_singleton <span>IMPLEMENTATION</span><span>.</span>
    <span>method </span>m_factory<span>.</span>
        <span>if </span>r_instance <span>is </span><span>not </span><span>BOUND</span><span>.</span>
            r_instance <span>= </span><span>new </span>lcl_class_singleton<span>( </span><span>)</span><span>.</span>
        <span>endif</span><span>.</span>
   <span>ENDMETHOD</span><span>.</span>

   <span>method </span>get_attribute<span>.</span>
       r_Attribute <span>= </span>gv_Attribute<span>.</span>
   <span>ENDMETHOD</span><span>.</span>

   <span>method </span>set_attribute<span>.</span>
     gv_Attribute <span>=  </span>m_attribute<span>.</span>
   <span>ENDMETHOD</span><span>.</span>
 <span>ENDCLASS</span><span>.</span>

 <span>START-OF-SELECTION</span><span>.</span>
 <span>" create an instance of class</span>
   <span>data</span><span>(</span>lo_obj<span>) </span><span>=  </span>lcl_class_singleton<span>=&gt;</span>m_factory<span>( </span><span>)</span><span>.</span>
 <span>" set the value for the attribute.</span>
   lo_obj<span>-&gt;</span>set_attribute<span>( </span><span>10 </span><span>)</span><span>.</span>

   <span>" try to create another instace of the class.</span>
    <span>data</span><span>(</span>lo_obj2<span>) </span><span>= </span>lcl_class_singleton<span>=&gt;</span>m_factory<span>( </span><span>)</span><span>.</span>
   <span>" check the attribute of the new instance</span>
   <span>" it should be same as go_obj as it contains a static attribute</span>
   <span>" get the data and print it.</span>
   <span>write</span><span>: </span>'First object attribute <span>value </span>'<span>, </span>lo_obj<span>-&gt;</span>get_attribute<span>( </span><span>)</span><span>.</span>
   <span>write </span><span>:</span>/ 'Second object attribute <span>value </span>'<span>, </span>lo_obj2<span>-&gt;</span>get_attribute<span>( </span><span>)</span><span>.</span></span> 
</code></pre>
<p>Output:<br />
<img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/SIngleton-class-2.png" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-singleton-class-how-to-use-singleton-class-in-sap-abap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is the difference between static and instance Members in SAP OOABAP ?</title>
		<link>https://www.sapewmhelp.com/question/what-is-the-difference-between-static-and-instance-members-in-sap-ooabap/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-the-difference-between-static-and-instance-members-in-sap-ooabap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Wed, 30 Jul 2025 17:30:46 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-a-constructor-in-ooabap-and-how-is-it-used</guid>

					<description><![CDATA[Instance Members (Methods &#38; Data) Belong to individual objects (instances). Created using DATA and METHODS. Each object has its own copy of the data. Accessed using the object reference: lo_obj-&#62;method_name. Useful when each object should maintain its own state. Destroyed when the object goes out of scope. Static Members (Methods &#38; Data) Belong to the [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Instance Members (Methods &amp; Data)</strong></p>
<ul>
<li>Belong to individual objects (instances).</li>
<li>Created using DATA and METHODS.</li>
<li>Each object has its own copy of the data.</li>
<li>Accessed using the object reference: lo_obj-&gt;method_name.</li>
<li>Useful when each object should maintain its own state.</li>
<li>Destroyed when the object goes out of scope.</li>
</ul>
<p><strong>Static Members (Methods &amp; Data)</strong></p>
<ul>
<li>Belong to the class itself, not any particular object.</li>
<li>Created using CLASS-DATA and CLASS-METHODS.</li>
<li>Only one copy exists for the entire class.</li>
<li>Accessed using the class name: zcl_class_name=&gt;method_name.</li>
<li>Useful for shared data, like counters, configuration, or logging.</li>
<li>Exist as long as the class is loaded in memory.</li>
</ul>
<div class="hcb_wrap">
<pre class="prism line-numbers lang-python" data-lang="Python"><code><!--StartFragment --><span><span>*&amp;---------------------------------------------------------------------*</span>
<span>*&amp; Report  ZREP_LCLCLASS</span>
<span>*&amp;</span>
<span>*&amp;---------------------------------------------------------------------*</span>
<span>*&amp;</span>
<span>*&amp;</span>
<span>*&amp;---------------------------------------------------------------------*</span>

<span>REPORT </span>zrep_lclclass<span>.</span>

<span>CLASS </span>zcl_static_instance_demo <span>DEFINITION</span><span>.</span>
  <span>PUBLIC </span><span>SECTION</span><span>.</span>
    <span>" Instance attribute and method</span>
    <span>DATA</span><span>: </span>gv_instance_value <span>TYPE </span><span>i</span><span>.</span>
    <span>METHODS</span><span>: </span>increase_instance_value<span>.</span>

    <span>" Static attribute and method</span>
    <span>CLASS-DATA</span><span>: </span>gv_static_value <span>TYPE </span><span>i</span><span>.</span>
    <span>CLASS-METHODS</span><span>: </span>increase_static_value<span>.</span>
<span>ENDCLASS</span><span>.</span>

<span>CLASS </span>zcl_static_instance_demo <span>IMPLEMENTATION</span><span>.</span>

  <span>METHOD </span>increase_instance_value<span>.</span>
    gv_instance_value <span>= </span>gv_instance_value + <span>1</span><span>.</span>
    <span>WRITE</span><span>: </span>/ 'Instance <span>Value</span><span>:</span>'<span>, </span>gv_instance_value<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

  <span>METHOD </span>increase_static_value<span>.</span>
    gv_static_value <span>= </span>gv_static_value + <span>1</span><span>.</span>
    <span>WRITE</span><span>: </span>/ 'Static <span>Value</span><span>:</span>'<span>, </span>gv_static_value<span>.</span>
  <span>ENDMETHOD</span><span>.</span>

<span>ENDCLASS</span><span>.</span>

<span>START-OF-SELECTION</span><span>.</span>

  <span>WRITE</span><span>: </span>/ '<span>-</span>-<span>- </span><span>Static </span><span>Method </span>Calls <span>(</span><span>No </span>object needed<span>) </span><span>-</span>-<span>-</span>'<span>.</span>
  zcl_static_instance_demo<span>=&gt;</span>increase_static_value<span>( </span><span>)</span><span>. </span><span>" 1</span>
  zcl_static_instance_demo<span>=&gt;</span>increase_static_value<span>( </span><span>)</span><span>. </span><span>" 2</span>

  <span>SKIP</span><span>.</span>

  <span>WRITE</span><span>: </span>/ '<span>-</span>-<span>- </span>Instance <span>Method </span>Calls <span>(</span><span>Using </span>object<span>) </span><span>-</span>-<span>-</span>'<span>.</span>
  <span>DATA</span><span>(</span>lo_obj1<span>) </span><span>= </span><span>NEW </span>zcl_static_instance_demo<span>( </span><span>)</span><span>.</span>
  lo_obj1<span>-&gt;</span>increase_instance_value<span>( </span><span>)</span><span>. </span><span>" 1</span>
  lo_obj1<span>-&gt;</span>increase_instance_value<span>( </span><span>)</span><span>. </span><span>" 2</span>

  <span>SKIP</span><span>.</span>

  <span>WRITE</span><span>: </span>/ '<span>-</span>-<span>- </span>Another Object <span>with </span>Separate Instance <span>-</span>-<span>-</span>'<span>.</span>
  <span>DATA</span><span>(</span>lo_obj2<span>) </span><span>= </span><span>NEW </span>zcl_static_instance_demo<span>( </span><span>)</span><span>.</span>
  lo_obj2<span>-&gt;</span>increase_instance_value<span>( </span><span>)</span><span>. </span><span>" 1 (separate from lo_obj1)</span>

  <span>SKIP</span><span>.</span>

  <span>WRITE</span><span>: </span>/ '<span>-</span>-<span>- </span><span>Static </span>Again <span>(</span>Still <span>shared</span><span>) </span><span>-</span>-<span>-</span>'<span>.</span>
  zcl_static_instance_demo<span>=&gt;</span>increase_static_value<span>( </span><span>)</span><span>. </span><span>" 3</span></span> 
</code></pre>
<p>Output :<br />
<img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/08/static-and-instace-3.png" /></p>
</div>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-the-difference-between-static-and-instance-members-in-sap-ooabap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
