¡Caminando hacia el éxito!

Aprende en Comunidad

Avalados por :

Como estruturar um relatório ABAP orientado a objetos para conciliar partidas em aberto de um parceiro comercial

  • Creado 01/03/2024
  • Modificado 01/03/2024
  • 2 Vistas
0
Cargando...
Estou escrevendo esta postagem de blog para demonstrar como podemos estruturar um relatório ABAP de forma orientada a objetos que nos ajude a resolver um problema da vida real. Quero afirmar, em primeiro lugar, que não acredito que meu exemplo abranja todas as melhores práticas de POO, mas é uma tentativa honesta de um programador ABAP procedural fazer a transição para o mundo orientado a objetos.

A solicitação era criar um relatório que ajudasse a conciliar lançamentos em aberto de um parceiro comercial entre si. O parceiro comercial estava configurado no sistema com os papéis de Cliente e Fornecedor. Portanto, o propósito do nosso programa é encontrar se foram gerados lançamentos contábeis para um parceiro comercial tanto como cliente quanto como fornecedor e se o valor total desses lançamentos é zero. Portanto, você pode entender que se encontrarmos tais lançamentos, devemos conciliá-los executando o código de transação FB05.

Os lançamentos contábeis deveriam ser conciliados de acordo com um dos seguintes critérios:

  • ZUONR - Atribuição

  • XREF2 - Chave de referência 2

  • XBLNR - Referência


A imagem abaixo mostra a tela de seleção de nosso programa personalizado:


Organizei meu código de forma semelhante ao Padrão de Objeto MCV e digo semelhante, porque minhas três classes não fazem exatamente o que se espera se seguirmos estritamente esse padrão.

Então, criei essas três classes para ajudar na lógica do programa:

  1. lcl_read_data --> Lê lançamentos em aberto para fornecedores e clientes e salva os dados lidos nos atributos de instância mt_bsik (Fornecedores) e mt_bsid (Clientes)

  2. lcl_process_data --> Usa a classe anterior como um atributo de instância para ter acesso aos dados do cliente e do fornecedor. A classe então combina os dados dessas duas fontes e identifica quais linhas podem ser conciliadas entre si. Por fim, se o usuário não tiver executado um teste, esses itens identificados são excluídos através do código de transação FB05. Após todo o processamento, os dados são salvos no atributo de instância mt_total .

  3. lcl_display_data --> Usa a classe lcl_process_data como um atributo de instância para ter acesso aos dados processados e exibi-los em um ALV.


Criei o objeto principal ZFI_PAREGGIO_CLNT_FORN e alguns Includes para modularizar o programa. Abaixo, o código deste objeto:
&----------------------------------------------------------------------*
    *& Relatório ZPAREGGIO_CLNT_FORN
    *&---------------------------------------------------------------------*
    *&
    *&---------------------------------------------------------------------*
    REPORT zfi_pareggio_clnt_forn.

    INCLUDE zfi_pareggio_clnt_forn_top.  "Declarações globais
    INCLUDE zfi_pareggio_clnt_forn_sel.  "Definição de TELA DE SELEÇÃO
    INCLUDE zfi_pareggio_clnt_forn_def.  "Definição de Classe
    INCLUDE zfi_pareggio_clnt_forn_imp.  "Implementação de Classe
    INCLUDE zfi_pareggio_clnt_forn_form. "Formulário para lidar com cliques em áreas ativas

    *----------------------------------------------------------------------*
    * Evento de INICIALIZAÇÃO
    *----------------------------------------------------------------------*
    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?