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.

sábado, 2 de abril de 2011

ALV por Objeto

El uso de clases para mostrar ALVs facilita el trabajo a realizar para mostrar la información por pantalla.

Este es un pequeño tutorial de de como hacer practicamente todo con respecto a ALVs con objeto.

Gracias a Javier por este documento
 
Existen diferentes clases que trabajan con ALVs pero la más facil de utilizar y con la que se tiene que escribir la menor cantidad de codigo es la CL_SALV_TABLE esta clase permite crear un ALV con tan solo 2 llamadas a metodos de la clase.

DATA: go_alv TYPE REF TO cl_salv_table,
gt_alv type table of RKPF.

TRY.
CALL METHOD cl_salv_table=>factory
* EXPORTING
* list_display = IF_SALV_C_BOOL_SAP=>FALSE
* r_container =
* container_name =
IMPORTING
r_salv_table = go_alv
CHANGING
t_table = gt_alv
.
CATCH cx_salv_msg .
ENDTRY.

*-- Este metodo estatico permite crear un objeto para el ALV con la estructura que tenga la tabla [gt_alv].

Para desplegar el ALV se utiliza el metodo

go_alv->display( ).

ABAP SAP

A partir de ahora vamos a cambiar el sentido del blog. Vamos a hablar de ABAP, el lenguaje de programación de SAP.