[SAP] Vamos desenvolver um software (simples) em ABAP
Olha só... depois de tanto tempo...
Primeiramente, gostaria de explicar o motivo de eu ter ficado tanto tempo sem postar os conteúdos de ABAP: eu virei pai! Sim, meu menino nasceu e tomou todo o meu tempo só para ele kkkkk
Mas agora, com a rotina mais organizada, consigo voltar a postar conteúdos aqui!
Se você, caro leitor, não está acompanhando a saga, dá uma olhada neste agrupador aqui
A promessa do próximo post era a de desenvolver um software (simples) em ABAP, para poder exemplificar algo mais concreto, real, do dia a dia. Então vamos lá!
A ideia aqui é desenvolver um relatório que exiba uma lista de pedidos de compras criados no ano de 2023, com recursos de filtro, ordenação e até mesmo exportar para Excel.
Segue o código (utilizando a nova sintaxe do ABAP, veja mais sobre aqui):
REPORT z_lista_pedidos.
SELECT *
FROM ekko
INTO TABLE @DATA(lt_ekko)
WHERE aedat GE '20230101'.
IF sy-subrc IS INITIAL.
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(lo_salv)
CHANGING
t_table = lt_ekko ).
DATA(lo_functions) = lo_salv->get_functions( ).
lo_functions->set_all( abap_true ).
lo_salv->display( ).
ELSE.
MESSAGE 'Não há pedidos de compras disponíveis em 2023' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
E o resultado é:
Percebam que é um trecho pequeno de código, mas que nos diz muitas coisas, como:
- A busca no banco de dados acontece direto no código, validando a sintaxe da query, e podemos utilizar todas as vantagens do SQL e ainda inserir o resultado em uma tabela interna declarada dinamicamente;
- O ABAP permite a utilização de orientação a objetos, como no caso do método FACTORY, da classe CL_SALV_TABLE, que nos retorna um objeto do tipo ALV (Advanced List Viewer), qual nos permite determinar quais funcionalidades essa lista terá (filtros, ordenação, exportar para Excel, etc.) por meio do objeto LO_FUNCTIONS;
- Podemos disparar mensagens sem complexidade. Inclusive, uma mensagem com o comportamento de sucesso, porém, disfarçada de erro (uma mensagem de erro faria com que o programa fosse "cancelado").
Claro que é possível desenvolver programas muito mais interessantes. Por exemplo, vamos melhorar essa data de corte, fazendo com que o usuário possa determinar a data. E também vamos melhorar os campos a serem exibidos, qual queremos somente o número do pedido, a data de criação, quem criou, qual é o fornecedor e qual é o valor total do pedido.
Segue o novo código:
REPORT z_lista_pedidos.
PARAMETERS p_aedat TYPE ekko-aedat.
START-OF-SELECTION.
SELECT ebeln AS pedido,
aedat AS data_criacao,
ernam AS criador,
lifnr AS fornecedor,
rlwrt AS valor
FROM ekko
INTO TABLE @DATA(lt_ekko)
WHERE aedat EQ @p_aedat.
IF sy-subrc IS INITIAL.
cl_salv_table=>factory(
IMPORTING
r_salv_table = DATA(lo_salv)
CHANGING
t_table = lt_ekko ).
DATA(lo_functions) = lo_salv->get_functions( ).
lo_functions->set_all( abap_true ).
lo_salv->display( ).
ELSE.
MESSAGE 'Não há pedidos de compras disponíveis em 2023' TYPE 'S' DISPLAY LIKE 'E'.
ENDIF.
E o resultado foi:
No código, podemos perceber que eu criei um PARAMETER, mas poderia ser um range de datas (SELECT-OPTIONS). E também foi necessário adicionar o evento START-OF-SELECTION, que separa o que vem antes da seleção e o que vem depois.
Tem MUITAS OUTRAS FORMAS de se desenvolver um software em ABAP. Este foi o exemplo mais simples que consegui encontrar para "dar um gostinho", mas é possível fazer muito mais, com muito mais recursos.
Segue acompanhando meus posts que com o tempo irei mostrar mais e mais sobre o ABAP ;)
É bacana você postar essas coisas para as pessoas terem um pouco mais de contato com algo diferente. Acho que nã oserá muito relevante para outras pessoas, mas também acho que o objetivo nem é ensinar as pessoas de fato (se não tinha percebido isso, é algo para pensar). O grosso das pessoas verão isso aqui só como curiosidade.
Minha sugestão é mostrar o que a linguagem tem de diferente. Ressalte que usa o . que vem do COBOL (digamos, irmã mais velha ou uma tia de ABAP), o que é o DATA()
(rapidamente, já que tem explicação mais detalhada em outra postagem) e as outras (possíveis) palavras-chave que as pessoas podem não saber o que é (acho que MESSAGE
todo mundo entendeu). Faça as pessoas entenderem o código mesmo sem nunca ter visto ABAP.
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
Olá Murilo, te conheci através de uma live que fez com o Marcos Alencar, fico feliz em ver que continua postando conteúdos aqui no TabNews, como disse que ia fazer na live. Estou estudando ABAP, ainda estou no início e conteúdos assim são essenciais, muito obrigado!
Olá Murilo, muito legal essa "Saga" SAP aqui, estou começando a me envolver no setor de SAP e gostaria de criar aplicações SAP, mais precisamente criar APIs dentro do SAP porém sinto dificuldade em encontrar materiais valiosos como esse aqui. O negócio é uma Ferrari e eu quero andar como se fosse um fusca rsrs
Mas parabéns pelo POST, muito bom.
Abs
Olá Murilo, entrei no mundo SAP a pouco tempo e seus conteúdos por aqui ajudam bastante! Obrigado!