MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Cargar texto de inputField - BSP (foro/showthread.php?t=65376)

Andres1225 26/11/12 21:14:24

Cargar texto de inputField - BSP
 
Hola a todos,

Estoy en aprendizaje de desarrollo de aplicaciones BSP (con el Modelo Vista Controlador),

Lo que pasa es que estoy intentando realizar un Insert a una tabla de BD desde inputField (textbox),

¿Cómo podria cargar el dato que tenga el parámetro a una variable y luego mandarla a la tabla interna que realiza el insert?

1. El inputField lo nombro de la siguiente manera:

<htmlb:inputField id = "IDNUMBER"
invalid = "false"
required = "true"
maxlength = "60"
value = "<%= idnumber %>" />


2. Para mandarlo a una variable asi:

data ?= cl_htmlb_manager=>get_data( request = runtime->server->request
name = 'inputField'
id = 'IDNUMBER' ).

idnumber = data->value.
ls_infobp-idnumber = idnumber.


3. Al realizar la ejecución me sale el siguiente texto de error:

Access via 'NULL' object reference not possible.

:(

¿A qué se debe esto?

Muchas Gracias por su ayuda, o si hay alguna manera de cargar el inputField a una variable de una manera más sencilla, les agradeceria que la compartieran.

De antemano, Muchísimas Gracias.

K-MUS 28/11/12 16:11:22

Hola Andres,

Por empezar si estas comenzando con BSP te aconsejo que primero veas algo de "Flow logic" y luego pases a MVC.

No se que tanto estás al tanto de BSP pero hay dos metodologías

Flow Logic y MVC (Model View Controller).

"idnumber" lo tenes que tener declarado como atributo de la página. seguramente te esté faltando eso.

En Flow logic (Pagina con lógica de proceso) lo que queres hacer sería así:

En la vista .htm - Layout

<htmlb:inputField id = "IDNUMBER"
invalid = "false"
required = "true"
maxlength = "60"
value = "<%= idnumber %>" />

En la vista . htm Atributos Página
idnumber TYPE STRING

El nombre tiene que ser igual al "<%= idnumber %>"

En la vista htm - Control eventos -> OnInputProcessing

DATA: event TYPE REF TO CL_HTMLB_EVENT.
DATA: l_idnumber TYPE STRING.

event = CL_HTMLB_MANAGER=>get_event( runtime->server->request ).

***** BOTON BUSCAR
IF event->name = 'button' AND
event->id = 'buscar'.
l_idnumber = request->get_form_field( 'idnumber' ).

* Al darle al boton buscar en la variable l_idnumber tenes el valor ingresado
ENDIF.


Ahora MVC es un poco más complicado de explicar por aca, a una vista (propiamente dicho) sin lógica de proceso vas a ver que le falta la solapa de Control de Eventos. Esto es porque la lógica ahora pasa a estar en el controlador, independizandose de la vista (justamente es la finalidad de MVC) tener objetos independientes bien marcados.

En MVC la parte del layout y el atributo de página es igual. Pero ahora en lugar de usar el control de eventos tenes que crear un controlador .do que herede de "CL_BSP_CONTROLLER2" dicho controlador va a tener prácticamente los mismos "eventos" por así decirlo que en flow logic...en los métodos ves por ejemplo:

DO_INIT : Para inicializar valores
DO_REQUEST: Para definir que pagina vas a mostrar
DO_HANDLE_DATA: Para mapear los datos
DO_HANDLE_EVENT: Para atajar eventos

Tenes que redefinir el método que quieras, en DO_REQUEST vas a tener que asignar y disparar la vista que desees, en handle_data tenes como parámetro "form_fields" que tiene los valores ingresados en la vista. Aca podes asignarle el valor del htm a un atributo de la clase controlador y en el handle_event como el valor ya lo tenes a nivel atributo de la clase ya lo vas a tener disponible con tan solo

me->atributo


Saludos

Andres1225 29/11/12 13:56:02


Muchas Gracias amigo, me fue perfecta tu ayuda :D

Me hacia falta implementar el método DO_HANDLE_DATA, hicé lo que me indicaste y funcionó bien...

De nuevo Gracias :)


Husos Horarios son GMT. La hora en este momento es 17:41:38.

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