Projetos Open Source e pessoais como oportunidade de … · 2013. 12. 22. · Classe CL_SALV_TABLE...

38
Projetos Open Source e pessoais como oportunidade de aprendizado Por Fábio Pagoti 20131213

Transcript of Projetos Open Source e pessoais como oportunidade de … · 2013. 12. 22. · Classe CL_SALV_TABLE...

  • Projetos Open Source e pessoais como oportunidade de aprendizado

    Por Fábio Pagoti 20131213

  • WRITE: me->get_short_bio( ).

    •  Formado em Sistemas de Informação pela USP

    •  ABAPer desde 2009 •  Autor do blog ABAP101.com •  Instrutor ABAP •  Orgulha-se por nunca haver copiado

    um programa standard

    •  100% ABAP Objects •  Fã do WordPress

  • Projetos Open Source em ABAP

    •  Screen Breaker (evita LOOP AT SCREEN) •  ABAP FileMan (GUI_DOWNLOAD/OPEN DATASET) •  ABAPDoc v2 (similar a JavaDoc) •  ABAP Jan-Ken-Pon (Testes unitários) •  ABAP Tic-Tac-Toe (Web Dynpro – MVC) •  WB Objects Framework •  ABAP2YUML

  • Projetos Open Source e pessoais como oportunidade de aprendizado

  • Esta apresentação não pretende discutir

    •  O que é um projeto Open Source

    •  Licenças / termos de uso do MiniSAP ou afins

    •  Possível interesse da SAP em código aberto

    •  Detalhes de programação ABAP

  • ABAPer de final de semana IF sy-daqui IS INITIAL. “ Do something… ENDIF.

  • ABAPer de final de semana

    •  Documentação para iniciar é abundante

    •  Se você não investe tempo em você mesmo, por que sua empresa deveria te pagar um treinamento?

    •  Cursos, por melhor que sejam, nunca serão o suficiente

    •  Você não deixa de ter vida social (se usar o Facebook sim)

    •  2 horas de estudo por semana em 1 ano ~ tempo de 1 curso

  • ABAP2YUML e WB Objects Meu curso de final de semana de ABAP

  • YUML

    •  Yuml.me

    •  Grátis

    •  Serviço para geração de UML

    •  Online ou através de um DSL

  • YUML

    [note: You can stick notes on diagrams too!{bg:cornsilk}],

    [Customer]1-orders 0..*>[Order], [Order]++*-*>[LineItem],

    [Order]-1>[DeliveryMethod], [Order]*-*>[Product], [Category] [ P r o d u c t ] , [ D e l i v e r y M e t h o d ] ^ [ N a t i o n a l ] ,

    [DeliveryMethod]^[International]

  • Propostas do Projeto

    •  Tornar ridiculamente fácil a geração de UML através de código ABAP

    •  Não possuir dependências como a ferramenta standard

    •  Dar mais um motivo para acabar com o mundo procedural

    •  Exemplo de trabalho bem feito

  • Oportunidades de Aprendizado

    •  Todo mundo tem uma lista de “coisas a aprender”

    •  A minha: o  R

    o  Predictive Analysis Library (PAL)

    o  eCATT

    o  BOL

    o  Violão

  • 100% ABAP Objects

  • ABAP Unit & TDD (Test Driven Development)

  • BDD (Behavior Driven Development)

    •  GIVEN-WHEN-THEN

    •  Teste que o “funcional” entenda

    •  Documentação executável

  • GIVEN-WHEN-THEN

    DADO

    Classe CL_SALV_TABLE e

    Método FACTORY

    QUANDO

    Método get_format é chamado

    ENTÃO

    Formatação é em itálico

  • Exemplo de GIVEN-WHEN-THEN

  • Reutilização de código standard

    •  Investigação

    • Debug

    •  Interpretação de código alheio

  • WB Objects Framework

    •  Framework para carregar informações de objetos do repositório

    •  Classes e Interfaces Locais e Globais

    •  Útil para outros projetos que dependam desta informação:

    o  SAPLink

    o  ABAPDoc2

    o  etc

  • WB Objects Framework

  • WB Objects Framework

  • WB Objects Framework

  • Enhancement Framework

    •  Técnica mais poderosa e provavelmente menos usada de modificação do standard.

    DADO

    Transação SE21 e Pacote é Z*

    QUANDO

    Pacote é salvo

    ENTÃO Mensagem “Deseja gerar UML” deve ser exibida

  • Enhancement Framework - Exemplo

  • Enhancement Framework - Exemplo

  • Controllers WEB & Web Dynpro

  • Shared Objects

    •  Substituto do EXPORT/IMPORT

    Shared Objects

    Exit User1

    Report User1

    WD User 2

    Report User 2

  • Shared Objects – Tcodes SHMA & SHMM

  • Mas não é só código… … que bom! No dia-a-dia também não é.

  • Documentação

    •  Se é “Open”, é para os outros

    •  Se é para os outros, eles devem entender

    •  Se eles devem entender, é seu dever explicar

  • Contato com usuários

    •  Quem só quer baixar seu projeto e usá-lo é seu usuário.

    •  Quem quer ver seu produto melhor é seu cliente.

    •  Não os deixe na mão

  • Release Management

    •  .zip / .nugg ?

    •  Como controlo as versões?

    •  Como organizar os frameworks que dependo?

    •  Quem tem a versão 1 precisa desinstalar para usar a 2?

    •  Como devo anunciar as alterações?

    •  Como decidir qual a próxima melhoria?

  • Git & GitHub

    •  Git abre portas para o aprendizado •  Usado pela SAP para alguns projetos

  • SAPLink

    •  SAPLink te permite espalhar o seu trabalho mundo afora.

  • Para finalizar, qual o status do projeto?

  • Amanhã é sábado! Codifique

  • Fábio Pagoti [email protected]

    @fabiopagoti

    fabiopagoti .com