Minha sessão no SITSL 2014 – SAPUI5 for everything
No mês passado tivemos um grande evento no SAP Labs em São Leopoldo – RS, o SAP Inside Track 2014. O evento é organizado pela própria comunidade SAP e é basicamente um espaço para troca de conhecimento e experiência, ou seja, um lugar onde podemos ter boas conversas sobre as novidades do mundo SAP.
Logo que terminou o evento, pensei em escrever um blog falando como tinha sido o evento, mas o Jose Nunes postou um ótimo blog falando como tinha sido tudo por lá. Ele falou do evento, do SAP Labs, das sessões, etc. Confira o blog aqui: Minha experiência no SITSL 2014
Como o assunto já foi muito bem explorado no blog e o pessoal tem me pedido bastante para compartilhar a apresentação e os exemplos de código, resolvi falar um pouco da sessão que apresentei e compartilhar o material com a comunidade.
No SITSL 2014, eu tive o prazer de apresentar uma sessão sobre SAPUI5. Abordei diversos tópicos, pois minha intenção era mostrar o poder e a flexibilidade do SAPUI5. Despertar a curiosidade do público, fazer as pessoas verem o potencial da tecnologia e ir além do padrão SAPUI/SAP Gateway. Falei sobre os passos iniciais para começar a criar apps com SAPUI5, quais programas usar, onde fazer o download, etc. Depois falei sobre a arquitetura MVC, mostrei os tipos de Views e Models. Apresentei exemplos de como podemos conectar uma aplicação SAPUI5 com virtualmente qualquer background. Teve demo de app consumindo dados de webservices (JSON), de SAP Gateway (OData), de SAP PI (xml) e de SAP HANA (OData). Teve também um demo de um app conectando com o Google Maps e usando o recurso de Geolocation do HTML5 para exibir a localização atual do usuário. Por último, mas não menos importante, mostrei como podemos converter UI5 apps em aplicações nativas para iOS, Android, Windows Phone, etc. Podendo inclusive publicar nosso UI5 app (convertido) na Apple App Store ou no Google Play.
Ao final da sessão tive o prazer de conversar com muita gente com dúvidas e curiosidades sobre o SAPUI5. Alguns interessados em começar a brincar com SAPUI5 também e outros que já haviam começado a brincar, mas estavam enfrentando alguns problemas nas aplicações e gostariam de saber como solucionar. As conversas foram boas e renderam bastante. Mesmo dias após o final do evento pessoas entravam em contato comigo para tirar dúvidas e/ou pedir o material da apresentação.
Bueno, vamos ao que interessa.
Abaixo temos os links para os slides da apresentação e para o GitHub com os códigos das apps usadas de demo.
Apps demo:
https://github.com/mauriciolauffer/SAPInsideTrack2014-SaoLeo
Slides Apresentação:
PS: os códigos foram um pouco modificados, pois removi os trechos com user/senha por questões de segurança.
Bom dia Lauffer,
Excelente apresentação, queria ter visto ao vivo.
BTW: Tem em video?
Abraços, Fernando Da Rós
Grande Da Rós!
Muito obrigado!
Ouvi dizer que colocarão as apresentações no youtube: SIT Brasil - YouTube
Mas ainda não subiram os vídeos. Quando subirem eu atualizo o blog com o link 😉
Oi Maurício!
Eu não fui no evento infelizmente mas acompanhando seus slides tenho certeza que teria várias perguntas. Estou também dando meus segundo e terceiro passos no caminho ao aprendizado de SAPUI5 (btw, este blog > My path to learning OpenUI5.....deeper down the rabbit hole and back again! é quase um must para quem está na mesma situação).
Se pudermos debater 2 questões minhas via comentários (e convido qualquer leitor deste comentário a participar também), eu agradeço muito.
1 - Web Dynpro e FPM
A primeira é algo que já perguntei se não estou enganado no curso de Fiori da OpenSAP e que não tive muitas respostas nem tão convincente assim por lá. Dado o SAPUI5/OpenUI5, onde fica o Web Dynpro e o FPM? Estudando a estratégia de UX da SAP (new, renew, enable) fica quase claro que eles não morreram nem morrerão (apesar de eu achar que o FPM nem chegou na pré adolescência). De acordo com a estratégia eu entendo que o SAPUI5/Fiori se encaixa mas nos produtos da parte "new" da estratégia e o Web Dynpro/FPM mais na parte "Renew/Enable" apesar nestas divisões não serem tão claras assim para mim.
Mas estratégia a parte, focando na prática nestes dois caras: Web Dynpro e FPM. O Web Dynpro deve estar próximo de completar 1 década e ainda vemos Reports e Module Pools a rodo por aí (até de produtos homologados pela SAP e seu ICC). É fato que o Web Dynpro está sendo usado pela SAP em muita coisa entregue (e posteriormente corrigido via OSS Notes na primeira semana de uso) mas o FPM para mim não chega nem a ser caviar pois nem dele eu ouço falar. Alguém aí sabe algo da SAP que usa FPM? Alguém se arrisca a dizer se já viu uma aplicação Z feita em FPM? Eu vi superficialmente os novos monitores de Nf-e e fiquei desconfiado que eles pudessem estar sendo feitos usando FPM mas precisaria de uma confirmação oficial. Para finalizar esta primeira questão, se você não faz a menor ideia o que é FPM, não se sinta mal pois como disse, IMHO não é nem caviar. Estaria a SAP adotando a estratégia "SAPUI5 for everything" independente se estamos falando de New/Renew/Enable?
<merchã>
http://abap101.com/2014/08/29/livro-web-dynpro-abap-comprehensive-guide/
</merchã>
2 - "Component Controller" no MVC do SAPUI5
Minha segunda pergunta é mais técnica, voltada ao MVC no SAPUI5 e uma possível melhor prática. Deixo claro que Web Dynpro para mim não é um deus mas eu gosto muito da separação View/Window/Component Controller. No SAPUI5, sinto falta do "Component controller". Onde colocar código usado em mais de um controller? Provavelmente eu diria "num arquivo JS a parte" mas isso ainda não é o bastante. Como/Quando/Onde carregar este arquivo JS a parte? Como reutilizá-lo em diversas aplicações sem sobrecarregar este arquivo (+/- como é feito num custom controller)? Como implementar hook methods ("OnInit", "OnEnd") nele sendo um arquivo javascript segregado?
Estou desenvolvendo uma aplicação que consome um conjunto de Web Services do New York Times. Uma das primeiras coisas que noto na construção de views no SAPUI5 é que o código fica grande mesmo se você dividir a construção de uma view em mais de uma função, como é mostrado no post abaixo
this.sapui5_break_view_creation = new br.com.hanabrasil.post("read_me",{
http://hanabrasil.com.br/2014/09/29/como-quebrar-construcao-de-visoes-em-partes/
})
Para quem quiser um outro exemplo de aplicação usando SAPUI5 (e pq não das um pull request?), segue o repositório abaixo.
var sapui5_great_example = new sap.ui.commons.Merchã({
fabiopagoti/NYT-Article-Search-on-SAPUI5 · GitHub
});
A solução que estou adotando é embutir visões em outras visões... e aí uma estrutura do MVC mas sólida começa a ser pedida. Ou pelo menos melhores práticas são necessárias. Você leitor deste longo comentário, tem alguma sugestão?
Obrigado pelo post e pela possibilidade de abrir esta discussão!
Abraços!
Olá, Fabio.
Bom demais poder levantar este tipo de debate por aqui. Acho que a comunidade brazuca ta muito atrás neste quesito. Debatemos pouco e temos poucos eventos para trocar ideia. E não me refiro apenas aos eventos oficiais da SAP, digo no geral mesmo.
Até hoje não surgiu nenhum Meetup (www.meetup.com) brazuca para se discutir tecnologias da SAP. Enquanto isso, nos EUA chega a ter mais de um por semana, a grande maioria para discutir HANA.
Não sei se é impressão minha, mas eu sinto meio que uma má vontade do ABAP brazuca de trocar conhecimento. São poucos os que fazem o que você fez com o ABAP101 (http://abap101.com). Tão poucos que conheço apenas o ABAP101 e o ABAP Zombie (www.abapzombie.com)...
Eu já falei com diversas pessoas aqui no sul (RS) para tentarmos algo como outras comunidades de desenvolvedores fazem. Grupos de Java, por exemplo, se organizam em pequenas reuniões para trocar experiências, falar sobre novos projetos e técnicas. São reuniões rápidas e informais, mas bem objetivas. Por enquanto não conseguimos nada, sempre fica naquela de "bah, a ideia é boa, mas ninguém vai". No geral, de todas as linguagens, nós ABAPers brazucas somos os programadores mais preguiços. Não corremos atrás das novidades a menos que seja obrigatório. Conheço gente que até hoje usa ALV de Função porque dá muito trabalho aprender o "novo" ALV OO, aquele que se usa desde 2000 (CL_GUI_ALV_GRID)...
Bueno, agora que já desabafei, vou tentar entrar na discussão levantada.
Vou quebrar em respostas diferentes para facilitar e não ter que responder de uma vez só 😉
Oi de novo Maurício,
Quanto aos meetups eu concordo totalmente. Na verdade afirmo que esta falta de meetups não ocorre só na esfera SAP por aqui. Dos poucos meetups disponíveis a grande maioria é sobre empreendedorismo e desenvolvimento não-SAP (ambos temas do meu interesse mas um tanto quanto restritivos por conta do horário, local e falta de divulgação). Mas ainda são poucos e não há nada fora da capital de SP. Tive a felicidade de morar fora do Brasil por um tempo e onde estava tinha até meetup de Frisbee no parque domingo as 3:00pm.
Eu mesmo já pensei em criar meetups de ABAP (e agora Hana incluso). Além de dificuldades como arrumar um bom espaço com uma infra legal e definir um horário que permita as pessoas que trabalham no morumbi e berrini chegar num outro lugar de SP, o principal problema que vejo é tornar o meetup propriedade das pessoas que vão nele.
Em outras palavras, o criador/organizador do meetup não pode ser o cara que sempre fala, sempre expõe algo novo, porque aí não é um meetup mas sim um "meet me", que é bem menos interessante. Acho que as pessoas iram a meetups caso existissem (assim como o público no SITSP geralmente é bom), mas pela experiência vejo que num curto prazo não haveria mais interesse pois como você mesmo disse, há uma certa má vontade em trocar conhecimento e isso é fundamental para que um grupo de meetup sobreviva com encontros bem mais frequentes que um SIT por exemplo.
Fui recentemente num meetup de GoLang aqui em SP (foi o terceiro do grupo) e deu para ver que quem apresenta os tópicos geralmente são os mesmos - o que não é ruim ao meu ver, mas insustentável quanto meetup. Btw, o grupo é formado por alunos de faculdade que estão iniciando em GoLang e nem trabalham com ele! Tapa na minha cara por não ter criado um meetup de ABAP até hoje.
Creio que antes de criar um meetup que precisa de um envolvimento maior de uma comunidade, o mais aconselhável seria criar hangouts num primeiro momento. Eles podem ter horários bem mais flexíveis (já participei de hangout começando meia noite) e não tem a barreira da localização.
Na parte de desenvolvimento, eu vejo um potencial enorme em habilitar participantes de um meetup/hangout construirem algo juntos. Eu estou estudando e aprendendo muito SAPUI5 e Hana. Seria bem mais proveitoso contruitir algo maior com outras pessoas interessadas neste tema também. Alguém interessado? Eu não conheço... Como encontrar estas pessoas? É uma boa pergunta cuja resposta desconheço.
Alguém?
Aliás... bom levantamente este também.
1 - Web Dynpro e FPM
Vamos começar pelo FPM.
Nunca participei de nenhum projeto que tivesse uma demanda de FPM. Até hoje, conheci apenas uma única pessoa que soubesse desenvolver com FPM, era um Canadense. Nunca ouvi falar de nenhuma empresa brasileira que use o FPM, mesmo as que usam Web Dynpro na maioria das vezes usam porque são obrigadas pelo standard da SAP. Geralmente por causa de NFe...
Agora vamos ao WD.
Não vai morrer tão cedo, assim como o bom e velho SAP GUI também não morrerá tão cedo. O WD ainda é sub-utilizado pelas empresas. Por exemplo, pouca gente conhece POWL (Personal Object Worklist - Portal Concepts - SAP Library) e menos ainda chegam a utilizar isto... Talvez seja pelo fato do NWBC também não ser conhecido nem utilizado. Agora com o SAP GUI 7.40, espero que isto mude, pois o SAP GUI poderá carregar programas feitos em WD e SAPUI5, da mesma forma que o NWBC.
Quanto à estragégia de UX, para simplificar, poderíamos dizer o seguinte.
Nesse link dá para ter uma ideia geral da estratégia elaborada:
SAP’s User Experience Strategy (http://experience.sap.com/ux-strategy)
Aqui tem MUITA informação de UX também: Gerrit Kotze's Blog on SAP UX
E o próximo link é o melhor de todos para entender melhor a estratégia de UX da SAP. Nele é possível ver os detalhes de cada tecnologia e o que tem planejado para o futuro delas.
SAP User Interface Technologies - Road Map
Pelo pouco que tive a oportunidade de ver "dentro" da SAP, não é tudo que está vindo com SAPUI5. Tem muita coisa nova vindo com a abordagem clássica de SAP GUI ainda. Produtos relacionados com NFe são quase todos Web Dynpro. O mais engraçado nisso tudo é que nem todos os novos produtos feitos com SAPUI5 são SAP Fiori 😛
Mais tarde eu volto para responder a 2a parte hehehe
Também concordo que o WD é subutilizado. Também acho que o WD contém algumas features que são praticamente descartáveis (ex: integração com Silverlight).
Os links que você colocou são muito bons. O experience.sap.com/ux-strategy eu vi em algum lugar na OpenSAP mas ainda acho que a prática não segue a estratégia 100% - ainda mais sabendo que tem coisa feita em tela clássica ainda.
Nem sabia da existência do SAPGUI 7.40 (na verdade pensei que ele morreria com o NWBC). Mas sou pessimista... nem o SAPGUI 7.30 é famoso pelo que vejo. As vezes penso que será mais rápido ganhar na loteria do que trabalhar com algumas tecnologias/produtos da SAP que ando estudando. Mas isso não é motivo para não estudar né.
Abraços e obrigado por me responder esta minha questão,
Só um comentário: nem tente instalar o SAPGUI 7.40 porque se não vai passar muita raiva. Simplesmente não funciona, nem o básico.
Eu vi muita gente tendo problema porque instalaram o pacote completo. Nem o SAP Router funcionava mais, ficava bugado.
Ah, e parece que ainda tem alguns problemas de integração com o Word/Excel.
Mas aqueles que instalaram APENAS o SAP GUI, sem aquele monte de coisa que vem junto no pacote, não tiveram problema nenhum. O SAP Router funciona normalmente e ainda vem de brinde o Blue Crystal Theme hehehehe 😛
Eu não instalei ainda. To esperando a versão 64 bits 😉
Rapaz, eu instalei tudo, depois tirei e coloquei só o SAP GUI e realmente não funciona.
O código fonte fica todo cheio de bugs, várias palavras em vermelho... realmente impossível de se trabalhar (ponto de vista ABAP).
eita!!!
bom saber, vou evitar por um bom tempo até ter boas notícias dessa versão hehehehe
2 - "Component Controller" no MVC do SAPUI5
Depois de muito tempo consegui achar uma folga e terminar de responder alguma coisa. Infelizmente não tenho as respostas 100% precisas para te dar, mas vou tentar acrescentar um pouco nesta segunda parte.
Ainda não fiz nada parecido, porém acredito que deva seguir uma lógica parecida com a usada em PHP e outros projetos web. Teríamos este "controller reutilizável" em um arquivo ".js" separado que seria carregado no "index.html" junto com os demais arquivos ".js" da aplicação. Também poderia ser carregado dinamicamente por AJAX, de dentro do "controller", usando um método do jQuery: $.getScript()
Em qualquer uma destas formas o arquivo não seria sobrecarregado, pelo contrário, iria otimizar a utilização do cache. O princípio básico é o mesmo da utilização de um CDN, onde vários sites apontam para o mesmo arquivo ".js" (hospedado em um servidor CDN) que é carregado uma única vez na máquina do user e é compartilhado por todo mundo, sem a necessidade de baixar diversas vezes o mesmo arquivo.
Como implementar hook methods, eu não sei te dizer. Nunca usei, nunca fui atrás para saber se tem como fazer também =/
Quanto ao fato de usar uma JS View quebrada em várias funções, é uma boa ideia para quem usa JS View.
Porém eu não concordo muito. Não gosto de JS View, acho que fica muito bagunçado, difícil de ler o código e terrível de dar manutenção. Quanto maior a view, maior o caos.
Acredito que o ideal seria usar XML View. Na minha opinião é a melhor forma de criar views. Se for o caso de dividir para facilitar a leitura e a manutenção, usa-se XML Fragments. Com isto podemos até deixar esta parte reutilizável em outras Views.
Parabéns pelo projeto, assim que me sobrar mais tempo vou dar um bizu com mais tempo 😀