Documente Academic
Documente Profesional
Documente Cultură
2|
Tipos de subrutinas
3|
Subrutinas internas
4|
Y la salida ser B.
Y la salida ser A B y A X.
5|
Subrutinas externas
**********************************************************************
***
DATA: v_g1(1) TYPE c VALUE 'A',
v_g2(1) TYPE c VALUE 'B'.
WRITE: v_g1 , v_g2.
PERFORM paso_por_referencia USING
v_g1
CHANGING v_g2.
WRITE: v_g1 , v_g2.
**********************************************************************
**
*** Paso de parametros por valor y resultado
***************************
**********************************************************************
**
DATA: v_h1(1) TYPE c VALUE 'A'.
PERFORM paso_por_valor_y_resultado1 CHANGING v_h1.
PERFORM paso_por_valor_y_resultado2 CHANGING v_h1.
**********************************************************************
**
END-OF-SELECTION.
**********************************************************************
**
WRITE:/'H1 es:', v_h1.
*&--------------------------------------------------------------------*
*&
Form procesar_datos
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
FORM procesar_datos TABLES
t_vuelos STRUCTURE sflight
USING
st_vuelos STRUCTURE sflight
CHANGING p_flag
TYPE sy-subrc.
ENDFORM.
"procesar_datos
*&--------------------------------------------------------------------*
*&
Form PASO_POR_VALOR
*&--------------------------------------------------------------------*
FORM paso_por_valor USING value(pf1).
pf1 = 'X'.
ENDFORM.
" PASO_POR_VALOR
*&--------------------------------------------------------------------*
*&
Form PASO_POR_REFERENCIA
*&--------------------------------------------------------------------*
FORM paso_por_referencia USING
p_g1
CHANGING p_g2.
p_g1 = p_g2 = 'X'.
ENDFORM.
" PASO_POR_VALOR
*&--------------------------------------------------------------------*
*&
Form PASO_POR_VALOR_Y_RESULTADO1
*&--------------------------------------------------------------------*
FORM paso_por_valor_y_resultado1 CHANGING p_f1.
p_f1 = 'B'.
ENDFORM.
" PASO_POR_VALOR_Y_RESULTADO1
*&--------------------------------------------------------------------*
*&
Form PASO_POR_VALOR_Y_RESULTADO2
*&--------------------------------------------------------------------*
FORM paso_por_valor_y_resultado2 CHANGING p_f1.
p_f1 = 'X'.
STOP.
ENDFORM.
" PASO_POR_VALOR_Y_RESULTADO2
PRACTICA
SOLUCION A LA PRACTICA
*&--------------------------------------------------------------------*
*& Report ZABAP_USUARIOS_ABM
*&
*&--------------------------------------------------------------------*
*&
ACLARACIONES IMPORTANTES
*&--------------------------------------------------------------------*
*& Para realizar este ejercicio se deber crear la clase de mensajes
*& Z_PRUEBA, se deber completar el texto correspondiente a los
parametros
*& de la pantalla de seleccin y se deber crear el INCLUDE de datos y
*& de subrutinas
*&--------------------------------------------------------------------*
REPORT ZABAP_USUARIOS_ABM.
* Include de Datos y Subrutinas
INCLUDE: zabap_usuarios_abm_top,
zabap_usuarios_abm_sub.
*---------------------------------------------------------------------*
START-OF-SELECTION.
*---------------------------------------------------------------------*
* Creacin de Usuarios
IF p_crear EQ 'X'.
PERFORM alta_de_usuarios.
* Modificacin de Usuarios
ELSEIF p_modif EQ 'X'.
PERFORM modificacion_de_usuarios.
* Borrado de Usuarios
ELSEIF p_borra EQ 'X'.
PERFORM borrado_de_usuarios.
ENDIF.
*&--------------------------------------------------------------------*
*& Include
ZABAP_USUARIOS_ABM_TOP
*&--------------------------------------------------------------------*
* Declaracin de Tablas y estructura
DATA: wa_usuarios TYPE ztabla_usuarios.
* Declaracin de variables
DATA: v_dni TYPE z_dni,
v_nombre_ape TYPE z_nombre_ape,
v_estado_usu TYPE z_estado_usu,
v_direccion TYPE z_direccion,
"
"
"
"
"
"
DNI
Nombre y Apellido
Estado del usuario
Direccin
Fecha de Nacimiento
Estado civil
SELECTION-SCREEN SKIP 1.
PARAMETER: p_crear
p_modif
p_borra
" Crear
" Modificar
" Borrar
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN END OF BLOCK b1.
*&--------------------------------------------------------------------*
*& Include
ZABAP_USUARIOS_ABM_SUB
*&--------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*&
Form ALTA_DE_USUARIOS
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM alta_de_usuarios .
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE dni EQ p_dni.
IF sy-subrc EQ 0.
MESSAGE e001(z_prueba) WITH 'El registro que intenta crear ya
existe'.
ELSE.
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = p_dni.
wa_usuarios-nombre_ape = p_nomape.
wa_usuarios-estado_usu = p_estusu.
wa_usuarios-direccion = p_dir.
wa_usuarios-fecha_nac = p_fecha.
wa_usuarios-estado_civil = p_estciv.
INSERT into ztabla_usuarios values wa_usuarios.
IF sy-subrc EQ 0.
MESSAGE s001(z_prueba) WITH 'El registro fue creado
correctamente'.
ENDIF.
ENDIF.
ENDFORM.
" ALTA_DE_USUARIOS
*&--------------------------------------------------------------------*
*&
Form BORRADO_DE_USUARIOS
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM borrado_de_usuarios .
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE dni EQ p_dni.
IF sy-subrc NE 0.
MESSAGE e001(z_prueba) WITH 'El registro que intenta borrar no
existe'.
ELSE.
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = p_dni.
wa_usuarios-nombre_ape = p_nomape.
wa_usuarios-estado_usu = p_estusu.
wa_usuarios-direccion = p_dir.
wa_usuarios-fecha_nac = p_fecha.
wa_usuarios-estado_civil = p_estciv.
DELETE ztabla_usuarios FROM wa_usuarios.
IF sy-subrc EQ 0.
MESSAGE s001(z_prueba) WITH 'El registro fue borrado
correctamente'.
ENDIF.
ENDIF.
ENDFORM.
" BORRADO_DE_USUARIOS
*&--------------------------------------------------------------------*
*&
Form MODIFICACION_DE_USUARIOS
*&--------------------------------------------------------------------*
*
text
*---------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*---------------------------------------------------------------------*
FORM modificacion_de_usuarios .
CLEAR v_dni.
SELECT SINGLE dni
FROM ztabla_usuarios
INTO v_dni
WHERE dni EQ p_dni.
IF sy-subrc NE 0.
MESSAGE e001(z_prueba) WITH 'El registro que intenta modificar no
existe'.
ELSE.
CLEAR wa_usuarios.
wa_usuarios-mandt = sy-mandt.
wa_usuarios-dni = p_dni.
wa_usuarios-nombre_ape = p_nomape.
wa_usuarios-estado_usu = p_estusu.
wa_usuarios-direccion = p_dir.
wa_usuarios-fecha_nac = p_fecha.
wa_usuarios-estado_civil = p_estciv.
MODIFY ztabla_usuarios FROM wa_usuarios.
IF sy-subrc EQ 0.
MESSAGE s001(z_prueba) WITH 'El registro fue modificado
correctamente'.
ENDIF.
ENDIF.
ENDFORM.
" MODIFICACION_DE_USUARIOS