<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>segredo on Abapinho</title><link>https://abapinho.com/en/tags/segredo/</link><description>Recent content in segredo on Abapinho</description><generator>Hugo -- gohugo.io</generator><language>en</language><copyright>&amp;copy;2009-2026 Nuno Godinho</copyright><lastBuildDate>Mon, 16 Feb 2026 09:00:00 +0100</lastBuildDate><atom:link href="https://abapinho.com/en/tags/segredo/index.xml" rel="self" type="application/rss+xml"/><item><title>Execute code after a COMMIT</title><link>https://abapinho.com/en/2026/02/evento-transaction-finished/</link><pubDate>Mon, 16 Feb 2026 09:00:00 +0100</pubDate><guid>https://abapinho.com/en/2026/02/evento-transaction-finished/</guid><description>&lt;p>Remember how with &lt;code>CALL FUNCTION IN UPDATE TASK&lt;/code> you could delay some actions until the moment of a &lt;code>COMMIT&lt;/code>?&lt;/p></description></item><item><title>Case insensitive SELECTs</title><link>https://abapinho.com/en/2025/05/select-case-insensitive/</link><pubDate>Mon, 26 May 2025 09:00:00 +0100</pubDate><guid>https://abapinho.com/en/2025/05/select-case-insensitive/</guid><description>&lt;p>In SAP it&amp;rsquo;s normal to have tables in the database with a &lt;code>NAME&lt;/code> field and another &lt;code>NAME_SEARCH&lt;/code> which is filled in with exactly the same thing as &lt;code>NAME&lt;/code> but in upper case.&lt;/p>
&lt;p>Then, when you want to do case-insensitive searches you use &lt;code>NAME_SEARCH&lt;/code>. You don&amp;rsquo;t need to do this anymore.&lt;/p></description></item><item><title>Copy from SAPGui to the clipboard</title><link>https://abapinho.com/en/2023/09/copy-to-clipboard/</link><pubDate>Mon, 25 Sep 2023 09:00:00 +0100</pubDate><guid>https://abapinho.com/en/2023/09/copy-to-clipboard/</guid><description>&lt;p>Did you know that your ABAP programme can copy content to your operating system&amp;rsquo;s clipboard?&lt;/p></description></item><item><title>Fix prefixes</title><link>https://abapinho.com/en/2023/05/prefixos-fixos/</link><pubDate>Mon, 01 May 2023 09:00:00 +0100</pubDate><guid>https://abapinho.com/en/2023/05/prefixos-fixos/</guid><description>&lt;p>It&amp;rsquo;s very easy to mess up with object names in SAP. I recently found a way to minimize that problem: set rules to fix per-package prefixes for certain object types.&lt;/p></description></item><item><title>The RANGEs double negatives</title><link>https://abapinho.com/en/2021/07/as-duplas-negativas-dos-ranges/</link><pubDate>Mon, 26 Jul 2021 09:00:15 +0000</pubDate><guid>https://abapinho.com/en/2021/07/as-duplas-negativas-dos-ranges/</guid><description>&lt;p>RANGEs have interesting properties.&lt;/p></description></item><item><title>Manually populate a LISTBOX</title><link>https://abapinho.com/en/2021/06/popula-manulamente-listbox/</link><pubDate>Mon, 14 Jun 2021 12:47:10 +0000</pubDate><guid>https://abapinho.com/en/2021/06/popula-manulamente-listbox/</guid><description>&lt;p>In 2012 I &lt;a href="https://abapinho.com/en/2012/10/ninguemligaaolistbox/">wondered why LISTBOX is so rarely used&lt;/a>. I taught how to use it with standard data elements, which automatically populate it. Today I&amp;rsquo;ll teach you how you can populate it yourself.&lt;/p></description></item><item><title>Change selection screen texts without hard coding them</title><link>https://abapinho.com/en/2021/05/manipula-textos-de-seleccao/</link><pubDate>Mon, 24 May 2021 09:00:11 +0000</pubDate><guid>https://abapinho.com/en/2021/05/manipula-textos-de-seleccao/</guid><description>&lt;p>Even though many ABAP programmers tend to forget this, the less texts you hard code in your program the simpler it will be to translate it.&lt;/p>
&lt;p>Here&amp;rsquo;s a simple but rather obscure way to manipulate selection screen texts while still being able to translate then. This way you can, for example, prefix them with icons.&lt;/p></description></item><item><title>Use CL_GUI_ALV_GRID without having to create a screen</title><link>https://abapinho.com/en/2020/03/usa-cl_gui_alv_grid-sem-ter-de-criar-um-ecra/</link><pubDate>Mon, 02 Mar 2020 09:00:14 +0000</pubDate><guid>https://abapinho.com/en/2020/03/usa-cl_gui_alv_grid-sem-ter-de-criar-um-ecra/</guid><description>&lt;p>Nowadays I rarely use CL_GUI_ALV_GRID because SALV is so much better. But when I am asked to make an editable ALV I still use it. Until very recently, I thought that, in order to use it, I needed a screen with a container. And because I&amp;rsquo;m using ABAP OO, I&amp;rsquo;d need a function group to host it and a function module to call it. Painful.&lt;/p></description></item><item><title>Magical shortcuts to menus</title><link>https://abapinho.com/en/2019/09/atalhos-magicos-para-menus/</link><pubDate>Tue, 10 Sep 2019 09:00:02 +0000</pubDate><guid>https://abapinho.com/en/2019/09/atalhos-magicos-para-menus/</guid><description>&lt;p>If you, who are reading this, believe that everything written in Abapinho is literally true, what I&amp;rsquo;m about to tell you will be a disappointment: when I said magical I didn&amp;rsquo;t mean that it was supernatural. It is just a nicer way of saying it is surprising and unexpected. I took this liberty just as you&amp;rsquo;d say &amp;ldquo;I could kill for a glass of water&amp;rdquo; knowing that you would never do it. Having made this clear, let&amp;rsquo;s continue.&lt;/p></description></item><item><title>Shortcut to save list local file</title><link>https://abapinho.com/en/2019/09/atalho-para-gravar-lista-em-ficheiro-local/</link><pubDate>Wed, 04 Sep 2019 09:00:54 +0000</pubDate><guid>https://abapinho.com/en/2019/09/atalho-para-gravar-lista-em-ficheiro-local/</guid><description>&lt;p>SAP is full of hidden corners rarely visited. Abapinho is happy to shed some light on them.&lt;/p>
&lt;p>The command %pc is equivalent to the menu option System/List/Save/Local file:&lt;/p></description></item><item><title>Implicit enhancements in data structures</title><link>https://abapinho.com/en/2019/05/enhancements-implicitos-em-estruturas-de-dados/</link><pubDate>Mon, 13 May 2019 09:00:00 +0000</pubDate><guid>https://abapinho.com/en/2019/05/enhancements-implicitos-em-estruturas-de-dados/</guid><description>&lt;p>We have all used implicit enhancements to add code to the beginning or end of a standard function, form or method. But you may not know that it can also be used to add fields to data structures, whether they&amp;rsquo;re declared as TYPES or directly as DATA.&lt;/p></description></item><item><title>Save XML data in an ST (Simple Transformation)</title><link>https://abapinho.com/en/2019/04/guarda-dados-xml-numa-st-simple-transformation/</link><pubDate>Mon, 01 Apr 2019 09:00:59 +0000</pubDate><guid>https://abapinho.com/en/2019/04/guarda-dados-xml-numa-st-simple-transformation/</guid><description>&lt;p>Some days ago I was using an ST (Simple Transformation) and thought that, even though its job is to convert an input into an output, it is can be used to store XML data.&lt;/p>
&lt;p>Let&amp;rsquo;s asy we have the following XML:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-ABAP" data-lang="ABAP">&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">&amp;lt;cocktails&amp;gt;&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#000">cocktail&lt;/span> &lt;span style="color:#00f">id&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#00f">gt&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>; &lt;span style="color:#000">nome&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#000">Gin&lt;/span> &lt;span style="color:#000">Tonic&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>;/&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#000">cocktail&lt;/span> &lt;span style="color:#00f">id&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#000">ws&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>; &lt;span style="color:#000">nome&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#000">Whiskey&lt;/span> &lt;span style="color:#000">Sour&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>;/&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &amp;lt;&lt;span style="color:#000">cocktail&lt;/span> &lt;span style="color:#00f">id&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#000">cl&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>; &lt;span style="color:#000">nome&lt;/span>=&amp;amp;&lt;span style="color:#000">quot&lt;/span>;&lt;span style="color:#000">Campari&lt;/span> &lt;span style="color:#000">Laranja&lt;/span>&amp;amp;&lt;span style="color:#000">quot&lt;/span>;/&amp;gt;
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">&amp;lt;/cocktails&amp;gt;&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div></description></item><item><title>Inject ABAP commands into a productive system</title><link>https://abapinho.com/en/2018/10/injectar-comandos-abap-num-sistema-produtivo/</link><pubDate>Mon, 08 Oct 2018 09:00:50 +0000</pubDate><guid>https://abapinho.com/en/2018/10/injectar-comandos-abap-num-sistema-produtivo/</guid><description>The view below shows how simple it is to create the conditions to inject ABAP commands into programs in a productive system.
I considered whether to publish this. But, as it already happened in the past, I believe it is better for this to be known because it is very important for system administrators to be aware of this so they can protect their systems against this threat.
Thank you Ricardo Monteiro for the tip.</description></item><item><title>Transport a local table with its maintenance screens</title><link>https://abapinho.com/en/2018/10/transporta-ecras-de-manutencao-de-tabela/</link><pubDate>Mon, 01 Oct 2018 12:47:47 +0000</pubDate><guid>https://abapinho.com/en/2018/10/transporta-ecras-de-manutencao-de-tabela/</guid><description>&lt;p>Some time ago you created a table and its maintenance screens as local objects.&lt;/p>
&lt;p>When, later, you regret it and decide to transport the table, how will you be able to also transport the maintenance screens?&lt;/p>
&lt;p>Transporting the maintenance screens function group together with the table is not enough.&lt;/p></description></item><item><title>Test a sequence of function modules in SE37</title><link>https://abapinho.com/en/2018/07/testa-uma-sequencia-de-funcoes-na-se37/</link><pubDate>Mon, 09 Jul 2018 09:00:17 +0000</pubDate><guid>https://abapinho.com/en/2018/07/testa-uma-sequencia-de-funcoes-na-se37/</guid><description>&lt;p>I was sure I had already posted about this before but I can&amp;rsquo;t find it so here it goes (again?).&lt;/p>
&lt;p>Some function modules save global data which must then be used by another function module belonging to the same function group. So, if you need to test them, they must run in sequence inside the same transaction.&lt;/p>
&lt;p>Everybody knows you can use SE37 to test a function module. What few people know is that you can also use SE37 to test a sequence of function modules inside the same transaction. Those who don&amp;rsquo;t know this end up creating a small program to call those functions in sequence and that&amp;rsquo;s also ok. But here&amp;rsquo;s how you can avoid that.&lt;/p></description></item><item><title>Have extra control over your selection screen</title><link>https://abapinho.com/en/2018/03/controla-ecra-seleccao/</link><pubDate>Mon, 12 Mar 2018 09:00:08 +0000</pubDate><guid>https://abapinho.com/en/2018/03/controla-ecra-seleccao/</guid><description>&lt;p>The PARAMETERS and SELECT-OPTIONS already have some configuration options. But sometimes you need more control, more customising. Interestingly, although it&amp;rsquo;s not simple nor obvious, it can be done through a standard function module.&lt;/p></description></item><item><title>Debug on a user without debug permissions</title><link>https://abapinho.com/en/2018/03/debug-sem-permissoes/</link><pubDate>Mon, 05 Mar 2018 09:00:48 +0000</pubDate><guid>https://abapinho.com/en/2018/03/debug-sem-permissoes/</guid><description>&lt;p>In a well protected system, normal users don&amp;rsquo;t have debug permissions. Very often, this makes it harder for ABAP programmers to help solve the users&amp;rsquo; problems, not being able to debug directly in their session.&lt;/p>
&lt;p>But there is a legit, albeit obscure, work-around for this problem.&lt;/p></description></item><item><title>Edit standard programs without a key</title><link>https://abapinho.com/en/2018/02/editar-objectos-standard/</link><pubDate>Mon, 12 Feb 2018 09:00:22 +0000</pubDate><guid>https://abapinho.com/en/2018/02/editar-objectos-standard/</guid><description>&lt;p>Here we are again facing a dilemma: hide something because it is dangerous and someone can do bad things using this information or teach it because it would be condescending to presume the readers are not responsible enough to know it. Dictatorships usually go for the first: burning books, censorship, etc. Abapinho like to believe that its readers are responsible people and deserve the right to know.&lt;/p>
&lt;p>Thus, here it is. No, it&amp;rsquo;s not a user manual on how to enrich uranium nor a formula for homemade nitroglycerin. But it&amp;rsquo;s something similar: a trick that allows you to change standard objects without the need for a key.&lt;/p></description></item><item><title>Edit transport requests even if they don't let you</title><link>https://abapinho.com/en/2018/01/altera-ordens-de-transporte/</link><pubDate>Mon, 22 Jan 2018 09:00:15 +0000</pubDate><guid>https://abapinho.com/en/2018/01/altera-ordens-de-transporte/</guid><description>&lt;p>As we all know, system adminstrators are very bad, cold blooded and cruel people. To prove it you just need to read the &lt;a href="http://bofharchive.com/">Bastard Operator from Hell&lt;/a>.&lt;/p>
&lt;p>We, ABAP programmers, are hopeless victims in the hands of these evil creatures.&lt;/p>
&lt;p>But not always do we have to be smashed under their hairy fingers.&lt;/p></description></item><item><title>SALV consistency report</title><link>https://abapinho.com/en/2017/07/relatorio-consistencia-salv/</link><pubDate>Tue, 18 Jul 2017 09:00:08 +0000</pubDate><guid>https://abapinho.com/en/2017/07/relatorio-consistencia-salv/</guid><description>&lt;p>Sometimes a SALV has inconsistencies which can go unnoticed. For example, if its structure has an amount field which doesn&amp;rsquo;t have an associated currency field:&lt;/p></description></item><item><title>The transaction who wanted to call another and couldn't</title><link>https://abapinho.com/en/2017/02/a-transaccao-que-queria-chamar-outra-e-nao-podia/</link><pubDate>Mon, 06 Feb 2017 09:00:24 +0000</pubDate><guid>https://abapinho.com/en/2017/02/a-transaccao-que-queria-chamar-outra-e-nao-podia/</guid><description>&lt;p>John created transaction ZFB01 and associated it with program ZFB01 which, after doing some stuff, does a CALL TRANSACTION on FB01. Then came his friend Mike and ran transaction ZFB01.&lt;/p>
&lt;p>He managed to start running it because he had permissions to do it. But half way through he got an error because he doesn&amp;rsquo;t have permissions to run transaction FB01.&lt;/p>
&lt;p>Both John and Mike knew that the system administrators would never ever give Mike permission to run FB01.&lt;/p></description></item><item><title>Local $PACKAGES</title><link>https://abapinho.com/en/2016/11/pacotes-locais/</link><pubDate>Mon, 07 Nov 2016 09:00:37 +0000</pubDate><guid>https://abapinho.com/en/2016/11/pacotes-locais/</guid><description>&lt;p>Any object created in SAP must belong to a package.&lt;/p>
&lt;p>Until recently, whenever I needed to create a program for a quick test I&amp;rsquo;d put it in the $TMP package. This way I was sure that it would never be transported to another system.&lt;/p>
&lt;p>But sometimes I have the need to create stuff in the development system which, even though it should never be transported, should stay there forever. For example, development tools like ZSAPLINK and abapGit. But if we put everything under package $TMP it will soon be a big mess.&lt;/p></description></item><item><title>DDIC structure key</title><link>https://abapinho.com/en/2016/11/definir-a-chave-de-uma-estrutura-do-ddic/</link><pubDate>Wed, 02 Nov 2016 09:00:39 +0000</pubDate><guid>https://abapinho.com/en/2016/11/definir-a-chave-de-uma-estrutura-do-ddic/</guid><description>&lt;p>Today when I want to create a SALV I always create a DDIC structure with the data elements already set to show the texts I need. This avoids the need for code to manipulate the field catalog.&lt;/p></description></item><item><title>APPEND STRUCTURES do more stuff than I thought</title><link>https://abapinho.com/en/2016/10/append-structures-do-more-stuff-than-i-thought/</link><pubDate>Mon, 17 Oct 2016 09:00:06 +0000</pubDate><guid>https://abapinho.com/en/2016/10/append-structures-do-more-stuff-than-i-thought/</guid><description>&lt;p>During all my ABAPian life I was convinced that APPEND STRUCTURES had one single purpose: to add new extra fields to an existing standard table.&lt;/p>
&lt;p>But I recently learned that they let you do two more things after all:&lt;/p></description></item><item><title>I call you and you call me</title><link>https://abapinho.com/en/2016/05/i-call-you-and-you-call-me/</link><pubDate>Mon, 09 May 2016 18:36:30 +0000</pubDate><guid>https://abapinho.com/en/2016/05/i-call-you-and-you-call-me/</guid><description>&lt;p>You you call a function via RFC you need to provide the RFC DESTINATION for the remote system:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="background-color:#fff;-moz-tab-size:2;-o-tab-size:2;tab-size:2;">&lt;code class="language-ABAP" data-lang="ABAP">&lt;span style="display:flex;">&lt;span>&lt;span style="color:#00f">CALL FUNCTION&lt;/span> &lt;span style="color:#f00">‘&lt;/span>&lt;span style="color:#000">ZSNEEZED&lt;/span>&lt;span style="color:#f00">’&lt;/span>
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span> &lt;span style="color:#000">DESTINATION&lt;/span> &lt;span style="color:#f00">’&lt;/span>&lt;span style="color:#000">sistema_longe_daqui&lt;/span>&lt;span style="color:#f00">’&lt;/span>.&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>
&lt;p>What if, for some reason, the function running in the remote system needs to call a function in the original system? How would you do it?&lt;/p></description></item><item><title>Add parameters to standard methods and functions</title><link>https://abapinho.com/en/2016/02/acrescenta-parametros-a-metodos-e-funcoes-standard/</link><pubDate>Mon, 01 Feb 2016 09:00:50 +0000</pubDate><guid>https://abapinho.com/en/2016/02/acrescenta-parametros-a-metodos-e-funcoes-standard/</guid><description>&lt;p>We are all aware of SAP implicit enhancements which allow you to add code to the top or bottom of any block of standard code (methods, functions, etc). We&amp;rsquo;ve all used it to make a change to a BAPI or other standard piece of code.&lt;/p>
&lt;p>But only recently did I find that you can also use these implicit enhancements to add parameters to standard methods and functions.&lt;/p></description></item><item><title>Program the program programming</title><link>https://abapinho.com/en/2016/01/programa-a-programacao-dos-programas/</link><pubDate>Mon, 18 Jan 2016 09:00:47 +0000</pubDate><guid>https://abapinho.com/en/2016/01/programa-a-programacao-dos-programas/</guid><description>&lt;p>One of the few things that separates us humans from all the other animals is our ability to think about thoughts.&lt;/p>
&lt;p>A sparrow may think &lt;em>I&amp;rsquo;m scared, I&amp;rsquo;ll say chirp chirp chirp&lt;/em> and, as a direct consequence, whoever stands close to it will hear &lt;em>chirp chirp chirp&lt;/em>.&lt;/p></description></item><item><title>SAP can take selfies!</title><link>https://abapinho.com/en/2015/12/o-sap-sabe-tirar-selfies/</link><pubDate>Mon, 28 Dec 2015 09:00:35 +0000</pubDate><guid>https://abapinho.com/en/2015/12/o-sap-sabe-tirar-selfies/</guid><description>&lt;p>I just found out that SAP can take selfies. I still don&amp;rsquo;t see why one would need it. But that&amp;rsquo;s understandable because I never really understood the need for selfies anyway.&lt;/p>
&lt;p>Here&amp;rsquo;s how SAP can take a selfie:&lt;/p></description></item><item><title>Limitar execução em background ou foreground</title><link>https://abapinho.com/en/2015/11/limitar-execucao-em-background-ou-foreground/</link><pubDate>Mon, 30 Nov 2015 09:00:36 +0000</pubDate><guid>https://abapinho.com/en/2015/11/limitar-execucao-em-background-ou-foreground/</guid><description>&lt;p>You&amp;rsquo;ve developed a report which you know will take over 12 hours to run. So you don&amp;rsquo;t want anyone to try to run it in foreground. I&amp;rsquo;ll show you a way to make sure it doesn&amp;rsquo;t happen.&lt;/p></description></item><item><title>How to sabotage standard texts</title><link>https://abapinho.com/en/2015/11/como-sabotar-textos-standard/</link><pubDate>Mon, 23 Nov 2015 09:00:43 +0000</pubDate><guid>https://abapinho.com/en/2015/11/como-sabotar-textos-standard/</guid><description>&lt;p>Some times I don&amp;rsquo;t like the names SAP gave to things. So I change them.&lt;/p>
&lt;p>For example, one day I was very angry and thought all customers were parasites.&lt;/p>
&lt;p>So I did the following:&lt;/p></description></item><item><title>How to avoid timeout when running a program</title><link>https://abapinho.com/en/2015/11/como-evitar-timeout-ao-correr-um-programa/</link><pubDate>Mon, 02 Nov 2015 09:00:52 +0000</pubDate><guid>https://abapinho.com/en/2015/11/como-evitar-timeout-ao-correr-um-programa/</guid><description>&lt;p>Usually SAP systems have a predefined time limit for running a program interactively. If the program takes longer to run than that you&amp;rsquo;ll get a runtime execution error. A dump.&lt;/p></description></item><item><title>SE16H - Aggregate data without using Excel</title><link>https://abapinho.com/en/2015/10/se16h-agrega-dados-sem-precisares-do-excel/</link><pubDate>Mon, 12 Oct 2015 09:00:57 +0000</pubDate><guid>https://abapinho.com/en/2015/10/se16h-agrega-dados-sem-precisares-do-excel/</guid><description>&lt;p>A long time ago transaction SE17 was used to look at database tables content.
They quickly felt ashamed and decided to improve it, creating SE16.
When ALV was invented, SE16N was released (although until today many people still use SE16, go figure!).&lt;/p>
&lt;p>Today I present you SE16H.&lt;/p></description></item><item><title>Multiple OR selections in SE16N</title><link>https://abapinho.com/en/2015/08/multiplas-seleccoes-or-na-se16n/</link><pubDate>Mon, 03 Aug 2015 09:00:15 +0000</pubDate><guid>https://abapinho.com/en/2015/08/multiplas-seleccoes-or-na-se16n/</guid><description>&lt;p>If you are one of those persons who still uses SE16, this article is not for you. If you keep reading, you might find yet another reason to finally start using SE16N (as if all others were not enough already).&lt;/p>
&lt;p>Imagine that you want to select all materials whose name contains &amp;ldquo;PREGO&amp;rdquo; and whose type is &amp;ldquo;FERRAGENS&amp;rdquo;, and all materials whose name contains &amp;ldquo;GUARDANAPO&amp;rdquo; and whose type is &amp;ldquo;COMIDA&amp;rdquo;. In other words, &amp;ldquo;PREGO_NO_PAO&amp;rdquo; or &amp;ldquo;GUARDANAPO_PAPEL&amp;rdquo; won&amp;rsquo;t be part of the result set. What you want is this:&lt;/p>
&lt;p>(MATNR = “PREGO%” AND MTART = “FERR” ) OR (MATNR = “GUARDANAPO%” AND MAKT = “COMI” )&lt;/p>
&lt;p>As you know, using SE16N in a regular way (which doesn&amp;rsquo;t use what I&amp;rsquo;m about to show you) you would need to execute it twice and manually compare data, because the selection screen does not allow you to make multiple OR selections.&lt;/p>
&lt;p>Or does it?&lt;/p></description></item><item><title>[:pt]CALL FUNCTION com DESTINATION ‘NONE' cria nova LUW[:]</title><link>https://abapinho.com/en/2015/06/call-function-com-destination-none-cria-nova-luw/</link><pubDate>Mon, 22 Jun 2015 09:00:57 +0000</pubDate><guid>https://abapinho.com/en/2015/06/call-function-com-destination-none-cria-nova-luw/</guid><description>[:pt]Sabias que quando invocas uma função com a opção DESTINATION ‘NONE’ estás a iniciar uma nova LUW?
Isto pode parecer apenas uma curiosidade, mas há um caso em que pode fazer toda a diferença: sabes aqueles módulos de função que ao serem chamados uma segunda vez têm um comportamento diferente da primeira vez? Isto acontece porque eles hão-de ter alterado alguma variável global ao grupo de funções. Ora se iniciares uma nova LUW quando chamares a função, o seu grupo de funções é automaticamente inicializado e assim garantes que o comportamento da função é o esperado.</description></item><item><title>[:pt]Debug de um job[:]</title><link>https://abapinho.com/en/2015/06/debug-de-um-job/</link><pubDate>Mon, 15 Jun 2015 09:00:40 +0000</pubDate><guid>https://abapinho.com/en/2015/06/debug-de-um-job/</guid><description>&lt;p>[:pt]Para fazeres &lt;em>debug&lt;/em> a um programa que faça parte de um &lt;em>job&lt;/em> faz o seguinte:&lt;/p></description></item><item><title>Stop the functions module's error messages</title><link>https://abapinho.com/en/2015/03/calem-se-as-mensagens-das-funcoes/</link><pubDate>Mon, 30 Mar 2015 09:00:30 +0000</pubDate><guid>https://abapinho.com/en/2015/03/calem-se-as-mensagens-das-funcoes/</guid><description>&lt;p>There are standard functions that trigger messages where they shouldn’t. And they shouldn’t because we want to use these functions in non-interactive programs and then, instead of returning the error, an error message is triggered and ruins the whole process.&lt;/p>
&lt;p>However, being aware of this problem, SAP has provided a quite elegant (but not well documented) way of solving this problem.&lt;/p></description></item><item><title>Text search in a WebDynpro</title><link>https://abapinho.com/en/2015/03/procurar-texto-numa-webdynpro/</link><pubDate>Mon, 23 Mar 2015 09:00:31 +0000</pubDate><guid>https://abapinho.com/en/2015/03/procurar-texto-numa-webdynpro/</guid><description>&lt;p>SAP doesn&amp;rsquo;t know how to do things right the first time. The WebDynpros are a good example of this. It doesn’t even let you do a text search. It&amp;rsquo;s sad.&lt;/p>
&lt;p>Fortunately Sérgio Fraga has found a way, though it’s rather laboured:&lt;/p></description></item><item><title>How many includes is a class made of?</title><link>https://abapinho.com/en/2015/02/de-quantos-includes-e-feita-uma-classe/</link><pubDate>Mon, 23 Feb 2015 09:00:55 +0000</pubDate><guid>https://abapinho.com/en/2015/02/de-quantos-includes-e-feita-uma-classe/</guid><description>&lt;p>No matter how many times things go around in ABAP, everything ends up in SE38. Even the methods of the ABAP classes are saved in includes.&lt;/p>
&lt;p>Sometimes, when there is a dump, it says the problem is, for example, here: CL_MESSAGE_HELPER=============CM001.&lt;/p></description></item><item><title>Unreleasing a released transport order</title><link>https://abapinho.com/en/2015/02/tornar-a-prender-uma-ordem-de-transporte-liberada/</link><pubDate>Mon, 16 Feb 2015 09:00:51 +0000</pubDate><guid>https://abapinho.com/en/2015/02/tornar-a-prender-uma-ordem-de-transporte-liberada/</guid><description>&lt;p>You’ve released a transport order because you thought everything was ready. However, one more minor modification was still missing. So now you will have to create a new order and transport both of them. What a drag.&lt;/p>
&lt;p>Don’t worry.&lt;/p></description></item><item><title>Write in multiple lines at the same time</title><link>https://abapinho.com/en/2014/12/escrever-em-muitas-linhas-ao-mesmo-tempo/</link><pubDate>Mon, 15 Dec 2014 09:00:42 +0000</pubDate><guid>https://abapinho.com/en/2014/12/escrever-em-muitas-linhas-ao-mesmo-tempo/</guid><description>&lt;p>The ABAP editor has many curious functionalities.
You can even write in multiple lines at the same time.&lt;/p></description></item><item><title>Mathematics problem</title><link>https://abapinho.com/en/2013/12/matematica-problematica/</link><pubDate>Mon, 09 Dec 2013 09:00:23 +0000</pubDate><guid>https://abapinho.com/en/2013/12/matematica-problematica/</guid><description>&lt;p>Do you know the difference between a mystery and an enigma puzzle? An enigma puzzle is known to have a solution, but with a mystery you don’t know if there is solution.&lt;/p>
&lt;p>Do you agree with this?
5 * 3 / 10 = ( 5 * 3 ) / 10 = 5 * ( 3 / 10 ) = 1.5&lt;/p>
&lt;p>If you don’t, you should agree because it is a mathematical fact.&lt;/p>
&lt;p>Now let&amp;rsquo;s do some experiments.&lt;/p></description></item><item><title>SELECT comparing 2 fields of the same table</title><link>https://abapinho.com/en/2013/11/select-propria-tabela/</link><pubDate>Mon, 04 Nov 2013 09:00:00 +0000</pubDate><guid>https://abapinho.com/en/2013/11/select-propria-tabela/</guid><description>&lt;p>This tip is simple and quick, but I bet 200.482 Portuguese escudos that few know it.&lt;/p></description></item><item><title>Steal data from a SALV</title><link>https://abapinho.com/en/2013/10/roubar-salv/</link><pubDate>Mon, 14 Oct 2013 10:04:02 +0000</pubDate><guid>https://abapinho.com/en/2013/10/roubar-salv/</guid><description>&lt;p>A friend of a friend of a friend said that a friend of his knew a friend who explained to him in a shady club bar in the docks area of Lisbon how to steal data from a SALV.&lt;/p></description></item><item><title>/HS Command</title><link>https://abapinho.com/en/2013/07/comando-hs/</link><pubDate>Mon, 22 Jul 2013 09:00:36 +0000</pubDate><guid>https://abapinho.com/en/2013/07/comando-hs/</guid><description>&lt;p>Most functionals, and even the hardcore functionals, knows that in order to start debugging an ABAP program, we use the /H command. But few programmers, even the hardcode programmers, will know the purpose of the /HS command.&lt;/p></description></item><item><title>Jump The Wall</title><link>https://abapinho.com/en/2012/08/salta-a-parede/</link><pubDate>Mon, 06 Aug 2012 09:00:31 +0000</pubDate><guid>https://abapinho.com/en/2012/08/salta-a-parede/</guid><description>&lt;p>Turn down the music.
Close the door.
Look around.
Is anyone looking at you?
Are you being watched?
Are there any security cameras?
If not, we can go on.&lt;/p></description></item><item><title>Complex parameters in remote functions</title><link>https://abapinho.com/en/2012/07/parametros-complexos-por-rfc/</link><pubDate>Mon, 16 Jul 2012 09:00:01 +0000</pubDate><guid>https://abapinho.com/en/2012/07/parametros-complexos-por-rfc/</guid><description>&lt;p>Remote function calls (by RFC) do not support parameters with complex structures (deep structures). In other words, if any of the parameters has a structure in which one of the fields is another structure or an internal table then, hard luck, it won’t work.&lt;/p>
&lt;p>Do you give up? No, you don’t. Abapinho provides the solution: serialization.&lt;/p></description></item><item><title>Oh time turn back</title><link>https://abapinho.com/en/2012/04/o-tempo-volta-para-tras/</link><pubDate>Mon, 02 Apr 2012 10:00:08 +0000</pubDate><guid>https://abapinho.com/en/2012/04/o-tempo-volta-para-tras/</guid><description>&lt;p>“Oh time turn back
Give me everything I have lost
Take pity and give me the life
The life I have already lived
Oh time turn backward
Kill off my futile hopes
Look how even the sun itself
Returns every morning” – António Mourão&lt;/p>
&lt;p>Hey &lt;a href="https://www.youtube.com/watch?v=LOtAfLvhSZo">Tony&lt;/a>, right away. I will show you how you can turn back time.&lt;/p></description></item><item><title>How to sabotage tables</title><link>https://abapinho.com/en/2012/03/como-sabotar-tabelas/</link><pubDate>Mon, 12 Mar 2012 13:30:24 +0000</pubDate><guid>https://abapinho.com/en/2012/03/como-sabotar-tabelas/</guid><description>Another article to help those who are into sneaky subversion Spies, take note on how to edit a table that cannot be (and probably shouldn’t be) edited. I’ll show you three techniques. The first stopped being useful a few years ago, the second is about to become obsolete and the third, well, we’ll just have to see for how long it will work.
1. SE16 /H OK_CODE EDIT The first technique dates back to the twentieth century and uses the old transaction SE16.</description></item><item><title>When an internal table is not structured</title><link>https://abapinho.com/en/2012/02/tabela-interna-nao-estruturada/</link><pubDate>Mon, 27 Feb 2012 10:00:06 +0000</pubDate><guid>https://abapinho.com/en/2012/02/tabela-interna-nao-estruturada/</guid><description>When you want to select some lines in an internal table you normally do something like this:
DATA: BEGIN OF itbl, campo1 TYPE c, campo2 TYPE c, END OF itbl. READ TABLE itbl WITH KEY campo1 = &amp;#39;X&amp;#39; campo2 = &amp;#39;Y&amp;#39;. LOOP AT itbl WHERE campo1 = &amp;#39;X&amp;#39; and campo2 = &amp;#39;Y&amp;#39;. COISO. ENDLOOP. But what if the table is not structured and you want to search on the line as a whole?</description></item><item><title>Create test variants within functions from the debugger</title><link>https://abapinho.com/en/2012/02/variantes-de-teste-em-debug/</link><pubDate>Mon, 20 Feb 2012 10:00:42 +0000</pubDate><guid>https://abapinho.com/en/2012/02/variantes-de-teste-em-debug/</guid><description>&lt;p>Imagine that you are debugging a transaction, you enter into a function and find something interesting. So interesting that you have to debug it several times. The conventional way is to start the debug of the transaction again from the beginning. How tedious.&lt;/p>
&lt;p>But there is a more direct route. When you are debugging a function you can create test data for this function directly from the debugger, using the values with which the function had been called at that time. For instance:&lt;/p></description></item><item><title>The SAPGui history does not work even when active?</title><link>https://abapinho.com/en/2012/02/sapgui-historico/</link><pubDate>Mon, 06 Feb 2012 10:00:01 +0000</pubDate><guid>https://abapinho.com/en/2012/02/sapgui-historico/</guid><description>&lt;p>Has it ever happened to you that SAPGui does not store a history of values that you input to various fields even though the History option is actived in the settings?&lt;/p></description></item><item><title>Debugging while in modal dialogue boxes</title><link>https://abapinho.com/en/2012/01/debug-em-popups/</link><pubDate>Mon, 09 Jan 2012 10:00:29 +0000</pubDate><guid>https://abapinho.com/en/2012/01/debug-em-popups/</guid><description>&lt;p>There are times when you can’t do /H to launch &lt;em>debugger&lt;/em>. The most common one is when a pop-up window is open. However there is a simple, if Heath-Robinson, way to do it:&lt;/p></description></item><item><title>Global macros</title><link>https://abapinho.com/en/2011/05/macros-globais/</link><pubDate>Thu, 19 May 2011 18:02:41 +0000</pubDate><guid>https://abapinho.com/en/2011/05/macros-globais/</guid><description>In a previous article we talked about macros, a relatively obscure and little used feature that can be both useful as well as create a huge mess. But these aren’t the only ABAP macros. There are others that are even more obscure and with even greater potential to mix up a system: the global macros.
I don’t know if I should tell you this, as it’s so strange… But, I don’t think it’s a good idea to hide it… Therefore, I’ll tell all.</description></item><item><title>Start on the right footing</title><link>https://abapinho.com/en/2011/04/transaccao-inicial/</link><pubDate>Sat, 23 Apr 2011 09:27:25 +0000</pubDate><guid>https://abapinho.com/en/2011/04/transaccao-inicial/</guid><description>Normally when you log on to SAP the SAP menu appears. But you can use the function module NAVIGATION_SET_START_TCODE to pre-set an initial transaction. Anyway, it’s better to know it’s there than not to know it’s there, and even better than knowing that it’s not there. Who knows – it could be good for some users. There’s also the function module NAVIGATION_GET_START_TCODE to see what is pre-set.
Greetings from Abapinho.</description></item><item><title>Not even David Copperfield would do better</title><link>https://abapinho.com/en/2011/04/call-transaction/</link><pubDate>Thu, 21 Apr 2011 11:26:14 +0000</pubDate><guid>https://abapinho.com/en/2011/04/call-transaction/</guid><description>Sometimes we want to access a transaction and we don’t have permission. That’s annoying. Luckily there’s the function module ALINK_CALL_TRANSACTION which makes things better. But use it with care or someone will get angry. Welcome to the dark side of Abapinho. If they say it was me that said it, I deny everything.
Update: this function module will also do the trick: CALL_TRANSACTION_FROM_TABLE.
New update: if all the above fail try this other function module: RS_HDSYS_CALL_TC_VARIANT (clearing flag AUTHORITY_CHECK).</description></item><item><title>&lt;!--:pt-->Testar na SE37 não grava dados? Grava.&lt;!--:--></title><link>https://abapinho.com/en/2009/05/se37-gravar/</link><pubDate>Wed, 20 May 2009 10:40:40 +0000</pubDate><guid>https://abapinho.com/en/2009/05/se37-gravar/</guid><description>Uma forma prática de aprender a usar um módulo de funções ou verificar se este nos é útil é através da funcionalidade de teste da transacção SE37. Escolhe-se o módulo de função, faz-se F8 (Executar) e tem-se uma forma interactiva de testar uma função.
Isto é óbvio.
O que não será óbvio para toda a gente é que este teste não faz COMMIT à transacção e, por isso, qualquer alteração que a função possa fazer à base de dados - como gerar um documento por exemplo - não é gravada.</description></item><item><title>&lt;!--:pt-->A transacção N&lt;!--:--></title><link>https://abapinho.com/en/2009/05/transaccao-n/</link><pubDate>Thu, 14 May 2009 12:44:21 +0000</pubDate><guid>https://abapinho.com/en/2009/05/transaccao-n/</guid><description>É intrigante o porquê de, nos dias que correm, a transacção SE16 continuar a ser tão utilizada, quando já existe há tantos anos uma muito melhor, a SE16N.
A transacção SE16N tem mais:
sainete: tem um interface mais dinâmico e sofisticado;
simpatia: mostra em simultâneo a descrição funcional e o nome técnico dos campos;
sabedoria: mostra em simultâneo o valor interno e externo dos campos com rotinas de conversão;
E pode, vejam só, ser também invocada através da transacção N.</description></item></channel></rss>