You are on page 1of 5

Relacionamento BOL

De forma bem resumida o BOL (Business Object Layer) armazena informaes dos Objetos de
Negcio, como Parceiros de Negcio, Ordens de Venda, etc. E algo que ajuda bastante nos
desenvolvedores que possvel Navegar atravs das relaes existentes entre os objetos
para obter algumas informaes especficas,( NADA DE FICAR DANDO SELECTS POR AI), tudo o
que voc precisa (ou quase tudo) j est na memria, voc s deve identificar como chegar a
esta informao e ler!! :). Como exemplo, vamos pegar um n com o cabealho de um
documento e a partir dele encontrar o status do mesmo:

Componente/Viso: BT116H_SRVO/OVViewSet

Acessar a Classe de Implementao do n BTADMNH:

Na classe, selecionar a aba Atributos e procurar a constante BASE_ENTITY_NAME:


Com o valor inicial BTADMINHencontrado na constante , acessar a transao
GENIL_MODEL_BROWSER (Neste caso o nome do n igual ao valor do atributo, mas
nem queira dar uma de espertinho porque nem todos os casos so assim :P )

Procurar pelo modelo com nome igual BTAdminH:

Expandindo o n Relaes voc encontrar todas as relaes pelas quais pode navegar
, para o nosso exemplo iremos utilizar BTHeaderStatusSet. Expandindo o n
Estrutura do atributo voc encontrar a estrutura do mesmo e consecutivamente
todas as informaes que pode obter neste objeto:
Verificando a estrutura do atributo voc ver que s est acessvel nessa relao o
GUID, ento ser necessrio acessar mais uma relao, a BTStatusHAll para ento
chegar aos dados que desejamos:
At ai tudo lindoento voc me pergunta: O que eu fao com isso???

Simples meu amigo: voc deve chamar o mtodo GET_RELATED_ENTITIES a partir do seu
objeto passando o nome das relao, essa ao deve se repetir at que voc chegue ao objeto
que tem informao que desejaNo entendeu??? Ok , ento veja o exemplo do cdigo para o
cenrio que estamos analisando neste post:

*&--------------------------------------------------------------------
-*
*& Report YMVRO
*&--------------------------------------------------------------------
-*
REPORT ymvro.
*** Objetos
DATA: lo_entity TYPE REF TO cl_crm_bol_entity,
lo_header_status TYPE REF TO if_bol_entity_col,
lo_header_stat TYPE REF TO cl_crm_bol_entity,
lo_status_curr TYPE REF TO if_bol_entity_col,
lo_status TYPE REF TO cl_crm_bol_entity.

***Estruturas
DATA: lwa_admin_h TYPE crmt_orderadm_h_wrk,
lwa_status TYPE crmst_status_btil.

* Obtm o AdminH-Entity com os dados do header do documento


lo_entity ?= me->typed_context->btadminh->collection_wrapper-
>get_current( ).

IF lo_entity IS BOUND.

* Busca a primeira relao de Status


lo_header_status = lo_entity->get_related_entities(
iv_relation_name = 'BTHeaderStat
usSet' ).

IF lo_header_status IS BOUND.

lo_header_stat = lo_header_status->get_first( ).

* Busca a segunda relao, obtendo ento o objeto com os dados que


desejamos
lo_status_curr = lo_header_stat->get_related_entities(
iv_relation_name = 'BTStatu
sHCurrent' ).

IF lo_status_curr IS BOUND.

lo_status = lo_status_curr->get_first( ).

IF lo_status IS BOUND.

* Obtm os valores de status existente no objeto atribuindo-


os a estrutura
lo_status->get_properties( IMPORTING
es_attributes = lwa_status ).

IF NOT lwa_status IS INITIAL AND


*** Agora chegamos as informaes de status, ento fica fcil basta da
r
*** continuidade a lgica aqui e ser feliz =D
ENDIF.

ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.

You might also like