#1
|
|||
|
|||
¿Cómo pasar una tabla en un perform? Me da error
Mi form es el siguiente
PERFORM p_actualizar_clase using d_clase tabla. FORM p_actualizar_clase using d_clase tabla. ....... ....... ENDFORM. El error que me da es el siguiente: "TABLA" is neither specified under "TABLES"nor defined as an internal table. La tabla esta declarada vale? Supongo que falta algo al pasar la tabla pero no lo se. Espero que podais ayudarme. Gracias |
#2
|
|||
|
|||
Este tipo de declaracion utilizo para pasar tablas por parametros espero te sirva.
TYPES: BEGIN OF ty_equnr, equnr TYPE equi-equnr, END OF ty_equnr. TYPES: tty_equnr TYPE STANDARD TABLE OF ty_equnr. DATA gt_equnr TYPE tty_equnr. PERFORM obtener_equipos USING gt_equnr[] FORM obtener_equipos USING p_gt_equnr TYPE tty_equnr. .... .... ENDFORM. |
#3
|
|||
|
|||
Saludos BEGO86,
Bueno primero que todo los llamados a subrutinas "PERFORM" tienen 3 formas para ser usados por el programador de acuerdo a sus necesidades y son: 1- TABLES 2- USING 3- CHANGING TABLES: Cuando invocas el parametro TABLES le estas diciendo al PERFORM que en ese parametro vas a enviar o pasar una estructura o tabla interna o la vas a recibir ENTRADA/SALIDA. USING: Cuando invocas el parametro USING, le vas a decir al PERFORM que vas a pasar parametros, para ser tratados dentro del FORM. CHANGING: Cuando usas este parametro le vas a decir a PERFORM, que de acuerdo a los datos que le has pasado a traves de TABLES y USING vas a realizar un proceso y el resultado de ese proceso lo vas a devolver en los parametros que tu coloques en la sentencia "CHANGING", te aclaro que si tu resultado es la salida de otra tabla interna lo puedes hacer en la definición de TABLES. Para no alargarme te mando una muestra de ejemplo: 1- En el TOP declaro mi tabla interna DATA: BEGIN OF it_zproce OCCURS 0. INCLUDE STRUCTURE zproce. DATA: END OF it_zproce. * Hago un llamado para Obtener el tipo de proceso, la idea es que la tabla interna it_zproce, entra vacia y cuando sale del PERFORM sale llena por que en el parametro USING tengo un parametro "entrada" que es una estructura, y este contiene la llave para hacer un select a la tabla de procesos. Entonces: TABLES it_zproce: Tabla interna que entra vacia y sale llena. USING entrada: Es una estructura que contiene los datos para leer la tabla zproce, y llenar la tabla interna it_zproce. CHANGING codigo_error texto_error status_bloqueo w_result: Como puedes ver son parametros de retorno que me informan como le fué al proceso dentro del FORM. PERFORM obtener_tipo_proceso TABLES it_zproce USING entrada CHANGING codigo_error texto_error status_bloqueo w_result. Asi debe quedar el form por dentro: FORM obtener_tipo_proceso TABLES p_it_zproce STRUCTURE it_zproce USING p_entrada LIKE zparam_mf CHANGING p_codigo_error p_texto_error p_status_bloqueo p_result. ........ Codigo del proceso etc etc etc. ... ... ENDFORM. Espero haberte ayudado... Suerte ACHA |
#4
|
||||
|
||||
Hola ... si quieres pasar una tabla en un perform pero que sea una tabla interna con campos que tu has creado en tu programa (mas del 80% d casos son ese) puedes hacerlo asi:
Espero te ayude, un saludo !!
__________________
David Carballido Córdova |
#5
|
|||
|
|||
types: begin of ty_tabla
... end of ty_tabla. data: it_tabla type standard table of ty_tabla, wa_tabla type ty_tabla. .... perform chequeos tables it_tabla. .... form chequeos tables pt_tabla structure wa_tabla. Eso no falla. Y ya luego si quieres añadir más parámetros con USING recuerda que TABLES va siempre antes. Saludos |
#6
|
|||
|
|||
EEEyyy gracias a todossssss que de respuestassss.
GRACIASSSs |
Herramientas | Buscar en Tema |
Desplegado | |
|
|