MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   GETWA_NOT_ASSIGNED en exit (foro/showthread.php?t=73398)

dmgman 02/02/15 15:52:43

GETWA_NOT_ASSIGNED en exit
 
Hola a todos.
tengo declarada un field symbol en una exit por la que sap pasa cuando vamos a realizar cualquier tipo de contabilizacion:

FIELD-SYMBOLS <fs> TYPE table.
DATA: ld_data TYPE dd02l-tabname VALUE '(SAPLRWCL)T_ACCDA[]'.
ASSIGN (ld_data) TO <fs>.

Esto funciona perfectamente cuando la contabilizacion se genera desde Activos fijos dado que pasa por este grupo de funciones.
El DUMP me sale cuando hago la sentencia ASSIGN y no viene porai, viene desde otro tipo de contabilizacion y entiendo que en ese caso en memoria no esta este valor.

¿Como puedo controlarlo para que no me salte este DUMP?
¿Como puedo saber cual es el contenido de informacion que hay en memoria?

Gracias de antemano.

Ripper87 02/02/15 17:08:08

A ver si entendí bien.. Si la tabla T_ACCDA no existe en memoria para ese momento, el field symbol simplente quedará nulo.

Deberias justo despues del ASSIGN agregar un CHECK o un IF para validar que se haya hecho la asignación, por ejemplo:

CHECK <fs> IS ASSIGNED.

o

IF <fs> IS ASSIGNED.

ENDIF.

dmgman 02/02/15 17:32:59

Si eso habia pensado el problema es que el DUMP salta justo en la linea de codigo del ASSIGN, con lo cual la idea seria validar si existe un valor en memoria de esa tabla antes de hacer el ASSIGN.

¿No se puede comprobar de ninguna manera? ¿Hay alguna forma de ver que tablas se manejan en memoria?

Ripper87 02/02/15 18:26:11

Pero es que si no existe, no deberia dar DUMP

Puedes intentarlo con lo que te dije a ver?

Yo hice ahorita una prueba sencilla y no me dio DUMP...solo quedo nulo el field symbol y si intento accederlo alli si da DUMP

dmgman 02/02/15 19:12:07

Acabo de hacerme un Z sencillo, y como tu dices en el deja el field symbol con valor NULL y no da el error durante la sentencia del ASSIGN.

En cambio dentro de la EXIT ("EXIT_SAPLFMR4_002") que he implementado me pasa justo eso, que da el dump cuando hago el ASSIGN, siempre que haga referencia a una tabla que no exista en memoria.

Estaba pensando en una solución que me podría valer... en el debug antiguo hay una opcion para ver las Llamadas, con lo cual hay tengo los programas que se estan ejecutando y sabria si ha pasado o no por este programa.
Estos datos de llamadas se encuentran en la estructura de ABDBG, pero en tiempo de ejecución solo veo los datos del ultimo de los registros.. si pudiera acceder a toda la tabla.

:confused:

dmgman 10/02/15 05:04:16

Para otras personas que le pase al final lo he solucionado verificando si el programa al que llamo para recuperar la tabla de la memoria ha sido ejecutado con anterioridad recuperando la lista de programas en ejecucion que hay en la pestaña de llamadas o pila de cola.

Esto lo hago con esta funcion:
* Compruebo si el proceso de ejecucion viene desde activos
CALL FUNCTION 'SYSTEM_CALLSTACK'
EXPORTING
max_level = 0
IMPORTING
callstack = ti_callstack
et_callstack = ti_et_callstack.


Husos Horarios son GMT. La hora en este momento es 20:39:37.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web