" 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.
sexta-feira, 25 de maio de 2012
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.
segunda-feira, 30 de abril de 2012
ABAP OLE - Excel.application
" Bom dia galera mais que tri-legal, vou passa hoje pra vocês algo muito
" legal.... Sabe quando o funcional chega em você e fala : ..... e no final
" essa tabela tem que criar um arquivo excel.... Logo que ele fala isso
" ja pensamos : .... Sussa, vou cria um alv e exportar, ou no máximo
" usar uma função que exporta pra um excel.... fácil....
" Mas como a gente sabe a vida de ABAP nunca é tão fácil assim...
" o funcional já com uma cara de ironia fala : .... o Excel tem que estar
" neste formato ..... e mostra pra você um formulário bunitão cheio de
" bordas, cores, tamanho, linhas e colunas mescladas..... e seu mundo
" desmorona, já começa a pensar que vai ter que sair mais tarde varios dias
" e quem sabe com isso pode até perder a(o) namorada(o). Pois seus problemas
" acabaram pois este post mostra como fazer um com tratativas em suas
" propriedades.
" primeiramente vá na transação se11 e veja na tabela TOLE se existe algum
" APP chamado 'EXCEL.APPLICATION', se tiver ... parabéns você está
" habilitado a prosseguir com este post. ( Pode ser pela transação SOLE tb )
" Diferentemente neste Post eu não coloquei Break-points espalhados, portanto,
" debbuggem vocês mesmo onde acharem melhor. vamo lá então.
" Essa é pra fecha o mês com chave de Ouro.
REPORT z_abap_excel.
*----------------------------------------------------------------------*
* Conjunto de tipos
*----------------------------------------------------------------------*
" Tem um include que a maioria trabalho mas eu prefiro o Grupo de tipo.
TYPE-POOLS ole2.
*----------------------------------------------------------------------*
* Tabelas transparentes
*----------------------------------------------------------------------*
TABLES :
sflight.
*----------------------------------------------------------------------*
* Tabelas internas
*----------------------------------------------------------------------*
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight
.
*----------------------------------------------------------------------*
* Estruturas
*----------------------------------------------------------------------*
DATA :
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
*----------------------------------------------------------------------*
* Declarações de variáveis
*----------------------------------------------------------------------*
DATA : linha TYPE i, " Atribui Valor Linha
coluna TYPE i,
v_texto TYPE string " Conteudo das celulas
.
*----------------------------------------------------------------------*
* Definições de objetos OLE2
*----------------------------------------------------------------------*
DATA: gs_excel TYPE ole2_object, " Objeto Excel
gs_workbook TYPE ole2_object, " Workbook 'Area de trabalho'
gs_sheet TYPE ole2_object, " Planilha
gs_cell1 TYPE ole2_object, " Celula 1
gs_cell2 TYPE ole2_object, " Celula 2
gs_cells TYPE ole2_object, " Células
gs_range TYPE ole2_object, " Grupo de células
gs_font TYPE ole2_object, " Fonte da célula
gs_column TYPE ole2_object. " Coluna da célula
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS:
p_carrid TYPE sflight-carrid OBLIGATORY.
SELECT-OPTIONS:
s_connid FOR sflight-connid,
s_fldate FOR sflight-fldate.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
* select dos dados
PERFORM selects.
IF it_sflight IS NOT INITIAL.
* Cria o objeto Excel com area de trabalho e planilhas.
PERFORM f_gera_excel.
* Agora com a planilha pronta vamos formatar as colunas do excel.
PERFORM formata_colunas.
* Eu criei um perform só pra trata o cabeçalho pra fica mais legível.
PERFORM gera_cabecalho.
* Gera linhas
PERFORM gera_linhas.
* Encerra planilha Excel
PERFORM encerra_planilha_excel.
ELSE.
MESSAGE 'Não foi encontrado dados na tabela conforme críterios da tela de seleção'
TYPE 'I'.
ENDIF.
END-OF-SELECTION.
" legal.... Sabe quando o funcional chega em você e fala : ..... e no final
" essa tabela tem que criar um arquivo excel.... Logo que ele fala isso
" ja pensamos : .... Sussa, vou cria um alv e exportar, ou no máximo
" usar uma função que exporta pra um excel.... fácil....
" Mas como a gente sabe a vida de ABAP nunca é tão fácil assim...
" o funcional já com uma cara de ironia fala : .... o Excel tem que estar
" neste formato ..... e mostra pra você um formulário bunitão cheio de
" bordas, cores, tamanho, linhas e colunas mescladas..... e seu mundo
" desmorona, já começa a pensar que vai ter que sair mais tarde varios dias
" e quem sabe com isso pode até perder a(o) namorada(o). Pois seus problemas
" acabaram pois este post mostra como fazer um com tratativas em suas
" propriedades.
" primeiramente vá na transação se11 e veja na tabela TOLE se existe algum
" APP chamado 'EXCEL.APPLICATION', se tiver ... parabéns você está
" habilitado a prosseguir com este post. ( Pode ser pela transação SOLE tb )
" Diferentemente neste Post eu não coloquei Break-points espalhados, portanto,
" debbuggem vocês mesmo onde acharem melhor. vamo lá então.
" Essa é pra fecha o mês com chave de Ouro.
REPORT z_abap_excel.
*----------------------------------------------------------------------*
* Conjunto de tipos
*----------------------------------------------------------------------*
" Tem um include que a maioria trabalho mas eu prefiro o Grupo de tipo.
TYPE-POOLS ole2.
*----------------------------------------------------------------------*
* Tabelas transparentes
*----------------------------------------------------------------------*
TABLES :
sflight.
*----------------------------------------------------------------------*
* Tabelas internas
*----------------------------------------------------------------------*
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight
.
*----------------------------------------------------------------------*
* Estruturas
*----------------------------------------------------------------------*
DATA :
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
*----------------------------------------------------------------------*
* Declarações de variáveis
*----------------------------------------------------------------------*
DATA : linha TYPE i, " Atribui Valor Linha
coluna TYPE i,
v_texto TYPE string " Conteudo das celulas
.
*----------------------------------------------------------------------*
* Definições de objetos OLE2
*----------------------------------------------------------------------*
DATA: gs_excel TYPE ole2_object, " Objeto Excel
gs_workbook TYPE ole2_object, " Workbook 'Area de trabalho'
gs_sheet TYPE ole2_object, " Planilha
gs_cell1 TYPE ole2_object, " Celula 1
gs_cell2 TYPE ole2_object, " Celula 2
gs_cells TYPE ole2_object, " Células
gs_range TYPE ole2_object, " Grupo de células
gs_font TYPE ole2_object, " Fonte da célula
gs_column TYPE ole2_object. " Coluna da célula
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS:
p_carrid TYPE sflight-carrid OBLIGATORY.
SELECT-OPTIONS:
s_connid FOR sflight-connid,
s_fldate FOR sflight-fldate.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
* select dos dados
PERFORM selects.
IF it_sflight IS NOT INITIAL.
* Cria o objeto Excel com area de trabalho e planilhas.
PERFORM f_gera_excel.
* Agora com a planilha pronta vamos formatar as colunas do excel.
PERFORM formata_colunas.
* Eu criei um perform só pra trata o cabeçalho pra fica mais legível.
PERFORM gera_cabecalho.
* Gera linhas
PERFORM gera_linhas.
* Encerra planilha Excel
PERFORM encerra_planilha_excel.
ELSE.
MESSAGE 'Não foi encontrado dados na tabela conforme críterios da tela de seleção'
TYPE 'I'.
ENDIF.
END-OF-SELECTION.
quinta-feira, 26 de abril de 2012
Classe - CL_GUI_TEXTEDIT
" Opa, tudo bem aii? Hoje vou passar pra vocês como fazer uma caixa
" de texto na sua tela para que o pessoal possa faze comentários sobre
" algo, primeiramente estarei mostrando como faz um, daqui a pouco num
" post futuro eu posto usando na prática gravando e deletando estes
" comentário.
" Ahhh, eu criei uma tela com um Custom Control, vocês vão perceber
" isso quando verem a classe que o objeto Container está sendo referenciado,
" o nome deste Custom Control está sendo informado quando eu crio o
" Container. Outra coisa.... Isso eh um report não eh um module mas se quiser
" fazer em Module Pool fiquem a vontade.
REPORT z_cl_gui_textedit.
" Variáveis Globais
DATA:
ok_code TYPE sy-ucomm.
" Estruturas e tabelas internas
DATA:
st_tdline TYPE tdline,
it_tdline TYPE TABLE OF tdline.
" Objetos
DATA:
container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit.
" Início do processo
START-OF-SELECTION.
" Chama tela de o Custom Control de caixa de texto.
CALL SCREEN 9001.
END-OF-SELECTION.
" de texto na sua tela para que o pessoal possa faze comentários sobre
" algo, primeiramente estarei mostrando como faz um, daqui a pouco num
" post futuro eu posto usando na prática gravando e deletando estes
" comentário.
" Ahhh, eu criei uma tela com um Custom Control, vocês vão perceber
" isso quando verem a classe que o objeto Container está sendo referenciado,
" o nome deste Custom Control está sendo informado quando eu crio o
" Container. Outra coisa.... Isso eh um report não eh um module mas se quiser
" fazer em Module Pool fiquem a vontade.
REPORT z_cl_gui_textedit.
" Variáveis Globais
DATA:
ok_code TYPE sy-ucomm.
" Estruturas e tabelas internas
DATA:
st_tdline TYPE tdline,
it_tdline TYPE TABLE OF tdline.
" Objetos
DATA:
container TYPE REF TO cl_gui_custom_container,
editor TYPE REF TO cl_gui_textedit.
" Início do processo
START-OF-SELECTION.
" Chama tela de o Custom Control de caixa de texto.
CALL SCREEN 9001.
END-OF-SELECTION.
quarta-feira, 25 de abril de 2012
Função - DAYS_BETWEEN_TWO_DATES
" Opaaaa, hoje vou mostrar uma função que retorna a quantidade de dias
" entre duas datas, muito usada no modulo HR, Agradecimentos ao nosso
" Parceiro do Blog o Sr. Alê Henrique por este post.
REPORT z_days_between_two_dates.
" Estruturas e tabelas internas
DATA :
it_sflight TYPE TABLE OF sflight,
st_sflight TYPE sflight.
START-OF-SELECTION.
" Seleção de dados para alimentar as datas.
PERFORM : f_select,
" Usa a função pra ver o intervalo de dias entre as datas.
f_trata_dados.
BREAK-POINT.
*&---------------------------------------------------------------------*
*& Form f_select
*&---------------------------------------------------------------------*
FORM f_select .
" Seleção normal somente de 2 linhas
SELECT *
FROM sflight
INTO TABLE it_sflight
UP TO 2 ROWS.
ENDFORM. " f_select
" entre duas datas, muito usada no modulo HR, Agradecimentos ao nosso
" Parceiro do Blog o Sr. Alê Henrique por este post.
REPORT z_days_between_two_dates.
" Estruturas e tabelas internas
DATA :
it_sflight TYPE TABLE OF sflight,
st_sflight TYPE sflight.
START-OF-SELECTION.
" Seleção de dados para alimentar as datas.
PERFORM : f_select,
" Usa a função pra ver o intervalo de dias entre as datas.
f_trata_dados.
BREAK-POINT.
*&---------------------------------------------------------------------*
*& Form f_select
*&---------------------------------------------------------------------*
FORM f_select .
" Seleção normal somente de 2 linhas
SELECT *
FROM sflight
INTO TABLE it_sflight
UP TO 2 ROWS.
ENDFORM. " f_select
Assinar:
Postagens (Atom)

