martes, 1 de noviembre de 2011

Utilización de < Field-Symbols >

Los FIELD-SYMBOLS son punteros en ABAP. Estos pueden estar creados con un estructura definida o con un tipo genérico para que dinamicamente tome una estructura. Esto es bastante útil si deseas darle algún tipo de dinamismo a un REPORT.

Si se asigna una variable con una estructura definida a un FIELD-SYMBOL dicha variable se modificara inmediatamente se modifique el FIELD-SYMBOL. Por esto hay que tener cuidado al momento de limpiar los FS y es mejor desasignar el FS que hacerle un clear.

Los signos de " &lt; " y " &gt; " van sin espacios alrededor del nombre de la variable.


Declaración:
FIELD-SYMBOLS: &lt; fs &gt;.


FIELD-SYMBOLS &lt; fs1 &gt; TYPE ANY. 

FIELD-SYMBOLS &lt; fs2 &gt; TYPE ANY.













p_idx = 1.
 

ASSIGN COMPONENT p_idx OF STRUCTURE P0002 TO &lt; fs1 &gt; .
   IF sy-subrc EQ 0.
      ASSIGN COMPONENT p_idx OF STRUCTURE P0001 TO &lt; fs2 &gt;.
         IF sy-subrc EQ 0.
            CONDENSE &lt; fs1 &gt;.
            MOVE &lt; fs1 &gt; TO &lt; fs2 &gt; .
            UNASSIGN: &lt; fs1 &gt; ,   &lt; fs2 &gt;.
         ENDIF.
     ENDIF.


Este es un pequeño ejemplo de como utilizar los field-symbols. Este mismo caso se puede hacer mas complejo si definimos P0002 como un tabla dinámica que su estructura se determina en medio de la ejecución del REPORT.

Info

FastTrack a los BI
http://wiki.sdn.sap.com/wiki/display/ABAP/Batch+Input+FAQ

SAP Mensajes NAST - Log de errores

El log de errores de los mensajes lanzados por la NAST se encuentran en la tabla CMFP...
Esta tabla es muy útil porque permite agrupar los errores presentados en los mensajes que se generan en los pedidos de compra, solicitudes de pedido, entradas de mercancías, etc.

Se ha realizado un desarrollo a medida que al momento de realizar una entrada de mercancia para determinados materiales se crea y se da de alta un activo fijo para cada uno de los materiales que se han cargado en el sistema. Esto se realiza a traves de un mensaje en la MIGO que lanza un job en fondo, si este presenta algun error se crea un juego de datos y se dejan los datos sin procesar en la SM35 para ser procesados despues de analizar el error presentado. Al acumularse gran cantidad de JD sin procesar se queria saber cual era el problema mas comun, despues de un par de horas debuging en el standar encontré que la tabla que almacena los errores presentados en los mensajes es la CMFP. Dicha tabla contiene un codigo de identificación dentro de los campos claves que coincide con un campo de la tabla NAST.