#1
|
||||
|
||||
Funcion para introducir datos en tabla
Hola:
Alguien conoce alguna función para manejar dinamicamente datos en una tabla de base de datos? es decir, para poder actualizar, modificar, introducir, o borrar datos de una tabla A ser posible que sea de RFC. Muchas gracias. Úlima edición por ppchico fecha: 11/09/07 a las 15:59:54. |
#2
|
|||
|
|||
hola q tal, q sepa no hay ninguna funcion para eso, deberas de crearla.
utilizando tablas dinamicas. pero si existe una funcion para visualizar cualquier tabla se llama RFC_READ_TABLE. si deseas tengo una RFC que hice hace tiempo y actualiza ,inserta e elimina registro de n tablas. FUNCTION Z_RFC_MANT_TABLAS_WEB. *"--------------------------------------------------------------------- *"*"Interfase local *" TABLES *" TIMANTTABLA STRUCTURE ZEBMANTTABLA *" EMENSA STRUCTURE T100 *" EXCEPTIONS *" NOT_AUTHORIZED *" TABLE_NOT_AVAILABLE *" TABLE_WITHOUT_DATA *" TABLE_PARAMETRO_VACIA *"---------------------------------------------------------------------- *&---------------------------------------------------------------------* *& Report Z_RFC_MANT_TABLAS_WEB * *&---------------------------------------------------------------------* *& Mantenimiento de tablas para la seguridad Web * *&---------------------------------------------------------------------* *& Creación * *&---------------------------------------------------------------------* *& Autor : Israel Jorge Becerra Fernandez * *& Fecha : 09/09/2005 * *& Observación: Inserta,Actualiza,elimina Registro de tablas Seguridad* *& en forma dinamica * *& : Campos: * *----------------------------------------------------------------------* * ---------------------------------------------------------------------- * find out about the structure of QUERY_TABLE * ---------------------------------------------------------------------- CLEAR : TI_MANTTABLA, TI_MESSAGE, emensa, tmensa. FREE : TI_MANTTABLA, TI_MESSAGE, emensa, tmensa. TI_MANTTABLA[] = TIMANTTABLA[]. PERFORM VALIDA_DATOS. *-------------------------------------------------- *Si no existe informacion a actualizar *-------------------------------------------------- IF TI_MANTTABLA[] IS INITIAL. RAISE TABLE_PARAMETRO_VACIA. ENDIF. *------------------------------------------------------------- *Insercion de datos *------------------------------------------------------------- DATA : WFLAG TYPE I , WACCION LIKE TI_MANTTABLA-ACCION, wpos LIKE TI_MANTTABLA-POS. LOOP AT TI_MANTTABLA. AT NEW TABLA. WFLAG = 1. ENDAT. IF WFLAG = 1. WACCION = TI_MANTTABLA-ACCION. wpos = TI_MANTTABLA-pos. WTABLA = TI_MANTTABLA-TABLA. refresh: it_details ,it_fldcat . clear : wa_it_fldcat ,wa_details. free : wa_it_fldcat ,wa_details. *------------------------------------------------------------- * Creacion de Nueva Estructura * Agregar estructura a nueva tabla *------------------------------------------------------------- ref_descr ?= cl_abap_typedescr=>describe_by_name( WTABLA ). it_details[] = ref_descr->components[]. LOOP AT it_details INTO wa_details. CLEAR wa_it_fldcat. wa_it_fldcat-fieldname = wa_details-name . wa_it_fldcat-datatype = wa_details-type_kind. wa_it_fldcat-intlen = wa_details-length. wa_it_fldcat-decimals = wa_details-decimals. APPEND wa_it_fldcat TO it_fldcat . ENDLOOP. CALL METHOD cl_alv_table_create=>create_dynamic_table EXPORTING it_fieldcatalog = it_fldcat IMPORTING ep_table = new_table. ASSIGN new_table->* TO <dyn_table>. *------------------------------------------------------------- * create dynamic work area and assign to fs *------------------------------------------------------------- CREATE DATA new_line LIKE LINE OF <dyn_table>. ASSIGN new_line->* TO <dyn_wa>. clear : <dyn_table>. free : <dyn_table>. LOOP AT it_details INTO wa_details. * READ TABLE TI_MANTTABLA WITH KEY TABLA = WTABLA FIELDNAME = wa_details-NAME ACCION = WACCION pos = wpos . IF SY-SUBRC EQ 0. ASSIGN COMPONENT wa_details-NAME OF STRUCTURE <dyn_wa> TO <dyn_field>. <dyn_field> = TI_MANTTABLA-VALOR . ENDIF. endloop. INSERT <dyn_wa> INTO TABLE <dyn_table>. IF WACCION CO 'UI'. PERFORM MENSAJE USING 'E02' 'Se actualizo Tabla ' WTABLA. MODIFY (WTABLA) FROM TABLE <dyn_table>. ELSE. DELETE (WTABLA) FROM TABLE <dyn_table>. PERFORM MENSAJE USING 'E03' 'Se Elimino registros de tabla ' WTABLA. ENDIF. WFLAG = 0. ENDIF. endloop. EMENSA[] = tmensa[]. ENDFUNCTION. |
#3
|
||||
|
||||
Muchas gracias por la respuesta (Y por la Funcion).
El caso es que me habian pedido que investigase si existia alguna funcion de este tipo, y tras haber echado una horita buscando por todo el sistema funciones del estilo, habia decidido preguntarlo aqui... asi que creo que si quieren la funcion habra que implementarla. Muchas gracias por la funcion, por que posiblemente me sea muy util para mi desarrollo. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|