¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo corregir un módulo de función en ABAP para mostrar la salida correcta

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 84 Vistas
0
Cargando...

Hola a todos.

He creado un módulo de función <b>(Tcode SE37)</b>. No está dando ningún error de sintaxis, mi problema es que no muestra la salida.

Por favor, revisa este código y ayúdame a corregirlo.

Programa principal.

parámetros: planta tipo zmonthpay-dcode.

datos: inicio de itab2 ocurre 0,

nombre(20),

edad(2),

trabajo(5),

fin de itab2.

LLAMAR FUNCIÓN 'ZP_FM1'

EXPORTACIÓN

planta = planta

tablas

itab1 = itab2

.

escribir: itab2-nombre, itab2-edad, itab2-trabajo.

Código del módulo de función:-

<b>Parámetro de importación: planta.

Tablas: itab1</b>

FUNCIÓN ZP_FM1.

datos: inicio de itab ocurre 0,

nombre(20),

edad(2),

trabajo(5),

fin de itab.

si planta = 'AD00'.

itab-nombre = 'prajwe'.

itab-edad = '24'.

itab-trabajo = 'abap'.

añadir itab.

fin si.

si planta = 'IC00'.

itab-nombre = 'prajwe12'.

itab-edad = '25'.

itab-trabajo = 'abap1'.

añadir itab.

sino.

itab-nombre = 'prajwe13'.

itab-edad = '26'.

itab-trabajo = 'abap2'.

añadir itab.

fin si.

mover itab[] a itab1[].

añadir itab1.

FINFUNCIÓN.

Por favor ayúdame.

Saludos.

Prajwal.k

Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

4 Respuestas

0
Cargando...

Hola Hymavathi.

Sí, he declarado. Pero no he mencionado el tipo asociado.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

¿En la lógica del módulo fn, declaraste itab en la columna de tablas?

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola

revisa el documento del módulo de diversión y actúa en consecuencia

Los Módulos de Función son programas ABAP globales creados por SAP con propósitos reutilizables. Tienen parámetros de IMPORT, EXPORT y TABLE, y EXCEPCIONES para lanzar cuando ocurre un error.

Puedes crearlos desde la transacción SE37.

Revisa el siguiente documento:

Los módulos de función son procedimientos reutilizables entre programas, organizados en grupos de funciones, cuyas funciones se implementan entre las sentencias FUNCTION y ENDFUNCTION. Los módulos de función y sus interfaces se crean en el Constructor de Funciones.

Interfaces de Módulos de Función

La interfaz de parámetros de un módulo de función se define en el Constructor de Funciones. Incluye la definición de parámetros de interfaz y la especificación de excepciones que pueden ser desencadenadas por un módulo de función. El Constructor de Funciones genera automáticamente líneas de comentarios debajo de la sentencia FUNCTION en el código fuente del módulo de función, que representan la interfaz del módulo de función con la siguiente sintaxis:

Sintaxis

... [parámetros de IMPORTING]

[parámetros de EXPORTING]

[parámetros de CHANGING]

[parámetros de TABLES]

[{RAISING|EXCEPTIONS} exc1 exc2 ...]

La sintaxis y semántica de IMPORTING, EXPORTING, CHANGING, RAISING y EXCEPTIONS corresponden principalmente a la definición de interfaces de métodos con [CLASS-]METHODS. La opción adicional de definir parámetros de tabla usando TABLES está obsoleta.

Parámetros de Interfaz

Los parámetros de interfaz se definen en las pestañas relevantes en el Constructor de Funciones.

Los parámetros de IMPORTING son parámetros de entrada. Cuando se llama al módulo de función, se debe especificar un parámetro actual adecuado para cada parámetro de entrada no opcional. El contenido del parámetro actual se pasa al parámetro de entrada cuando se realiza la llamada. El contenido de un parámetro de entrada para el cual se define 'paso por referencia' no se puede cambiar en el módulo de función.

Los parámetros de EXPORTING son parámetros de salida. Cuando se llama al módulo de función, se puede especificar un parámetro actual adecuado para cada parámetro de salida. El contenido de un parámetro de salida que está definido para 'paso por valor' se transfiere al parámetro actual si el módulo de función se completa sin errores. Un parámetro de salida que está definido para paso por referencia no se inicializa cuando se llama al módulo de función.

Los parámetros de CHANGING son parámetros de entrada y salida. Cuando se llama al módulo de función, se debe especificar un parámetro actual adecuado para cada parámetro de entrada o salida no opcional. Cuando se llama al módulo de función, se pasa el contenido del parámetro actual al parámetro de entrada/salida, y cuando se completa el módulo de función, se pasa el contenido del parámetro de entrada/salida al parámetro actual.

Los parámetros de TABLES son parámetros de tabla. Los parámetros de tabla son parámetros CHANGING obsoletos que están tipificados como tablas estándar con una línea de encabezado. Si se pasa una tabla interna sin una línea de encabezado o un cuerpo de tabla como un parámetro actual a un parámetro formal de este tipo, se genera una línea de encabezado local vacía en el módulo de función. Si se utiliza una tabla interna con una línea de encabezado como un parámetro actual, tanto el cuerpo de la tabla como la línea de encabezado se pasan al módulo de función. No es posible pasar por valor en parámetros formales definidos usando TABLES. Los parámetros formales definidos con TABLES pueden ser reemplazados por parámetros formales definidos con CHANGING. Se puede crear un área de trabajo local para la tabla interna en el módulo de función utilizando la adición LIKE LINE OF itab de la declaración DATA.

Excepciones

Las excepciones de un módulo de función se definen en la pestaña Excepciones en el Constructor de Funciones. Aquí puedes seleccionar clases de excepción para definir si se declaran excepciones basadas en clases o se definen excepciones no basadas en clases. Las excepciones basadas en clases se representan en la sintaxis anterior por RAISING, y las excepciones no basadas en clases se representan por EXCEPTIONS.

La adición RAISING se utiliza para declarar excepciones basadas en clases que pueden propagarse desde el módulo de función al llamante. Las excepciones en las categorías CX_STATIC_CHECK y CX_DYNAMIC_CHECK deben declararse explícitamente, de lo contrario, una propagación puede llevar a una violación de la interfaz. Una violación de la interfaz conduce a la excepción tratable CX_SY_NO_HANDLER. Las excepciones de la categoría CX_NO_CHECK siempre se declaran implícitamente. La declaración de excepciones de la categoría CX_STATIC_CHECK se verifica estáticamente en la comprobación de sintaxis. Para excepciones de la categoría CX_DYNAMIC_CHECK, la verificación no se realiza hasta el tiempo de ejecución. En un módulo de función en el que se declaran excepciones basadas en clases con la adición RAISING, no se puede usar

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019
0
Cargando...

Hola,

Al escribir los valores de itab2, haz un bucle y luego intenta escribir

loop at itab2.

write: itab2-field1, itab2-field2.

endloop.

Saludos

Karhik, si aún tienes errores, envía un mensaje.

Respondido el 15/04/2024
LUCIANO RIOJA GHIOTTO
Se unió el 13/07/2019

contacto@primeinstitute.com

(+51) 1641 9379
(+57) 1489 6964

© 2024 Copyright. Todos los derechos reservados.

Desarrollado por Prime Institute

¡Hola! Soy Diana, asesora académica de Prime Institute, indícame en que curso estas interesado, saludos!
Hola ¿Puedo ayudarte?