Table Of ContentTRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
Sumario:
Este artigo descreve a manipulação de dados do tipo de dados DATA e
HORA, este, artigo descreve o tipo de dado D e T, descrevendo algumas das
diversas funções disponibilizadas no R/3 para manipular os dados no sistema.
Sobre o Autor:
Uderson Luis Fermino, formado em Ciências da Computação pela
Faculdade de Pesquisa e Ensino IPEP, atua no mercado a 2 anos como
desenvolvedor Java nas plataformas: (J2SE, J2EE e J2ME), com participação
em grandes projetos envolvendo estas tecnologias. É consultor ABAP com
experiências em REPORT, ALV (GRID, LIST, BLOCK, OO, TREE,
HIERARQUICK), IDOC, ALE, ONLINE, SAPSCRIPT, SMARTFORM,
NETWEAVER (JCO, BSP, WebDynpro).
Email:
[email protected]
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 1
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
Os tipos de dados para representação de DATAS e HORAS no SAP são:
• D Tipo de dado para representação de data no formato YYYYMMDD
Onde:
YYYY representa um numeral inteiro representando ano. EX.: 2000.
MM representa um numeral inteiro representando o mês. EX.: 01 a 12
DD representa um numeral inteiro representando o dia 01 a 31.
Tamanho da variável: 8
Valor Inicial : 00000000.
• T Tipo de dado para representação de hora no formato HHMMSS
Onde:
HH representa um numeral inteiro representando a Hora: 00 até 24.
MM representa um numeral inteiro representado os minutos: 00 até 59.
SS representa um numeral inteiro representado os segundos: 00 até 59.
Tamanho da variável: 6
Valor Inicial : 000000.
Declaração:
DATA: {NOME_DA_VARIAVEL} TYPE D,
{NOME_DA_VARIAVEL} TYPE T.
Exe.:
DATA: DATA_ATUAL TYPE D,
HORA_ATUAL TYPE T.
O sistema R/3 contém diversas variáveis de sistemas para controle, entre elas
as variáveis para Hora e Data:
• SY-DATUM
Variável do sistema R/3 que armazena a data atual.
• SY-UZEIT
Variável do sistema R/3 que armazena a data atual.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 2
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
Exe.:
WRITE: 'DATA ATUAL: ', SY-DATUM, ' HORA ATUAL:', SY-UZEIT.
Cálculos
Para trabalhar com cálculos de datas o abap é uma linguagem Forte, pois
ao realizar uma calculo adicionando ou subtraindo um valor numérico em
uma variável do tipo data, o próprio abap trata os dados.
Exe.:
DATA DIA_DA_SEMANA(10) TYPE C .
DATA: DATA_ATUAL TYPE D.
DATA_ATUAL = SY-DATUM.
WRITE DATA_ATUAL.
DATA_ATUAL = DATA_ATUAL + 20.
WRITE DATA_ATUAL.
DATA_ATUAL = DATA_ATUAL - 1.
WRITE DATA_ATUAL.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 3
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
Funções para trabalhar com datas:
• DATE_COMPUTE_DAY
Está retorna o dia da semana em formato numérico 1 à 7, a entrada é uma
data no formato DDMMYYYY e a saída é uma caractere contendo o dia de
1 à 7.
Exemplo:
DATA_ATUAL = SY-DATUM.
CALL FUNCTION 'DATE_COMPUTE_DAY'
EXPORTING
DATE = DATA_ATUAL
IMPORTING
DAY = DIA_DA_SEMANA.
WRITE: / DIA_DA_SEMANA.
CASE DIA_DA_SEMANA.
WHEN 1.
WRITE: / 'SEGUNDA-FEIRA'.
WHEN 2.
WRITE: / 'TERÇA-FEIRA'.
WHEN 3.
WRITE: / 'QUARTA-FEIRA'.
WHEN 4.
WRITE: / 'QUINTA-FEIRA'.
WHEN 5.
WRITE: / 'SEXTA-FEIRA'.
WHEN 6.
WRITE: / 'SABADO'.
WHEN 7.
WRITE: / 'DOMINGO'.
ENDCASE.
Está função contém a seguinte lógica para calcular uma data:
DATA no formato numérico anomesdia MOD 7.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 4
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
Numero = DATA mod 7
Se numero > 1
Numero = numero -1
Senão
Numero = numero + 6
Fim
• DATE_TO_DAY
Está função é equivalente a função DATE_COMPUTE_DAY, porém está
função retorna o dia da semana em formato TEXTO.
Entrada: Data n formato DDMMYYYY
Saída: Texto de tamanho 10.
Exe.:
DATA DIA_DA_SEMANA(10) TYPE C .
DATA: DATA_ATUAL TYPE D.
DATA_ATUAL = SY-DATUM.
CALL FUNCTION 'DATE_TO_DAY'
EXPORTING
DATE = DATA_ATUAL
IMPORTING
WEEKDAY = DIA_DA_SEMANA.
WRITE: DIA_DA_SEMANA.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 5
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
• MONTH_NAMES_GET
Está função retorna os dados:
o Numero do mês
o Nome abreviação do Mês
o Nome completo do mês
Entrada:
o Idioma
Saída:
Estrutura T247 contendo os seguintes campos;
o SPRAS = Idioma
o MNR = Numero do mês
o KTX = Nome do mês abreviado
o LTX = Nome do mês complete.
Exemplo:
DATA IDIOMA TYPE SY-LANGU.
IDIOMA = 'PT'.
DATA: BEGIN OF MESES OCCURS 0.
INCLUDE STRUCTURE T247.
DATA: END OF MESES .
CALL FUNCTION 'MONTH_NAMES_GET'
EXPORTING
LANGUAGE = IDIOMA
TABLES
MONTH_NAMES = MESES
EXCEPTIONS
MONTH_NAMES_NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC = 0.
LOOP AT MESES.
WRITE: / MESES-MNR, ' ', MESES-LTX.
ENDLOOP.
ENDIF.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 6
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
• FKK_LAST_DAY_OF_MONTH
Esta função retorna o ultimo dia de um mês, este retorno é baseado sobre
a data de entrada, por exemplo qual o ultimo dia do mês de janeiro.
A entrada é uma data no formato DDMMYYYY e a saída é DDMMYYYY.
Está função pode ser utilizada para realizar um calculo por exemplo, quero
descobri quantos dias falta para terminar o mês a partir de hoje.
Exemplo:
DATA: HOJE TYPE SY-DATUM,
ULTIMO TYPE SY-DATUM,
DIAS TYPE I.
HOJE = SY-DATUM.
CALL FUNCTION 'FKK_LAST_DAY_OF_MONTH'
EXPORTING
DAY_IN = HOJE
IMPORTING
LAST_DAY_OF_MONTH = ULTIMO
EXCEPTIONS
DAY_IN_NO_DATE = 1
OTHERS = 2.
IF SY-SUBRC = 0.
DIAS = ULTIMO - HOJE.
WRITE: / 'HOJE: ', HOJE,
/ 'ULTIMO DIA: ', ULTIMO,
/ 'FALTAM: ', DIAS.
ENDIF.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 7
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
• HR_AUPBS_MONTH_DAY
Esta função é muito interessante, pois ela realiza cálculos entre duas datas,
os cálculos de retornos são dados de quantidade de dias entre data inicial,e
final, quantidade de mês(ses) entre a data inicial e final e quantidade de
anos entre a data inicial e a data final, e a quantidade total de dias entre a
data total e a data final.
Exemplo:
DATA INICIAL = 12022008
DATA FINAL = 18022008
Diferenças entre dia(s): 18 - 12 = 7
Diferenças entre mês(ses): 02 - 02 = 0
Diferenças entre ano(s): 2008 - 2008 = 0
Total de dias: 7
• Entrada
Data inicial no formato DDMMYYYY
Data final no formato DDMMYYYY
• Saída
NO_DAY = Numero de dia(s)
NO_MONTH = Numero de mês(es)
NO_YEAR = Numero de anos
NO_CAL_DAY = Numero total de dias.
Exemplo:
DATA: DATA_INICIAL TYPE D,
DATA_FINAL TYPE D,
NR_DIA TYPE I,
NR_MES TYPE I,
NR_ANO TYPE I,
NR_DAT_TOT TYPE I.
DATA_INICIAL = SY-DATUM.
DATA_FINAL = SY-DATUM + 500.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 8
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
CALL FUNCTION 'HR_AUPBS_MONTH_DAY'
EXPORTING
BEG_DA = DATA_INICIAL
END_DA = DATA_FINAL
IMPORTING
NO_DAY = NR_DIA
NO_MONTH = NR_MES
NO_YEAR = NR_ANO
NO_CAL_DAY = NR_DAT_TOT.
WRITE: 'DATA INICIAL: ', DATA_INICIAL, ' DATA FINAL: ',
DATA_FINAL.
WRITE: / 'DIA(S): ', NR_DIA,
/ 'MÊS(SES): ', NR_MES,
/ 'ANO(S): ', NR_ANO,
/ 'DIA TOTAL: ', NR_DAT_TOT.
• DAY_IN_WEEK
Está função retorna o dia da semana, em formato numérico de 1 a até 7,
onde:
1 = Domingo
2 = Segunda-Feira
3 = Terça-Feira
4 = Quarta-Feira
5 = Quinta-Feira
6 = Sexta-Feira
7 = Sabado
Entrada:
Data no formato DD.MM.YYYY
Exemplo:
DATA: DATA TYPE SY-DATUM,
DIA TYPE P.
CALL FUNCTION 'DAY_IN_WEEK'
EXPORTING
DATUM = DATA
IMPORTING
WOTNR = DIA.
WRITE: 'DIA DA SEMANA: ', DIA.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 9
TRABALHANDO COM DATAS ABAP
UDERSON LUIS FERMINO
• DATE_GET_WEEK
Está função é muito interessante ela retorna o numero da semana atual de
uma determinada data, o formato da saída é:
YYYYXX onde YYYY é equivalente o ano da data e XX é o numero da
semana.
• Entrada:
Data no formato DDMMYYYY.
• Saída:
YYYYXX onde YYYY é equivalente o ano da data e XX é o numero da
semana.
Exemplo:
DATA: DATA TYPE SY-DATUM,
SEMANA TYPE SCAL-WEEK.
DATA = SY-DATUM.
CALL FUNCTION 'DATE_GET_WEEK'
EXPORTING
DATE = DATA
IMPORTING
WEEK = SEMANA
EXCEPTIONS
DATE_INVALID = 1
OTHERS = 2.
WRITE: 'SEMANA', SEMANA+4.
“tudo posso naquele que me fortalece” (Filipenses 4:13). Página 10
Description:Este artigo descreve a manipulação de dados do tipo de dados DATA e. HORA, este uma variável do tipo data, o próprio abap trata os dados. Exe.:.