<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7578675365385818367</id><updated>2024-10-06T23:21:10.553-07:00</updated><title type='text'>Tecnología SAP y relacionados</title><subtitle type='html'>Este blog está orientado a SAP y sobre todo a su parte técnica</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>13</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-4689893928432880463</id><published>2014-01-16T01:34:00.000-08:00</published><updated>2014-01-17T02:29:36.804-08:00</updated><title type='text'>Ejemplo de SHARED MEMORY OBJECTS</title><content type='html'>&amp;nbsp;Voy a iniciar 2014 activando este blog con una serie de artículos sobre SAP, orientados a la parte técnica, aunque alguno será enfocado a presentar algún producto interesante de SAP o hablar de algún nicho de mercado donde SAP está trabajando activamente.&lt;br /&gt;
&lt;br /&gt;
En primer lugar, hablaré de los objetos en memoria compartida (SHARED MEMORY OBJECTS).&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVP9E2cmiMTtRP1RNuwAwobunZxlf3kr1h5UOZd0lPMUjCrkJUVHgUQa0s-pV9K0ym71qI62xwPEwXIfhn44giRiFHlc46MYlk9p6YxA2z7Xdxj9e5zj68T5kCovmYvnLx7MP5tONPIlJx/s1600/imagen1.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVP9E2cmiMTtRP1RNuwAwobunZxlf3kr1h5UOZd0lPMUjCrkJUVHgUQa0s-pV9K0ym71qI62xwPEwXIfhn44giRiFHlc46MYlk9p6YxA2z7Xdxj9e5zj68T5kCovmYvnLx7MP5tONPIlJx/s1600/imagen1.jpg&quot; height=&quot;277&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Esta memoria va más allá de la clásica memoria SET/GET, EXPORT/IMPORT donde se pueden exportar a lo sumo tablas, pero no instancias de objetos ABAP, lo cual es una ventaja y conviene saber usarlo si en algún cliente es necesario compartir entre programas información de objetos. Esto simplifica el código porque de otro modo, hay que leer los atributos del objeto, exportarlo a memoria con las sentencias clásicas, importarlo en otro lugar y usar esa información y a veces enviarla de vuelta modificada, lo cual ya sólo escribirlo cansa, a parte de la dificultad de trabajar con IDs de memoria los cuales pueden causar problemas al perderles la pista a medida que el proyecto avanza.&lt;br /&gt;
&lt;br /&gt;
De otro modo si el objeto se lleva a memoria compartida y es posible leerlo y escribir sobre él, es mucho más sencillo este tratamiento, sólo es necesario saber tratarlo y conocer las limitaciones que pueda tener esta operativa.&lt;br /&gt;
&lt;br /&gt;
Otra ventaja que tienen los SHARED MEMORY OBJECTS es el tiempo de ejecución. A veces &amp;nbsp;la única forma de transmitir información de SAP de una transacción a otra es grabar los datos en la base de datos. Esto implica que es necesaria la actividad del usuario para que esta transmisión sea posible, &amp;nbsp;lo cual complica el procedimiento. Si hay un despiste, se pierde información y eso debería evitarse en lo posible.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX0iM8AJCVDHTGznyvf7NYNySlSya360wkZ3sH_3C0NVXvgXw83xsPKkr0M8t650siMOv7eC6xfdlWGNJUs4SaN0yNUvTnWRIRvNbx8Fr3kU5W_t1_dXBAi_khoMo7jdQQp85cXMtiMaF3/s1600/imagen2.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgX0iM8AJCVDHTGznyvf7NYNySlSya360wkZ3sH_3C0NVXvgXw83xsPKkr0M8t650siMOv7eC6xfdlWGNJUs4SaN0yNUvTnWRIRvNbx8Fr3kU5W_t1_dXBAi_khoMo7jdQQp85cXMtiMaF3/s1600/imagen2.jpg&quot; height=&quot;326&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Elaboramos un ejemplo sencillo donde dos programas necesiten compartir y actualizar un objeto en memoria.&lt;br /&gt;
&lt;br /&gt;
Por ejemplo, una pantalla de selección con una variable CHAR de longitud 2, el programa mostrará lo que metamos en esa variable. Al mismo tiempo esta variable actualiza un objeto con un atributo que también sea CHAR de longitud 2.&lt;br /&gt;
&lt;br /&gt;
Este objeto lo vamos a compartir a través del metodología de SHARED MEMORY OBJECTS.&lt;br /&gt;
A su vez hacemos otro programa que lea la memoria compartida y escriba el atributo del objeto compartido en pantalla.&lt;br /&gt;
&lt;br /&gt;
Lo iremos modificando y mostrando varias veces para demostrar que efectivamente podemos crear un flujo de datos a través de los dos programas unidos a través de la memoria compartida.&lt;br /&gt;
En primer lugar creamos una clase que va a contener los objetos a compartir y que se denominará ROOT. Tendrá dos características a &amp;nbsp;tener en cuenta.:&lt;br /&gt;
&lt;br /&gt;
1)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Su interfaz será &amp;nbsp;IF_SHM_BUILD_INSTANCE.&lt;br /&gt;
Esto le asigna por defecto un &amp;nbsp;método constructor llamado build&lt;br /&gt;
2)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;El pincho Shared Memory-Enabled debe estar marcado.&lt;br /&gt;
3)&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Esta clase tendrá los métodos que &amp;nbsp;leerán y modificaran datos.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURdSth47KUbQM7Q_keshBxlsdt5Bd5w0y6baREOuBF0zUF4O6f3EhL4uvSaFSyCHYym2cMxSJ0lliZaFEs05ZEQngLvOHQ89Yt5zl6BgRjHL4v0j4Jg3bNl8QN-MjPbf63bjoD9oNsPRQ/s1600/imagen8.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjURdSth47KUbQM7Q_keshBxlsdt5Bd5w0y6baREOuBF0zUF4O6f3EhL4uvSaFSyCHYym2cMxSJ0lliZaFEs05ZEQngLvOHQ89Yt5zl6BgRjHL4v0j4Jg3bNl8QN-MjPbf63bjoD9oNsPRQ/s1600/imagen8.jpg&quot; height=&quot;480&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;En el
ejemplo se implementan dos métodos, con variable de entrada y salida tipo char
de longitud 2, llamadas im_value y ex_value.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;El
método READ_DATA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;i&gt;method&amp;nbsp;READ_DATA.&lt;br /&gt;
&amp;nbsp;ex_value&amp;nbsp;=&amp;nbsp;value.&lt;br /&gt;
endmethod.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&amp;nbsp;Y el método SET_DATA&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;b&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;i&gt;METHOD&amp;nbsp;set_data.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;IF&amp;nbsp;im_value&amp;nbsp;IS&amp;nbsp;INITIAL&amp;nbsp;AND&amp;nbsp;value&amp;nbsp;IS&amp;nbsp;INITIAL.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;&#39;01&#39;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;ELSE.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;value&amp;nbsp;=&amp;nbsp;im_value.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;ENDIF.&lt;br /&gt;
&lt;br /&gt;
ENDMETHOD.&lt;o:p&gt;&lt;/o:p&gt;&lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;También
implementamos el método build&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;MsoNormal&quot;&gt;
&lt;i&gt;&lt;b&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;method&amp;nbsp;IF_SHM_BUILD_INSTANCE~BUILD.&lt;/span&gt;&lt;/b&gt;&lt;span lang=&quot;EN-US&quot;&gt;&lt;br /&gt;
&lt;b&gt;&amp;nbsp;&amp;nbsp;&lt;/b&gt;&lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;span lang=&quot;ES-TRAD&quot;&gt;&lt;i&gt;data:&amp;nbsp;lcl_test1&amp;nbsp;type&amp;nbsp;ref&amp;nbsp;to&amp;nbsp;ZCL_SMO_TEST1,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lcl_shma_test1&amp;nbsp;type&amp;nbsp;ref&amp;nbsp;to&amp;nbsp;ZSHMA_AREA_TEST1,&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lx_exception&amp;nbsp;type&amp;nbsp;ref&amp;nbsp;to&amp;nbsp;cx_root.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;try.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lcl_shma_test1&amp;nbsp;=&amp;nbsp;ZSHMA_AREA_TEST1=&amp;gt;attach_for_write(&amp;nbsp;).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;cx_shm_error&amp;nbsp;into&amp;nbsp;lx_exception.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RAISE&amp;nbsp;EXCEPTION&amp;nbsp;type&amp;nbsp;cx_shm_build_failed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXPORTING&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;previous&amp;nbsp;=&amp;nbsp;lx_exception.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;endtry.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;try.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CREATE&amp;nbsp;OBJECT&amp;nbsp;lcl_test1&amp;nbsp;area&amp;nbsp;handle&amp;nbsp;lcl_shma_test1.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lcl_shma_test1-&amp;gt;set_root(&amp;nbsp;lcl_test1&amp;nbsp;).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lcl_test1-&amp;gt;set_data(&amp;nbsp;).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;lcl_shma_test1-&amp;gt;detach_commit(&amp;nbsp;).&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch&amp;nbsp;cx_shm_error&amp;nbsp;into&amp;nbsp;lx_exception.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;RAISE&amp;nbsp;EXCEPTION&amp;nbsp;type&amp;nbsp;cx_shm_build_failed&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;EXPORTING&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;previous&amp;nbsp;=&amp;nbsp;lx_exception.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;endtry.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;&amp;nbsp;if&amp;nbsp;invocation_mode&amp;nbsp;=&amp;nbsp;cl_shm_area=&amp;gt;invocation_mode_auto_build.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CALL&amp;nbsp;FUNCTION&amp;nbsp;&#39;DB_COMMIT&#39;.&lt;br /&gt;
&amp;nbsp;&amp;nbsp;endif.&lt;br /&gt;
endmethod.&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
A través de la transacción SHMA creamos un área de memoria.&lt;br /&gt;
La clase raíz y la clase constructor será la clase root. En la pestaña “historial” se podrá ver quien creó y modificó el área.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiK3bhcmKQ85PzTPC7kcOkjkZ1AnBIJp29AqEE5tjdIeMwNNWRyvmFz4XyukqNz7ZMjI1m56I0udi3pKpjxLinJceURgrZrVIK_BMJzQADY53BaOr8zxDN_aGU0AMZdlF14TBO9UMcKLTe/s1600/imagen9.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhiK3bhcmKQ85PzTPC7kcOkjkZ1AnBIJp29AqEE5tjdIeMwNNWRyvmFz4XyukqNz7ZMjI1m56I0udi3pKpjxLinJceURgrZrVIK_BMJzQADY53BaOr8zxDN_aGU0AMZdlF14TBO9UMcKLTe/s1600/imagen9.jpg&quot; height=&quot;640&quot; width=&quot;585&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Ya creado esto sólo nos queda escribir código en el programa que enviará datos a memoria y escribir código en el programa que leerá el objeto compartido.&lt;br /&gt;
&lt;br /&gt;
En &amp;nbsp;la ayuda de SAP podemos leer lo siguiente.&lt;br /&gt;
Para el programa que escribe la información:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;DATA: my_handle TYPE REF TO cl_my_area,&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; my_data &amp;nbsp; TYPE REF TO cl_my_data.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;TRY.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle = cl_my_area=&amp;gt;attach_for_write( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; CREATE OBJECT my_data AREA HANDLE my_handle.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle-&amp;gt;set_root( my_data ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_data-&amp;gt;read_spfli( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle-&amp;gt;detach_commit( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;-&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; CATCH cx_shm_attach_error.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; ...&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;ENDTRY.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp;Y para el programa que lee la información:&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;DATA my_handle TYPE REF TO cl_my_area.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;TRY.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle = cl_my_area=&amp;gt;attach_for_read( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle-&amp;gt;root-&amp;gt;output_spfli( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; my_handle-&amp;gt;detach( ).&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; CATCH cx_shm_attach_error.&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; ...&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;&lt;b&gt;ENDTRY.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Teniendo en cuenta que la clase root en nuestro ejemplo se llama:&lt;br /&gt;
&lt;br /&gt;
ZCL_SMO_TEST1 y la clase asociada al área compartida, ZSHMA_AREA_TEST1.&lt;br /&gt;
&lt;br /&gt;
Creamos un report 1, en el cual introducimos una variable y la exportamos al atributo “value” del objeto compartido y mostramos por pantalla el valor de la variable introducida. El código es sencillo y es el siguiente.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;REPORT &amp;nbsp;zsmreport1.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;PARAMETERS: p_value TYPE c LENGTH 2.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;* Define the area and memory object references&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;DATA: lcl_data TYPE REF TO zcl_smo_test1,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lcl_area TYPE REF TO zshma_area_test1,&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; lv_exception TYPE REF TO cx_root.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;TRY.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; lcl_area = zshma_area_test1=&amp;gt;attach_for_write( ).&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; CREATE OBJECT lcl_data AREA HANDLE lcl_area.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; CALL METHOD lcl_area-&amp;gt;set_root&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; EXPORTING&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; root = lcl_data.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; CALL METHOD lcl_area-&amp;gt;root-&amp;gt;set_data(&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; EXPORTING&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; im_value = p_value ).&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; lcl_area-&amp;gt;detach_commit( ).&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; CATCH cx_shm_attach_error.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;ENDTRY.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;WRITE: &#39;El valor de entrada es &#39;, &amp;nbsp;p_value.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Creamos un report 2 en el cual leemos el atributo del objeto compartido y lo mostramos por pantalla. El código es el siguiente.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;REPORT &amp;nbsp;zsmreport2.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;DATA: gv_value TYPE c LENGTH 2.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;* Define the area and memory object references&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;DATA: lcl_area TYPE REF TO zshma_area_test1.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;TRY.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;lcl_area = zshma_area_test1=&amp;gt;attach_for_read( ).&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp;call method lcl_area-&amp;gt;root-&amp;gt;read_data&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;IMPORTING ex_value = &amp;nbsp;gv_value.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp; lcl_area-&amp;gt;detach( ).&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;&amp;nbsp; CATCH cx_shm_attach_error.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;ENDTRY.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
&lt;b&gt;&lt;i&gt;WRITE: &#39;El valor en memoria es &#39;, &amp;nbsp;gv_value.&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;
Probando los programas se ve que efectivamente se comparte una variable a través del atributo de la clase ROOT.&lt;br /&gt;
&lt;br /&gt;
Este es un ejemplo sencillo aunque los SHARED MEMORY OBJECTS, muestran toda su potencia cuando compartimos objetos entre programas, caso que puede darse fácilmente en un cliente real.&lt;br /&gt;
Una última cosa es cómo visualizar el valor del objeto compartido. Vamos a la transacción SHMA.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Pulsamos en el icóno “Monitor”&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEmYep-Y00SNVcq99cPGuUKT0bvoUkZ_QzJis86AFhUnNJFZZDrLZkGh1SAPKTHJiKTo6_KjoCYejXnnDCuc8phhT2OAAx2q6BEeiiYQc6cuwE9Nmm4JSgrRkhvieOl3FzVCtn_EEM50N9/s1600/imagen3.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiEmYep-Y00SNVcq99cPGuUKT0bvoUkZ_QzJis86AFhUnNJFZZDrLZkGh1SAPKTHJiKTo6_KjoCYejXnnDCuc8phhT2OAAx2q6BEeiiYQc6cuwE9Nmm4JSgrRkhvieOl3FzVCtn_EEM50N9/s1600/imagen3.jpg&quot; height=&quot;422&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Y pulsamos en el área que nos interese con doble click.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-ZP8V66bR1zi7B4iVJTYdBDLZPZnWC1JrvVOSnymtgKJ7hao31_4cJ6lXt8IXGgMpdZAIF8Kt4cixWNlow5yNc-n93mJDlyg5IvlYgH14vP03kryzXF-Cmk-ZDdBZYCRyCafThJVw78O/s1600/imagen4.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjH-ZP8V66bR1zi7B4iVJTYdBDLZPZnWC1JrvVOSnymtgKJ7hao31_4cJ6lXt8IXGgMpdZAIF8Kt4cixWNlow5yNc-n93mJDlyg5IvlYgH14vP03kryzXF-Cmk-ZDdBZYCRyCafThJVw78O/s1600/imagen4.jpg&quot; height=&quot;216&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Seleccionamos la instancia que queramos conocer, pulsamos el icono leer versión activa&lt;br /&gt;
&amp;nbsp;y se mostrará en un modo nuevo los datos a visualizar.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtu6bJNCMyCKk2INUP3oODOhOGDew7I2HKL4vDct5Gs7HtcYogTXehuS4GDVkf_kG0QMvG4U-eSBUnXfJEL-aOy0dyWmUTDDtPKl28viyN6aHZ9ADDHTNCjyVxbSYIF4SHc4rkYVo4aMpN/s1600/imagen5.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhtu6bJNCMyCKk2INUP3oODOhOGDew7I2HKL4vDct5Gs7HtcYogTXehuS4GDVkf_kG0QMvG4U-eSBUnXfJEL-aOy0dyWmUTDDtPKl28viyN6aHZ9ADDHTNCjyVxbSYIF4SHc4rkYVo4aMpN/s1600/imagen5.jpg&quot; height=&quot;203&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
Pulsamos:&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eqcKyjSsX1ZuWPh8B0GwbrjlTsZam6kP9-rbtxsTCapGd1ktivQmM_IOke41_l3iBAVUHao1sS2EN-Wdt4mEfvatZZb7BrV1GQH_zt_up9c3KTY0S4chdd2xmGeZ6lYx3vrlvNvy-K5G/s1600/imagen7.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj_eqcKyjSsX1ZuWPh8B0GwbrjlTsZam6kP9-rbtxsTCapGd1ktivQmM_IOke41_l3iBAVUHao1sS2EN-Wdt4mEfvatZZb7BrV1GQH_zt_up9c3KTY0S4chdd2xmGeZ6lYx3vrlvNvy-K5G/s1600/imagen7.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Así podemos comprobar los valores que se comparten sin necesidad de debugging.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbxPXsK_2vjoBBvX3GRcdAvMePOrUhlwm83GGFYgPkHfHrUMoEUVjhGM_vWLTdN1C7i55Y8_wvxCKiB7_7JtOIfNF429S5c5Zmt7EFWaBxDOwwA8js7Wy2hwN4Iw63Yy7Im2JsjmNzARo/s1600/imagen6.jpg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjSbxPXsK_2vjoBBvX3GRcdAvMePOrUhlwm83GGFYgPkHfHrUMoEUVjhGM_vWLTdN1C7i55Y8_wvxCKiB7_7JtOIfNF429S5c5Zmt7EFWaBxDOwwA8js7Wy2hwN4Iw63Yy7Im2JsjmNzARo/s1600/imagen6.jpg&quot; height=&quot;147&quot; width=&quot;640&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
Más ayuda en :&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://help.sap.com/saphelp_nw70/helpdata/en/c5/85634e53d422409f0975aa9a551297/frameset.htm&quot;&gt;http://help.sap.com/saphelp_nw70/helpdata/en/c5/85634e53d422409f0975aa9a551297/frameset.htm&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/4689893928432880463/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2014/01/ejemplo-de-shared-memory-objects.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/4689893928432880463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/4689893928432880463'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2014/01/ejemplo-de-shared-memory-objects.html' title='Ejemplo de SHARED MEMORY OBJECTS'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgVP9E2cmiMTtRP1RNuwAwobunZxlf3kr1h5UOZd0lPMUjCrkJUVHgUQa0s-pV9K0ym71qI62xwPEwXIfhn44giRiFHlc46MYlk9p6YxA2z7Xdxj9e5zj68T5kCovmYvnLx7MP5tONPIlJx/s72-c/imagen1.jpg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-773777254531089232</id><published>2013-03-27T02:01:00.002-07:00</published><updated>2013-03-27T02:01:23.157-07:00</updated><title type='text'>Generar Datos en el Modelo de Vuelo</title><content type='html'>Casi todos los que hemos tenido acceso a una formación de SAP conocemos el modelo de vuelo para el training...que es el que en los manuales de SAP propone para ejercitarse con ABAP.&lt;br /&gt;
&lt;br /&gt;
Pero muchas veces nos encontramos con sistemas donde esas tablas no tienen ningún dato, y no podemos hacer nada interesante..o que muestre algún resultado.&lt;br /&gt;
&lt;br /&gt;
Para ello existe el report estandard SAPBC_DATA_GENERATOR con el cual podremos generar datos con los que probar nuestros programas.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/773777254531089232/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2013/03/generar-datos-en-el-modelo-de-vuelo.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/773777254531089232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/773777254531089232'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2013/03/generar-datos-en-el-modelo-de-vuelo.html' title='Generar Datos en el Modelo de Vuelo'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-7254897137856683448</id><published>2012-06-22T03:09:00.000-07:00</published><updated>2012-07-18T01:10:42.667-07:00</updated><title type='text'>Validaciones SE16N con &amp;SAP_EDIT</title><content type='html'>&lt;br /&gt;
&lt;span style=&quot;background-color: white;&quot;&gt;Casi todo el mundo que está trabajando en SAP &amp;nbsp;tiene, tarde o temprano, que modificar datos en las tablas del diccionario, del estandard o tablas creadas a medida. Una manera de hacerlo es usar la sentencia &amp;amp;SAP_EDIT antes del display de datos en la SE16N. No obstante, SAP ha notado este uso por parte de consultores y usuarios y ha diseñado notas que corrigen esta funcionalidad por considerarlo un BUG en la seguridad de los datos del sistema en entornos Productivos. Entiendo el sentido de esta&amp;nbsp;preocupación&amp;nbsp;y la solución aportada, sin embargo, siempre puede ocurrir que hay que modificar un dato debido a que otro proceso, o bien un usuario o un programa ha generado un dato erróneo y no es posible una marcha atrás. Por ello coloco el procedimiento para saltarse las validaciones implementadas, en casos puntuales.&amp;nbsp;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
1.) Activación de SAP_EDIT en la SE16N.&lt;br /&gt;
&lt;br /&gt;
Breakpoint en el programa LSE16NF10, rutina EXECUTE.&lt;br /&gt;
Cuando llama a la función SE16N_INTERFACE hay que cambiar las variables GD-EDIT a X y la GD-SAPEDIT a X.&lt;br /&gt;
&lt;br /&gt;
Con esto simulamos el &amp;amp;SAP_EDIT.&lt;br /&gt;
&lt;br /&gt;
2.) Evitar el chequeo de verificación&lt;br /&gt;
&lt;br /&gt;
Breakpoint en programa LSDFCF02, rutina FORKEY_CHECK Linea if has_forkey is initial&lt;br /&gt;
&lt;br /&gt;
Cuando se grabe en la SE16N y se pare en este punto hay que dar a continuar hasta que la variable DFIES_WA-FIELDNAME tenga el nombre de los campos a chequear de la tabla que queremos modificar. Hay que limpiar la variable has_forkey para todos los campos que se chequean, si no se hace así, no se graba la modificación.&lt;br /&gt;
&lt;br /&gt;
&quot;Afortunadamente&quot; esto no se hace fácilmente por el cual siempre un programador experimentado en debug es necesario para realizar este proceso. De todos modos, apelo a vuestra responsabilidad usando esta información.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/7254897137856683448/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2012/06/validaciones-se16n-con.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/7254897137856683448'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/7254897137856683448'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2012/06/validaciones-se16n-con.html' title='Validaciones SE16N con &amp;SAP_EDIT'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-5766625733017347810</id><published>2012-04-02T02:22:00.002-07:00</published><updated>2012-04-19T02:33:01.461-07:00</updated><title type='text'>Crear Listados ALV en SAP</title><content type='html'>Adjunto documentación interesante para crear ALV GRID &amp;nbsp;en SAP. Listados dinámicos y configurables.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://abapinho.com/wp-content/uploads/2010/05/ALV_Grid_Control_2003.pdf&quot;&gt;http://abapinho.com/wp-content/uploads/2010/05/ALV_Grid_Control_2003.pdf&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://help.sap.com/printdocu/core/print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf&quot;&gt;http://help.sap.com/printdocu/core/print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf&lt;/a&gt;
&lt;br /&gt;
&lt;br /&gt;
No me voy a extender mucho en este post, más bien solo hacer una recomendación. Sería bueno hacer una función a la cual solo pasando los datos ya saque un ALV modelo. Ahorra mucho tiempo en los proyectos que normalmente, precisan de muchos listados.</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/5766625733017347810/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2012/04/adjunto-documentacion-interesante-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/5766625733017347810'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/5766625733017347810'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2012/04/adjunto-documentacion-interesante-para.html' title='Crear Listados ALV en SAP'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-4719583340383028464</id><published>2012-01-16T06:40:00.000-08:00</published><updated>2012-01-23T01:53:41.389-08:00</updated><title type='text'>Cambiar Documentos de FI sin Batch Input</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Una forma de actualizar los documentos de FI de modo automático suele ser la llamada por código a la misma transacción que utiliza el usuario para cambiar los documentos, no obstante haciendo eso también se suele estar sujeto a todas las validaciones a las que las transacciones son sometidas para evitar que los usuarios introduzcan&amp;nbsp;datos en el sistema que no conviene por las razones que sean. &lt;br /&gt;
&lt;br /&gt;
Por eso suele ser una buena idea hacer uso de una función estandard llamada CHANGE_DOCUMENT, con la cual, sólo cargando las tablas de forma adecuada, se pueden cambiar los valores de las tablas sin necesidad de estar sometidos a las validaciones y al consiguiente manejo de errores que siempre suele ser engorroso.&lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSR7abxFonrad_pIG6oPRPNLtj3ghjsfF4Doy7Wo3T_M1iJL2am_ySaM1-WGxrKacRioqoIQR-4dkmIH5A3kelTuT93Jp3P2i6tw5xNtbOadUyTCiTy5Zmmn5Meo825jWlp_r5EE_wX6Ip/s1600/Stop.jpeg&quot; imageanchor=&quot;1&quot; style=&quot;margin-left: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;319&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSR7abxFonrad_pIG6oPRPNLtj3ghjsfF4Doy7Wo3T_M1iJL2am_ySaM1-WGxrKacRioqoIQR-4dkmIH5A3kelTuT93Jp3P2i6tw5xNtbOadUyTCiTy5Zmmn5Meo825jWlp_r5EE_wX6Ip/s320/Stop.jpeg&quot; width=&quot;320&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/4719583340383028464/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2012/01/cambiar-documentos-de-fi-sin-batch.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/4719583340383028464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/4719583340383028464'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2012/01/cambiar-documentos-de-fi-sin-batch.html' title='Cambiar Documentos de FI sin Batch Input'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhSR7abxFonrad_pIG6oPRPNLtj3ghjsfF4Doy7Wo3T_M1iJL2am_ySaM1-WGxrKacRioqoIQR-4dkmIH5A3kelTuT93Jp3P2i6tw5xNtbOadUyTCiTy5Zmmn5Meo825jWlp_r5EE_wX6Ip/s72-c/Stop.jpeg" height="72" width="72"/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-6251130269856177281</id><published>2011-11-30T01:21:00.001-08:00</published><updated>2011-11-30T03:22:22.808-08:00</updated><title type='text'>Programa que Regenera las sustituciones y validaciones en SAP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Frencuentemente toca añadir validaciones y sustituciones en el sistema SAP. A veces, hay que usar las user-exits que el estandard propone cómo ampliación y las cuales dan trabajo a nosotros, los programadores...&lt;br /&gt;
&lt;br /&gt;
No obstante, una vez creada la nueva rutina hay que pasar un programa que regenere el Programa Estandard. &lt;br /&gt;
&lt;br /&gt;
Este Report es: &lt;br /&gt;
&lt;br /&gt;
RGUGBR00&lt;br /&gt;
&lt;br /&gt;
En el cual hay diversas opciones. &lt;br /&gt;
&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1hmXN5EYP5jHofhi6HtTw0RVVTtdSBFFaDATTV512iFG1t2VfI9xdd1uL7MGjANxVAMzTtBZu4EpCtK9pppF-coDWIBmIFrOno4xxe5w48yy5arbCwEgQIfzP19ZkyCNSNZIQumz50-r7/s1600/report.JPG&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; cssfloat: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; dda=&quot;true&quot; height=&quot;258&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1hmXN5EYP5jHofhi6HtTw0RVVTtdSBFFaDATTV512iFG1t2VfI9xdd1uL7MGjANxVAMzTtBZu4EpCtK9pppF-coDWIBmIFrOno4xxe5w48yy5arbCwEgQIfzP19ZkyCNSNZIQumz50-r7/s400/report.JPG&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Es cuestión de ir probando, pero al final en&amp;nbsp;los programas&amp;nbsp;Standard:&lt;br /&gt;
&lt;br /&gt;
GBTC2FIB para sustituciones y GBTC2FIF para validaciones, ha de haber una referencia de sustitución a nuestra nueva rutina generada por este programa. &lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/6251130269856177281/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/11/programa-que-regenera-las-sustituciones.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/6251130269856177281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/6251130269856177281'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/11/programa-que-regenera-las-sustituciones.html' title='Programa que Regenera las sustituciones y validaciones en SAP'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh1hmXN5EYP5jHofhi6HtTw0RVVTtdSBFFaDATTV512iFG1t2VfI9xdd1uL7MGjANxVAMzTtBZu4EpCtK9pppF-coDWIBmIFrOno4xxe5w48yy5arbCwEgQIfzP19ZkyCNSNZIQumz50-r7/s72-c/report.JPG" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-3857355071171981726</id><published>2011-06-09T00:39:00.001-07:00</published><updated>2011-06-09T00:39:33.860-07:00</updated><title type='text'>Rastreo de SET en SAP FI</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Para observar en que validación - sustitución un set ha sido usado, viene excelente el manejo del siguiente Report Standard &lt;br /&gt;
&lt;br /&gt;
RGUSTU01&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/3857355071171981726/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/06/rastreo-de-set-en-sap-fi.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3857355071171981726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3857355071171981726'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/06/rastreo-de-set-en-sap-fi.html' title='Rastreo de SET en SAP FI'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-3519819470441111484</id><published>2011-06-09T00:27:00.000-07:00</published><updated>2011-06-09T00:27:32.837-07:00</updated><title type='text'>Rastreo de Literales y HARDCODE</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Hay una transacción estupenda para rastrear trozos de literales en código...recomendable para evitar buscar uno a uno en los programas...&lt;br /&gt;
&lt;br /&gt;
EWK1&lt;br /&gt;
&lt;br /&gt;
Por otro lado existe un programa ABAP estandard que ayuda a buscar STRING en código. &lt;br /&gt;
Este es:&lt;br /&gt;
&lt;br /&gt;
RS_ABAP_SOURCE_SCAN&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/3519819470441111484/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/06/rastreo-de-literales-y-hardcode.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3519819470441111484'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3519819470441111484'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/06/rastreo-de-literales-y-hardcode.html' title='Rastreo de Literales y HARDCODE'/><author><name>Javier Gómez</name><uri>http://www.blogger.com/profile/09692972639443445442</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-3640225346138805121</id><published>2011-04-07T06:42:00.000-07:00</published><updated>2011-04-07T06:53:40.841-07:00</updated><title type='text'>SDN</title><content type='html'>Cualquiera que se inicie en ABAP debe conocer el SDN. &lt;br /&gt;
&lt;br /&gt;
&lt;a 
href=&quot;http://www.sdn.sap.com/irj/sdn/index&quot;&gt;http://www.sdn.sap.com/irj/sdn/index&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
En esta página se puede consultar con expertos, leer artículos y buscar información sobre novedades en el mundo SAP. Muy recomendable tanto al experto cómo al que empieza.</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/3640225346138805121/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/04/sdn.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3640225346138805121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/3640225346138805121'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/04/sdn.html' title='SDN'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-8300902769209244307</id><published>2011-03-30T00:41:00.000-07:00</published><updated>2011-05-02T10:12:05.492-07:00</updated><title type='text'>Rendimiento SAP</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;Varias cosas se pueden decir al respecto ... consejos fundamentales: &lt;br /&gt;
&lt;br /&gt;
&lt;ol&gt;&lt;li&gt;Si la tabla no es cluster, cómo la BSEG, crear un índice puede mejorar el rendimiento. Para las cluster no se puede crear índice, así lo indica el propio SAP. &lt;/li&gt;
&lt;li&gt;Evitar accesos a la base de datos dentro de loop ó do, el rendimiento empeora mientras más registros haya. Sustituir por &quot;READ TABLE itab&quot; ó &quot;LOOP itab INTO wa WHERE ...&quot;. &lt;/li&gt;
&lt;li&gt;Evitar en lo posible loops anidados. &lt;/li&gt;
&lt;li&gt;Usar field-symbols. &lt;/li&gt;
&lt;li&gt;Si hay que usar un buffer de muchos registros, crear nuevas tablas propias de cliente con un índice a medida, y un menor número de registros que permita bufferizar con facilidad.&lt;/li&gt;
&lt;/ol&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/8300902769209244307/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/03/rendimiento-sap.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/8300902769209244307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/8300902769209244307'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/03/rendimiento-sap.html' title='Rendimiento SAP'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-7866871487032912355</id><published>2011-03-18T04:11:00.000-07:00</published><updated>2011-03-18T04:15:22.787-07:00</updated><title type='text'>Completar o quitar ceros de una variable</title><content type='html'>Estas funciones son básicas y están en muchas partes..pero cómo siempre las estoy buscando también las coloco aqui ...&lt;br /&gt;&lt;br /&gt;* Función que saca los ceros a la izquierda de una variable&lt;br /&gt;&lt;br /&gt;CALL FUNCTION &lt;strong&gt;&#39;CONVERSION_EXIT_ALPHA_OUTPUT&#39;&lt;br /&gt;&lt;/strong&gt;EXPORTING&lt;br /&gt;INPUT = GV_VARIABLE&lt;br /&gt;IMPORTING&lt;br /&gt;OUTPUT = GV_VARIABLE.&lt;br /&gt;&lt;br /&gt;* Función que completa con ceros a la izquierda de una variable&lt;br /&gt;&lt;br /&gt;CALL FUNCTION &#39;&lt;strong&gt;CONVERSION_EXIT_ALPHA_INPUT&#39;&lt;br /&gt;&lt;/strong&gt;EXPORTING&lt;br /&gt;INPUT = GV_VARIABLE&lt;br /&gt;IMPORTING&lt;br /&gt;OUTPUT = GV_VARIABLE.</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/7866871487032912355/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2011/03/completar-o-quitar-ceros-de-una.html#comment-form' title='1 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/7866871487032912355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/7866871487032912355'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2011/03/completar-o-quitar-ceros-de-una.html' title='Completar o quitar ceros de una variable'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-453333401424993204</id><published>2010-12-07T11:39:00.000-08:00</published><updated>2011-12-06T03:41:04.026-08:00</updated><title type='text'>Instalar SAP en tu ordenador</title><content type='html'>&lt;div dir=&quot;ltr&quot; style=&quot;text-align: left;&quot; trbidi=&quot;on&quot;&gt;
Si deseas tener una pequeña muestra de lo que es SAP en tu ordenador, te recomiendo registrarte en la SDN e instalar el MiniSAP, ó también conocido cómo SAP Netweaver Main Release. Es una versión sin módulo funcional, puro ABAP, eso sí, puedes trabajar con WebDynpro, Idocs, y por supuesto, el abap más elemental y básico, aparte de ABAP Objects.&lt;br /&gt;
&lt;br /&gt;
Te dejo la dirección para las descargas del SDN,&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.sdn.sap.com/irj/scn/software-downloads&quot;&gt;http://www.sdn.sap.com/irj/scn/software-downloads&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
También te recomiendo paciencia pues instalarlo requiere tiempo.&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/453333401424993204/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2010/12/instalar-sap-en-tu-ordenador.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/453333401424993204'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/453333401424993204'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2010/12/instalar-sap-en-tu-ordenador.html' title='Instalar SAP en tu ordenador'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7578675365385818367.post-5866875469946551317</id><published>2009-11-12T23:45:00.000-08:00</published><updated>2009-11-14T04:05:07.638-08:00</updated><title type='text'>Recursos Programación ABAP, etc</title><content type='html'>Un amigo me comentó la posibilidad de darse a conocer mediante blog y en ello estoy ahora mismo. LLevo ya dos años y medio trabajando en consultoría, he tocado los módulos FI, MM, SD, BW y CRM de SAP. He programado proceduralmente, orientado a objetos, y tocado variedad de formas de ampliación del programa Estandard. Me gusta Sap y el ABAP, aunque aún me queda mucho por conocer. También me gustaría aprender sobre otros lenguajes de programación y estar abiertos a colaboración profesional en esos ámbitos, pues nunca se sabe por donde el mercado puede resultar más convenientes a los intereses personales.</content><link rel='replies' type='application/atom+xml' href='http://javierabaper.blogspot.com/feeds/5866875469946551317/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://javierabaper.blogspot.com/2009/11/recursos-abap.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/5866875469946551317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7578675365385818367/posts/default/5866875469946551317'/><link rel='alternate' type='text/html' href='http://javierabaper.blogspot.com/2009/11/recursos-abap.html' title='Recursos Programación ABAP, etc'/><author><name>Unknown</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>