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.
Estimado Experto,
¿Podrías por favor decirme amablemente cuál es la diferencia entre las unidades PC y EA? Parece que ambas significan cada una, todas...
Gracias...
¿Has estado probando la funcionalidad de tarjetas de pago y alguna vez has pensado en conseguir más datos de prueba (números de tarjetas de crédito válidos) para expandir tus horizontes...
Hola
¿Qué tal?
¿Alguien sabe cómo puedo imprimir el importe total de una factura en letras?
Ejemplo
1500.00
Mil Quinientos Pesos 00/100 M.N.
Saludos...
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...
Pasos para abrir y cerrar período - MM FI CO
Muchos de nosotros luchamos con los cambios de períodos en nuestros entornos DEV y QA, aquí tienes una referencia rápida para abrir y...