Ayuda SAP

Ayuda con creacion funcion

Estimados… buenos dias.
Estoy creando mi primer desarrollo para producción y ando un poco perdido.
Ya con mucho esfuerzo cree una función con un par de valores de input y una estructura de output. La he probado con un codigo en duro y funciona.
Pero, quisiera consultar si alguno tiene un ejemplo de cóigo para la función que tenga un select y que el resultado lo exporte en una estructura.

mi estructura es esta y si pongo los valores asi en duro el export funciona correctamente, pero ahora debo poner los resultados de una query y enviarlos en el export. (y no lo he podido hacerrrrr!!! :frowning: )

ITAB-CODIGO_OB = '1111'.
ITAB-TIPO_OB = 'CECO1'.
ITAB-OBJETO = 'CENTRO DE COSTOS DE conta'.
ITAB-CLASE_OBJETO = 'C1'.
ITAB-RESPONSABLE = '1260'.
ITAB-NOM_RESPONSABLE = 'LUIS BAEZA1'.

disculpen la molestia .

Luis, puedes enviarme la definiciones de esos campos y te envío una codificación de ejemplo que puedes utilizar

Lo que deberías hacer en es crear es una estructura tipo Table y colocar la misma en la definición pestaña export de tu función.
Dentro de la función hacer el Select y poblar una tabla interna que luego lo moverás a la tabla que definiste en la pestaña Export

1 me gusta

image
image

La estructura es igual a esta. Solo tipos char

ITAB-CODIGO_OB = ‘1111’.
ITAB-TIPO_OB = ‘CECO1’.
ITAB-OBJETO = ‘CENTRO DE COSTOS DE conta’.
ITAB-CLASE_OBJETO = ‘C1’.
ITAB-RESPONSABLE = ‘1260’.
ITAB-NOM_RESPONSABLE = ‘LUIS BAEZA1’.

y este es el trozo de programa quer ya he logrado depurar para que no me de error

DATA:BEGIN OF TI_OBJETOS OCCURS 0,
CODIGO_OB TYPE CSKS-KOSTL,
* TIPO_OB TYPE C,
OBJETO TYPE CSKT-LTEXT,
CLASE_OBJETO TYPE CSKS-KOSAR,
RESPONSABLE TYPE CSKS-VERAK,
NOM_RESPONSABLE TYPE USER_ADDRP-NAME_TEXT,
END OF TI_OBJETOS.

SELECT CSKS~KOSTL AS CODIGO_OB,
CSKT~LTEXT AS OBJETO,
CSKS~KOSAR AS CLASE_OBJETO,
CSKS~VERAK AS RESPONSABLE,
'LUCHO' AS NOM_RESPONSABLE
INTO CORRESPONDING FIELDS OF TABLE @TI_OBJETOS
FROM CSKS
INNER JOIN CSKT ON CSKS~KOSTL = CSKT~KOSTL
WHERE CSKS~KOKRS = 'UCM0'
and CSKS~BUKRS = 'UCM'.

hasta aqui no me da error pero no se como es la sintaxis de los comandos para que el resultado de ese select se vaua al parametro de output con todos sus registros.

Si me pudireras ayudar @Abap_EC te lo agradecería

creo que no se como mover los datos a la tabla de salida.
asi me funciona …con datos en duro:

SPAN { font-family: "Courier New"; font-size: 10pt; color: #000000; background: #FFFFFF; } .L0S33 { color: #4DA619; } .L0S55 { color: #800080; } .L0S70 { color: #808080; } ITAB-CODIGO_OB = '1111'.
ITAB-TIPO_OB = 'CECO1'.
ITAB-OBJETO = 'CENTRO DE COSTOS DE TITAN1'.
ITAB-CLASE_OBJETO = 'C1'.
ITAB-RESPONSABLE = '12297060'.
ITAB-NOM_RESPONSABLE = 'LUIS BAEZA1'.

pero no se como colocar el total de registros que resultaron en el select.

Hola Luis un gusto saludarte prodrias hacer un loop con field symbol a tu tabla de salida tjve un problema parecido al tuyo pero en mi caso era por los includes q usaba mi función no me reconoció los parámetros de entrada

@paulo_vargas muchas gracias… se que por ahí va la respuesta. lo que no conozco es la sintaxis para usar el loop y llenar la estructura.
Intentare o buscaré ejemplos para lo que me indicas. Saludos

puedes probar con
Loop Tu_Tabla assign fieldsymbols (<fs_data>)
APPEND INITIAL LINE TO tutabla ASSIGNING FIELD-SYMBOL(<fs_itab>).
<fs_itab>- campo1 = <fs_data>-campo1
EndLoop.
Saludos.

1 me gusta

Por lo que veo la estructura que definiste localmente (TI_OBJETOS) y el tipo ZFICORRESPONSABLES que asignaste en el export es el mismo, si es así quita el ITAB de la pestaña de “export” y ponlo en la de “tablas”, luego en tu SELECT cambia el INTO CORRESPONDING FIELDS OF TABLE @TI_OBJETOS por INTO CORRESPONDING FIELDS OF TABLE @ITAB y listo.

La llamada a la función sería:

CALL FUNCTION 'TU_FUNCION' 
 EXPORTING
  CODIGO = variable1
  TIPO_OBJETO = Variable2
 TABLES
  ITAB = ITAB.
1 me gusta

GRACIAS @PAULO_VARGAS… Lo puse y yta parece que va andando… aún tengo problemas con la salida pues me dice que trae cero registros cuando ya comprobé que deben ser dos.
Pero ahí sigo intentando con los aportes como el tuyo. Te agradezco montones.

gracias @ponxo123
Agregué tu aporte y en teoría el programa debería funcionar pero me devuelve cero registros debiendo devolver 2.
Te cuento que, siguendo el código paso a paso hasta el select llega todo correctamente
(El select esta correcto pues lo verifiqué probandolo separadamente.)
pero luego que sale del select ya el sy-subrc llega con problemas.
Si pongo a mano el valor de de la tabla itab el programa continuo normalmente y sale con los datos.
Supongo que ahora lo único que me resta por descubrir es por qué el selct no devuelve datos al ejecutarse. imagino que será algún tipo de dato el que me está molestando.
Gracias por aportarme.
Saludos

1 me gusta

Gracias a sus aportes pude por fin “ver la luz”.
Logré recuperar datos desde la query en una tabla de export.
Fue difícil pero con esfuerzo, tesón y la ayuda de uds, pude sacar adelante.

Saludos

2 Me gusta

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