¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Cómo estructurar un informe ABAP orientado a objetos para conciliar partidas abiertas de un socio comercial

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 12 Vistas
0
Cargando...
Estoy escribiendo esta publicación de blog para demostrar cómo podemos estructurar un informe ABAP de manera orientada a objetos que nos ayude a resolver un problema de la vida real. Quiero afirmar en primer lugar que no creo que mi ejemplo abarque todas las mejores prácticas de POO, pero es un intento honesto de un ABAPer procedural de hacer la transición al mundo orientado a objetos.

La solicitud fue crear un informe que ayudara a conciliar partidas abiertas de un socio comercial entre sí. El socio comercial estaba configurado en el sistema con los roles de Cliente y Proveedor. Entonces, el propósito de nuestro programa es encontrar si se han generado entradas contables para un socio comercial tanto como cliente como proveedor y si el monto total de estas entradas es cero. Por lo tanto, puedes entender que si encontramos tales entradas, debemos conciliarlas ejecutando el código de transacción FB05.

Las entradas contables debían conciliarse de acuerdo con uno de los siguientes criterios:

  • ZUONR - Asignación

  • XREF2 - Clave de referencia 2

  • XBLNR - Referencia


La imagen a continuación muestra la pantalla de selección de nuestro programa personalizado:


He organizado mi código de una manera similar al Patrón de Objeto MCV y digo similar, porque mis tres clases no hacen exactamente lo que se supone que deben hacer si seguimos estrictamente este patrón.

Así que he creado estas tres clases para ayudar con la lógica del programa:

  1. lcl_read_data --> Lee partidas abiertas para los proveedores y clientes y guarda los datos leídos en los atributos de instancia mt_bsik (Proveedores) y mt_bsid (Clientes)

  2. lcl_process_data --> Utiliza la clase anterior como un atributo de instancia para tener acceso a los datos de cliente y proveedor. La clase luego combina los datos de estas dos fuentes e identifica qué líneas se pueden conciliar entre sí. Por último, si el usuario no ha ejecutado una prueba, se borran estos elementos identificados a través del código de transacción FB05. Después de todo el procesamiento, los datos se guardan en el atributo de instancia mt_total .

  3. lcl_display_data --> Utiliza la clase lcl_process_data como un atributo de instancia para tener acceso a los datos procesados y mostrarlos en un ALV.


He creado el objeto principal ZFI_PAREGGIO_CLNT_FORN y algunos Includes para modularizar el programa. A continuación, el código de este objeto:
&----------------------------------------------------------------------*
    *& Informe ZPAREGGIO_CLNT_FORN
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT zfi_pareggio_clnt_forn.

    INCLUDE zfi_pareggio_clnt_forn_top.  "Declaraciones globales
    INCLUDE zfi_pareggio_clnt_forn_sel.  "Definición de PANTALLA DE SELECCIÓN
    INCLUDE zfi_pareggio_clnt_forn_def.  "Definición de Clase
    INCLUDE zfi_pareggio_clnt_forn_imp.  "Implementación de Clase
    INCLUDE zfi_pareggio_clnt_forn_form. "Formulario para manejar clics en áreas activas

    *----------------------------------------------------------------------*
    * Evento de INICIALIZACIÓN
    *----------------------------------------------------------------------*
    INITIALIZATION.
        DATA(gt_list) = VALUE vrm_values(
            ( key = 'ZUONR' text = TEXT-t01    
            
Pedro Pascal
Se unió el 07/03/2018
Pinterest
Telegram
Linkedin
Whatsapp

Sin respuestas

No hay respuestas para mostrar No hay respuestas para mostrar Se el primero en responder

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?