Envio de parametros en Funcion

Hola, estoy revisando un programa que contiene inserciones, pero no entiendo como se maneja el using y changing para intercambiar valores. Tengo el siguiente código:

FORM u600 USING e_gsber TYPE bseg-gsber.

  PERFORM move_div   CHANGING e_gsber.

ENDFORM.    

FORM move_div  CHANGING p_e_gsber.

SELECT gsber INTO p_e_gsber
 UP TO 1 ROWS
  FROM zfi_ctas_div
 WHERE hkont EQ bseg-hkont(07).

ENDSELECT.
ENDFORM.          

En este form obtiene el valor correcto tanto el nro de cuenta (bseg-hkont(07). = 1101122B) como lo que almaceno en p_e_gsber = M002

Cuando retorna a:

PERFORM move_div CHANGING e_gsber..
Y le coloco que me muestre que valor tiene en la cuenta y gsber me trae:

Cuenta: 2100300
2100500
gsber = M001.

Y estos valores no son los que debo recibir, no se si estoy colocando algo incorrecto. Por eso queria saber como funciona el using y changing en un form.

Muchas Gracias

Saludos

Ana

Buenas,
en el primer form has definido e_gsber como using, pero luego en el segundo form lo defines como changing ¿?, pero eso no lo modifica.

Adicionalmente a lo de Salco, ¿por que en vez de hacer lo de arriba, no haces un select single?

Hola.

Llamo al form asi:
FORM u600 USING e_gsber TYPE bseg-gsber.

PERFORM move_div CHANGING e_gsber.

ENDFORM.

Y en Fom esta asi:
FORM move_div CHANGING p_e_gsber.

Como debe ser entonces? Es que no entendo lo de using y changing

Gracias

Ana

Originalmente estaba como select single pero aqui esta sap en la nube (hana) y se recomienda hacerlo de esa manera con el UP TO 1 ROWS.

si el parametro debe ser del mismo tipo tanto en el form como en el perform (using, changing…)

en cuanto al select endselect, hana y el up to 1… hasta donde se (y no es mucho) hana no usa la clave primaria para los accesos a la base de datos por lo que el select single no es eficiente, pero no estoy tan segura de que se deban hacer select endselect…

edito: respecto al select enselect me dicen que con hana hay casos en los que si se usa, que con el endselect no te traes los datos a la memoria principal si no a la interfaz de la base de datos… nunca te acostaras sin aprender algo nuevo :slight_smile:

1 me gusta

Chequea el link te indica la diferencia entre using y el changing

h_ttp://www.erpgreat.com/abap/difference-between-changing-and-using.htm (quita el _ del comienzo)

Muchas Gracias

Saludos

Ana

Este tema se cerró automáticamente 91 días después del último post. No se permiten nuevas respuestas.