<?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>rap &#8211; SAP EWM Help</title>
	<atom:link href="https://www.sapewmhelp.com/question-tag/rap/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>Fri, 31 Oct 2025 17:52:55 +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>How do you implement an Unmanaged Query in RAP, and what are the key steps involved?</title>
		<link>https://www.sapewmhelp.com/question/how-do-you-implement-an-unmanaged-query-in-rap-and-what-are-the-key-steps-involved/</link>
					<comments>https://www.sapewmhelp.com/question/how-do-you-implement-an-unmanaged-query-in-rap-and-what-are-the-key-steps-involved/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 31 Oct 2025 17:52:55 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=how-do-you-implement-an-unmanaged-query-in-rap-and-what-are-the-key-steps-involved</guid>

					<description><![CDATA[To implement an Unmanaged Query in RAP, you follow a structured approach involving several key steps. First, you create a CDS view entity that defines the data structure or projection you want to expose. Then, you define a Query Behavior Definition for that view using the keyword define behavior for ... implementation in class ... [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>To implement an <strong>Unmanaged Query</strong> in RAP, you follow a structured approach involving several key steps. First, you create a <strong>CDS view entity</strong> that defines the data structure or projection you want to expose. Then, you define a <strong>Query Behavior Definition</strong> for that view using the keyword <code>define behavior for ... implementation in class ... unmanaged</code>. This tells RAP that you will provide your own implementation logic rather than relying on managed data handling.</p>
<p>Next, you create an <strong>ABAP class</strong> (the query provider class) that implements the interface <strong><code>IF_RAP_QUERY_PROVIDER</code></strong>. The core method <strong><code>IF_RAP_QUERY_PROVIDER~SELECT</code></strong> must be redefined in this class. Inside this method, you write custom ABAP logic to retrieve data — it could be from a database table, an API, or even a legacy system. You then fill the result table and pass it back to the framework.</p>
<p>This unmanaged approach is used when data retrieval cannot be handled by CDS-based managed queries (for example, reading from custom logic, calling RFCs, or combining different data sources). It provides greater flexibility at the cost of additional coding responsibility.</p>
<p>Example structure:</p>
<p>CLASS zcl_query_provider DEFINITION<br />
PUBLIC FINAL CREATE PUBLIC.<br />
PUBLIC SECTION.<br />
INTERFACES if_rap_query_provider.<br />
ENDCLASS.</p>
<p>CLASS zcl_query_provider IMPLEMENTATION.<br />
METHOD if_rap_query_provider~select.<br />
&#8221; Custom data retrieval logic<br />
ENDMETHOD.<br />
ENDCLASS.</p>
<div class="text-base my-auto mx-auto pb-10 [--thread-content-margin:--spacing(4)] thread-sm:[--thread-content-margin:--spacing(6)] thread-lg:[--thread-content-margin:--spacing(16)] px-(--thread-content-margin)">
<div class="[--thread-content-max-width:40rem] thread-lg:[--thread-content-max-width:48rem] mx-auto max-w-(--thread-content-max-width) flex-1 group/turn-messages focus-visible:outline-hidden relative flex w-full min-w-0 flex-col agent-turn">
<div class="flex max-w-full flex-col grow">
<div data-message-author-role="assistant" data-message-id="249988b6-56ef-49de-986a-98a986eced09" class="min-h-8 text-message relative flex w-full flex-col items-end gap-2 text-start break-words whitespace-normal [.text-message+&amp;]:mt-1" data-message-model-slug="gpt-5">
<div class="flex w-full flex-col gap-1 empty:hidden first:pt-[1px]">
<div class="markdown prose dark:prose-invert w-full break-words dark markdown-new-styling">
<p>This allows you to control how data is fetched and presented to consumers while still leveraging the RAP framework for OData exposure and metadata management.</p>
</div>
</div>
</div>
</div>
<div class="z-0 flex min-h-[46px] justify-start"></div>
<div class="mt-3 w-full empty:hidden">
<div class="text-center"></div>
</div>
</div>
</div>
<div data-edge="true" class="pointer-events-none h-px w-px"></div>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/how-do-you-implement-an-unmanaged-query-in-rap-and-what-are-the-key-steps-involved/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is Unmanaged Query Implementation in RAP, and when do we use it?</title>
		<link>https://www.sapewmhelp.com/question/what-is-unmanaged-query-implementation-in-rap-and-when-do-we-use-it/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-unmanaged-query-implementation-in-rap-and-when-do-we-use-it/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 31 Oct 2025 17:51:55 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-unmanaged-query-implementation-in-rap-and-when-do-we-use-it</guid>

					<description><![CDATA[In the RAP (RESTful ABAP Programming Model), Unmanaged Query Implementation refers to a scenario where the developer manually implements the data retrieval logic for a query instead of relying on the automatic query handling provided by the framework. Normally, in a managed scenario, the framework automatically handles standard operations like READ, CREATE, and UPDATE using [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In the <strong>RAP (RESTful ABAP Programming Model)</strong>, <strong>Unmanaged Query Implementation</strong> refers to a scenario where the developer manually implements the data retrieval logic for a query instead of relying on the automatic query handling provided by the framework. Normally, in a <strong>managed scenario</strong>, the framework automatically handles standard operations like <code>READ</code>, <code>CREATE</code>, and <code>UPDATE</code> using the CDS data model. However, in certain cases — such as when the data comes from <strong>external systems</strong>, <strong>non-ABAP sources</strong>, or <strong>complex joins not suitable for CDS views</strong> — automatic handling is not possible.</p>
<p>In such cases, you define a <strong>Query Behavior Definition (behavior definition for a query)</strong> and then implement it manually using an <strong>Unmanaged Query Implementation Class</strong>. This class must implement the <strong>interface <code>IF_RAP_QUERY_PROVIDER</code></strong>, particularly the method <strong><code>IF_RAP_QUERY_PROVIDER~SELECT</code></strong>, which contains the ABAP logic to fetch and return data. This approach gives full control over query execution, filtering, and pagination. It’s typically used in integration scenarios or custom reports where CDS-based managed queries are insufficient.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-unmanaged-query-implementation-in-rap-and-when-do-we-use-it/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What are DCLs in CDS?</title>
		<link>https://www.sapewmhelp.com/question/what-are-dcls-in-cds/</link>
					<comments>https://www.sapewmhelp.com/question/what-are-dcls-in-cds/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 31 Oct 2025 17:42:02 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-are-dcls-in-cds</guid>

					<description><![CDATA[DCL (Data Control Language) in CDS is used to define and control data authorizations for CDS views.In other words, it allows you to restrict access to specific data records based on user roles, so that users can only see data they are authorized to see. DCLs are written using the DEFINE ROLE syntax and stored [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>DCL (Data Control Language)</strong> in CDS is used to <strong>define and control data authorizations</strong> for CDS views.<br />In other words, it allows you to <strong>restrict access to specific data records</strong> based on user roles, so that users can only see data they are authorized to see.</p>
<p>DCLs are written using the <strong><code>DEFINE ROLE</code></strong> syntax and stored as <strong>authorization objects</strong> in the ABAP Dictionary.<br />They work in combination with <strong>authorization checks</strong> performed automatically at runtime by the ABAP system — when the CDS view is queried through ABAP, OData, or analytical tools.</p>
<p><strong>Purpose of DCL</strong></p>
<ul>
<li>
<p>To <strong>control access</strong> to data at the CDS view level (not in ABAP code).</p>
</li>
<li>
<p>To ensure <strong>data security</strong> and <strong>compliance</strong> with organizational policies.</p>
</li>
<li>
<p>To <strong>centralize authorization logic</strong> so it’s reusable and not hardcoded in multiple reports or services.</p>
</li>
</ul>
<p>In simple terms:</p>
<blockquote data-start="1081" data-end="1136">
<p>DCL defines <em>who can access what data</em> in a CDS view.</p>
</blockquote>
<p><strong>How DCL Works</strong></p>
<ol>
<li>
<p>A CDS view is defined with an authorization check annotation:</p>
<div class="contain-inline-size rounded-2xl relative bg-token-sidebar-surface-primary">
<div class="sticky top-9">
<div class="absolute end-0 bottom-0 flex h-9 items-center pe-2">
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">@AccessControl.authorizationCheck: #CHECK<br />
define view ZCDS_Employee as select from zemployee { &#8230; }</div>
<div></div>
<div class="bg-token-bg-elevated-secondary text-token-text-secondary flex items-center gap-4 rounded-sm px-2 font-sans text-xs">2. A DCL (authorization rule) is created using <code>DEFINE ROLE</code>.</div>
</div>
</div>
</div>
<p>It specifies the conditions under which a user can access the data At runtime, when a user executes the CDS view (via report, OData, or Fiori app),<br />the system automatically filters data according to the DCL rule.</li>
</ol>
<p><strong>PFCG Authorization Object Link</strong></p>
<p>The function <code>aspect pfcg_auth('AUTH_OBJECT', 'FIELD')</code> links the DCL to a PFCG (Profile Generator) authorization object.<br />This ensures integration between CDS-level security and SAP’s standard role-based security.</p>
<p>Example authorization object definition:</p>
<ul>
<li>
<p>Authorization object: <code>ZEMP_AUTH_OBJ</code></p>
</li>
<li>
<p>Field: <code>DEPT</code></p>
</li>
<li>
<p>Values assigned in user role (e.g., user only has DEPT = ‘HR’)</p>
</li>
</ul>
<p>Then when user runs the view:</p>
<ul>
<li>
<p>They will only see rows where <code>department = 'HR'</code>.</p>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-are-dcls-in-cds/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Add buttons in sap rap application</title>
		<link>https://www.sapewmhelp.com/question/add-buttons-in-sap-rap-application/</link>
					<comments>https://www.sapewmhelp.com/question/add-buttons-in-sap-rap-application/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Thu, 30 Oct 2025 18:07:31 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=add-buttons-in-sap-rap-application</guid>

					<description><![CDATA[Step 1: Create the RAP Project In ABAP Development Tools (ADT): Go to File → New → ABAP Project. Connect to your system. Create a new ABAP Package (e.g., Z_RAP_BUTTONS). Create the RAP artifacts: Business Object (BO): Right-click the package → New → Other ABAP Repository Object → Business Object → RAP Business Object. Example: [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Step 1: Create the RAP Project</strong></p>
<ol>
<li>
<p>In <strong>ABAP Development Tools (ADT)</strong>:</p>
<ul>
<li>
<p>Go to <strong>File → New → ABAP Project</strong>.</p>
</li>
<li>
<p>Connect to your system.</p>
</li>
<li>
<p>Create a new <strong>ABAP Package</strong> (e.g., <code>Z_RAP_BUTTONS</code>).</p>
</li>
</ul>
</li>
<li>
<p>Create the RAP artifacts:</p>
<ul>
<li>
<p><strong>Business Object (BO)</strong>:</p>
<ul>
<li>
<p>Right-click the package → New → Other ABAP Repository Object → Business Object → RAP Business Object.</p>
</li>
<li>
<p>Example: <code>ZBO_SALESORDER</code>.</p>
</li>
</ul>
</li>
</ul>
</li>
</ol>
<p>&nbsp;</p>
<p><strong>Step 2: Define the Behavior (Behavior Definition)</strong></p>
<ol>
<li>
<p>In your <strong>Behavior Definition</strong> (<code>.behavior</code>):</p>
</li>
</ol>
<p>define behavior for ZI_SALESORDER<br />
persistent table ZI_SALESORDER<br />
lock master<br />
{<br />
create;<br />
update;<br />
delete;</p>
<p>// Add custom action button<br />
action confirm order result [0..1];<br />
}</p>
<p>&nbsp;</p>
<p><strong>Step 3: Implement the Behavior Logic</strong></p>
<ol>
<li>
<p>In <strong>Behavior Implementation</strong> (<code>.behavior.abap</code>):</p>
</li>
</ol>
<p>implementation in class zbp_i_salesorder unique;</p>
<p>method confirm_order.<br />
&#8221; Your business logic goes here<br />
loop at it_entity into data(ls_entity).<br />
ls_entity-status = &#8216;CONFIRMED&#8217;.<br />
modify table et_entity from ls_entity.<br />
endloop.<br />
endmethod.</p>
<p>endimplementation.</p>
<p>&nbsp;</p>
<p><strong>Step 4: Expose Action in Service Definition</strong></p>
<ol>
<li>
<p>Open <strong>Service Definition</strong> (<code>.service</code>):</p>
</li>
</ol>
<p>define service ZC_SALESORDER_SRV {<br />
expose ZI_SALESORDER;<br />
// Optionally expose action explicitly<br />
action confirm order;<br />
}</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Step 5: Register &amp; Test Service</strong></p>
<ol>
<li>
<p>Go to <strong>/IWFND/MAINT_SERVICE</strong> → register your RAP service.</p>
</li>
<li>
<p>Test via <strong>SAP Gateway Client</strong> (<code>/IWFND/GW_CLIENT</code>) to see the metadata:</p>
<ul>
<li>
<p>You should see your <code>confirm order</code> action exposed.</p>
</li>
</ul>
</li>
</ol>
<p><strong>Step 6: Fiori/UI Integration</strong></p>
<ul>
<li>
<p>If you use <strong>Fiori Elements</strong> (List Report / Object Page):</p>
<ol>
<li>
<p>The <code>action confirm order</code> will automatically appear as a button in the <strong>Object Page</strong> or <strong>List Report</strong>.</p>
</li>
<li>
<p>No extra UI5 code is required if you use standard Fiori Elements.</p>
</li>
<li>
<p>If you want <strong>custom UI5</strong>, you can bind a button like this:</p>
</li>
</ol>
</li>
</ul>
<p>&lt;Button<br />
text=&#8221;Confirm Order&#8221;<br />
press=&#8221;.onConfirmOrder&#8221;<br />
/&gt;</p>
<p>&nbsp;</p>
<p>And in your controller:</p>
<p>onConfirmOrder: function(oEvent) {<br />
var oModel = this.getView().getModel();<br />
var sPath = oEvent.getSource().getBindingContext().getPath();<br />
oModel.callFunction(&#8220;/ConfirmOrder&#8221;, {<br />
method: &#8220;POST&#8221;,<br />
urlParameters: {<br />
SalesOrderID: oModel.getProperty(sPath + &#8220;/SalesOrderID&#8221;)<br />
},<br />
success: function() {<br />
MessageToast.show(&#8220;Order Confirmed!&#8221;);<br />
},<br />
error: function() {<br />
MessageToast.show(&#8220;Error!&#8221;);<br />
}<br />
});<br />
}</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/add-buttons-in-sap-rap-application/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to create API to download an Excel sheet</title>
		<link>https://www.sapewmhelp.com/question/how-to-create-api-to-download-an-excel-sheet/</link>
					<comments>https://www.sapewmhelp.com/question/how-to-create-api-to-download-an-excel-sheet/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Sat, 06 Sep 2025 21:04:06 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=how-to-create-api-to-download-an-excel-sheet</guid>

					<description><![CDATA[create a CDS view custom Entity: @EndUserText.label: &#8216;template Download&#8217; @ObjectModel: { query: { implementedBy: &#8216;ABAP: ZCL_DOWN_TEMPLATE&#8217; } } define root custom entity ZCHM__TMP_DWN { key docnum : abap.char(10); comp_code : abap.char(4); sales_org : abap.char(4); distr_chn : abap.char(2); division : abap.char(2); ref_doc : abap.char(20); currency : abap.char(8); ref_item : abap.char(10); material : abap.char(40); matl_group : abap.char(9); [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>create a CDS view</p>
<p>custom Entity:</p>
<p style="margin: 0"><span style="color: #a99c8c">@EndUserText.label:</span> <span style="color: #a99c8c">&#8216;template Download&#8217;</span></p>
<p style="margin: 0"><span style="color: #a99c8c">@ObjectModel:</span> <span style="color: #a99c8c">{</span></p>
<p style="margin: 0"><span style="color: #a99c8c">query:</span> <span style="color: #a99c8c">{</span></p>
<p style="margin: 0"><span style="color: #a99c8c">implementedBy:</span> <span style="color: #a99c8c">&#8216;ABAP: ZCL_DOWN_TEMPLATE&#8217;</span></p>
<p style="margin: 0"><span style="color: #a99c8c">}</span></p>
<p style="margin: 0"><span style="color: #a99c8c">}</span></p>
<p style="margin: 0"><span style="color: #cc7832;font-weight: bold">define</span> <span style="color: #cc7832;font-weight: bold">root</span> <span style="color: #cc7832;font-weight: bold">custom</span> <span style="color: #cc7832;font-weight: bold">entity</span> Z<span style="color: #cccccc">CHM__TMP_DWN</span></p>
<p style="margin: 0"><span style="color: #cc7832;font-weight: bold">{</span></p>
<p style="margin: 0"><span style="color: #cc7832;font-weight: bold">key</span> <span style="color: #cccccc">docnum</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">10</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">comp_code</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">4</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">sales_org</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">4</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">distr_chn</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">2</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">division</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">2</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">ref_doc</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">20</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">currency</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">8</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">ref_item</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">10</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">material</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">40</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">matl_group</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">9</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">net_amount</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">40</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">gross</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">15</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">quantity</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">13</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">price_unit</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">5</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc">bill_unit</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">char</span><span style="color: #cc7832;font-weight: bold">(</span><span style="color: #5be9fe">3</span><span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cccccc;text-decoration: underline">file_content</span> <span style="color: #cc7832;font-weight: bold">:</span> <span style="color: #cccccc;font-style: italic;text-decoration: underline">abap</span><span style="color: #cc7832;font-weight: bold">.</span><span style="color: #cccccc;font-style: italic">string</span><span style="color: #cc7832;font-weight: bold">(</span> <span style="color: #5be9fe">999999999</span> <span style="color: #cc7832;font-weight: bold">);</span></p>
<p style="margin: 0"><span style="color: #cc7832;font-weight: bold">}</span></p>
<p>&nbsp;</p>
<p>then Create a Class where you can write you logic to create the template and pass the file content to the front end.</p>
<p>&nbsp;</p>
<div style="background-color: #1e1f22;padding: 0px 0px 0px 2px">
<div style="color: #cccccc;background-color: #1e1f22;font-size: 8pt">
<p style="margin: 0"><span style="color: #56a5e4;border: dashed 1pt #40abfe">CLASS</span><span style="color: #56a5e4"> </span><span style="color: #cccccc">zcl_down_template</span><span style="color: #56a5e4"> DEFINITION</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> PUBLIC FINAL</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> CREATE PUBLIC.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> PUBLIC SECTION.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> INTERFACES </span><span style="color: #cccccc">if_rap_query_provider</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> PRIVATE SECTION.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> TYPES: BEGIN OF </span><span style="color: #cccccc">lty_template</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">docnum</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">Process_type</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">comp_code</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">sales_org</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">distr_chn</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">division</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">ref_doc</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">currency</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span><span style="color: #56a5e4"></span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">material</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">matl_group</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">net_amount</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">gross</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">quantity</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">price_unit</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">bill_unit</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">c</span><span style="color: #56a5e4"> LENGTH </span><span style="color: #5be9fe">40</span><span style="color: #56a5e4">,</span><span style="color: #56a5e4"></span></p>
<p style="margin: 0"><span style="color: #56a5e4"> END OF </span><span style="color: #cccccc">lty_template</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">et_result</span><span style="color: #56a5e4"> TYPE TABLE OF </span><span style="color: #cccccc">lty_template</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">es_result</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">lty_template</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">et_res</span><span style="color: #56a5e4"> TYPE TABLE OF z</span><span style="color: #cccccc">tmp_dwn</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">es_res</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">ztmp_dwn</span><span style="color: #56a5e4">.</span><span style="color: #56a5e4"></span></p>
<p style="margin: 0"><span style="color: #56a5e4;border: dashed 1pt #40abfe">ENDCLASS</span><span style="color: #56a5e4">.</span></p>
<p style="margin: 0"><span style="color: #56a5e4">CLASS </span><span style="color: #cccccc">zcl_down_template</span><span style="color: #56a5e4"> IMPLEMENTATION.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> METHOD </span><span style="color: #cccccc">if_rap_query_provider</span><span style="color: #56a5e4">~</span><span style="color: #cccccc">select</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #808080">&#8221; TODO: variable is assigned but never used (ABAP cleaner)</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA(</span><span style="color: #cccccc">lr_skip</span><span style="color: #56a5e4">) = </span><span style="color: #cccccc">io_request</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">get_paging</span><span style="color: #56a5e4">( )-&gt;</span><span style="color: #cccccc">get_offset</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #808080">&#8221; TODO: variable is assigned but never used (ABAP cleaner)</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA(</span><span style="color: #cccccc">lr_top</span><span style="color: #56a5e4">) = </span><span style="color: #cccccc">io_request</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">get_paging</span><span style="color: #56a5e4">( )-&gt;</span><span style="color: #cccccc">get_page_size</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">lv_index_root</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">i</span><span style="color: #56a5e4"> VALUE </span><span style="color: #5be9fe">1</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">lo_document</span><span style="color: #56a5e4"> TYPE REF TO </span><span style="color: #cccccc">if_xco_xlsx_wa_document</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">lo_sheet</span><span style="color: #56a5e4"> TYPE REF TO </span><span style="color: #cccccc">if_xco_xlsx_wa_worksheet</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA </span><span style="color: #cccccc">lv_sheet_name</span><span style="color: #56a5e4"> TYPE </span><span style="color: #cccccc">string</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">lv_sheet_name</span><span style="color: #56a5e4"> = |</span><span style="color: #1eb540">Download_Template_</span><span style="color: #56a5e4">{ </span><span style="color: #cccccc">cl_abap_context_info</span><span style="color: #56a5e4">=&gt;</span><span style="color: #cccccc">get_system_date</span><span style="color: #56a5e4">( ) }|.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">lo_document</span><span style="color: #56a5e4"> = </span><span style="color: #cccccc">xco_cp_xlsx</span><span style="color: #56a5e4">=&gt;</span><span style="color: #cccccc">document</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">empty</span><span style="color: #56a5e4">( )-&gt;</span><span style="color: #cccccc">write_access</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">lo_sheet</span><span style="color: #56a5e4"> = </span><span style="color: #cccccc">lo_document</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">get_workbook</span><span style="color: #56a5e4">( )-&gt;</span><span style="color: #cccccc">worksheet</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">at_position</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">lv_index_root</span><span style="color: #56a5e4"> ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">lo_sheet</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">set_name</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">iv_name</span><span style="color: #56a5e4"> = </span><span style="color: #cccccc">lv_sheet_name</span><span style="color: #56a5e4"> ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">et_result</span><span style="color: #56a5e4"> = VALUE #( </span><span style="color: #56a5e4">( </span><span style="color: #cccccc">docnum</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;ID&#8217;</span><span style="color: #56a5e4"> </span><span style="color: #cccccc">Process_type</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;Template&#8217;</span><span style="color: #56a5e4"> )</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> ( </span><span style="color: #cccccc">docnum</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;DOCNUM&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">Process_type</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;PAYTYPE&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">comp_code</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;COMP_CODE&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">sales_org</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;SALES_ORG&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">distr_chn</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;DISTR_CHAN&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">division</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;DIVISION&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">ref_doc</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;REF_DOC&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">currency</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;CURRENCY&#8217;</span><span style="color: #1eb540"></span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">material</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;MATERIAL&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">matl_group</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;MATL_GROUP&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">net_amount</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;NET_AMOUNT&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">gross</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;GROSS&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">quantity</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;QUANTITY&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">price_unit</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;PRICE_UNIT&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">bill_unit</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;BILL_UNIT&#8217;</span><span style="color: #56a5e4">)</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> ( </span><span style="color: #cccccc">docnum</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Document Number(10)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">Process_type</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Process Type(4)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">comp_code</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Company Code(4)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">sales_org</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Sales Organization(4)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">distr_chn</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Distribution Channel(2)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">division</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Division&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">ref_doc</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Reference Document&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">currency</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Currency&#8217;</span><span style="color: #1eb540"></span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">ref_item</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Item No(10)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">material</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;*Material(40)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">matl_group</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;Material Group(9)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">net_amount</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;NetAmount(15)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">gross</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;Gross(15)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">quantity</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;Quantuity(13)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">price_unit</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;PriceUnit(5)&#8217;</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">bill_unit</span><span style="color: #56a5e4"> = </span><span style="color: #1eb540">&#8216;BillUnit(3)&#8217;</span><span style="color: #1eb540"></span><span style="color: #56a5e4"> ) ).</span></p>
<p>&nbsp;</p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA(</span><span style="color: #cccccc">lo_pattern</span><span style="color: #56a5e4">) = </span><span style="color: #cccccc">xco_cp_xlsx_selection</span><span style="color: #56a5e4">=&gt;</span><span style="color: #cccccc">pattern_builder</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">simple_from_to</span><span style="color: #56a5e4">( )-&gt;</span><span style="color: #cccccc">get_pattern</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">lo_sheet</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">select</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">lo_pattern</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> )-&gt;</span><span style="color: #cccccc">row_stream</span><span style="color: #56a5e4">(</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> )-&gt;</span><span style="color: #cccccc">operation</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">write_from</span><span style="color: #56a5e4">( REF #( </span><span style="color: #cccccc">et_result</span><span style="color: #56a5e4"> )</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> )-&gt;</span><span style="color: #cccccc">execute</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA(</span><span style="color: #cccccc">ld_excel</span><span style="color: #56a5e4">) = </span><span style="color: #cccccc">lo_document</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">get_file_content</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> DATA(</span><span style="color: #cccccc">lv_base64_encoding</span><span style="color: #56a5e4">) = </span><span style="color: #cccccc">xco_cp</span><span style="color: #56a5e4">=&gt;</span><span style="color: #cccccc">xstring</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">ld_excel</span><span style="color: #56a5e4"> )-&gt;</span><span style="color: #cccccc">as_string</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">xco_cp_binary</span><span style="color: #56a5e4">=&gt;</span><span style="color: #cccccc">text_encoding</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">base64</span><span style="color: #56a5e4"> )-&gt;</span><span style="color: #cccccc">value</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">es_res</span><span style="color: #56a5e4">&#8211;</span><span style="color: #cccccc">file_content</span><span style="color: #56a5e4"> = </span><span style="color: #cccccc">lv_base64_encoding</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> APPEND </span><span style="color: #cccccc">es_res</span><span style="color: #56a5e4"> TO </span><span style="color: #cccccc">et_res</span><span style="color: #56a5e4">.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> IF </span><span style="color: #cccccc">io_request</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">is_total_numb_of_rec_requested</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">io_response</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">set_total_number_of_records</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">lines</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">et_res</span><span style="color: #56a5e4"> ) ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> ENDIF.</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> IF </span><span style="color: #cccccc">io_request</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">is_data_requested</span><span style="color: #56a5e4">( ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> </span><span style="color: #cccccc">io_response</span><span style="color: #56a5e4">-&gt;</span><span style="color: #cccccc">set_data</span><span style="color: #56a5e4">( </span><span style="color: #cccccc">et_res</span><span style="color: #56a5e4"> ).</span></p>
<p style="background-color: #292929;margin: 0"><span style="color: #56a5e4"> ENDIF.</span></p>
<p style="margin: 0"><span style="color: #56a5e4"> ENDMETHOD.</span></p>
<p style="margin: 0"><span style="color: #56a5e4">ENDCLASS.</span></p>
</div>
</div>
<p>&nbsp;</p>
<p>Now activate the class and expose it the service definition and at last create a web API v4 and pass the URL to the front person to fetch and download the excel sheet.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/how-to-create-api-to-download-an-excel-sheet/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to implement get cursor, hide and user command in sap reports</title>
		<link>https://www.sapewmhelp.com/question/how-to-implement-get-cursor-hide-and-user-command-in-sap-reports/</link>
					<comments>https://www.sapewmhelp.com/question/how-to-implement-get-cursor-hide-and-user-command-in-sap-reports/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 20:43:50 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=how-to-implement-get-cursor-hide-and-user-command-in-sap-reports</guid>

					<description><![CDATA[GET CURSOR → to capture the position of the cursor in a list/report. HIDE → to store values “hidden” behind a line for later retrieval. USER COMMAND (AT USER-COMMAND) → to react to user actions (e.g., double-clicks, buttons, PF keys). 1. GET CURSOR This is used to know where the user placed the cursor or [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>GET CURSOR</strong> → to capture the position of the cursor in a list/report.</p>
<p><strong>HIDE</strong> → to store values “hidden” behind a line for later retrieval.</p>
<p><strong>USER COMMAND (AT USER-COMMAND)</strong> → to react to user actions (e.g., double-clicks, buttons, PF keys).</p>
<h5>1. <strong>GET CURSOR</strong></h5>
<p>This is used to know <em>where</em> the user placed the cursor or clicked in a list.</p>
<p>GET CURSOR FIELD gv_field VALUE gv_value.</p>
<ul>
<li><code>gv_field</code> → variable to hold the field name under the cursor.</li>
<li><code>gv_value</code> → variable to hold the value of that field.</li>
</ul>
<p>Example:</p>
<p>GET CURSOR FIELD lv_field VALUE lv_value.<br />
WRITE: / &#8216;Cursor on:&#8217;, lv_field, &#8216;Value:&#8217;, lv_value.</p>
<p>&nbsp;</p>
<h5>2. <strong>HIDE</strong></h5>
<p>The <code>HIDE</code> statement stores the value of a variable in the system’s <strong>hide area</strong>, linked to the current line.<br />Later, when the user double-clicks on that line, the hidden values are retrieved automatically.</p>
<p>Example:</p>
</p>
<p>LOOP AT it_mara INTO wa_mara.<br />
WRITE: / wa_mara-matnr, wa_mara-maktx.<br />
HIDE: wa_mara-matnr, wa_mara-maktx.<br />
ENDLOOP.</p>
</p>
<p>When the user double-clicks on a line, the hidden fields for that line become available again.</p>
</p>
<h5>3. <strong>USER COMMAND (AT USER-COMMAND)</strong></h5>
<p>This event block reacts to user actions (function keys, buttons, or double-clicks).</p>
<p>Example:</p>
<p>AT USER-COMMAND.<br />
CASE sy-ucomm.<br />
WHEN &#8216;DETAIL&#8217;. &#8220;Custom function code<br />
WRITE: / &#8216;Details for material:&#8217;, wa_mara-matnr.<br />
WHEN &#8216;EXIT&#8217;.<br />
LEAVE PROGRAM.<br />
ENDCASE.</p>
</p>
<p><strong>Full Example:</strong></p>
</p>
<p>REPORT zsample_report.</p>
<p>TABLES: mara.</p>
<p>DATA: wa_mara TYPE mara.</p>
<p>START-OF-SELECTION.<br />
SELECT * FROM mara UP TO 10 ROWS.<br />
WRITE: / mara-matnr, mara-mtart, mara-mbrsh.<br />
HIDE: mara-matnr.<br />
ENDSELECT.</p>
<p>AT LINE-SELECTION. &#8220;Triggered by double-click<br />
WRITE: / &#8216;You selected material:&#8217;, mara-matnr.</p>
<p>AT USER-COMMAND.<br />
CASE sy-ucomm.<br />
WHEN &#8216;DETAIL&#8217;.<br />
GET CURSOR FIELD DATA(lv_field) VALUE DATA(lv_value).<br />
WRITE: / &#8216;Field:&#8217;, lv_field, &#8216;Value:&#8217;, lv_value.<br />
WHEN &#8216;EXIT&#8217;.<br />
LEAVE PROGRAM.<br />
ENDCASE.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/how-to-implement-get-cursor-hide-and-user-command-in-sap-reports/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Managed Scenario with Unmanaged save</title>
		<link>https://www.sapewmhelp.com/question/managed-scenario-with-unmanaged-save/</link>
					<comments>https://www.sapewmhelp.com/question/managed-scenario-with-unmanaged-save/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 20:08:52 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=managed-scenario-with-unmanaged-save</guid>

					<description><![CDATA[The managed save sequence is a key concept in the RAP (Restful Application Programming) framework used to handle persistence operations for entity instances in ABAP. It automates the process of saving changes made toan entity while allowing customization when needed. Key Components of the Managed Save Sequence  Standard Behavior Automatically saves changes made to entity [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>The managed save sequence is a key concept in the RAP (Restful Application Programming) framework used to handle persistence operations for entity instances in ABAP. It automates the process of saving changes made to<br />an entity while allowing customization when needed.</p>
<p><strong>Key Components of the Managed Save Sequence</strong></p>
<ul>
<li> Standard Behavior
<ul>
<li>Automatically saves changes made to entity instances in the database.</li>
<li>Ensures consistent data persistence without requiring additional coding.</li>
</ul>
</li>
<li>Steps in the Sequence
<ul>
<li>Data Validation: Validates the modified instance to ensure data integrity.</li>
<li>Data Modification: Updates or inserts the instance data into the database.</li>
<li>Lifecycle Management: Manages the lifecycle events triggered during the save process.</li>
<li>Post-Save Actions: Completes any final actions after the data persisted.</li>
</ul>
</li>
<li>Customizing with Extra Save
<ul>
<li>The extra save feature allows adding additional logic to the save process, such as logging changes or triggering external services.</li>
<li>Developers can implement additional steps using the save_modified method in a saver class.</li>
</ul>
</li>
<li> Change Tracking
<ul>
<li>Logs changes made to an instance, such as modified fields or newly added data.</li>
<li>These changes can be written to a log table for auditing or debugging purposes.</li>
</ul>
</li>
</ul>
<p>Unmanaged save is ideal when the default save logic in the RAP framework (managed save)cannot handle specific business requirements. It gives developers full control over how data persisted, enabling customization for complex scenarios like:</p>
<p> Custom Table Structures: When data is stored in unconventional formats or across multiple tables.<br /> Advanced Integrations: When saving data involves external APIs or systems.<br /> Complex Logic: For operations requiring extensive calculations, validations, or dependencies between entities.</p>
<p><strong>Steps to implement unmanage save.</strong><br />Before that ensure persistence, table is not specified, as unmanaged save implementation cannot have persistence table specified to it.</p>
<p><strong>Step 1:</strong> Include the unmanaged save keywords for all nodes where unmanaged behavior is required.</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/un1.png" /></p>
<p><strong>Step 2:</strong> Redefine method save_modified in Saver Local class implementation level.</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/un2.png" /></p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/un3.png" /></p>
<p>In this way we can implement the Unmanaged Save Sequence.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/managed-scenario-with-unmanaged-save/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Search Help and Value Help in SAP RAP (RESTful ABAP Programming Model)</title>
		<link>https://www.sapewmhelp.com/question/search-help-and-value-help-in-sap-rap-restful-abap-programming-model/</link>
					<comments>https://www.sapewmhelp.com/question/search-help-and-value-help-in-sap-rap-restful-abap-programming-model/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Fri, 05 Sep 2025 19:46:18 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=search-help-and-value-help-in-sap-rap-restful-abap-programming-model</guid>

					<description><![CDATA[search help/value help is not implemented in the classic way (with SE11 search helps + F4 help). Instead, RAP follows the Fiori and OData paradigm: Search Help (free text search): Implemented via @Search annotations on CDS views. Value Help (F4 help / dropdowns): Implemented via associations + @Consumption.valueHelpDefinition annotations. 1. Search Help in RAP Search [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>search help/value help</strong> is not implemented in the classic way (with SE11 search helps + F4 help). Instead, RAP follows the <strong>Fiori and OData paradigm</strong>:</p>
<ul>
<li><strong>Search Help (free text search):</strong> Implemented via <code>@Search</code> annotations on CDS views.</li>
<li><strong>Value Help (F4 help / dropdowns):</strong> Implemented via associations + <code>@Consumption.valueHelpDefinition</code> annotations.</li>
</ul>
<h5>1. Search Help in RAP</h5>
<p>Search is enabled using annotations in the <strong>Projection View</strong> or <strong>Consumption View</strong>.</p>
<p>@Search.searchable: true<br />define view entity ZI_Book<br />as select from zbook<br />{<br />key book_id,<br />title,<br />author,<br />publisher<br />}</p>
<ul>
<li><code>@Search.searchable: true</code> → Allows free-text search across all fields.</li>
<li>You can refine it:</li>
</ul>
<p>@Search.defaultSearchElement: true<br />title,</p>
<p>@Search.defaultSearchElement: true<br />author</p>
<p>&nbsp;</p>
<h5>2. Value Help in RAP</h5>
<p>For dropdowns or F4 helps, you define <strong>associations</strong> and annotate them.</p>
<h6>Step 1: Define Value Help View</h6>
<p>@EndUserText.label: &#8216;Value Help for Publishers&#8217;<br />define view entity ZI_PublisherVH<br />as select from zpublisher<br />{<br />key publisher_id,<br />name<br />}</p>
<p>&nbsp;</p>
<h6>Step 2: Add Association in Main View</h6>
<p>define view entity ZI_Book<br />as select from zbook<br />association [0..1] to ZI_PublisherVH as _Publisher<br />on $projection.publisher_id = _Publisher.publisher_id<br />{<br />key book_id,<br />title,<br />publisher_id,<br />_Publisher<br />}</p>
<p>&nbsp;</p>
<h6>Step 3: Annotate Value Help</h6>
<p>@Consumption.valueHelpDefinition: [<br />{ entity: { name: &#8216;ZI_PublisherVH&#8217;, element: &#8216;publisher_id&#8217; } }<br />]<br />publisher_id,</p>
<p>&nbsp;</p>
<p>Now in Fiori, <code>publisher_id</code> will show F4 help with dropdown based on <code>ZI_PublisherVH</code>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/search-help-and-value-help-in-sap-rap-restful-abap-programming-model/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>What is EML in SAP RAP?</title>
		<link>https://www.sapewmhelp.com/question/what-is-eml-in-sap-rap/</link>
					<comments>https://www.sapewmhelp.com/question/what-is-eml-in-sap-rap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Tue, 02 Sep 2025 19:50:01 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=what-is-eml-in-sap-rap</guid>

					<description><![CDATA[EML (Entity Manipulation Language) is a standardized way to interact with RAP business objects (BOs).Instead of directly updating database tables, you manipulate entities of a business object using EML statements. It’s similar to SQL but tailored for RAP-managed business objects (like CDS-based BOs). Common EML Statements You can use EML to perform: READ → retrieve [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>EML (<strong>Entity Manipulation Language</strong>) is a standardized way to <strong>interact with RAP business objects</strong> (BOs).<br />Instead of directly updating database tables, you manipulate <strong>entities of a business object</strong> using EML statements.</p>
<p>It’s similar to SQL but tailored for RAP-managed business objects (like CDS-based BOs).</p>
</p>
<h6>Common EML Statements</h6>
<p>You can use EML to perform:</p>
<ul>
<li><strong>READ</strong> → retrieve data from BO entities</li>
<li><strong>CREATE</strong> → create new instances</li>
<li><strong>UPDATE</strong> → change existing instances</li>
<li><strong>DELETE</strong> → delete instances</li>
<li><strong>ACTION</strong> → call business actions</li>
<li><strong>FUNCTION</strong> → call determinations/validations indirectly</li>
</ul>
<p><strong>Syntax Examples</strong></p>
<p>1. <strong>Read</strong></p>
<p>READ ENTITIES OF zi_travel<br />
ENTITY travel<br />
FIELDS ( travel_id agency_id status )<br />
WITH VALUE #( ( travel_id = &#8216;0001&#8217; ) )<br />
RESULT DATA(lt_travel).</p>
<p>&nbsp;</p>
<p>2. <strong>Create</strong></p>
<p>MODIFY ENTITIES OF zi_travel<br />
ENTITY travel<br />
CREATE<br />
FIELDS ( travel_id agency_id customer_id )<br />
WITH VALUE #( ( travel_id = &#8216;1001&#8217; agency_id = &#8216;7000&#8217; customer_id = &#8216;C01&#8217; ) )<br />
FAILED DATA(ls_failed)<br />
REPORTED DATA(ls_reported).</p>
<p>&nbsp;</p>
<p>3. <strong>Update</strong></p>
<p>MODIFY ENTITIES OF zi_travel<br />
ENTITY travel<br />
UPDATE<br />
FIELDS ( status )<br />
WITH VALUE #( ( travel_id = &#8216;1001&#8217; status = &#8216;X&#8217; ) )<br />
FAILED DATA(ls_failed)<br />
REPORTED DATA(ls_reported).</p>
<p>4. <strong>Delete</strong></p>
<p>MODIFY ENTITIES OF zi_travel<br />
ENTITY travel<br />
DELETE<br />
FROM VALUE #( ( travel_id = &#8216;1001&#8217; ) )<br />
FAILED DATA(ls_failed)<br />
REPORTED DATA(ls_reported).</p>
<p>5. <strong>Action Execution</strong></p>
<p>MODIFY ENTITIES OF zi_travel<br />
ENTITY travel<br />
EXECUTE action confirm<br />
FROM VALUE #( ( travel_id = &#8216;1001&#8217; ) )<br />
FAILED DATA(ls_failed)<br />
REPORTED DATA(ls_reported).</p>
<p>&nbsp;</p>
<h6>Key Points</h6>
<ul>
<li>
<p>Always executed <strong>against business objects (BOs)</strong>, not database tables.</p>
</li>
<li>
<p>Works inside <strong>ABAP classes (behavior implementations, service consumption, or test code)</strong>.</p>
</li>
<li>
<p>Returns:</p>
<ul>
<li><strong>RESULT</strong> → successful data</li>
<li><strong>FAILED</strong> → failed instances</li>
<li><strong>REPORTED</strong> → messages/warnings</li>
</ul>
</li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/what-is-eml-in-sap-rap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Abstract Entity In RAP</title>
		<link>https://www.sapewmhelp.com/question/abstract-entity-in-rap/</link>
					<comments>https://www.sapewmhelp.com/question/abstract-entity-in-rap/#respond</comments>
		
		<dc:creator><![CDATA[DPM125]]></dc:creator>
		<pubDate>Tue, 02 Sep 2025 19:45:00 +0000</pubDate>
				<guid isPermaLink="false">https://www.sapewmhelp.com/?question=abstract-entity-in-rap</guid>

					<description><![CDATA[Abstract Entity. A CDS abstract entity defines the type attributes of a CDS entity without defining a database object. CDS abstract entities can be used as  data types whose type attributes go beyond the regular DDIC structures in the ABAP Dictionary prototype definitions of data models without being created as instances of a data object. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p><strong>Abstract Entity.</strong><br />
A CDS abstract entity defines the type attributes of a CDS entity without defining a database<br />
object.<br />
<strong>CDS abstract entities can be used as</strong></p>
<ul>
<li> data types whose type attributes go beyond the regular DDIC structures in the ABAP Dictionary</li>
<li>prototype definitions of data models without being created as instances of a data object.</li>
</ul>
<p><strong>Example:</strong><br />
Administrators can update a seller&#8217;s email via a &#8220;Update Email&#8221; button in the Seller Details form.Clicking the button opens a popup modal displaying the current email, an input field for the newemail, and an optional reason for the update. Validation ensures the new email has a proper format and is not duplicated. On save, an abstract entity processes the update, and the system<br />
records the change for compliance.</p>
<p><strong>Create a CDS abstract entity</strong></p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/a1.png" /></p>
<p>Add it using action in Behavior definition.</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/a2.png" /></p>
<p>Implement the method and modify the field.</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/a3.png" /></p>
<p>In Preview Screen → Before email update</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/a4.png" /></p>
<p>Email field updated</p>
<p><img decoding="async" class="content-img" src="https://www.sapewmhelp.com/wp-content/uploads/2025/09/a5.png" /></p>
<p><strong>Conclusion:</strong><br />
Abstract entities in RAP applications provide a powerful framework for enhancing modularity, scalability, and reusability by encapsulating shared business logic and ensuring consistent behavior across root entities. This is particularly evident in scenarios like updating a seller&#8217;s email, where an abstract entity centralizes the handling of operations such as validation, transformation, and automated updates. The use of a popup modal for updates, paired with the abstract entity&#8217;s logic, ensures a user-friendly experience, streamlined workflows, and systemwide synchronization. This approach aligns with clean architecture principles, resulting in robust, maintainable, and adaptable applications capable of efficiently meeting current and future requirements.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.sapewmhelp.com/question/abstract-entity-in-rap/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
