Beruflich Dokumente
Kultur Dokumente
PEL_ID
Key
X
Type
NUMC
Length
10
PELTXT
CHAR
40
AGNO
DURACION
NUMC
NUMC
4
4
PAIS_ID
CHAR
GENERO_ID
NUMC
DIRECTOR_ID
Tabla ZPELICULAS : Pelculas
NUMC
10
Description
Cdigo
Pelcula
Nombre
Pelcula
original
Ao
Duracin en
minutos
Pais de origen (
Cdigo Pais
ISO )
Cdigo gnero
(Terror, Drama,
etc.)
Cdigo director
Crear tabla ZPELICULAS en SAP(SE11) con los campos requeridos, para cada campo crear su respectivo Elementos de Datos y Dominio. Para
Gnero crear en el dominio, mbito de valores, con la siguiente lista:
Cine de accin
Cine de animacin
Cine de aventuras
Cine Blico
Serie B
Ciencia Ficcin
Cine de autor
Cine fantstico
Cine negro
Cine pornogrfico
Comedia (cine)
Comedia romntica
Documental
Drama
Melodrama
Cine histrico
Intriga y suspense
Cine musical
Cine policaco
Cine de terror
Western
Key
X
Type
NUMC
CHAR
Length
10
60
NACION
NUMC
FEC_NAC
FEC_MUE
DATS
DATS
8
8
Description
Cdigo director
Nombre Completo
director
Nacionalidad(Cdigo
ISO pais)
Fecha nacimiento
Fecha Fallecimiento
Tabla ZDVD
Field name
DVD_ID
PEL_ID
Key
X
X
Type
NUMC
NUMC
Length
10
10
decimals
PRECIO
CURR
15
MONEDA
STOCK
ZONA
cuky
DEC
numc
5
5
1
Description
Cdigo DVD
Cdigo
Pelcula
Precio
Unitario DVD
Moneda
Stock DVD
Zona DVD
En Moneda usar elemento de datos waers. Para DVD_ID, PRECIO y STOCK, crear elemento de datos.
Clusula SELECT
Seleccionar todas las pelculas e imprimir cdigo y nombre:
TABLES ZPELICULAS.
SELECT * FROM ZPELICULAS .
WRITE:/ ZPELICULAS-PEL_ID,
ZPELICULAS-PELTXT.
ENDSELECT.
Lo anterior es equivalente a,
Data wa_zpeliculas like zpeliculas.
SELECT * into wa_zpeliculas FROM ZPELICULAS .
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
Seleccionar todas las pelculas con pas origen Chile e imprimir cdigo y nombre:
Data wa_zpeliculas like zpeliculas.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID = CL.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
Seleccionar todas las pelculas con pas origen Chile o Argentina e imprimir cdigo y nombre:
Data wa_zpeliculas like zpeliculas.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID = CL
OR PAIS_ID EQ AR.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
Operator Meaning
=, EQ
<>, NE
<, LT
>, GT
<=, LE
>=, GE
Seleccionar todas las pelculas con pas origen Chile o Argentina cuya duracin no sea mayor a 120 minutos, e imprimir cdigo y
nombre:
Data wa_zpeliculas like zpeliculas.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE ( PAIS_ID = CL
OR PAIS_ID EQ AR )
AND DURACION <= 120.
.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
Notar que lo anterior es equivalente a:
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE ( PAIS_ID = CL AND DURACION <= 120 )
OR ( PAIS_ID EQ AR AND DURACION <= 120.
.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
PARAMETERS
PARAMETERS p_pais like ZPELICULAS-pais_id.
Data wa_zpeliculas like zpeliculas.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID = p_pais.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
SELECT-OPTIONS
SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.
Ejercicio:
Crear reporte que dada la nacionalidad del director, imprimir Nombre de Pelcula, Nombre de Director, Nacionalidad Director, Duracin Pelcula.
( Usar select-options para leer nacionalidad de director )
TABLAS INTERNAS
Formas de definir tablas internas.
Data: begin of tb_pel occurs 0,
Pel_id like zpeliculas-pel_id,
Peltxt like zpeliculas-peltxt,
End of tb_pel.
lo anterior es equivalente a :
Data : begin of wa_pel,
Pel_id like zpeliculas-pel_id,
Peltxt like zpeliculas-peltxt,
End of wa_pel.
Data tb_pel like standard table of wa_pel with header line.
Seleccionar todas las pelculas e imprimir cdigo y nombre:
Data tb_zpeliculas like Standard table of zpeliculas with header line.
SELECT * into table tb_zpeliculas FROM ZPELICULAS .
Loop at tb_zpeliculas
WRITE:/ tb_ZPELICULAS-PEL_ID,
tb_ZPELICULAS-PELTXT.
Endloop.
****************************************************
Data tb_zpeliculas like Standard table of zpeliculas.
Data wa like tb_zpeliculas.
SELECT * into table tb_zpeliculas FROM ZPELICULAS .
Loop at tb_zpeliculas into wa.
WRITE:/ wa-PEL_ID,
wa-PELTXT.
Endloop.
into corresponding fields
Data : begin of wa_aux,
Pel_id like zpeliculas-pel_id,
Peltxt like zpeliculas-peltxt,
End of wa_aux.
Data tb_aux like standard table of wa_aux with header line.
SELECT * into corresponding fields of table tb_aux FROM ZPELICULAS .
Loop at tb_aux.
WRITE:/ tb_aux-PEL_ID,
tb_aux-PELTXT.
Endloop.
Crear reporte que dada la nacionalidad del director, imprimir Nombre de Pelcula, Nombre de Director, Nacionalidad Director, Duracin Pelcula.
Usar tablas internas.
MODULARIZACION
Subrutinas
Data tb_zpeliculas like Standard table of zpeliculas with header line.
Perform leer_peliculas.
Perform write_peliculas.
Form leer_peliculas.
SELECT * into table tb_zpeliculas FROM ZPELICULAS .
Endform.
Form write_peliculas.
Loop at tb_zpeliculas
WRITE:/ tb_ZPELICULAS-PEL_ID,
tb_ZPELICULAS-PELTXT.
Endloop.
Endform.
Perform write_peliculas.
Form leer_peliculas using p_pais_de_entrada.
SELECT * into table tb_zpeliculas FROM ZPELICULAS
Where pais_id = p_pais_de_entrada.
Endform.
Form write_peliculas.
Loop at tb_zpeliculas
WRITE:/ tb_ZPELICULAS-PEL_ID,
tb_ZPELICULAS-PELTXT.
Endloop.
Endform.
Includes
Creamos dos Includes, se crean igual que los programas, pero son de tipo I.
ZPELICULAS_TOP.: Para declarar variables
ZPELICULAS_F01 : Para declarar subrutinas
**********************************************************************
*INCLUDE ZPELICULAS_TOP.
Data tb_zpeliculas like Standard table of zpeliculas with header line.
Data v_peltxt like ZPELICULAS-PELTXT.
*INCLUDE ZPELICULAS_F01
Form leer_peliculas using p_pel_id
changing p_nombre_pel.
SELECT single peltxt into p_nombre_pel FROM ZPELICULAS
Where pel_id = p_pel_id.
Endform.
Form write_peliculas using p_pel_id
P_nombre_pel.
WRITE:/ p_PEL_ID,
P_nombre_pel.
Endform.
EVENTOS
INITIALIZATION
En este ejemplo se propondr el ao actual para la bsqueda de pelculas.
PARAMETERS:
p_agno like zpeliculas-agno.
SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.
Data wa_zpeliculas like zpeliculas.
INITIALIZATION.
p_agno = sy-datum(4).
START-OF-SELECTION.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID IN s_pais
AND agno = p_agno.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
END-OF-SELECTION.
En este ejemplo siempre se propondr el pas CL en la bsqueda.
SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.
Data wa_zpeliculas like zpeliculas.
INITIALIZATION.
s_pais-sign = I
s_pais-option = EQ.
s_pais-low = CL.
append s_pais.
START-OF-SELECTION.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID IN s_pais.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
END-OF-SELECTION.
AT-SELECTION-SCREEN.
Validar datos en la pantalla inicial del reporte. En este ejemplo validamos que en parmetro pas este prohibido ingresar Argentina(AR).
PARAMETERS p_pais like ZPELICULAS-pais_id.
Data wa_zpeliculas like zpeliculas.
AT-SELECTION-SCREEN.
if p_pais = AR.
Message E398(00) with Codigo de pais invlido.
Endif.
START-OF-SELECTION.
SELECT * into wa_zpeliculas FROM ZPELICULAS
WHERE PAIS_ID EQ p_pais.
WRITE:/ wa_ZPELICULAS-PEL_ID,
Wa_ZPELICULAS-PELTXT.
ENDSELECT.
END-OF-SELECTION.
OBS: los mensajes estn en la tabla T100.
FUNCTIONS
Crear funcin Z_LEER_PELICULA que dado un id de pelcula entregue el nombre.
Entonces ahora en el programa principal esta funcin se llamara:
Data tb_zpeliculas like Standard table of zpeliculas with header line.
Data v_peltxt like ZPELICULAS-PELTXT.
PARAMETERS p_id like ZPELICULAS-pel_id.
Perform leer_peliculas using p_id
changing v_peltxt.
Perform write_peliculas using p_id
V_peltxt..
Form leer_peliculas using p_pel_id
changing p_nombre_pel.
* SELECT single peltxt into p_nombre_pel FROM ZPELICULAS
*
Where pel_id = p_pel_id.
CALL FUNCTION Z_LEER_PELICULA
EXPORTING
PEL_ID = p_pel_id
IMPORTING
PELTXT = p_nombre_pel
EXCEPTIONS
Not_ found = 1.
If sy-subrc ne 0.
Clear p_nombre_pel .
Endif.
Endform.
Form write_peliculas using p_pel_id
P_nombre_pel.
WRITE:/ p_PEL_ID,
P_nombre_pel.
Endform.
Crear funcin (SE37) Z_READ_DVD que dado un cdigo de DVD, como salida entregue:
ID_DVD
Nombre Pelcula
Nombre Director
Ao Pelcula
Duracin en minutos
Pas de origen
Gnero
Precio DVD
Stock DVD
Crear funcin Z_READ_DVD_2 que dado un cdigo de DVD, como salida entregue estructura con siguientes campos. OBS: crear estructura
ZQ_DVD con la SE11, para los campos usar las mismas definiciones que las tablas ZPELICULAS; ZDIRECTORES Y ZDVD
Field name
DVD_ID
PEL_ID
Type
NUMC
NUMC
Length
10
10
PELTXT
CHAR
40
AGNO
DURACION
NUMC
NUMC
4
4
PAIS_ID
CHAR
GENERO_ID
NUMC
DIRECTOR_ID
NOMBRE
PRECIO
NUMC
10
MONEDA
STOCK
Key
Description
Cdigo
Pelcula
Nombre
Pelcula
original
Ao
Duracin en
minutos
Pais de origen (
Cdigo Pais
ISO )
Cdigo gnero
(Terror, Drama,
etc.)
Cdigo director
Precio Unitario
DVD
Moneda
Stock DVD
*
*
*
*
*
*
HEADER_LENGTH
=0
READ_BY_LINE
= 'X'
DAT_MODE
=''
IMPORTING
FILELENGTH
=
HEADER
=
tables
data_tab
= itab.
* EXCEPTIONS
* FILE_OPEN_ERROR
=1
* FILE_READ_ERROR
=2
* NO_BATCH
=3
* GUI_REFUSE_FILETRANSFER
=4
* INVALID_TYPE
=5
* NO_AUTHORITY
=6
* UNKNOWN_ERROR
=7
* BAD_DATA_FORMAT
=8
* HEADER_NOT_ALLOWED
=9
* SEPARATOR_NOT_ALLOWED
= 10
* HEADER_TOO_LONG
= 11
* UNKNOWN_DP_ERROR
= 12
* ACCESS_DENIED
= 13
* DP_OUT_OF_MEMORY
= 14
* DISK_FULL
= 15
* DP_TIMEOUT
= 16
* OTHERS
= 17
.
if sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
endif.
end-of-selection.
loop at itab.
write : / 'Pel id :' , itab-pelicula, 'NAME :', itab-nombre.
endloop.
Field name
DIRECTOR_ID
NOMBRE
Key
X
Type
NUMC
CHAR
Length
10
60
NACION
NUMC
FEC_NAC
FEC_MUE
DATS
DATS
8
8
Description
Cdigo director
Nombre Completo
director
Nacionalidad(Cdigo
ISO pais)
Fecha nacimiento
Fecha Fallecimiento
US1940091100000000
US1946012000000000
US1925022119841228
IT1929939119890430
Tarea: usar la function GUI_DOWNLOAD para bajar todas las pelculas, bajar archivo plano con id, y nombre de pelcula.
*&---------------------------------------------------------------------*
*& Report ZUPLOADTAB
*&
*
*&---------------------------------------------------------------------*
*& Example of Uploading tab delimited file
*&
*
*&---------------------------------------------------------------------*
REPORT zuploadtab
.
*
*
************************************************************************
*AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_INFILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_infile.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename
= p_infile
mask
= ',*.txt.'
mode
= 'O'
title
= 'Upload File'(078)
IMPORTING
filename
= p_infile
EXCEPTIONS
inv_winsys
=1
no_batch
=2
selection_cancel = 3
selection_error = 4
OTHERS
= 5.
************************************************************************
*START-OF-SELECTION
START-OF-SELECTION.
gd_file = p_infile.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= gd_file
has_field_separator
= 'X' "file is TAB delimited
TABLES
data_tab
= it_record
EXCEPTIONS
file_open_error
=1
file_read_error
=2
no_batch
=3
gui_refuse_filetransfer = 4
invalid_type
=5
no_authority
=6
unknown_error
=7
bad_data_format
=8
header_not_allowed
=9
separator_not_allowed = 10
header_too_long
= 11
unknown_dp_error
= 12
access_denied
= 13
dp_out_of_memory
= 14
disk_full
= 15
dp_timeout
= 16
OTHERS
= 17.
IF sy-subrc NE 0.
write: 'Error ', sy-subrc, 'returned from GUI_UPLOAD FM'.
skip.
endif.
* Alternative method, where by you split fields at each TAB after you
* have returned the data. No point unless you dont have access to
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
************************************************************************
*END-OF-SELECTION
END-OF-SELECTION.
*!! Text data is now contained within the internal table IT_RECORD
* Display report data for illustration purposes
LOOP AT it_record INTO wa_record.
WRITE:/
sy-vline,
(10) wa_record-name1, sy-vline,
(10) wa_record-name2, sy-vline,
(10) wa_record-age, sy-vline.
ENDLOOP.
OPEN DATASET.
For input(leer datos DESDE SERVIDOR DE APLICACIN)
report ztest_upload .
data : begin of itab occurs 0,
pel_id like zpeliculas-pel_id,
peltxt like zpeliculas-peltxt,
end of itab.
parameters : p_fname like rlgrap-filename obligatory.
start-of-selection.
Open dataset p_fname for input in text mode.
Check sy-subrc = 0.
Do.
read dataset p_fname into itab.
If sy-subrc <> 0.
Exit.
Endif.
Append itab.
Enddo.
end-of-selection.
loop at itab.
write : / 'Pel id :' , itab-pelicula, 'NAME :', itab-nombre.
endloop.
For output(transferir datos DESDE SERVIDOR DE APLICACION)
report ztest_download .
data : begin of itab occurs 0,
pelicula like zpeliculas-pel_id,
nombre like zpeliculas-peltxt,
end of itab.
parameters : p_fname like rlgrap-filename obligatory.
start-of-selection.
Reportes ALV
Ejemplo 1
report grid_edit.
*
type-pools: slis.
* Data to be displayed
data: gs_layout type slis_layout_alv.
* Selection
it_fieldcat-fieldname = 'PEL_ID'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
*
*
*
*
it_fieldcat-seltext_l = 'XXX'.
it_fieldcat-seltext_m = 'XXX'.
it_fieldcat-seltext_s = 'XXX'.
it_fieldcat-reptext_ddic = 'XXX'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'PELTXT'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'AGNO'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'DURACION'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'PAIS_ID'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'GENERO_ID'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
it_fieldcat-fieldname = 'DIRECTOR_ID'.
it_fieldcat-tabname = 'TB_ZPELICULAS'.
it_fieldcat-ref_tabname = 'ZPELICULAS'.
APPEND it_fieldcat.
endform.
Tarea: crear reporte alv, dado nombre de pelcula y nombre de director(selectoptions), entregue el siguiente listado:
DVD ID
Nombre
Pelcula
original
Ao
Duracin en
minutos
Pais de origen
Gnero
Nombre
director
Precio Unitario
DVD
Moneda
Stock DVD
Hint: Crear tabla interna con la mismos campos que se exigen en la salida del
reporte, despus crear el fieldcat con esos campos.
Hint: buscar en la se38 programas BCALV*, que son ejemplos dados por SAP. Por
ejemplo el
BCALV_FULLSCREEN_DEMO
Solucion:
Tables: zpeliculas,
Zdirectores.
Data tb_dvd like Standard table of zdvd with header line.
Select-options: s_dnombre for zdirectores-nombre,
S_pnombre for zpeliculas-peltxt.
Start-of-selection.
.
Form read_dvd.
Data v_director_id like zdirectores-director_id.
Data v_pel_id like zpeliculas-pel_id.
Select director_id into v_director_id from zdirectores
Where nombre in s_dnombre.
Select pel_id into v_pel_id from zpeliculas
Where peltxt in s_pnombre
And director_id = v_director_id.
Select * into table tb_dvd from zdvd
Where pel_id = v_pel_id.
Endselect.
Endselect.
Endform.
DYNPROS
Con la se38 creamos programa tipo M(modulpool)
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.
largo
tipo
Ahora agregaremos un texto, para describir el campo de entrada. Para ello agregamos
campo de texto.
Texto a
desplegar
Log. Proceso
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
Instruccin
FIELD
Cada comando que ejecutamos en la dynpro tiene que asignarse a una variable, para
ello, nos vamos a Lista de Elemen.
OK_COD
E es solo
un nombre
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'.
*&---------------------------------------------------------------------**&
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.
codigo
nombre
tipo
*&---------------------------------------------------------------------*
*& 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.
*&---------------------------------------------------------------------*
*&
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
zdirectores-director_id.
zdirectores-nombre.
zdirectores-nacion.
zdirectores-fec_nac.
zdirectores-fec_mue.
module user_command_0200.
SMARTFORMS
Ejercicio N 1.
El jefe quiere el listado de los usuarios que hay en Sap y quiere imprimir la siguiente
carta:
Santiago, 23 de Enero del 2006
LISTADO DE USUARIOS SAP
Empresa GlobalSap consulting, tiene los siguientes usuarios registrados en SAP
Codigo Usuario
JVASQUEZ
CRUIZ
GGONZALEZ
PTAPIA
Nombre
Jaime Vazquez
Cristian Ruiz
German Gonzalez
Pablo Tapia
Solucin:
Vamos a la transaccin SMARTFORM, creamos el smartform y definimos la tabla de
entrada usuarios
2.
TABLAS
1.
Interface
form.
3. Def.
Tabla
USUARIOS
En este ejemplo usaremos la ventana MAIN que se crea por defecto, acurdense que el
concepto de MAIN es el mismo que en el de los SAPSCRIPT.
A la ventana main le definiremos un texto llamado HEADER para colocar el texto de
cabecera de la tabla.
Crear texto,
HEADER
Fjate en el botn Lista de campos, ah en el extremo inferior izquierdo, salen todos los
campos visibles para programa smartform, para poner la fecha utilizaremos la variable
de sistema DATE, fjate que esto es drag & drop , que bonito no.
1. Lista de campos
2. Lista de campos
3. variable de
sistema DATE
1. Details
1. Datos
globales
Volvamos a la tabla
Entonces creamos
Entrada en tabla, y
definimos el tipo de
linea
Para que esto tengo sentido, hay que crear el programa ABAP de impresin, en este caso
el YTEST_SMART, en la rutina siguiente se imprime:
*&---------------------------------------------------------------------*
*&
Form print_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
form print_data.
data:
*smartforms related
func_module_name type rs38l_fnam,
control_parameters type ssfctrlop,
output_options
type ssfcompop.
data: pa_form LIKE ssfscreen-fname .
pa_form = 'YTEST_SMART'.
output_options-tdnewid = 'X'.
output_options-tdimmed = 'X'.
output_options-tddelete = 'X'.
control_parameters-no_dialog = ' '.
* determine the name of the generated function module for the SMartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname
= pa_form
IMPORTING
fm_name
= func_module_name
EXCEPTIONS
no_form
=1
no_function_module = 2
OTHERS
= 3.
"print_data
*&---------------------------------------------------------------------*
*& Report YTEST_SMART
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT YTEST_SMART.
data
data
start-of-selection.
perform get_users.
perform print_data.
*&---------------------------------------------------------------------*
*&
Form get_users
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
form get_users.
"get_users
*&---------------------------------------------------------------------*
*&
Form print_data
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
form print_data.
data:
*smartforms related
func_module_name type rs38l_fnam,
control_parameters type ssfctrlop,
output_options
type ssfcompop.
data: pa_form LIKE ssfscreen-fname .
pa_form = 'YTEST_SMART'.
output_options-tdnewid = 'X'.
output_options-tdimmed = 'X'.
output_options-tddelete = 'X'.
control_parameters-no_dialog = ' '.
* determine the name of the generated function module for the SMartform
CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
EXPORTING
formname
= pa_form
IMPORTING
fm_name
= func_module_name
EXCEPTIONS
no_form
=1
no_function_module = 2
OTHERS
= 3.
"print_data