1. *&---------------------------------------------------------------------*
*& Report ZZPROG001
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
report zzprog001.
types:
begin of ty_s_mara,
matnr type matnr,
maktx type maktx,
meins type meins,
end of ty_s_mara,
ty_t_mara type sorted table of ty_s_mara.
start-of-selection.
Definición e inserción de registros en una tabla interna.
Declarar una tabla interna del tipo slis_t_fieldcat_alv y añadirle 2
registros.
El tipo de tabla debe estar definida en el diccionario de datos (SE11),
emitirá error en caso este tipo tabla sea definida en el programa.
Como se puede observar el valor texto es asignado con '' (apostrofes) o
|| palotes, el valor numérico se coloca como se muestra en el ejemplo.
Cada registro ingresado va entre paréntesis ()
data(gtd_fieldcat) = value slis_t_fieldcat_alv( ( fieldname = |TIPO|
ref_tabname = ||
col_pos = 1
hotspot = ||
seltext_m = |Tipo|
emphasize = 'C200' )
( fieldname = |SERIE|
ref_tabname = ||
col_pos = 2
hotspot = ||
seltext_m = |Serie|
emphasize = 'C200' )
).
if sy-subrc eq 0.
endif.
* Error al declarar nuevamnete la variable
* data(gtd_fieldcat) = value slis_t_fieldcat_alv( ( fieldname = |TIPO|
* ref_tabname = ||
* col_pos = 1
* hotspot = ||
* seltext_m = |Tipo|
* emphasize = 'C200'
)
* ( fieldname = |SERIE|
* ref_tabname = ||
2. * col_pos = 2
* hotspot = ||
* seltext_m = |Serie|
* emphasize = 'C200'
) ).
Tabla interna con registros existentes.
Añade registros a una tabla interna que ya contenga registros
gtd_fieldcat : base gtd_fieldcat
gtd_fieldcat = value slis_t_fieldcat_alv( base gtd_fieldcat ( fieldname
= |TIPO|
ref_tabname = ||
col_pos = 1
hotspot = ||
seltext_m = |Tipo|
emphasize = 'C200' )
( fieldname = |SERIE|
ref_tabname = ||
col_pos = 2
hotspot = ||
seltext_m = |Serie|
emphasize = 'C200' ) ).
Caso: tipo tabla definida en el programa.
* data(gtd_mara) = VALUE ty_t_mara( ( matnr = |302652| " Da error al com
pilar
data(gtd_mara) = value mara_tt( ( matnr = |302652|
* maktx = |PACC NB 732-
2 QTB/A 150 X 150 MM|
meins = |KG| )
( matnr = |405845|
* maktx = |BACO A706 G60-
NTC 2289 7/8" X 11M|
meins = |KG| )
( matnr = |654711|
* maktx = |MANDRIL AUTOMAT.P/BROCA C
ILIND.COD.70639|
meins = |UN| )
( matnr = |654733|
* maktx = |CAPACITOR 10 - MFD - 370
VAC|
meins = |UN| ) ).
if sy-subrc eq 0.
endif.
Condicionales.
Los condicionales como el IF or Case se manejan de la siguiente forma:
En este ejemplo se muestra un ejemplo como es el manejo del condicional
data: gs_mara type ty_s_mara,
gv_option type c length 1 value '2'.
3. gs_mara-
matnr = cond #( when gv_option = |1| then |302652| else |405845| ).
Sentencia FOR:
Llenado de una tabla interna filtrando la lectura de otra tabla interna:
ranges: gr_lgort for mard-lgort.
select campo
signo as sign, opcion as option, valor1 as low, valor2 as high
into table @data(gtd_const)
from zconstantes
where programa eq @sy-repid.
if sy-subrc eq 0.
gr_lgort = VALUE #( FOR lwa_const IN gtd_const WHERE ( campo = 'LGORT
' )
endif.