You are on page 1of 19

Con la se38 creamos programa tipo M(modulpool)

Despus vamos a la transac. Se51

Y creamos la dynpro, en este caso la 0200. OBS : el N es arbitrario.

Atributos

disposicin

Disposicin
Seleccionando esta opcin, dibujaremos la pantalla,

A la izquierda objetos que podemos agregar a una dynpro. En nuestro caso queremos
agregar campos de entrada/salida para ingresar datos de directores.

Variable ABAP en que


guardaremos valor de
campo de entrada

largo

tipo

Ahora agregaremos un texto, para describir el campo de entrada. Para ello agregamos
campo de texto.

Texto a
desplegar

Usamos el mismo procedimiento para crear los otros campos,

Log. Proceso

Ac tenemos el PBO y en el PAI.


En el PBO definiremos el status GUI, de la dynpro, y el titulo. Para ello definiremos el
modulo STATUS_0200. Tip: basta descomentar la lnea y doble clic sobre Module
y lo creas.
En este caso lo crearemos dentro del mismo programa ZDIRECTORES, pero se estila
crearlo en un include para modulos PBO.
*&---------------------------------------------------------------------*
*&
Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module STATUS_0200 output.
SET PF-STATUS 'STATUS'.
SET TITLEBAR 'T01'.
endmodule.

" STATUS_0200

OUTPUT

Definimos un status gui STATUS y un Titulo T01. Tip: doble clic sobre cada
lnea y directamente lo creamos.

Lo damos si

A los
iconos le
asignamos
un nombre
de
comando:
SAVE
BACK
CANC

Grabamos y activamos. Volvemos a la dynpro, lgica. Creamos el ttulo,


equivalentemente, con doble clic:

Le damos nombre y eso es todo.


Volvamos a la lgica del programa:
En el PAI tenemos que traspasar los campos de entrada en la pantalla al programa
principal. Para ello usamos la instruccin field para cada campo de entrada.

Instruccin
FIELD

Cada comando que ejecutamos en la dynpro tiene que asignarse a una variable, para
ello, nos vamos a Lista de Elemen.

OK_CODE
es solo un
nombre

Lo definimos como OK_CODE. Ahora agregamos la variable en el codigo ABAP


*&---------------------------------------------------------------------*
*& Modulpool
ZDIRECTORES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
PROGRAM

ZDIRECTORES.

data ok_code like sy-ucomm.

Ahora tenemos que definir que hacer por cada accin que existe dentro de la pantalla,
para eso creamos el modulo USER_COMMAND_0200 (doble clic).
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
MODULE user_command_0200 INPUT.
DATA fcode LIKE ok_code.
fcode = ok_code.
CLEAR ok_code.
CASE fcode.
WHEN 'SAVE'.

PERFORM grabar_director USING zdirectores.


WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE.

" USER_COMMAND_0200

INPUT

*&---------------------------------------------------------------------**&
Form grabar_director
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->ZDIRECTORES text
*----------------------------------------------------------------------*
FORM grabar_director USING zdirectores STRUCTURE zdirectores.
INSERT INTO zdirectores VALUES zdirectores.
IF sy-subrc = 0.
MESSAGE s000(fb) WITH 'Director ingresado con xito'.
Clear zdirector.
ELSE.
MESSAGE e000(fb) WITH 'Error ingreso director'.
ENDIF.
ENDFORM.
"grabar_director
si observan, utilizamos la variable ok_code para determinar que boton se
presion. En este caso definimos que para el boton SAVE (ver status GUI),
grabamos el director y en el caso de BACK salimos de la transaccin.

Ahora hay que asignar una transaccin a la dynpro

codigo

nombre

tipo

Y ejecutamos la transaccin, via comando

*&---------------------------------------------------------------------*
*& Modulpool
ZDIRECTORES
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
program

zdirectores.

data ok_code like sy-ucomm.


data: begin of zdirectores,
director_id(10) type c,
nombre(10)
type c,
nacion(2) type n,
fec_nac type d,
fec_mue type d,
end of zdirectores.
*&---------------------------------------------------------------------*
*&
Module STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module status_0200 output.
set pf-status 'STATUS'.
set titlebar 'T01'.
endmodule.
" STATUS_0200 OUTPUT
*&---------------------------------------------------------------------*
*&
Module USER_COMMAND_0200 INPUT
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
module user_command_0200 input.
data fcode like ok_code.
fcode = ok_code.
clear ok_code.
case fcode.
when 'SAVE'.
perform grabar_director using zdirectores.
when 'BACK'.
leave to screen 0.
endcase.
endmodule.

" USER_COMMAND_0200

INPUT

*&---------------------------------------------------------------------*
*&
Form grabar_director
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->ZDIRECTORES text
*----------------------------------------------------------------------*
form grabar_director using zdirectores structure zdirectores.
INSERT INTO zdirectores VALUES zdirectores.
if sy-subrc = 0.
message s000(fb) with 'Director ingresado con xito'.
clear zdirectores.
else.
message e000(fb) with 'Error ingreso director'.
endif.

endform.

"grabar_director

process before output.


module status_0200.
*
process after input.
field
field
field
field
field

zdirectores-director_id.
zdirectores-nombre.
zdirectores-nacion.
zdirectores-fec_nac.
zdirectores-fec_mue.

module user_command_0200.

You might also like