* Abapers, vou mostrar hoje uma função que mostra um PopUp que mostra
* opções para o User, e assim você trata o retorno do jeito que tens que
* tratar abaixo tem o código de exemplo, eu coloquei comentários nos
* parametros não usados, descomentem e façam teste... até a próxima.
*&---------------------------------------------------------------------*
REPORT z_popup_to_decide_list.
* Declaração dos parametros para exec da função
DATA :
st_spopli TYPE spopli, " Estrutura das Opções
it_spopli TYPE TABLE OF spopli, " Tabela das opções
vg_answer TYPE answer. " A resposta do User
START-OF-SELECTION.
PERFORM : z_cria_opcoes,
z_exec_func,
z_trata_retorno_func.
quarta-feira, 22 de agosto de 2012
terça-feira, 7 de agosto de 2012
ALV - 'IT_SORT', somatória e subtotal
* Eae, vou comentar hoje como usar o parametro 'IT_SORT' da função que
* cria o ALV, esse parametro informa um ou mais campos da tela que será
* ordenado da forma que desejar também, segue aee o código comentado,
* adicionei algumas propriedade no alv como somatória por subtotal, usando
* o parametro 'IT_SORT' e 'IT_FIELDCAT', bons estudos.
*&---------------------------------------------------------------------*
REPORT z_alv_sort.
* Declaração do grupo de types para criação do ALV.
TYPE-POOLS :
slis.
* Tabelas Transparentes
TABLES :
spfli,
sflight.
* Tabelas Internas
DATA : it_spfli TYPE TABLE OF spfli,
st_spfli TYPE spfli,
it_sflight TYPE TABLE OF sflight,
st_sflight TYPE sflight
.
* Estruturas e tabelas internas para uso do ALV
DATA : it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
st_fieldcat TYPE slis_fieldcat_alv,
it_sort TYPE TABLE OF slis_sortinfo_alv,
st_sort TYPE slis_sortinfo_alv,
it_layout TYPE TABLE OF slis_layout_alv,
st_layout TYPE slis_layout_alv
.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_carrid TYPE spfli-carrid.
SELECT-OPTIONS :
s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
* Seleções
PERFORM zf_selects.
* Relatorio
PERFORM zf_relatorio.
* cria o ALV, esse parametro informa um ou mais campos da tela que será
* ordenado da forma que desejar também, segue aee o código comentado,
* adicionei algumas propriedade no alv como somatória por subtotal, usando
* o parametro 'IT_SORT' e 'IT_FIELDCAT', bons estudos.
*&---------------------------------------------------------------------*
REPORT z_alv_sort.
* Declaração do grupo de types para criação do ALV.
TYPE-POOLS :
slis.
* Tabelas Transparentes
TABLES :
spfli,
sflight.
* Tabelas Internas
DATA : it_spfli TYPE TABLE OF spfli,
st_spfli TYPE spfli,
it_sflight TYPE TABLE OF sflight,
st_sflight TYPE sflight
.
* Estruturas e tabelas internas para uso do ALV
DATA : it_fieldcat TYPE TABLE OF slis_fieldcat_alv,
st_fieldcat TYPE slis_fieldcat_alv,
it_sort TYPE TABLE OF slis_sortinfo_alv,
st_sort TYPE slis_sortinfo_alv,
it_layout TYPE TABLE OF slis_layout_alv,
st_layout TYPE slis_layout_alv
.
* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_carrid TYPE spfli-carrid.
SELECT-OPTIONS :
s_connid FOR spfli-connid.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
* Seleções
PERFORM zf_selects.
* Relatorio
PERFORM zf_relatorio.
sexta-feira, 3 de agosto de 2012
Trabalhando com Objeto de textos - SO10
* Eae, hoje vou passar uma diquinha sobre a transação 'SO10' que trabalha
* com objeto de textos, vcs se lembram dos posts sobre criação e leitura
* de textos? segue links abaixo:
* http://abapjuniores.blogspot.com.br/2012/05/funcao-createtext.html
* http://abapjuniores.blogspot.com.br/2011/10/funcao-read-text.html
* Então,... alem de vocês executaram as funções para criação e leitura,
* vocês podem ir nessa transação e trabalhar com objetos de textos do
* mesmo jeito.
* Olha a telinha aiii...
* com objeto de textos, vcs se lembram dos posts sobre criação e leitura
* de textos? segue links abaixo:
* http://abapjuniores.blogspot.com.br/2012/05/funcao-createtext.html
* http://abapjuniores.blogspot.com.br/2011/10/funcao-read-text.html
* Então,... alem de vocês executaram as funções para criação e leitura,
* vocês podem ir nessa transação e trabalhar com objetos de textos do
* mesmo jeito.
* Olha a telinha aiii...
quarta-feira, 1 de agosto de 2012
Função - SSF_FUNCTION_MODULE_NAME
* Eae rapaziada, desculpa a ausência, mas já estou voltando a ativa
* novamente, agora irei começar a passar alguns pré requisitos para
* fazermos o Smartforms passo a passo, simmm..... o tão esperado Smartforms.
* Primeira coisa que vou passar vai ser uma função que retorna o nome
* da função criada pelo seu formulário ( smartforms ou Sapscript ), o nome
* da função que executa seu formulário é criada dinamicamente.
* Se você tiver algum smart ou sapscript, coloque o nome dele no campo
* formname, se não tiver espere um pouquinho que daki a pouco estaremos
* fazendo ums passo a passo de Smartforms. Bons testes.
*
*&---------------------------------------------------------------------*
REPORT z_form_function_name.
data :
vl_fm_name TYPE RS38L_FNAM.
START-OF-SELECTION.
* Executada a função que retorna o nome da função que chama o formulário
PERFORM z_busca_nome_function.
* Executa o function que chama o formulário.
PERFORM z_call_form.
* novamente, agora irei começar a passar alguns pré requisitos para
* fazermos o Smartforms passo a passo, simmm..... o tão esperado Smartforms.
* Primeira coisa que vou passar vai ser uma função que retorna o nome
* da função criada pelo seu formulário ( smartforms ou Sapscript ), o nome
* da função que executa seu formulário é criada dinamicamente.
* Se você tiver algum smart ou sapscript, coloque o nome dele no campo
* formname, se não tiver espere um pouquinho que daki a pouco estaremos
* fazendo ums passo a passo de Smartforms. Bons testes.
*
*&---------------------------------------------------------------------*
REPORT z_form_function_name.
data :
vl_fm_name TYPE RS38L_FNAM.
START-OF-SELECTION.
* Executada a função que retorna o nome da função que chama o formulário
PERFORM z_busca_nome_function.
* Executa o function que chama o formulário.
PERFORM z_call_form.
quarta-feira, 4 de julho de 2012
Classe - CL_ABAP_TYPEDESCR
* Bom dia, hoje vou mostrar um classe que mostra detalhes sobre o tipo
* da declaração como tamanho, tipo e mais algumas coisas, no exemplo
* abaixo estarei usando o método 'describe_by_data' mas se vc for na
* Transação se24 e colocar a classe lah, verá que existe outros metodos
* tão importante quanto, t+.
*&---------------------------------------------------------------------*
REPORT z_describe_by_data.
* Declarações
TYPES ty_tipo TYPE i.
DATA: vg_variavel TYPE ty_tipo,
ref_descricao TYPE REF TO cl_abap_typedescr.
* Início do processo
START-OF-SELECTION.
* Eu deixei um código comentado abaixo para vocês fazerem o teste com
* outra variável.
ref_descricao = cl_abap_typedescr=>describe_by_data( vg_variavel ).
* ref_descricao = cl_abap_typedescr=>describe_by_data( ref_descricao ).
BREAK-POINT.
WRITE: / 'Referência:', ref_descricao->absolute_name.
WRITE: / 'Tipo :', ref_descricao->type_kind.
WRITE: / 'Tamanho :', ref_descricao->length.
WRITE: / 'Decimais :', ref_descricao->decimals.
BREAK-POINT.
* da declaração como tamanho, tipo e mais algumas coisas, no exemplo
* abaixo estarei usando o método 'describe_by_data' mas se vc for na
* Transação se24 e colocar a classe lah, verá que existe outros metodos
* tão importante quanto, t+.
*&---------------------------------------------------------------------*
REPORT z_describe_by_data.
* Declarações
TYPES ty_tipo TYPE i.
DATA: vg_variavel TYPE ty_tipo,
ref_descricao TYPE REF TO cl_abap_typedescr.
* Início do processo
START-OF-SELECTION.
* Eu deixei um código comentado abaixo para vocês fazerem o teste com
* outra variável.
ref_descricao = cl_abap_typedescr=>describe_by_data( vg_variavel ).
* ref_descricao = cl_abap_typedescr=>describe_by_data( ref_descricao ).
BREAK-POINT.
WRITE: / 'Referência:', ref_descricao->absolute_name.
WRITE: / 'Tipo :', ref_descricao->type_kind.
WRITE: / 'Tamanho :', ref_descricao->length.
WRITE: / 'Decimais :', ref_descricao->decimals.
BREAK-POINT.
segunda-feira, 2 de julho de 2012
Tipos de Selects - Parte 2
* Fala galerinha, Hoje vem a segunda parte dos Tipos de selects um pouco
* mais fundo sobre o assunto, mas mesmo assim básico pra qualquer ABAPer,
* ahhhh, tah com o mesmo esquema de break-points do post anterior, bons
* Estudos e qualquer dúvida estamos aih, vou aproveitar e informar que
* o serviço de distribuição de curriculos continua a todo o vapor, to
* falando isso pq recebi alguns emails com essa dúvida. Valeo aeee.
*&---------------------------------------------------------------------*
REPORT z_selects_type.
* Declarações das estruturas e tabelas Internas
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight,
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
* Range's
DATA :
r_fltime TYPE RANGE OF spfli-fltime,
rs_fltime LIKE LINE OF r_fltime.
.
* Usando Inner Join / Left outer Join, que serve pra alimentar uma
* unica tabela com informações de duas tabelas que tenha pelomenos uma
* relação (campo) em comum.
PERFORM f_inner_join.
* O famoso 'For all entries' primeiro seleciona normal os dados de uma
* tabela e na segunda tabela são selecionados os registros conforme os
* dados da primeira
PERFORM f_for_all_entries.
* Seleciona com condições especíais.
PERFORM f_cond_especial.
* mais fundo sobre o assunto, mas mesmo assim básico pra qualquer ABAPer,
* ahhhh, tah com o mesmo esquema de break-points do post anterior, bons
* Estudos e qualquer dúvida estamos aih, vou aproveitar e informar que
* o serviço de distribuição de curriculos continua a todo o vapor, to
* falando isso pq recebi alguns emails com essa dúvida. Valeo aeee.
*&---------------------------------------------------------------------*
REPORT z_selects_type.
* Declarações das estruturas e tabelas Internas
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight,
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
* Range's
DATA :
r_fltime TYPE RANGE OF spfli-fltime,
rs_fltime LIKE LINE OF r_fltime.
.
* Usando Inner Join / Left outer Join, que serve pra alimentar uma
* unica tabela com informações de duas tabelas que tenha pelomenos uma
* relação (campo) em comum.
PERFORM f_inner_join.
* O famoso 'For all entries' primeiro seleciona normal os dados de uma
* tabela e na segunda tabela são selecionados os registros conforme os
* dados da primeira
PERFORM f_for_all_entries.
* Seleciona com condições especíais.
PERFORM f_cond_especial.
terça-feira, 26 de junho de 2012
Tipos de Selects - Parte 1
" Boa tarde galera, hoje vou passar um guia prático de alguns dos tipos
" mais usados de selects com explicação e exemplo. Na minha opnião, o
" select é o coração do programa, é o que faz tudo acontecer, pois sem
" dados não conseguimos (não precisamos) fazer nada.
" Eu mesmo coloquei um Break-point em cada momento importante do programa
" para que vocês possam ver os valores.
" Ahhhh fique sempre com a tabela aberta (SE11) pra confirmar os valores
" retornados pelo selects.
" Esse é só o começo, depois eu mostro outros tipos de selects... Bons estudos
*&---------------------------------------------------------------------*
REPORT z_selects_type.
* Declarações
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight,
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
* Select simples.
PERFORM f_simples.
* select com condição.
PERFORM f_condicao.
* Seleciona somente uma linha
PERFORM f_single.
* Seleciona somente as informações de um ou mais campos alimenta
* uma ou mais variáveis conforme condições.
PERFORM f_variavel.
* Selecionando campos especificos e alimentando os respectivo
* campos da tabela/ estrutura.
PERFORM f_corresponding_fields.
* Seleciona conforme informações específicas ( MAX, MIN, AVG, SUM, COUNT )
PERFORM f_agregados.
" mais usados de selects com explicação e exemplo. Na minha opnião, o
" select é o coração do programa, é o que faz tudo acontecer, pois sem
" dados não conseguimos (não precisamos) fazer nada.
" Eu mesmo coloquei um Break-point em cada momento importante do programa
" para que vocês possam ver os valores.
" Ahhhh fique sempre com a tabela aberta (SE11) pra confirmar os valores
" retornados pelo selects.
" Esse é só o começo, depois eu mostro outros tipos de selects... Bons estudos
*&---------------------------------------------------------------------*
REPORT z_selects_type.
* Declarações
DATA :
it_spfli TYPE TABLE OF spfli,
it_sflight TYPE TABLE OF sflight,
st_spfli TYPE spfli,
st_sflight TYPE sflight
.
* Select simples.
PERFORM f_simples.
* select com condição.
PERFORM f_condicao.
* Seleciona somente uma linha
PERFORM f_single.
* Seleciona somente as informações de um ou mais campos alimenta
* uma ou mais variáveis conforme condições.
PERFORM f_variavel.
* Selecionando campos especificos e alimentando os respectivo
* campos da tabela/ estrutura.
PERFORM f_corresponding_fields.
* Seleciona conforme informações específicas ( MAX, MIN, AVG, SUM, COUNT )
PERFORM f_agregados.
sexta-feira, 22 de junho de 2012
Dicionário de dados - Rotinas da View de Manut.
" Boa dia aee, hoje vou mostrar uma outra ferramenta na criação de views
" de manutenção que são a criação de Rotinas nas Views...
" Não sei se vocês perceberam mas no post passado sobre View de manutenção
" link: http://abapjuniores.blogspot.com.br/2012/06/span-font-family-courier-newfont-size.html
" que conseguimos deixar o campo 'NOME' de uma forma que não pudesse ser
" mais editado, mas existe um botãozinho malandro que se chama 'Novas
" entradas' esse botão inclui uma nova entrada na tabela ( dãããã ), mas
" conforme informado no post passado essa View de manutenção é soh pra ver
" mesmo, portanto neste post irei mostrar como passar por rotinas após
" ação do User sem codificar nada.
" Vamos lah, primeiro vá na tabela(se11), deixe-a para edição( clique no
" lapizinho), e vá para o menu 'Utilitários/Gerador de atualização de tabela'.
" conforme Imagem abaixo.
" Bemm, aqui nós estaremos nos dados da 'geração de diálogos de tabelas'
" onde espero que o mesmo já tenha sido criado, se não, veja link abaixo.
" http://abapjuniores.blogspot.com.br/2011/09/dicionario-view-de-manutencao-de.html
" Agora nessa tela vá no menu 'Ambiente/modificação/Horas'
" de manutenção que são a criação de Rotinas nas Views...
" Não sei se vocês perceberam mas no post passado sobre View de manutenção
" link: http://abapjuniores.blogspot.com.br/2012/06/span-font-family-courier-newfont-size.html
" que conseguimos deixar o campo 'NOME' de uma forma que não pudesse ser
" mais editado, mas existe um botãozinho malandro que se chama 'Novas
" entradas' esse botão inclui uma nova entrada na tabela ( dãããã ), mas
" conforme informado no post passado essa View de manutenção é soh pra ver
" mesmo, portanto neste post irei mostrar como passar por rotinas após
" ação do User sem codificar nada.
" Vamos lah, primeiro vá na tabela(se11), deixe-a para edição( clique no
" lapizinho), e vá para o menu 'Utilitários/Gerador de atualização de tabela'.
" conforme Imagem abaixo.
" Bemm, aqui nós estaremos nos dados da 'geração de diálogos de tabelas'
" onde espero que o mesmo já tenha sido criado, se não, veja link abaixo.
" http://abapjuniores.blogspot.com.br/2011/09/dicionario-view-de-manutencao-de.html
" Agora nessa tela vá no menu 'Ambiente/modificação/Horas'
Assinar:
Postagens (Atom)


