terça-feira, 19 de junho de 2012
Função - SPELL_AMOUNT
" Eae galera, desculpa a ausência, mas estou respondendo os emails o mais
" rápido possível.... agora vou passar uma função interessante pra quem
" trabalha com alguns clientes que gostam mais do visual da tela... vou
" mostrar uma função onde você infoma um número e ela retorna a o texto do
" mesmo. ex. Importing 55, exporting 'CINQUENTA E CINCO' é legalzinho pra
" documentos e pra tela do User.
REPORT z_spell_amount.
" Tela de seleçãio
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_numero TYPE i, " Número
p_langu TYPE sy-langu. " Idioma do texto
SELECTION-SCREEN END OF BLOCK b1.
DATA :
st_words TYPE spell.
CALL FUNCTION 'SPELL_AMOUNT'
EXPORTING
amount = p_numero
* CURRENCY = ' '
* FILLER = ' '
language = p_langu
IMPORTING
in_words = st_words " Estrutura de retorno
EXCEPTIONS
not_found = 1
too_large = 2
OTHERS = 3
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
DATA :
it_split TYPE TABLE OF string,
st_split TYPE string,
vg_txt_final TYPE string.
SPLIT st_words-word AT space INTO TABLE it_split.
BREAK-POINT.
terça-feira, 5 de junho de 2012
View de Manutenção - Campo editável e não editável
" Eae, tudo certin ? Hoje vou entrar um pouco mais a fundo sobre o assunto
" 'View de Manutenção de Tabelas' se vocês não lembram oq é isso veja o link
" http://abapjuniores.blogspot.com.br/2011/09/dicionario-view-de-manutencao-de.html
" Sabemos que todos os campos que são chaves na tabela são fechadas na view,
" e que fica aberto para edição os campos que não são chaves, mas as vezes
" precisamos criar views soh pra ver mesmo o conteudo da tabela, então...
" vou mostrar como fechar para edição os campos que não são chaves, mas antes
" vamos entender um pouco melhor a view de manutenção e seu grupo de função.
" Provavelmente quando vocês fizeram a view de manutenção, vocês foram
" no grupo de função da view pra dar uma olhadinha neh, espero que sim rsrs,
" não sei se perceberam mas o grupo de função tah cheio de coisa dentro
" tudo coisa criada automaticamente pelo SAP, para criar sua View que é nada
" mais, nada menos, que um programinha tipo module pool (telas) para manipulação
" de dados da tabela que você criou a View.
" Agora que sabemos disso, poderemos mexer nela agora com um pouco menos de
" receio, abaixo existe uma View que criei de uma tabela simples onde o campo
" 'NOME' não é chave da tabela e porisso aparece aberta para edição mas nós
" vamos fechar para edição.
" 'View de Manutenção de Tabelas' se vocês não lembram oq é isso veja o link
" http://abapjuniores.blogspot.com.br/2011/09/dicionario-view-de-manutencao-de.html
" Sabemos que todos os campos que são chaves na tabela são fechadas na view,
" e que fica aberto para edição os campos que não são chaves, mas as vezes
" precisamos criar views soh pra ver mesmo o conteudo da tabela, então...
" vou mostrar como fechar para edição os campos que não são chaves, mas antes
" vamos entender um pouco melhor a view de manutenção e seu grupo de função.
" Provavelmente quando vocês fizeram a view de manutenção, vocês foram
" no grupo de função da view pra dar uma olhadinha neh, espero que sim rsrs,
" não sei se perceberam mas o grupo de função tah cheio de coisa dentro
" tudo coisa criada automaticamente pelo SAP, para criar sua View que é nada
" mais, nada menos, que um programinha tipo module pool (telas) para manipulação
" de dados da tabela que você criou a View.
" Agora que sabemos disso, poderemos mexer nela agora com um pouco menos de
" receio, abaixo existe uma View que criei de uma tabela simples onde o campo
" 'NOME' não é chave da tabela e porisso aparece aberta para edição mas nós
" vamos fechar para edição.
quinta-feira, 31 de maio de 2012
É felicidade ? Então passa pra frente ....
Ahhhh, estou muito feliz e gostaria de repassar isso a todos os seguidores do Blog, o blog ABAPJuniores foi criado para troca de informações sobre a Linguagem ABAP, diariamente recebo vários emails com dúvidas e tento sanar todas (salve as exceções rsrs), na maioria desses emails aprendo algo e repasso no própio blog como Post.
Mas hoje o blog não é somente troca de informação, trabalhamos com pessoas e porque não ajudá-las, estamos recebendo já faz mais de 6 meses currículos e repassando para empresas filiadas, foram mais de 200 currículos repassados para 12 consultorias, a equipe ABAPJuniores está tentando fazer mais alianças com outras consultorias, empresas de RH e Escolas para cursos, o primeiro Curso ABAP parceiro do Blog foi o ztreinamento onde informando o cupom você ganha 10% de desconto, e não para por ai, estamos aumentando a gama de consultorias e empresas que querem receber o currículos.
Agora sobre o blog em si, gostaria de agradecer a participação de todos, dicas, dúvidas, reclamações rsrs são todas bem vindas pois esses blog foi feito pra isso, troca de informações, foi feito para nós.
Se preparem que no próximo mês estaremos 'postando' muita coisa interessante sobre Smartforms, dicionários de dados, Exit's, SapScript, cheats and tricks e lógico ALV rsrs... Obrigadão pessoal e bons estudos.
sexta-feira, 25 de maio de 2012
Função - 'CREATE_TEXT'
" Eae Galera, lembra do ultimo post Sobre como criar um Objeto de texto,
" então agora vou mostrar como usar esse objeto de texto pra gravar textos,
" rsrsrs eh verdade..... rrsrs, abaixo tenho a função funcionando certinho,
" se vocês não lembram duq eu to falando .... Acessem..
" http://abapjuniores.blogspot.com.br/2012/05/transacao-se75-criacao-de-objeto-de.html
report z_create_text.
data :
it_flines type table of tline,
st_flines type tline.
start-of-selection.
perform zf_cria_texto.
*&---------------------------------------------------------------------*
*& Form ZF_CRIA_TEXTO
*&---------------------------------------------------------------------*
form zf_cria_texto .
st_flines-tdline = 'texto teste 001'.
append st_flines to it_flines.
call function 'CREATE_TEXT'
exporting
fid = 'OBSE' " Id do Objeto de texto
flanguage = sy-langu " Idioma
fname = '01' " Chave
fobject = 'ZTEXTOS' " Objeto de texto
* SAVE_DIRECT = 'X'
* FFORMAT = '*'
tables
flines = it_flines " Tabela com os textos.
exceptions
no_init = 1
no_save = 2
others = 3
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " ZF_CRIA_TEXTO
" Como todo bom observador que nós somos, devemos executar a função
" 'READ_TEXT' pra ver se o negócio funcionou mesmo, vejam link abaixo
" http://abapjuniores.blogspot.com.br/2011/10/funcao-read-text.html
" Mas se vocês querem fazer de uma forma mais rápida, vão na transação
" SE37 entra na função 'READ_TEXT' e façam igual a imagem abaixo,
" Com isso vocês conseguiram ver ser o conteúdo foi mesmo pro objeto.
" Obrigadaum pessoal e como sempre qualquer dúvida comentem ou mandem email.
" então agora vou mostrar como usar esse objeto de texto pra gravar textos,
" rsrsrs eh verdade..... rrsrs, abaixo tenho a função funcionando certinho,
" se vocês não lembram duq eu to falando .... Acessem..
" http://abapjuniores.blogspot.com.br/2012/05/transacao-se75-criacao-de-objeto-de.html
report z_create_text.
data :
it_flines type table of tline,
st_flines type tline.
start-of-selection.
perform zf_cria_texto.
*&---------------------------------------------------------------------*
*& Form ZF_CRIA_TEXTO
*&---------------------------------------------------------------------*
form zf_cria_texto .
st_flines-tdline = 'texto teste 001'.
append st_flines to it_flines.
call function 'CREATE_TEXT'
exporting
fid = 'OBSE' " Id do Objeto de texto
flanguage = sy-langu " Idioma
fname = '01' " Chave
fobject = 'ZTEXTOS' " Objeto de texto
* SAVE_DIRECT = 'X'
* FFORMAT = '*'
tables
flines = it_flines " Tabela com os textos.
exceptions
no_init = 1
no_save = 2
others = 3
.
if sy-subrc <> 0.
message id sy-msgid type sy-msgty number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform. " ZF_CRIA_TEXTO
" Como todo bom observador que nós somos, devemos executar a função
" 'READ_TEXT' pra ver se o negócio funcionou mesmo, vejam link abaixo
" http://abapjuniores.blogspot.com.br/2011/10/funcao-read-text.html
" Mas se vocês querem fazer de uma forma mais rápida, vão na transação
" SE37 entra na função 'READ_TEXT' e façam igual a imagem abaixo,
" Com isso vocês conseguiram ver ser o conteúdo foi mesmo pro objeto.
" Obrigadaum pessoal e como sempre qualquer dúvida comentem ou mandem email.
segunda-feira, 21 de maio de 2012
Criação de Objeto de texto - SE75
" Eae galera, sabe quando estamos cadastrando algo no SAP e existe
" akele campo 'Observações' tipo uma caixa de texto e se você quiser
" você pode escrever um livro, então, esse texto todo é gravado num
" objeto de texto que será o tema de hoje.
" Esse livro será recuperado com a função 'READ_TEXT', veja link abaixo.
" http://abapjuniores.blogspot.com.br/2011/10/funcao-read-text.html
" hoje vou mostrar como fazer um objeto de texto, e amanhã irei mostrar
" como efetuar um cadastro em um objeto de texto.
" Primeiramente vamos na transação 'SE75' conforme abaixo.
sexta-feira, 11 de maio de 2012
Classe - CL_GUI_TIMER
" Ha, essa vai ser legal heimmm, me perguntaram por email como fazer
" uma atualização automática de um ALV de 5 a 5 mim que mostrava dados
" de uma tabela transparente, na hora eu falei.... pronto to ferrado pois
" eu não sei e gostaria muito de saber, até que mexendo na sdn e na net
" afora achei uma classe manerissima que é um timer, abaixo tem um código
" usando essa classe.
" Vocês se lembram do programa que era um alv que atualizava uma tabela
" transaparente que eu postei mês passado? Então use o programa do link
" abaixo pra atualizar/modificar a tabela transparente ...
" http://abapjuniores.blogspot.com.br/2012/04/alv-editavel-atualizacao-tab.html
" e use este programa pra ver a atualização automaticamente. Valeuuuu.
REPORT z_cl_gui_timer.
CLASS lcl_timer DEFINITION DEFERRED .
" tabela Interna
DATA : it_sflight TYPE TABLE OF sflight .
" Objetos
DATA : o_grid TYPE REF TO cl_gui_alv_grid , " ALV
o_actio TYPE REF TO lcl_timer , " Criação do Evento
o_timer TYPE REF TO cl_gui_timer . " Timer
*----------------------------------------------------------------------*
* CLASS lcl_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_timer DEFINITION.
PUBLIC SECTION.
METHODS:
handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS. "lcl_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_timer IMPLEMENTATION.
METHOD handle_finished.
* Perform que cria/atualiza o tabela
PERFORM refresh_data .
* Mensagem soh pra ver que esta funcionando.
MESSAGE s351(bt) WITH 'Relatório atualizado às ' sy-uzeit.
* Inicia timer.
CALL METHOD o_timer->run.
ENDMETHOD. "handle_finished
ENDCLASS. "lcl_receiver IMPLEMENTATION
*--------------------------------------------------------------------*
* Start of Selection
*--------------------------------------------------------------------*
START-OF-SELECTION .
* Select soh pra mostrar algo na tela
PERFORM select_data .
" uma atualização automática de um ALV de 5 a 5 mim que mostrava dados
" de uma tabela transparente, na hora eu falei.... pronto to ferrado pois
" eu não sei e gostaria muito de saber, até que mexendo na sdn e na net
" afora achei uma classe manerissima que é um timer, abaixo tem um código
" usando essa classe.
" Vocês se lembram do programa que era um alv que atualizava uma tabela
" transaparente que eu postei mês passado? Então use o programa do link
" abaixo pra atualizar/modificar a tabela transparente ...
" http://abapjuniores.blogspot.com.br/2012/04/alv-editavel-atualizacao-tab.html
" e use este programa pra ver a atualização automaticamente. Valeuuuu.
REPORT z_cl_gui_timer.
CLASS lcl_timer DEFINITION DEFERRED .
" tabela Interna
DATA : it_sflight TYPE TABLE OF sflight .
" Objetos
DATA : o_grid TYPE REF TO cl_gui_alv_grid , " ALV
o_actio TYPE REF TO lcl_timer , " Criação do Evento
o_timer TYPE REF TO cl_gui_timer . " Timer
*----------------------------------------------------------------------*
* CLASS lcl_receiver DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_timer DEFINITION.
PUBLIC SECTION.
METHODS:
handle_finished FOR EVENT finished OF cl_gui_timer.
ENDCLASS. "lcl_receiver DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_receiver IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_timer IMPLEMENTATION.
METHOD handle_finished.
* Perform que cria/atualiza o tabela
PERFORM refresh_data .
* Mensagem soh pra ver que esta funcionando.
MESSAGE s351(bt) WITH 'Relatório atualizado às ' sy-uzeit.
* Inicia timer.
CALL METHOD o_timer->run.
ENDMETHOD. "handle_finished
ENDCLASS. "lcl_receiver IMPLEMENTATION
*--------------------------------------------------------------------*
* Start of Selection
*--------------------------------------------------------------------*
START-OF-SELECTION .
* Select soh pra mostrar algo na tela
PERFORM select_data .
quarta-feira, 9 de maio de 2012
Função - SWI_DURATION_DETERMINE
" Fala aeeee, vou mostrar hoje uma função usada para retornar a diferença
" em segundos de duas datas e horas, juntamente com uma lógica muito
" interessante usando os segundos para converter em horas e minutos,
" gostaria de agradecer ao Alexandre Almeida por este post, valeuuu.
REPORT z_swi_duration_determine.
DATA :
valor TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_dini TYPE dats,
p_dfin TYPE dats,
p_hini TYPE tims,
p_hfin TYPE tims
.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" Tratativa para calculo de horas entre as datas.
PERFORM f_tempo_lancamento USING p_dini
p_dfin
p_hini
p_hfin
CHANGING valor.
" Mostra retorno.
PERFORM f_show USING valor.
" em segundos de duas datas e horas, juntamente com uma lógica muito
" interessante usando os segundos para converter em horas e minutos,
" gostaria de agradecer ao Alexandre Almeida por este post, valeuuu.
REPORT z_swi_duration_determine.
DATA :
valor TYPE string.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_dini TYPE dats,
p_dfin TYPE dats,
p_hini TYPE tims,
p_hfin TYPE tims
.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
" Tratativa para calculo de horas entre as datas.
PERFORM f_tempo_lancamento USING p_dini
p_dfin
p_hini
p_hfin
CHANGING valor.
" Mostra retorno.
PERFORM f_show USING valor.
segunda-feira, 7 de maio de 2012
Select Dinâmico
" Eae vou mostrar hoje um select Dinâmico onde você consegue
" controlar até as condições da tabela que você quer selecionar,
" é só colocar o nome de qualquer tabela e executar pra ver um
" ALV dinâmico, depois volte e alimente os outros campos....
" Ahhhh, pode ocorrer alguns erros pois eu não tratei de propósito
" pra ver vocês se virarem com algumas condições como campo inexistente
" na tabela selecionada ou tabela inexistente ou qualquer outro
" não previsto.... vamo pro código.
REPORT z_select_dinamic.
TYPE-POOLS slis.
* Estruturas
DATA :
st_fieldcat TYPE slis_fieldcat_alv,
st_fields TYPE string
.
* Tabela Interna
DATA :
it_table TYPE REF TO data,
it_fieldcat TYPE slis_t_fieldcat_alv,
it_fields TYPE TABLE OF string
.
* Field-simbols
FIELD-SYMBOLS:
TYPE STANDARD TABLE.
* Tela de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_table TYPE dd02l-tabname OBLIGATORY, " Nome da tabela
p_field TYPE string, " Campos separados por espaços
p_rows TYPE i, " Quantidade de linhas à retornar
p_where TYPE string " Condições do Select ( sem ponto no final )
.
SELECTION-SCREEN END OF BLOCK b1.
" Inicio do processo.
START-OF-SELECTION.
BREAK-POINT.
PERFORM : f_select,
f_fieldcat,
f_trata_campos,
f_alv.
" controlar até as condições da tabela que você quer selecionar,
" é só colocar o nome de qualquer tabela e executar pra ver um
" ALV dinâmico, depois volte e alimente os outros campos....
" Ahhhh, pode ocorrer alguns erros pois eu não tratei de propósito
" pra ver vocês se virarem com algumas condições como campo inexistente
" na tabela selecionada ou tabela inexistente ou qualquer outro
" não previsto.... vamo pro código.
REPORT z_select_dinamic.
TYPE-POOLS slis.
* Estruturas
DATA :
st_fieldcat TYPE slis_fieldcat_alv,
st_fields TYPE string
.
* Tabela Interna
DATA :
it_table TYPE REF TO data,
it_fieldcat TYPE slis_t_fieldcat_alv,
it_fields TYPE TABLE OF string
.
* Field-simbols
FIELD-SYMBOLS:
* Tela de seleção.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_table TYPE dd02l-tabname OBLIGATORY, " Nome da tabela
p_field TYPE string, " Campos separados por espaços
p_rows TYPE i, " Quantidade de linhas à retornar
p_where TYPE string " Condições do Select ( sem ponto no final )
.
SELECTION-SCREEN END OF BLOCK b1.
" Inicio do processo.
START-OF-SELECTION.
BREAK-POINT.
PERFORM : f_select,
f_fieldcat,
f_trata_campos,
f_alv.
Assinar:
Postagens (Atom)