Anda di halaman 1dari 13

3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.

~AprenderABAP

Aprender ABAP
Si quieres, puedes.

HOME INDEX

Home Dynpros Crear Dynpros para crear, modificar y visualizar datos en una base de datos. Search

Crear Dynpros para crear, modificar y visualizar datos en una base de


datos.
martes, diciembre 10, 2013 No comments

Datos previos:
Base de datos ZBIBLIO_SOCIOS (Ver aqu)

Objetivo:
Una Dynpro 9000 con tres botones (Crear, Modificar y Visualizar).
Una Dynpro 9001 para aadir datos a la base de datos.
Una Dynpro 9002 como ventana de dilogo modal, para introducir el cdigo de socio.
Una Dynpro 9003, como ventana de dilogo modal, para Modificar o Visualizar un socio de la base
de datos.
Popular Tags BlogArchives

Esquema de las cuatro dynpros: Cmo instalar MiniSAP (NetWeaver


Trial)
En esta entrada se va a explicar
cmo instalar MiniSAP. Se
recomienda instalarlo en una
mquina virtual, ya que se crean cuentas de
usuarios...

Crear Dynpros para crear, modificar y


visualizar datos en una base de
datos.
Datos previos: Base de datos
ZBIBLIO_SOCIOS ( Ver aqu )
Objetivo: Una Dynpro 9000 con tres botones (Crear,
Modificar y Visualiza...

Aadir un botn en un ALV Report


Esquema de los dynpros. En la transaccin SE80, visualizamos
el programa SAPLKKBL.
Visualizamos el programa
El primer paso es crear un Module Pool en la SE38: SAPLKKBL. Navegamos en el rbol
hasta la pestaa...

Ejemplo de Batch Input


Objetivos: Crear un Tabstrip, y en una
pestaa mostrar los socios en una
tabla de control Seleccionar los
socios a modificar con un chec...

ALV Report de una tabla interna


Para poder mostrar un ALV Report de
una tabla interna se necesitar como
mnimo una tabla interna llamada
Crear un Module Pool en la SE38
it_fieldcat. En dicha tabla intern...

Aadir una Dynpro (Screen) al Module Pool creado pulsando el botn derecho: Cmo crear un Smartform con una
tabla y un cdigo de barras
Objetivo: Imprimir un Smartform en
un Report. La variable CARRID ser
un parmetro de entrada del
Smartform. Se mostrar el cdigo de b...

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 1/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Ver el listado de cdigos de iconos


Para ver el listado de iconos SAP con
sus cdigos, ir a la SE38 y buscar el
programa ADITES26. Ejecutarlo y se
mostrar el listado. Busc...

Deshabilitar el INPUT a un campo de


SELECTION-OPTIONS
En algunos casos, se exige que unos
determinados usuarios no puedan
utilizar unos campos especficos en
la pantalla de seleccin. En este ej...

Pantalla de seleccin dinmica


En este ejercicio va a existir un
RADIOBUTTON en el que si indica
Aadir una Dynpro al Module Pool creado.
bsqueda bsica, se mostrarn los
tres primeros campos de bsqueda
del SE...

Crear bases de datos


Crear las siguientes tablas: 1. Tabla:
ZBIBLIO_SOCIOS Campo Tipo Cdigo
de socio NUMC-4 DNI CHAR-9
Nomb...

Indicar el nmero de pantalla (se recomienda a partir de 9000).

Crear el elemento tipo OK de la pantalla 9000.

Descomentar los mdulos PBO y PAI, y crear ambos objetos pinchando dos veces en el nombre.

En nuestro programa principal se nos habrn creado los objetos PBO y PAI en el cdigo del programa.

Objetos PBO y PAI en el programa.

Como se puede apreciar, en el PBO se aade un Status y un Ttulo, y en el PAI la salida del programa
cuando el usuario pulsa el botn Cancel.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 2/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Para crear el STATUS y el ttulo se pincha dos veces en el nombre:

Descripcin del Status

Activacin del botn Cancel cmo mnimo para salir del programa.

Descripcin del ttulo del programa.

Pinchamos dos veces al Dynpro 9000 y vamos al Layout para editar la pantalla. Se introducirn los
botones de crear, modificar y visualizar:

Ir al Layout para editar la pantalla.

Escribir el cdigo de funcin del botn.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 3/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Botones creados en el Dynpro 9000.

Para poder ejecutar la pantalla creada, es necesario crear una transaccin. Hay dos formas:
1. En la SE93
2. Directamente en el programa

Crear la transaccin en la SE93.

Crear la transaccin directamente en el programa.

Se indicar la descripcin, el nombre del Module Pool y la pantalla.

Descripcin de la transaccin.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 4/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Module Pool y Dynpro para que la transaccin lo ejecute.

Creamos la Dynpro (Screen) 9001 tal y como creamos la 9000. Las nicas diferencias son:
1. Aadimos el botn BACK para volver al screen 9000 en el STATUS_9001.
2. El campo de entrada/salida se nombra con el nombre de la tabla ZBIBLIO_SOCIOS para referenciar
sus caractersticas.

Aadimos el botn Back.

Nombras el campo de entrada/salida con el mismo nombre para referenciar.

Dynpro 9001 resultante.

Se necesita comprobar que el nuevo cdigo de socio no existe en la base de datos. Para ello recurrimos al
Process After Input (PAI) para comprobar si el valor introducido existe en la base de datos. Se indica el
campo con un CHAIN y el mdulo correspondiente a ejecutar (ver cdigo resultante al final).

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 5/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

PROCESS BEFORE OUTPUT.


MODULE status_9001.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD zbiblio_socios-cod_socio.
MODULE existe_socio.
ENDCHAIN.

MODULE user_command_9001.

A continuacin creamos la Dynpro 9002 con sus correspondientes campos como ventana de dilogo
modal. En este caso, el Status tiene que ser del mismo tipo:

Status 9002 como dilogo modal.

Aadimos el cdigo para cuando el usuario pulsa X para salir.

En este caso, dependiendo del botn pulsado en la Dynpro 9000, el botn tendr como texto Modificar o
Visualizarse, por tanto es necesario indicar el botn como campo de salida.

Botn como campo output en el Dynpro 9002.

Finalmente creamos la Dynpro 9003 como ventana de dilogo modal.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 6/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Dynpro 9003 como ventana de dilogo modal.

Esta misma Dynpro se va a utilizar para la accin de modificar o visualizar. Las diferencias con respecto a
la 9001 son:
1. El campo del cdigo de socio es solo output (El usuario ya ha sido introducido en la Dynpro 9002).
2. Todos los campos de entrada/salida, salvo el primero, tendrn un identificador de Grupo1 llamado
ID1.
Si se da al botn de visualizar, ningn campo es editable, por lo tanto identificamos con ID1
los campos a modificar esa opcin.

3. El botn ser un campo de salida, tal y como en el Dynpro 9002.

El campo input del cdigo de socio es solo output.

Identificador de grupo ID1 en todos los campos de entrada/salida salvo en cdigo de socio.

Botn como campo de salida.

Los cdigos son los siguientes:

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 7/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP
Dynpro 9000

PROCESS BEFORE OUTPUT.


MODULE STATUS_9000.
*
PROCESS AFTER INPUT.
MODULE USER_COMMAND_9000.
Dynpro 9001

PROCESS BEFORE OUTPUT.


MODULE status_9001.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD zbiblio_socios-cod_socio.
MODULE existe_socio.
ENDCHAIN.
MODULE user_command_9001.
Dynpro 9002

PROCESS BEFORE OUTPUT.


MODULE status_9002.
MODULE inicial_9002.
*
PROCESS AFTER INPUT.
CHAIN.
FIELD zbiblio_socios-cod_socio.
MODULE existe_socio.
ENDCHAIN.

MODULE user_command_9002.

Dynpro 9003

PROCESS BEFORE OUTPUT.


MODULE status_9003.
MODULE inicial_9003.
*
PROCESS AFTER INPUT.
MODULE user_command_9003.

Module Pool

*&---------------------------------------------------------------------*
*& Module Pool ZBIBLIO_CREAR_MODIF_VISUAL
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

PROGRAM zbiblio_crear_modif_visual.

TABLES: zbiblio_socios.

DATA: g_st_socios TYPE zbiblio_socios.

DATA: ok_code_9000 TYPE sy-ucomm,


ok_code_9001 TYPE sy-ucomm,
ok_code_9002 TYPE sy-ucomm,
ok_code_9003 TYPE sy-ucomm.

DATA: b_9002_boton(20) TYPE c, "Texto de los botones output


b_9003_boton(20) TYPE c.

DATA: g_wa_existe_socio TYPE c, "Bsqueda en dynpro 9002


g_wa_vuelta TYPE i. "Al iniciar PBO del dynpro 9003

*&---------------------------------------------------------------------*
*& Module STATUS_9000 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9000 OUTPUT.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 8/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP
SET PF-STATUS 'STATUS_9000'.
SET TITLEBAR 'TITLE_9000'.

ENDMODULE. " STATUS_9000 OUTPUT


*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9000 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9000 INPUT.

CASE ok_code_9000.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'CREAR'.
CALL SCREEN 9001.
WHEN 'MODIFICAR'.
CALL SCREEN 9002 STARTING AT 10 10.
WHEN 'VISUALIZAR'.
CALL SCREEN 9002 STARTING AT 10 10.
ENDCASE.

ENDMODULE. " USER_COMMAND_9000 INPUT


*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.

SET PF-STATUS 'STATUS_9001'.


SET TITLEBAR 'TITLE_9001'.

ENDMODULE. " STATUS_9001 OUTPUT


*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.

CASE ok_code_9001.
WHEN 'BACK'.
CALL SCREEN 9000.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'CREAR'.
INSERT zbiblio_socios.
MESSAGE 'Usuario creado' type 'I'.
ENDCASE.

ENDMODULE. " USER_COMMAND_9001 INPUT


*&---------------------------------------------------------------------*
*& Module STATUS_9002 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9002 OUTPUT.

SET PF-STATUS 'STATUS_9002'.


SET TITLEBAR 'TITLE_9002'.

ENDMODULE. " STATUS_9002 OUTPUT


*&---------------------------------------------------------------------*
*& Module MODIFICAR_VISUALIZAR OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE inicial_9002 OUTPUT.

PERFORM f_inicial.

ENDMODULE. " MODIFICAR_VISUALIZAR OUTPUT


*&---------------------------------------------------------------------*
*& Module VALIDA_SOCIO INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE existe_socio INPUT.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 9/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

PERFORM f_existe_socio.

IF ok_code_9000 = 'CREAR' AND g_wa_existe_socio = 'X'.


MESSAGE 'El usuario ya existe' TYPE 'E'.
ELSEIF ( ok_code_9000 = 'MODIFICAR' OR
ok_code_9000 = 'VISUALIZAR' ) AND
g_wa_existe_socio <> 'X'.
MESSAGE 'El usuario no existe' TYPE 'E'.
ENDIF.

ENDMODULE. " EXISTE_SOCIO INPUT


*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9002 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9002 INPUT.

CASE ok_code_9002.
WHEN 'BACK'.
CALL SCREEN 9000.
WHEN 'CANCEL'.
LEAVE PROGRAM.
CLEAR: g_st_socios, g_wa_existe_socio.
WHEN 'ACCION'.
IF g_wa_existe_socio = 'X'.
g_wa_vuelta = 1.
CALL SCREEN 9003 STARTING AT 10 10.
ENDIF.
ENDCASE.

ENDMODULE. " USER_COMMAND_9002 INPUT


*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9003 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9003 INPUT.

CASE ok_code_9003.
WHEN 'BACK'.
CALL SCREEN 9000.
WHEN 'CANCEL'.
LEAVE PROGRAM.
WHEN 'ACCION'.
IF ok_code_9000 = 'MODIFICAR'.
PERFORM f_modificar.
ENDIF.
ENDCASE.

ENDMODULE. " USER_COMMAND_9003 INPUT


*&---------------------------------------------------------------------*
*& Module STATUS_9003 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9003 OUTPUT.

SET PF-STATUS 'STATUS_9003'.

IF ok_code_9000 = 'MODIFICAR'.
SET TITLEBAR 'TITLE_9003_1'.
ELSEIF ok_code_9000 = 'VISUALIZAR'.
SET TITLEBAR 'TITLE_9003_2'.
ENDIF.

ENDMODULE. " STATUS_9002 OUTPUT


*&---------------------------------------------------------------------*
*& Module INICIAL_9003 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE inicial_9003 OUTPUT.

PERFORM f_inicial.
IF g_wa_vuelta = 1.
PERFORM f_ver_socio.
g_wa_vuelta = g_wa_vuelta + 1.

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 10/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP
ENDIF.

ENDMODULE. " INICIAL_9003 OUTPUT


*&---------------------------------------------------------------------*
*& Form F_INICIAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_inicial.

* Cambiar el texto del botn


IF ok_code_9000 = 'MODIFICAR'.
b_9002_boton = 'Modificar'.
b_9003_boton = 'Modificar'.

ELSEIF ok_code_9000 = 'VISUALIZAR'.


b_9002_boton = 'Visualizar'.
b_9003_boton = 'Visualizar'.

* No editable cuando es visualizacin


LOOP AT SCREEN.
IF screen-group1 = 'ID1'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.

ENDFORM. " F_INICIAL


*&---------------------------------------------------------------------*
*& Form F_EXISTE_SOCIO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM f_existe_socio .

DATA: l_st_socios TYPE zbiblio_socios.

IF zbiblio_socios-cod_socio IS NOT INITIAL.

SELECT SINGLE * FROM zbiblio_socios


INTO l_st_socios
WHERE cod_socio = zbiblio_socios-cod_socio.
IF sy-subrc = 0.
g_wa_existe_socio = 'X'.
ELSEIF sy-subrc <> 0.
CLEAR g_wa_existe_socio.
ENDIF.
ENDIF.

ENDFORM. " F_EXISTE_SOCIO


*&---------------------------------------------------------------------*
*& Form F_MODIFICAR_9002
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_modificar.

* Los datos del input se actualizan a la base datos (mismo nombre)


UPDATE zbiblio_socios.
MESSAGE 'Usuario modificado' TYPE 'I'.

ENDFORM. " F_MODIFICAR


*&---------------------------------------------------------------------*
*& Form F_VER_SOCIO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_ver_socio .

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 11/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP
DATA l_st_socio TYPE zbiblio_socios.

SELECT SINGLE * FROM zbiblio_socios


INTO l_st_socio
WHERE cod_socio = zbiblio_socios-cod_socio.

zbiblio_socios = l_st_socio.

ENDFORM. " F_VER_SOCIO

Recomendar esto en Google

Related Posts:

Ejemplo de Batch Input


Objetivos: Crear un Tabstrip, y en una pestaa mostrar los socios en una tabla de control Seleccionar
los socios a modificar con un checkbox Ejecutar con un Batch Input la modificacin de cada uno de
los socios seleccionado Read More

Modificar el texto de un botn


Objetivo: Modificar el texto de un botn una vez que que se haya introducido el texto en un campo
input/output. Creamos una dynpro con un campo texto, un input/output y un botn. Las
caractersticas ms importantes son: Read More

Crear Dynpros para crear, modificar y visualizar datos en una base de datos.
Datos previos: Base de datos ZBIBLIO_SOCIOS (Ver aqu) Objetivo: Una Dynpro 9000 con tres
botones (Crear, Modificar y Visualizar). Una Dynpro 9001 para aadir datos a la base de datos. Una
Dynpro 9002 como ventana de Read More

Entrada ms reciente Pgina principal Entrada antigua

0 comentarios :

Publicar un comentario en la entrada

Introducetucomentario...

Comentarcomo: CuentadeGoogle

Publicar
Vistaprevia

Venta de Calaminas
Todas las medidas al mejor
precio. Galvanizadas y
metlicas Consulte!

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 12/13
3/10/2015 CrearDynprosparacrear,modificaryvisualizardatosenunabasededatos.~AprenderABAP

Copyright 2015 Aprender ABAP | Powered by Blogger Design by NewWpThemes | Blogger Theme by Lasantha - PremiumBloggerTemplates.com
NewBloggerThemes.com

http://aprenderabap.blogspot.pe/2013/12/creardynprosparacrearmodificary.html 13/13

Anda mungkin juga menyukai