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.
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