PDA

Ver la Versión Completa : Funcion para introducir datos en tabla


ppchico
11/09/07, 15:57:38
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.

ibecerra
11/09/07, 16:06:27
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.

ppchico
11/09/07, 16:19:26
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.

;)