MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Pasar un rango a una subrutina (foro/showthread.php?t=15778)

jtristan 20/08/08 07:02:47

Pasar un rango a una subrutina
 
Hola:

Quiero crearme una subrutina genérica que me llene los rangos. Para ello quiero pasarle por referencia un rango y por valor el signo, la opción, el valor máximo y el mínimo o una lista de valores. Bueno, el problema le tengo, al declarar el valor del rango. Me devuelve un error indicándome que mi rango no tiene la propiedad sign y no sé como decirle que se trata de un tipo rango.

Muchas gracias.

Saludos.

ibecerra 20/08/08 13:17:53

para ello utiliza los define.
*----------------------------------------------------------------------*
* DEFINE load_sel *
*----------------------------------------------------------------------*
DEFINE load_sel.
* Clear header
clear: &1.
* Fields initialize
&1-sign = &2.
&1-option = &3.
&1-low = &4.
&1-high = &5.
* Append...
append &1.
END-OF-DEFINITION. "load_sel.


y como lo llamas desde tu programa facil
EJEMPLO 1
load_sel ZT_RAN33 'I' 'EQ' 'KD' ' '.
load_sel ZT_RAN33 'I' 'EQ' 'KE' ' '.
load_sel ZT_RAN33 'I' 'EQ' 'KG' ' '.
EJEMPLO 2
LOAD_SEL: R_BLART 'I' 'EQ' 'VR' ' ',
R_BLART 'I' 'EQ' 'KR' ' ',
R_BLART 'I' 'EQ' 'VG' ' ',
R_BLART 'I' 'EQ' 'KG' ' ',
R_BLART 'I' 'EQ' 'VD' ' '.

EJEMPLO 3

SELECT BLART INTO VBLARTA
FROM ZTSRICLA
WHERE GRUPO IN S_GRUPO
AND BLART IN S_BLART.
LOAD_SEL R_BLART 'I' 'EQ' VBLARTA ' '.
ENDSELECT.


DavidXD_XD 20/08/08 17:21:30

Hola ... puedes crear un tipo local de esta manera:


la tabla y campo debera estar apuntando al tipo de dato que quieres, ahora crear una variable simple como tabla interna:


Y cuando quieras llamar a la subrutina la haces de esta manera:


Ahi ya te admitirá los campos sign., option, low y high dentro de la subrutina, espero pueda servir :D

jtristan 21/08/08 05:10:23

Muchas gracias a los dos. Voy a probar ambas opciones. No conocía los define y tienen buena pinta.
Un saludo.

osoro 16/01/14 18:38:29

Otra manera
 
Hola, lo que yo hago por ejemplo:

START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK 1 WITH FRAME TITLE text-y01.
SELECT-OPTIONS:
......
seldatab FOR wa_seltrip-DATB1.
SELECTION-SCREEN END OF BLOCK 1.
.....
AT SELECTION-SCREEN.
.....
PERFORM SELDATAB_Ini TABLES seldatab[].
.....

FORM SELDATAB_INI TABLES P_SELDATAB.
DATA: ....
* tr_seldatab LIKE RANGE OF wa_seltrip-DATB1 "Esta es otra manera
* wr_seldatab LIKE LINE OF tr_seldatab.
RANGES: tr_seldatab FOR wa_seltrip-DATB1.
.....
* Creo el criterio de seleccion
tr_seldatab-sign = 'I'.
tr_seldatab-option = 'BT'.
tr_seldatab-low = vl_Ini_Data_Sel.
tr_seldatab-high = vl_Fin_Data_Sel.
APPEND tr_seldatab.
p_seldatab[] = tr_seldatab[].
ENDFORM. " SELDATAB_INI


Husos Horarios son GMT. La hora en este momento es 19:54:31.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web