Professional Documents
Culture Documents
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
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.
IF lo_entity IS BOUND.
IF lo_header_status IS BOUND.
lo_header_stat = lo_header_status->get_first( ).
IF lo_status_curr IS BOUND.
lo_status = lo_status_curr->get_first( ).
IF lo_status IS BOUND.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.