cancel
Showing results for 
Search instead for 
Did you mean: 

Filtrar transações contábeis na Service Layer

marcelocuin
Explorer
0 Kudos
983

Estou usando a entidade "JournalEntries" para obter as transações contábeis.

Eu gostaria de filtrar apenas as transações contábeis referentes à uma conta específica. Esta informação está na collection "JournalEntryLines".

Tentei a seguinte query OData: "JournalEntries?$filter=JournalEntryLines/ShortName eq '1.01.01.01.01'"

E me retornou o erro: "Invalid navigation property:JournalEntryLines"

Tentei usando $expand e o erro foi o mesmo

Tentei usando $crossjoin, mas não encontrei um campo que permita relacionar JournalEntries com JournalEntryLines, por isso me retornou um produto cartesiano.

Sei que esta consulta pode ser feita através de uma query direta ao Hana, mas gostaria de manter tudo através da Service Layer.

View Entire Topic
thiago
Product and Topic Expert
Product and Topic Expert
0 Kudos

Olá Marcelo,

Para filtros no nível das linhas dos documentos, recomendo a utilização da API QueryService.
Veja se te ajuda.

Do guia de referências da Service Layer:

Abraço,
Thiago.

marcelocuin
Explorer
0 Kudos

Thiago, obrigado pelo retorno !

Executei um teste com esta solução e acabei chegando ao mesmo resultado do "plano cartesiano"

Veja a transação:

GET https://xxx.xxx.xxx.xxx:ppp/b1s/v1/QueryService_PostQuery HTTP/1.1
{
    "QueryPath": "$crossjoin(JournalEntries,JournalEntries/JournalEntryLines)",
    "QueryOption": "$expand=JournalEntries($select=Memo),JournalEntries/JournalEntryLines($select=ShortName)&$filter=JdtNum eq 1"
}

Eu entendo que para usar o cross join corretamente, a entidade JournalEntryLines precisaria ter ao menos um campo para identificar unicamente um registro em JournalEntries.

Não encontrei nenhum campo nas entidades JournalEntry e JournalEntryLine que estabeleçam esta relação.

A chamada acima funcionou, porém retornou mais registros que o necessário.

Como a propriedade JournalEntryLines é uma coleção, tentei da seguinte forma:

GET https://xxx.xxx.xxx.xxx:ppp/b1s/v1/JournalEntries?$filter=JournalEntryLines/ShortName%20eq%20'V10000' HTTP/1.1

Com o seguinte retorno:

"error" : {
      "code" : -1000,
      "message" : {
         "lang" : "en-us",
         "value" : "Property 'JournalEntryLines/ShortName' of 'JournalEntry'is invalid"
      }
   }

Também tentei com $expand:

GET https://xxx.xxx.xxx.xxx:ppp/b1s/v1/JournalEntries?$expand=JournalEntryLines&$filter=JournalEntryLines/ShortName%20eq%20'V10000' HTTP/1.1

Com o retorno:

"error" : {
      "code" : -1000,
      "message" : {
         "lang" : "en-us",
         "value" : "Cannot expand invalid navigation property 'JournalEntryLines' for entity type 'JournalEntry'"
      }
   }

Será que há alguma outra forma?