segunda-feira, 30 de maio de 2011
Simbolo de Texto
" Tome cuidado pra não deixar Simbolo de texto grudado com '/' pois o programa pode considerar como uma variavel de programa na hora que for criar. "
sexta-feira, 27 de maio de 2011
Função - POINT_IN_TIME_CONVERT
" Function onde vc informa os segundos e ele retorna o dia e a hora.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980
" bem pelomenos aki e a partir de 1980 srsrs
REPORT zmjpoint_in_type_convert.
DATA : g_pit TYPE i " Variavel que recebe retorno da função
.
data : g_sel_datum TYPE sy-datum,
g_sel_uzeit TYPE sy-uzeit
.
g_pit = 60000.
CALL function 'POINT_IN_TIME_CONVERT'
exporting
POINT_IN_TIME = G_PIT " Quantidade de segundos informados
importing
DATE = G_SEL_DATUM " Data Retorno
time = g_sel_uzeit " Hora Retorno
.
WRITE : 'Data: ',g_sel_datum,/
'Hora: ', g_sel_uzeit,/
'Retorno: ', g_pit
.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980
" bem pelomenos aki e a partir de 1980 srsrs
REPORT zmjpoint_in_type_convert.
DATA : g_pit TYPE i " Variavel que recebe retorno da função
.
data : g_sel_datum TYPE sy-datum,
g_sel_uzeit TYPE sy-uzeit
.
g_pit = 60000.
CALL function 'POINT_IN_TIME_CONVERT'
exporting
POINT_IN_TIME = G_PIT " Quantidade de segundos informados
importing
DATE = G_SEL_DATUM " Data Retorno
time = g_sel_uzeit " Hora Retorno
.
WRITE : 'Data: ',g_sel_datum,/
'Hora: ', g_sel_uzeit,/
'Retorno: ', g_pit
.
Função DATE_TIME_CONVERT
" Function muito simples onde vc informa o dia e a hora que e ele
" retorna a quantidade de segundos.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980
REPORT zmjdate_type_convert.
DATA : g_pit TYPE i " Variavel que recebe retorno da função
.
CALL FUNCTION 'DATE_TIME_CONVERT'
EXPORTING
date = sy-datum " Dia do sistema
time = sy-uzeit " Hora do sistema
IMPORTING
point_in_time = g_pit " Retorno
EXCEPTIONS
date_before_rel_date = 1
date_to_big = 2
OTHERS = 3.
WRITE : 'Data: ',sy-datum,/
'Hora: ', sy-uzeit,/
'Retorno: ', g_pit,/
.
" retorna a quantidade de segundos.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980
REPORT zmjdate_type_convert.
DATA : g_pit TYPE i " Variavel que recebe retorno da função
.
CALL FUNCTION 'DATE_TIME_CONVERT'
EXPORTING
date = sy-datum " Dia do sistema
time = sy-uzeit " Hora do sistema
IMPORTING
point_in_time = g_pit " Retorno
EXCEPTIONS
date_before_rel_date = 1
date_to_big = 2
OTHERS = 3.
WRITE : 'Data: ',sy-datum,/
'Hora: ', sy-uzeit,/
'Retorno: ', g_pit,/
.
Nomenclatura Padrão
" Toda a vez que for nomear algum objeto, use o padrão de nomenclatura do cliente, se não tiver, crie uma ou use o do SAP, Mas nunca nomeie de qualquer jeito"
segunda-feira, 16 de maio de 2011
Select com campos de tipos diferentes
" Com o código abaixo conseguiremos trabalha num select comparando dois
" campos com tipos diferentes, kona-knuma é do tipo char10 e o campo
" cdhdr-objectid tem o tipo char90 portanto na hora de fazer a comparação
" e vc apertar Ctrl+f2 ( espero que vcs façam isso toda hora) irá aparecer
" este erro...
" Para que não aconteça isso vc deverá alimentar a primeira tabela e depois
" jogar os dados pra dentro de uma tabela auxiliar onde o campo que vc irá
" usar no select será do mesmo tipo da tabela que vc que pegar os novos dados,
" parece dificil mas é sussa. Debuga este programa e conseguiram ver.
" Espero que vcs tenham dados na tabela KONA, na proxima eu uso outras tabelas.
REPORT zmj_fields_ne.
TYPES :
" Estipulações ...
BEGIN OF ty_kona,
knuma TYPE kona-knuma ," Estipulação
vkorg TYPE kona-vkorg ," Organização de Vendas
vtweg TYPE kona-vtweg ," Canal Distribuição
END OF ty_kona,
" Estipulações aux para comparar tipo no select OBjectid/knuma
BEGIN OF ty_kona_aux,
knuma TYPE cdhdr-objectid," Estipulação
vkorg TYPE kona-vkorg , "Organização de Vendas
vtweg TYPE kona-vtweg , "Canal Distribuição
END OF ty_kona_aux,
" Cabeçalho do documento de modificação
BEGIN OF ty_cdhdr,
objectclas TYPE cdhdr-objectclas, " Classe de objetos
objectid TYPE cdhdr-objectid, " Valor do objeto
changenr TYPE cdhdr-changenr, " Nº modificação do documento
END OF ty_cdhdr
.
" Tabelas Internas ....
DATA : it_kona TYPE TABLE OF ty_kona,
it_kona_aux TYPE TABLE OF ty_kona_aux,
it_cdhdr TYPE TABLE OF ty_cdhdr
.
" Estruturas ...
DATA : st_kona TYPE ty_kona,
st_kona_aux TYPE ty_kona_aux,
st_cdhdr TYPE ty_cdhdr
.
START-OF-SELECTION.
PERFORM : z_seleciona_dados,
z_mostra_dados
.
*&---------------------------------------------------------------------*
*& Form Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
* Seleciona os dados da tabela
*----------------------------------------------------------------------*
FORM z_seleciona_dados .
" Seleção tabela KONA
SELECT knuma
vkorg
vtweg
FROM kona
INTO TABLE it_kona
.
" Aki tah o pulo do gato ... olhem no form o comentário...
PERFORM z_trata_it_kona_aux.
" Seleção tabela CDHDR conforme dados da tabela IT_KONA_AUX
SELECT objectclas
objectid
changenr
FROM cdhdr
INTO TABLE it_cdhdr
FOR ALL ENTRIES IN it_kona_aux
WHERE objectid = it_kona_aux-knuma.
ENDFORM. " Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
*& Form Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
* Passa os dados da tabela it_kona para a it_kona_aux com tipo do
" campo knuma modificado assim conseguindo compará-los no select.
*----------------------------------------------------------------------*
FORM z_trata_it_kona_aux .
LOOP AT it_kona INTO st_kona.
MOVE-CORRESPONDING st_kona TO st_kona_aux.
st_kona_aux-knuma = st_kona-knuma.
APPEND st_kona_aux TO it_kona_aux.
ENDLOOP.
ENDFORM. " Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
*& Form Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
* Axibe os dados.
*----------------------------------------------------------------------*
FORM z_mostra_dados .
LOOP AT it_cdhdr INTO st_cdhdr.
WRITE st_cdhdr.
ENDLOOP.
ENDFORM. " Z_MOSTRA_DADOS
" campos com tipos diferentes, kona-knuma é do tipo char10 e o campo
" cdhdr-objectid tem o tipo char90 portanto na hora de fazer a comparação
" e vc apertar Ctrl+f2 ( espero que vcs façam isso toda hora) irá aparecer
" este erro...
" Para que não aconteça isso vc deverá alimentar a primeira tabela e depois
" jogar os dados pra dentro de uma tabela auxiliar onde o campo que vc irá
" usar no select será do mesmo tipo da tabela que vc que pegar os novos dados,
" parece dificil mas é sussa. Debuga este programa e conseguiram ver.
" Espero que vcs tenham dados na tabela KONA, na proxima eu uso outras tabelas.
REPORT zmj_fields_ne.
TYPES :
" Estipulações ...
BEGIN OF ty_kona,
knuma TYPE kona-knuma ," Estipulação
vkorg TYPE kona-vkorg ," Organização de Vendas
vtweg TYPE kona-vtweg ," Canal Distribuição
END OF ty_kona,
" Estipulações aux para comparar tipo no select OBjectid/knuma
BEGIN OF ty_kona_aux,
knuma TYPE cdhdr-objectid," Estipulação
vkorg TYPE kona-vkorg , "Organização de Vendas
vtweg TYPE kona-vtweg , "Canal Distribuição
END OF ty_kona_aux,
" Cabeçalho do documento de modificação
BEGIN OF ty_cdhdr,
objectclas TYPE cdhdr-objectclas, " Classe de objetos
objectid TYPE cdhdr-objectid, " Valor do objeto
changenr TYPE cdhdr-changenr, " Nº modificação do documento
END OF ty_cdhdr
.
" Tabelas Internas ....
DATA : it_kona TYPE TABLE OF ty_kona,
it_kona_aux TYPE TABLE OF ty_kona_aux,
it_cdhdr TYPE TABLE OF ty_cdhdr
.
" Estruturas ...
DATA : st_kona TYPE ty_kona,
st_kona_aux TYPE ty_kona_aux,
st_cdhdr TYPE ty_cdhdr
.
START-OF-SELECTION.
PERFORM : z_seleciona_dados,
z_mostra_dados
.
*&---------------------------------------------------------------------*
*& Form Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
* Seleciona os dados da tabela
*----------------------------------------------------------------------*
FORM z_seleciona_dados .
" Seleção tabela KONA
SELECT knuma
vkorg
vtweg
FROM kona
INTO TABLE it_kona
.
" Aki tah o pulo do gato ... olhem no form o comentário...
PERFORM z_trata_it_kona_aux.
" Seleção tabela CDHDR conforme dados da tabela IT_KONA_AUX
SELECT objectclas
objectid
changenr
FROM cdhdr
INTO TABLE it_cdhdr
FOR ALL ENTRIES IN it_kona_aux
WHERE objectid = it_kona_aux-knuma.
ENDFORM. " Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
*& Form Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
* Passa os dados da tabela it_kona para a it_kona_aux com tipo do
" campo knuma modificado assim conseguindo compará-los no select.
*----------------------------------------------------------------------*
FORM z_trata_it_kona_aux .
LOOP AT it_kona INTO st_kona.
MOVE-CORRESPONDING st_kona TO st_kona_aux.
st_kona_aux-knuma = st_kona-knuma.
APPEND st_kona_aux TO it_kona_aux.
ENDLOOP.
ENDFORM. " Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
*& Form Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
* Axibe os dados.
*----------------------------------------------------------------------*
FORM z_mostra_dados .
LOOP AT it_cdhdr INTO st_cdhdr.
WRITE st_cdhdr.
ENDLOOP.
ENDFORM. " Z_MOSTRA_DADOS
sexta-feira, 13 de maio de 2011
Função - DDIF_FIELDINFO_GET
" Essa function traz pra vc a descrição do campo informado,
" muito usado em estipulações e modificações na SAP.
REPORT zmj_prog_003.
" Tabelas Transparentes ....
TABLES : cdpos
.
" Tabelas Transparentes
DATA : DFIES_TAB like table of dfies,
st_DFIES like dfies_tab with header line
.
" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_fname type cdpos-fname,
p_tname type cdpos-tabname
.
SELECTION-SCREEN END OF BLOCK b1.
" Start of Selection
START-OF-SELECTION.
PERFORM : z_ddif_fieldinfo_get,
z_mostra_dados
.
*&---------------------------------------------------------------------*
*& Form Z_DDIF_FIELDINFO_GET
*&---------------------------------------------------------------------*
FORM z_ddif_fieldinfo_get .
CALL FUNCTION 'DDIF_FIELDINFO_GET'
EXPORTING
tabname = p_tname " Nome da Tabela
fieldname = p_fname " Nome do Campo
langu = sy-langu " Lingua do sistema
TABLES
dfies_tab = dfies_tab " Tabela de retorno
.
break-point.
ENDFORM. " Z_DDIF_FIELDINFO_GET
*&---------------------------------------------------------------------*
*& Form Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
form Z_MOSTRA_DADOS .
LOOP AT dfies_tab into st_dfies.
write : /,'Tabela : ', st_dfies-tabname ,/
,'Campo: ', st_dfies-fieldname ,/
, 'Descrição do campo:' , st_dfies-FIELDTEXT
.
ENDLOOP.
endform. " Z_MOSTRA_DADOS
terça-feira, 10 de maio de 2011
Estruturas sujas
Dica do Dia.
" Limpar as estruturas antes de trabalhar com elas para que não tenha sujeira de informação, Principalmente em dentro do 'LOOP antes de 'READ TABLE."
" Limpar as estruturas antes de trabalhar com elas para que não tenha sujeira de informação, Principalmente em dentro do 'LOOP antes de 'READ TABLE."
Função - POPUP_TO_CONFIRM_STEP
" Olha uma função para relação com o usuário, onde o mesmo dá um retorno
" pro programa e assim o programa procede conforme a decisão do usuário.
report zFunc_aprov.
tables : bseg,
bkpf
.
" Constantes ....
constants : c_x type c value 'X',
c_j type c value 'J',
c_n type c VALUE 'N',
c_c type c value 'C'
.
" Variáveis Globais ....
data : vg_answer type c
.
" Tela de seleção ....
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : r_pergu RADIOBUTTON GROUP rad1,
r_nperg RADIOBUTTON GROUP rad1 DEFAULT 'X'
.
SELECTION-SCREEN END OF BLOCK b1.
start-of-selection.
IF r_pergu = 'X'.
perform : z_perguntar
.
CASE vg_answer.
WHEN c_j.
write : 'Vc aceitou'.
WHEN c_n.
write : 'vc Não Aceitou'.
WHEN OTHERS.
write : 'vc Cancelou o esquema'.
ENDCASE.
else.
write : 'Vc não quis responder nada'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form Z_PERGUNTAR
*&---------------------------------------------------------------------*
form Z_PERGUNTAR .
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
" DEFAULTOPTION = 'Y' " Deixa padronizado na resposta 'Yes'
textline1 = ' Vc Deseja isso mesmo ' " Texto Informativo 1
* TEXTLINE2 = ' ' " texto Informativo 2
titel = 'Decisão' " Titulo da Caixa
" START_COLUMN = 25 " Posição horizontal da caixa
* START_ROW = 6 " Posição Vertical da caixa
CANCEL_DISPLAY = 'X' " add O botão 'Cancel na telinha
IMPORTING
ANSWER = vg_answer " Variável q recebe retorno do usuário
.
endform. " Z_PERGUNTAR
" Me disseram antes de postar que esta function já eh obsoleta quem souber
" qual é a function do Momento posta aeeee.
" pro programa e assim o programa procede conforme a decisão do usuário.
report zFunc_aprov.
tables : bseg,
bkpf
.
" Constantes ....
constants : c_x type c value 'X',
c_j type c value 'J',
c_n type c VALUE 'N',
c_c type c value 'C'
.
" Variáveis Globais ....
data : vg_answer type c
.
" Tela de seleção ....
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : r_pergu RADIOBUTTON GROUP rad1,
r_nperg RADIOBUTTON GROUP rad1 DEFAULT 'X'
.
SELECTION-SCREEN END OF BLOCK b1.
start-of-selection.
IF r_pergu = 'X'.
perform : z_perguntar
.
CASE vg_answer.
WHEN c_j.
write : 'Vc aceitou'.
WHEN c_n.
write : 'vc Não Aceitou'.
WHEN OTHERS.
write : 'vc Cancelou o esquema'.
ENDCASE.
else.
write : 'Vc não quis responder nada'.
ENDIF.
*&---------------------------------------------------------------------*
*& Form Z_PERGUNTAR
*&---------------------------------------------------------------------*
form Z_PERGUNTAR .
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
" DEFAULTOPTION = 'Y' " Deixa padronizado na resposta 'Yes'
textline1 = ' Vc Deseja isso mesmo ' " Texto Informativo 1
* TEXTLINE2 = ' ' " texto Informativo 2
titel = 'Decisão' " Titulo da Caixa
" START_COLUMN = 25 " Posição horizontal da caixa
* START_ROW = 6 " Posição Vertical da caixa
CANCEL_DISPLAY = 'X' " add O botão 'Cancel na telinha
IMPORTING
ANSWER = vg_answer " Variável q recebe retorno do usuário
.
endform. " Z_PERGUNTAR
" Me disseram antes de postar que esta function já eh obsoleta quem souber
" qual é a function do Momento posta aeeee.
Assinar:
Postagens (Atom)