Вы находитесь на странице: 1из 59

Copyright 2011 Accenture All Rights Reserved. 1 Copyright 2011 Accenture All Rights Reserved.

served. Accenture, its logo, and High Performance Delivered are trademarks of Accenture.
SAP CRM Programming (BOL)
Copyright 2011 Accenture All Rights Reserved. 2
DIA 1
Introduo CRM e Conceitos Bsicos de ABAP OO
Conceito CRM
MVC Modelo Viso Controlador
Classes
Interfaces
Herana
Polimorfismo
Encapsulamento
Atributos
Mtodos
Redefinies
DIA 2
BOL/Genil
Camadas
Genil
Estrutura de objetos BOL
Utilizao de Querys
DIA 3
Business Server Pages
Componentes
Vises
Ns de Contexto
Controladores

Copyright 2011 Accenture All Rights Reserved. 3






DIA 1

Conceito CRM


Copyright 2011 Accenture All Rights Reserved. 4
O conceito CRM
CRM: Customer Relationship Management:
Gesto de Relacionamento com o cliente

Objetivos:
Gesto de marketing
Gesto comercial
Gesto dos servios ao cliente
Copyright 2011 Accenture All Rights Reserved. 5
Mdulos SAP CRM
Marketing
gesto de dados sobre o consumidor
gesto de recursos de marketing

Sales
e-commerce

Service
Atendimento e Servio ao consumidor

Copyright 2011 Accenture All Rights Reserved. 6








Estrutura CRM


Copyright 2011 Accenture All Rights Reserved. 7
CRM User Interface
Totalmente Web
Maior flexibilidade/compatibilidade
Interface Intuitiva
Verso Atual: 7.0
Utiliza arquitetura MVC


Copyright 2011 Accenture All Rights Reserved. 8
Modelo-Viso-Controle (MVC)
O SAP CRM implementa o padro de desenvolvimento
modelo-viso-controle (MVC) que amplamente
adotado na programao Web. O MVC visa separar a
lgica de negcio da interface com o usurio, assim os
programadores podem mudar facilmente cada parte,
sem afetar as outras. No padro MVC, o modelo
representa as informaes (os dados) e as regras de
negcio, a viso contm elemento de interface com o
usurio, como textos, formulrios, e o controle gerencia
a comunicao entre o modelo e a viso.
Copyright 2011 Accenture All Rights Reserved. 9
Modelo-Viso-Controle (MVC)



Copyright 2011 Accenture All Rights Reserved. 10
Arquitetura SAP CRM



Copyright 2011 Accenture All Rights Reserved. 11
Arquitetura SAP CRM
Presentation Layer

A camada de apresentao do CRM WebClient UI
baseada no CRM User Interface Framework (CRM UIF),
que a base para as pginas HTML em execuo no
browser.

Esta camada a interface entre o sistema da SAP e seus
usurios.

A camada de apresentao envia a entrada do usurio
para o servidor de aplicao, e recebe os dados para a
exibio da mesma.
Copyright 2011 Accenture All Rights Reserved. 12
Arquitetura SAP CRM
Business Layer

A camada de negcios da IU WebClient CRM
subdividida em:

Business Object Layer (BOL): Esta camada
responsvel por salvar os dados do objetos de negcios
em tempo de execuo da sesso SAP CRM. Esta
camada garante a separao da interface do usurio
WebClient CRM e da lgica empresarial.
Copyright 2011 Accenture All Rights Reserved. 13
Arquitetura SAP CRM
Business Layer

Generic Interaction Layer (genIL): A camada de
interao genrica controla a transferncia de dados da
camada de objeto de negcios (BOL) para as interfaces
de programao de aplicativos (APIs). a conexo entre
a camada de objeto de negcios e acamada de
aplicao.
Copyright 2011 Accenture All Rights Reserved. 14
Arquitetura SAP CRM
Business Application

A camada de aplicao contm a lgica do negcio e as
tabelas de banco de dados.
Copyright 2011 Accenture All Rights Reserved. 15









Orientao a
Objetos

Copyright 2011 Accenture All Rights Reserved. 16
O que significa Orientao a Objetos?
O termo orientao a objetos significa organizar o
mundo real como uma coleo de objetos
que incorporam estrutura de dados e um conjunto
de operaes que manipulam estes dados.

Objetivo: tentar simular o mundo real dentro do
computador e para isso utiliza objetos. Desta forma, fica
a cargo do programador modelar objetos e a interao
entre eles.
Copyright 2011 Accenture All Rights Reserved. 17
Como feita a modelagem ?
A modelagem feita a partir da abstrao de objetos
do mundo real.

Abstrao: a habilidade de se concentrar nos
principais aspectos de um grupo de objetos, em vez de
se preocupar com as suas especificaes. Ex.: Para a
classe Pessoa so definidas as principais
caractersticas comuns maioria das pessoas, sem que
haja preocupao especial com objetos muito
especficos.
Copyright 2011 Accenture All Rights Reserved. 18
De que forma representada esta Abstrao ?
A partir da Abstrao, os objetos so representados em
forma de classes.

Classe: o molde para criar objetos. Possui todas as
especificaes de um objeto do mundo real.

Atravs da definio de uma classe, descreve-se que
propriedades ou atributos que o objeto ter.
Copyright 2011 Accenture All Rights Reserved. 19
Do que composta uma classe ?
Os dois principais elementos de uma classe so:
Atributos e Mtodos.

Atributos: Definem caractersticas de objetos.
Ex., A classe Pessoa tem os Atributos : Nome,
Endereo, Telefone e Sexo.

Mtodos: Definem o comportamento dos objetos.
Copyright 2011 Accenture All Rights Reserved. 20
Exemplo de Classe
Copyright 2011 Accenture All Rights Reserved. 21
Principais conceitos
da programao Orientada a Objeto

Herana: a capacidade de criar subclasses a partir de
uma superclasse. Essas subclasses herdam, ento,
todas as caractersticas da superclasse.


Polimorfismo: o princpio pelo qual uma subclasse
sobrescreve um comportamento (mtodo) herdado de
sua superclasse.
Copyright 2011 Accenture All Rights Reserved. 22
Encapsulamento: a habilidade de esconder de
outros objetos, as caractersticas intrnsecas de um
dado objeto. Toda a comunicao entre objetos deve
ser realizada via mtodos. Um objeto no deve ser
capaz de acessar, e tampouco alterar, atributos de outro
objeto diretamente.
Principais conceitos
da programao Orientada a Objeto
Copyright 2011 Accenture All Rights Reserved. 23
De que forma feito o encapsulamento?
Atravs da definio da visibilidade dos Atributos e
Mtodos.

Os Atributos e Mtodos podem ser:

Pblicos
Protegidos
Privados
Estticos
Copyright 2011 Accenture All Rights Reserved. 24
Concluso
Baseado nos conceitos citados anteriormente,
possvel identificar que:

Objetos so gerados a partir de um modelo
denominado Classe;

Classe possui definio de Atributos e Mtodos;

Atributos definem valores/caracterstica para o
objeto;

Mtodos so rotinas de execuo para o objeto.

Copyright 2011 Accenture All Rights Reserved. 25
Exerccio Prtico
Crie a classe Funcionrio com as seguintes caractersticas:
RI
Nome
Funo
Salrio

Crie mtodos Get/Set para manipulao dos atributos da classe.

Em um novo programa, instancie trs objetos do tipo funcionrio.

Utilizando os mtodos Set, preencha os atributos e utilizando os
mtodos Get, recupere os valores e imprima em um relatrio.

Copyright 2011 Accenture All Rights Reserved. 26
Interfaces
Uma interface nada mais do que a definio de um tipo,
contendo os mtodos e propriedades que esse tipo deve
possuir. Na prtica o que acontece que qualquer classe
que quiser ser do tipo definido pela interface deve
implementar os mtodos dessa interface.

A interface no contm nenhum cdigo de implementao,
apenas assinaturas de mtodos e/ou propriedades que
devem ter seu cdigo implementado nas classes que
implementarem essa interface.



Copyright 2011 Accenture All Rights Reserved. 27
Exemplo de Interface



Copyright 2011 Accenture All Rights Reserved. 28
Exerccio Prtico
Criar 3 nveis de interface como a estrutura abaixo:







Criar duas classe utilizando cada um dos nveis mais
inferiores das interfaces acima
Copyright 2011 Accenture All Rights Reserved. 29








DIA 2

GENIL /
BOL
Copyright 2011 Accenture All Rights Reserved. 30
Entidades & Colees

Entidade: Uma entidade BOL a representao estruturada
de dados relacionados.

Ex: A entidade BTAdminH, corresponde aos dados de cabealho
para qualquer transao, enquanto BTAdminI corresponde aos
itens de uma transao e est ligado ao BTAdminH atravs de
um relacionamento 1...N.

Entidades so representadas e manipuladas atravs da classe
CL_CRM_BOL_ENTITY.

Colees: Uma coleo formada por vrias entidades do
mesmo objeto.

Ex: Vrios itens em uma mesma operao.
Copyright 2011 Accenture All Rights Reserved. 31
Entidades & Colees
Entidade Coleo



Copyright 2011 Accenture All Rights Reserved. 32
Modelo de Relacionamento de entidades
O modelo de relacionamento entre as entidades pode
ser observado atravs da transao
GENIL_MODEL_BROWSER.

Acesse a transao GENIL_MODEL_BROWSER.

Em Set de Componentes insira o valor ALL e
execute.


Copyright 2011 Accenture All Rights Reserved. 33
Modelo de Relacionamento de entidades
Ser exibida a rvore de Modelo conforme exemplo
abaixo:

Copyright 2011 Accenture All Rights Reserved. 34
Modelo de Relacionamento de entidades
Objeto raiz: Um objeto raiz um elemento especial
dentro de um grupo de objetos que esto ligados um ao
outro em uma estrutura de hierarquia atravs de
agregaes. O objeto raiz o nico objeto dentro desta
estrutura que atribudo como um objeto superior a
todos os outros objetos. Cada objeto raiz tambm um
objeto de acesso.

Objeto de acesso: Um objeto de acesso um tipo de
BO, cuja identificao pode ser usado para determinar
os atributos do objeto acesso em si e de seus objetos
dependentes.
Copyright 2011 Accenture All Rights Reserved. 35
Modelo de Relacionamento de entidades
Objeto Dependente: Um objeto dependente um tipo de
BO, cujos atributos no pode ser determinados unicamente
do ID deste BO, mas em vez disso, s ou em conjunto com o
ID do objeto de acesso superior.

Objeto Query: um objeto de consulta um tipo especial de
BO cujos atributos so os parmetros de uma Query.

Objetos de Query Dinmica: Um objeto de consulta
dinmico um tipo de BO cujos atributos so os parmetros
de um query e permitem criar opes de escolha para esses
parmetros. Objetos de pesquisa dinmicos esto
disponveis a partir do CRM2006.
Copyright 2011 Accenture All Rights Reserved. 36
Modelo de Relacionamento de entidades
Objeto Resultado Query: Este BO representa o
retorno dos Objetos Query e Query Dinmica.
Geralmente corresponde a um resumo de informaes
com relacionamento para os demais objetos do modelo,
dessa forma possvel a partir de um resultado
genrico obter todas as informaes referentes a
transao comercial.
Copyright 2011 Accenture All Rights Reserved. 37
Diviso do Objeto BOL
Os objetos so divididos em Quatro partes:


Copyright 2011 Accenture All Rights Reserved. 38
Diviso do Objeto BOL
Estrutura do atributo: Armazena a estrutura do objeto
BOL, os dados ficam armazenados nesta estrutura.
Cada objeto possui uma estrutura prpria, porm
existem objetos que podem utilizar estruturas similares.

Mtodos: Mtodos especficos para tratamento dos
dados no objeto BOL, cada objeto pode apresentar
mtodos especficos, referentes sua estrutura.




Copyright 2011 Accenture All Rights Reserved. 39
Diviso do Objeto BOL
Relaes: Mostra com quais outros objetos BOL, este
objeto que selecionamos pode se relacionar. No
exemplo abaixo demonstramos o relacionamento entre
o objeto BTORDER e o objeto BTADMINH.

Utilizao: Mostra onde este objeto utilizado (quais
objetos BOL se relacionam com ele), exibe
relacionamento de Agregao (uma das classes
enxerga a outra, pois existe um atributo indicando a
outra classe) e Associao (as duas classes se
enxergam, pois existem atributos que referenciam as
duas em cada uma das classes).




Copyright 2011 Accenture All Rights Reserved. 40
Acesso a objetos BOL
Na camada BOL existe toda uma estrutura de
classes e objetos relacionais para que no seja
necessrio efetuar consultas diretas ao banco de
dados, tanto para pesquisa como para alterao,
existem classes para acesso via relacionamento de
objetos.




Copyright 2011 Accenture All Rights Reserved. 41
Acesso a objetos BOL
CL_CRM_BOL_ENTITY: Objeto BOL.
CL_CRM_BOL_QUERY_SERVICE: Objeto BOL de
pesquisa.
CL_CRM_BOL_DQUERY_SERVICE: Objeto BOL de
pesquisa dinmica.
CL_BSP_WD_VALUE_NODE: N de valor (custom).

Todas estas classe implementam a interface
IF_BOL_BO_PROPERTY_ACCESS.

Com uma entidade BOL podemos buscar outras entidades a
partir do mtodo GET_RELATED_ENTITY. Ou criar novas
entidades atravs do mtodo CREATE_RELATED_ENTITY,
este ltimo pode servir, por exemplo, para adicionar um
produto em uma Ordem de Servio.




Copyright 2011 Accenture All Rights Reserved. 42
Modelo de acesso




Copyright 2011 Accenture All Rights Reserved. 43
Querys
Na transao GENIL_BOL_BROWSER, podemos
efetuar testes de objetos de pesquisa.

1.Escolha o objeto de pesquisa;
2.Insira os dados de pesquisa;
3.Exibio das entidades de resultados;

Aps obter o resultado, tambm possvel
efetuar a navegao entre os objetos relacionais.




Copyright 2011 Accenture All Rights Reserved. 44
Query Simples
Para executar uma Query Simples efetue os
seguintes passos:

Instanciar a camada BOL.

DATA: lv_bol_core TYPE REF TO cl_crm_bol_core.

lv_bol_core = cl_crm_bol_core=>get_instance( ).
lv_bol_core->start_up( MY_COMPONENT_SET ).




Copyright 2011 Accenture All Rights Reserved. 45
Query Simples
Iniciar o servio da Query.

DATA: lv_query TYPE REF TO cl_crm_bol_query_service.

lv_query = cl_crm_bol_query_service=>get_instance( Query ).

Preencher os critrios de seleo:

lv_query->set_property( iv_attr_name = Parmetro
iv_value = Valor ).

Executar a Query e obter o resultado.

DATA: lv_result TYPE REF TO if_bol_entity_col.

lv_result = lv_query->get_query_result( ).



Copyright 2011 Accenture All Rights Reserved. 46
Acessando Entidades Relacionadas

Relacionamento 1:1.

DATA: lv_result TYPE REF TO cl_crm_bol_entity.

lv_result = lv_entity->get_related_entity( Nome rel ).


Subir Nveis da hierarquia.

lv_entity = lv_result->get_parent( ).
Copyright 2011 Accenture All Rights Reserved. 47
Acessando Entidades Relacionadas

Relacionamento 1: N.

DATA: lv_coll TYPE REF TO if_bol_entity_col.

lv_coll = lv_entity->get_related_entities(
iv_relation_name = Nome Rel ).

DATA: lv_entity TYPE REF TO cl_crm_bol_entity.

lv_entity = lv_coll->get_first( ).
lv_entity = lv_coll->get_NEXT( ).

Copyright 2011 Accenture All Rights Reserved. 48
Acessando Atributos

Existem trs formas para acessar os atributos de uma
entidade so elas:

Mtodo GET_PROPERTIES.
lv_entity->get_properties(IMPORTING es_attributes= wa_attributes).

Mtodo GET_PROPERTY_AS_VALUE.
lv_entity->get_property_as_value( EXPORTING iv_attr_name = ATTR
IMPORTING ev_result = LV_R ).

Mtodo GET_PROPERTY_AS_STRING.
lv_string = lv_entity->get_property_as_string( ATTR ).
Copyright 2011 Accenture All Rights Reserved. 49
Exerccio Prtico

Copyright 2011 Accenture All Rights Reserved. 50
Query Dinmica
Principais diferenas

Alm do operador igual, voc pode usar os demais
operadores como Maior que, Menor que,
Contm, No contm, etc, para especificar os
critrios de pesquisa.

Voc pode procurar por vrios valores para um
mesmo critrio de pesquisa, ao mesmo tempo.

Voc pode salvar pesquisas com os critrios de
pesquisa predefinidos para utilizao futura.



Copyright 2011 Accenture All Rights Reserved. 51
Query Dinmica
Para executar uma Query Dinmica efetue os
seguintes passos:

Instanciar a camada BOL.

DATA: lv_bol_core TYPE REF TO cl_crm_bol_core.

lv_bol_core = cl_crm_bol_core=>get_instance( ).
lv_bol_core->start_up( MY_COMPONENT_SET ).



Copyright 2011 Accenture All Rights Reserved. 52
Query Dinmica
Iniciar o servio da Query.

DATA: lv_dyn_query TYPE REF TO cl_crm_bol_dquery_service.

lv_dyn_query = cl_crm_bol_dquery_service=>get_instance(Nome).


Setar a quantidade mxima de resultados:

lv_dyn_query->set_property( iv_attr_name = 'MAX_HITS'
iv_value = 200' ).




Copyright 2011 Accenture All Rights Reserved. 53
Query Dinmica
Preencher os critrios de seleo:

lv_dyn_query->add_selection_param( iv_attr_name = 'SEATSMAX'
iv_sign = 'I'
iv_option = 'GT'
iv_low = '100'
iv_high = '' ).

Executar a Query e obter o resultado.

DATA: lv_result type ref to if_bol_entity_col.

lv_result = lv_dyn_query->get_query_result( ).

Copyright 2011 Accenture All Rights Reserved. 54
Exerccio Prtico

Copyright 2011 Accenture All Rights Reserved. 55
Alterando Entidades
Recuperar a entidade e efetuar o lock.
lv_result = lv_entity->get_related_entity(Entidade).
IF lv_result->lock( ) = ABAP_TRUE.
lv_result->set_property( iv_attr_name = ATTR
iv_value = X ).
ENDIF.

Enviar as alteraes para o BO layer.
Data: lv_bol_core TYPE REF TO cl_crm_bol_core.
lv_bol_core = cl_crm_bol_core=>get_instance( ).
lv_bol_core->modify( ).

Recuperar o contexto da transao.
DATA: lv_transaction TYPE REF TO if_bol_transaction_context.
lv_transaction = lv_bol_core->get_transaction( ).

Salvar as alteraes.
lv_transaction->save( ).
lv_transaction->commit( ).
Copyright 2011 Accenture All Rights Reserved. 56
Criando Entidades
Iniciar a camada BOL
DATA: lv_bol_core TYPE REF TO cl_crm_bol_core.

lv_bol_core = cl_crm_bol_core=>get_instance( ).
lv_bol_core->start_up( iv_appl_name = 'ALL' ).

Recuperar Instncia construtora da entidade
DATA: lv_btorder TYPE REF TO cl_crm_bol_entity_factory.

lv_btorder = lv_bol_core->get_entity_factory( 'BTOrder' ).

Preencher atributos da entidade.
DATA: lt_params TYPE crmt_name_value_pair_tab,
ls_params TYPE crmt_name_value_pair.

ls_params-name = 'PROCESS_TYPE'.
ls_params-value = 'CRMC'.
APPEND ls_params TO lt_params.

Copyright 2011 Accenture All Rights Reserved. 57
Criando Entidades
Criar entidade
DATA: lv_header TYPE REF TO cl_crm_bol_entity.

lv_header = lv_btorder->create( lt_params ).

Publicar alteraes
lv_bol_core->modify( ).

Salvar dados
DATA: lv_transaction TYPE REF TO if_bol_transaction_context.

lv_transaction = lv_header->get_transaction( ).
lv_transaction->save( ).
lv_transaction->commit( ).
Copyright 2011 Accenture All Rights Reserved. 58
Aplicaes BSP

Copyright 2011 Accenture All Rights Reserved. 59 Copyright 2011 Accenture All Rights Reserved. Accenture, its logo, and High Performance Delivered are trademarks of Accenture.
Equipe CRM
jose.sabino@accenture.com
giovanni.gabriel@accenture.com
erik.bormann@accenture.com


FIM