
O EML consiste em instruções que você pode utilizar para manipular os dados de um business object. Você utiliza a instrução READ ENTITIES para ler dados; para todas as outras operações, você utiliza a instrução MODIFY ENTITIES com o suplemento correspondente UPDATE, CREATE ou DELETE.
Nota
Você só pode utilizar as operações CREATE, UPDATE e DELETE se a definição de comportamento da interface do business object contiver a diretiva correspondente use create, use update ou use delete. A tentativa de usar uma operação proibida causa um erro de sintaxe.

Para ler dados de um business object, você utiliza a instrução READ ENTITIES. A instrução tem dois parâmetros importantes: uma tabela interna contendo as chaves dos dados que você quer ler e outra que contém os resultados da consulta.
Essas tabelas internas têm tipos de dados especiais chamados tipos de definição de comportamento derivados. O sistema cria os mesmos automaticamente quando um desenvolvedor cria uma definição de comportamento e eles contêm alguns ou todos os campos do business object, juntamente com outros campos que controlam como o sistema processa uma determinada solicitação. Você declara as tabelas internas utilizando o novo suplemento TYPE TABLE FOR <operation> na instrução DATA.

O tipo TABLE FOR READ IMPORT contém o campo-chave ou campos do business object. A estrutura %control é uma estrutura gerada que indica quais campos do business object são realmente utilizados na operação atual. Em nosso exemplo, o sistema preenche a estrutura automaticamente e você não precisa se preocupar com isso.
O tipoTABLE FOR READ RESULT contém todos os campos do business object. Esta tabela contém o conjunto de resultados após a execução da instrução de leitura.

A tabela de importação de leitura contém uma coluna para cada campo-chave do business object, neste caso, agencyID. Para ler uma determinada agência, você adiciona uma linha à tabela interna que contém a respectiva chave. Assim como o campo-chave ou campos, a tabela contém as colunas %is_draft e %control. Com %is_draft, você pode especificar se deseja ler dados de rascunho ou dados ativos. A estrutura %control é utilizada para especificar quais campos devem ser lidos.
Nota
Em nosso exemplo, só lemos dados ativos e a estrutura %control é preenchida pelo framework, com base na lista de campos após o suplemento FIELDS.

Ao processar um business object, utilizando a instrução READ ENTITIES OF ou MODIFY ENTITIES OF, você deve primeiro especificar o nome da definição de comportamento. Isso é seguido pela palavra-chave ENTITY e pelo nome da entidade com a qual você deseja trabalhar. Se a entidade tiver um nome de alias, você deve utilizá-la aqui.
Nota
Você não pode usar o nome do alias após a adição de OF. Isso ocorre porque, tecnicamente, você indica o nome da definição de comportamento neste momento, não o nome da entidade.

A instrução READ ENTITIES lê os dados do business object de acordo com as chaves que você transfere no suplemento WITH. Ele retorna o resultado na tabela interna no suplemento RESULT. Na instrução, você também pode indicar de quais campos do business object você precisa. Neste exemplo, usamos o suplemento ALL FIELDS para retornar todos os campos. No entanto, se você só necessitar de um subconjunto dos campos, pode usar a variante FIELDS ( field1field2 … ) para restringir a quantidade de dados que é lida.
Nota
Ao contrário de uma instrução SELECT, a lista de campos não é separada por vírgulas.

A tabela de resultados contém todos os campos do business object, juntamente com o campo de controle %is_draft. Se a sua instrução READ ENTITIES contiver a variante ALL FIELDS, o sistema fornece os valores de todos os campos. Se você usar a variante FIELDS ( f1 … fn ), somente os campos que você solicitou serão preenchidos.
Nota

Se você quiser atualizar dados, você declara uma tabela interna com TYPE TABLE FOR UPDATE. Este contém todos os campos do business object e também a estrutura %control. Em nossa variante da instrução MODIFY ENTITIES, o sistema preenche a estrutura %control automaticamente.


A instrução MODIFY ENTITIES atualiza dados no buffer transacional. No suplemento FIELDS, você indica quais campos devem ser modificados. Além disso, COM, você transfere a tabela interna que contém os dados que deseja atualizar.
Quando você utiliza EML fora do business object, deve utilizar a instrução COMMIT ENTITIES para acionar a sequência de gravação e gravar de forma persistente os dados no banco de dados.
Nota
Mais tarde, neste curso, usaremos o EML na implementação do comportamento do objeto de negócios. Dentro da implementação de comportamento, não é necessário nem permitido acionar o commit com COMMIT ENTITIES.