Em uma primeira postagem de blog sobre conversões na Fundação SAP Gateway, discutimos sua relevância no contexto das diferenças entre o sistema de tipos ABAP e o sistema de tipos OData. Embora não diretamente relacionado às conversões, o manuseio de datas e horários se encaixa perfeitamente nesse tópico.
O ABAP conhece datas, horários e diferentes representações de carimbos de tempo. E, fornece funções de reutilização para executar cálculos de datas e horários. O OData possui suas próprias definições de datas e horários com funções que podem ser usadas em expressões
$filter
, por exemplo.
Muitas vezes, surgem perguntas sobre como as diferentes representações se mapeiam e como um provedor de dados precisa ser implementado para criar uma melhor correspondência entre ambos os mundos. Certamente não é possível mergulhar em todos os detalhes. Mas, vamos começar com alguns aspectos.
Data e Hora no OData
Para representar informações de data e hora, a especificação do OData na versão 2.0 conhece os três tipos primitivos
Edm.DateTime,
Edm.Time e
Edm.DateTimeOffset.
Como isso não é realmente suficiente para aplicações comerciais, a especificação da versão 4.0 muda para
Edm.Date,
Edm.TimeOfDay,
Edm.DateTimeOffset e
Edm.Duration.
Nos concentramos na especificação da versão 2.0 e restringimos a discussão a Edm.DateTime e Edm.DateTimeOffset. Detalhes sobre as representações podem ser encontrados na
especificação do OData
, no
padrão ISO 8601
e em
http://www.w3.org/TR/xmlschema-2
. Aqui, listamos rapidamente os diferentes formatos. Os literais são usados na URI, ou seja, em
$filter
, por exemplo. ATOM e JSON se referem ao tipo de conteúdo da carga da solicitação ou resposta. O número de casas decimais disponíveis para sub-segundos é definido pela faceta de precisão.
Edm.DateTime representa uma data e uma hora em
UTC
(anteriormente, Hora Média de Greenwich):
Representação
Exemplo
Literal
datetime'yyyy-mm-ddThh:mm[:ss[.fffffff]]'
datetime'2016-07-08T12:34:56'
ATOM
yyyy-mm-ddThh:mm[:ss[.fffffff]]
2016-07-08T12:34:56
JSON
"\/Date(<ticks>)\/"<ticks> = número de milissegundos desde a meia-noite de 1º de janeiro de 1970
"\/Date(1467981296000)\/"
Os ticks na representação JSON também podem ser negativos para descrever datas e horários anteriores a 1º de janeiro de 1970. "\/Date(-6847804800000)\/" é meia-noite de 1º de janeiro de 1753, por exemplo.
Edm.DateTimeOffset adiciona informações de fuso horário em relação ao UTC. As informações de data e hora são complementadas pela diferença padrão de tempo (offset) com o sinal
v
: +01:00 para Horário da Europa Central (CET) ou -05:00 para Horário Padrão do Leste (EST), por exemplo.
Quitar espacios en una consulta SQL
Quitar espacios en una consulta SQL
Cuando trabajamos con consultas SQL, a menudo nos encontramos con la necesidad de limpiar o mani...
Transacciones MIGO y MIRO en SAP MM
Transacciones MIGO y MIRO en SAP MM
1. ¿Qué es la transacción MIGO?
La transacción MIGO (Entrada de Mercancías) se utiliza para registrar las mercancías que...
HOLA EXPERTOS,
¿QUÉ ESQUEMA DE CÁLCULO ME SIRVE PARA CALCULAR EL IVA EN BOLIVIA?
EL PORCENTAJE DE IVA EN BOLIVIA ES EL 13%.
LA FACTURA QUE TENGO COMO EJEMPLO ES LA...