|
#1
|
||||
|
||||
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.
__________________
Carpe Diem !! |
#2
|
|||
|
|||
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. |
#3
|
||||
|
||||
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?
__________________
Carpe Diem !! |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
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.
__________________
Carpe Diem !! |
#6
|
||||
|
||||
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.
__________________
Carpe Diem !! |
Herramientas | Buscar en Tema |
Desplegado | |
|
|