* Fala rapaziada, hoje vou mostrar como encontrar um Rotina de conversão.
* Muitas vezes estamos usando valores de exibição e usamos ele para fazer
* seleção em alguma tabela mas esquecemos de incluir os zeros a esquerda,
* conforme o material ( MATNR ), ou o campo que é uma coisa mas na hora de
* usar como chave em outra tabela ele tem outro valor ( conforme elemento PEP
* ( PS_PSP_PNR ).
* Para encotrar é muito fácil, primeiro você clica duas vezes no elemento ou
* vai na se11 e coloca o nome do elemento na campo 'Categoria de dados' e clique
* em 'Exibir' conforme abaixo.
* Depois clique duas vezes no Domínio.
quinta-feira, 7 de janeiro de 2016
terça-feira, 13 de outubro de 2015
Projeto ABAP Junior - Skype
Fala Galera, pensando nos emails que estou recebendo de dúvidas e sugestões estou criando um grupo no Skype para conversarmos sobre tópicos de interesse coletivo e principalmente que faça sentido para o Mundo SAP / ABAP.
- Dúvidas
A ideia é simples, vamos conversando ajudando uns aos outros, essa será uma importante ferramenta para auxílio de todo o ABAP emergente.
- Sugestões
Mais simples ainda.... As vezes estou focado num Post sobre algo interessante, mas que na minha visão é interessante, como criei o Blog para ajudar os ABAP que querem aprender nada melhor que perguntar para vocês quais são os tópicos mais desejados.
- Oportunidades
Essa com certeza irão gostar, aparecendo vagas estarei disponibilizando-as no grupo e torcendo para que consigam entrar ou até trocar de emprego caso necessário.
Obs.: A situação atualmente do Brasil não está muito boa, mas estaremos estudando nesse grupo para que situações externas não afetem a nossas oportunidades, pois sendo um profissional diferenciado, o mercado olhará pra você de forma diferenciada.
Me adicionem e peçam para entrar no Grupo, todos cientes dos tópicos acima serão bem vindos
Skype : maurorpjunior
Valeoooooo
- Dúvidas
A ideia é simples, vamos conversando ajudando uns aos outros, essa será uma importante ferramenta para auxílio de todo o ABAP emergente.
- Sugestões
Mais simples ainda.... As vezes estou focado num Post sobre algo interessante, mas que na minha visão é interessante, como criei o Blog para ajudar os ABAP que querem aprender nada melhor que perguntar para vocês quais são os tópicos mais desejados.
- Oportunidades
Essa com certeza irão gostar, aparecendo vagas estarei disponibilizando-as no grupo e torcendo para que consigam entrar ou até trocar de emprego caso necessário.
Obs.: A situação atualmente do Brasil não está muito boa, mas estaremos estudando nesse grupo para que situações externas não afetem a nossas oportunidades, pois sendo um profissional diferenciado, o mercado olhará pra você de forma diferenciada.
Me adicionem e peçam para entrar no Grupo, todos cientes dos tópicos acima serão bem vindos
Skype : maurorpjunior
Valeoooooo
quinta-feira, 21 de maio de 2015
Função - SD_CALC_DURATION_FROM_DATETIME
* Boa tarde galera, quem é vivo sempre aparece, hoje vou mostrar
* uma função muito boa que te retorna o intervalo entre duas datas
* em horas, minutos e se for esperto até os segundo, usei essa função
* pra criar uma regra de criticidade das datas onde a empresa deveria
* dar retorno ao cliente deles.
* Vamos lá então porque a função é simples, e de brinde executei a
* rotina de conversão, pra vocês compararem os valores coloquei um
* break-point no meio do processo.
* Bons estudos e espero ter ajudado.
*--------------------------------------------------------------------*
REPORT zfunction_calc_Interval_date_hour.
* Tela de seleão com parametros e um CheckBox caso queira usar a rotina
* de conversão.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_date2 TYPE sy-datum, " Data
p_time2 TYPE sy-uzeit. " Hora
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS :
cb_conv AS CHECKBOX. " Rotina de Conversão.
SELECTION-SCREEN END OF BLOCK b2.
DATA :
l_tdiff TYPE tvro-fahztd,
l_duration(10),
l_hour_bpm TYPE i
.
* Essa é a função.... Simples e rápida.
CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME'
EXPORTING
i_date1 = sy-datum
i_time1 = sy-uzeit
i_date2 = p_date2
i_time2 = p_time2
IMPORTING
e_tdiff = l_tdiff
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
* uma função muito boa que te retorna o intervalo entre duas datas
* em horas, minutos e se for esperto até os segundo, usei essa função
* pra criar uma regra de criticidade das datas onde a empresa deveria
* dar retorno ao cliente deles.
* Vamos lá então porque a função é simples, e de brinde executei a
* rotina de conversão, pra vocês compararem os valores coloquei um
* break-point no meio do processo.
* Bons estudos e espero ter ajudado.
*--------------------------------------------------------------------*
REPORT zfunction_calc_Interval_date_hour.
* Tela de seleão com parametros e um CheckBox caso queira usar a rotina
* de conversão.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
p_date2 TYPE sy-datum, " Data
p_time2 TYPE sy-uzeit. " Hora
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS :
cb_conv AS CHECKBOX. " Rotina de Conversão.
SELECTION-SCREEN END OF BLOCK b2.
DATA :
l_tdiff TYPE tvro-fahztd,
l_duration(10),
l_hour_bpm TYPE i
.
* Essa é a função.... Simples e rápida.
CALL FUNCTION 'SD_CALC_DURATION_FROM_DATETIME'
EXPORTING
i_date1 = sy-datum
i_time1 = sy-uzeit
i_date2 = p_date2
i_time2 = p_time2
IMPORTING
e_tdiff = l_tdiff
EXCEPTIONS
invalid_datetime = 1
OTHERS = 2.
quinta-feira, 6 de novembro de 2014
Função - 'NUMBER_GET_NEXT'
* Opa, agora que sabemos mexer com objeto de intervalo, vamos aprender
* a usar a função que informa o ultimo numero do nosso intervalo, essa
* função é a 'NUMBER_GET_NEXT'.
REPORT z_gera_serializacao.
DATA : v_number TYPE char10.
START-OF-SELECTION.
* Geração do serial usando o Primeiro Range do Objeto de Intervalo
PERFORM f_gera_serial
USING '01' 'Z_DOCS'.
* Geração do serial usando o Segundo Range do Objeto de Intervalo
PERFORM f_gera_serial
USING '02' 'Z_DOCS'.
* a usar a função que informa o ultimo numero do nosso intervalo, essa
* função é a 'NUMBER_GET_NEXT'.
REPORT z_gera_serializacao.
DATA : v_number TYPE char10.
START-OF-SELECTION.
* Geração do serial usando o Primeiro Range do Objeto de Intervalo
PERFORM f_gera_serial
USING '01' 'Z_DOCS'.
* Geração do serial usando o Segundo Range do Objeto de Intervalo
PERFORM f_gera_serial
USING '02' 'Z_DOCS'.
segunda-feira, 3 de novembro de 2014
Objeto de Intervalo de Numeração - SNRO
* A SAP fornece muitas ferramentas que nos auxiliam na hora de desenhar
* ou aplicar a solução, hoje vou mostrar como usar uma transação que
* serializa numeros, isso ajuda muito quando você cria algo. Exemplo :
* Quando criamos um material, ou Ordem de venda, ou Requisição......
* aquele numero que o sistema retorna pra você é o Numero sequencial dado
* ao seu processo por um intervalo serializado pré definido usando um
* determinado Objeto de intervalo de numeração.
* Não entendeu, vamos pra prática e irá entender.
* ou aplicar a solução, hoje vou mostrar como usar uma transação que
* serializa numeros, isso ajuda muito quando você cria algo. Exemplo :
* Quando criamos um material, ou Ordem de venda, ou Requisição......
* aquele numero que o sistema retorna pra você é o Numero sequencial dado
* ao seu processo por um intervalo serializado pré definido usando um
* determinado Objeto de intervalo de numeração.
* Não entendeu, vamos pra prática e irá entender.
* Primeiramente vamos para a Transação SNRO, iremos criar esse tal Objeto,
* que servirá para serializa Documentos. Dê o nome do objeto de 'Z_DOCS' e
* clique no botão 'CRIAR'.
* que servirá para serializa Documentos. Dê o nome do objeto de 'Z_DOCS' e
* clique no botão 'CRIAR'.
terça-feira, 30 de setembro de 2014
Docking, Splitter, ALV OO e Set Handler
* Fala Galera, hoje vamos dar andamento do Post anterior onde vamos brincar
* um pouco mais com os Container criados e vamos colocar ações no alv Editável.
* - Primeira coisa vamos trabalhar com evento do ALV para identificar o Duplo
* clique.
* - Cada duplo clique identificado irá atualizar outro alv de outro container.
* Esse esquema de duplo clique faz com que os usuários te idolatrem, e
* não tem nada de difícil, então vamos pro código abaixo.
* Ahhhh.... Opinião, sugestão e críticas serão sempre bem vindas.... Valeo.
*&---------------------------------------------------------------------*
REPORT zcl_gui_splitter_container.
*Tipos
*&---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_spfli,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF ty_spfli
.
* Criação da classe que identifica o Method com o evento do alv.
*----------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_double_click_header
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no,
handle_double_click_item
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no.
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD
handle_double_click_header.
PERFORM f_handler_dp_header USING e_row e_column es_row_no.
ENDMETHOD. "handle_double_click_header
METHOD
handle_double_click_item.
PERFORM f_handler_dp_item USING e_row e_column es_row_no.
ENDMETHOD. "handle_double_click_item
ENDCLASS. "lcl_event_handler IMPLEMENTATION
* Tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_spfli TYPE TABLE OF ty_spfli,
t_fcat_spfli TYPE TABLE OF lvc_s_fcat,
t_sflight TYPE TABLE OF sflight,
t_fcat_sflight TYPE TABLE OF lvc_s_fcat,
t_saplane TYPE TABLE OF saplane,
t_fcat_saplane TYPE TABLE OF lvc_s_fcat.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_splitter TYPE REF TO cl_gui_splitter_container
.
DATA :
o_container_spfli TYPE REF TO cl_gui_container,
o_container_sflight TYPE REF TO cl_gui_container,
o_container_saplane TYPE REF TO cl_gui_container,
o_alv_spfli TYPE REF TO cl_gui_alv_grid,
o_alv_sflight TYPE REF TO cl_gui_alv_grid,
o_alv_saplane TYPE REF TO cl_gui_alv_grid,
* olha aqui o objeto com referencia a classe que acabamos de criar acima.
o_handler TYPE REF TO lcl_event_handler
.
* um pouco mais com os Container criados e vamos colocar ações no alv Editável.
* - Primeira coisa vamos trabalhar com evento do ALV para identificar o Duplo
* clique.
* - Cada duplo clique identificado irá atualizar outro alv de outro container.
* Esse esquema de duplo clique faz com que os usuários te idolatrem, e
* não tem nada de difícil, então vamos pro código abaixo.
* Ahhhh.... Opinião, sugestão e críticas serão sempre bem vindas.... Valeo.
*&---------------------------------------------------------------------*
REPORT zcl_gui_splitter_container.
*Tipos
*&---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_spfli,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF ty_spfli
.
* Criação da classe que identifica o Method com o evento do alv.
*----------------------------------------------------------------------*
* CLASS lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
CLASS lcl_event_handler DEFINITION.
PUBLIC SECTION.
METHODS:
handle_double_click_header
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no,
handle_double_click_item
FOR EVENT double_click OF cl_gui_alv_grid
IMPORTING e_row e_column es_row_no.
ENDCLASS. "lcl_event_handler DEFINITION
*----------------------------------------------------------------------*
* CLASS lcl_event_handler IMPLEMENTATION
*----------------------------------------------------------------------*
CLASS lcl_event_handler IMPLEMENTATION.
METHOD
handle_double_click_header.
PERFORM f_handler_dp_header USING e_row e_column es_row_no.
ENDMETHOD. "handle_double_click_header
METHOD
handle_double_click_item.
PERFORM f_handler_dp_item USING e_row e_column es_row_no.
ENDMETHOD. "handle_double_click_item
ENDCLASS. "lcl_event_handler IMPLEMENTATION
* Tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_spfli TYPE TABLE OF ty_spfli,
t_fcat_spfli TYPE TABLE OF lvc_s_fcat,
t_sflight TYPE TABLE OF sflight,
t_fcat_sflight TYPE TABLE OF lvc_s_fcat,
t_saplane TYPE TABLE OF saplane,
t_fcat_saplane TYPE TABLE OF lvc_s_fcat.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_splitter TYPE REF TO cl_gui_splitter_container
.
DATA :
o_container_spfli TYPE REF TO cl_gui_container,
o_container_sflight TYPE REF TO cl_gui_container,
o_container_saplane TYPE REF TO cl_gui_container,
o_alv_spfli TYPE REF TO cl_gui_alv_grid,
o_alv_sflight TYPE REF TO cl_gui_alv_grid,
o_alv_saplane TYPE REF TO cl_gui_alv_grid,
* olha aqui o objeto com referencia a classe que acabamos de criar acima.
o_handler TYPE REF TO lcl_event_handler
.
sexta-feira, 19 de setembro de 2014
Classe - CL_GUI_SPLITTER_CONTAINER
* Opa pessoal, hoje vou mostrar pra vocês como dividir uma tela em
* varios containers e trabalhar com ele de forma separadas, o legal é que
* está tudo na mesma tela, a mágica disso é CL_GUI_SPLITTER_CONTAINER,
* Esse programa que estou usando como exemplo terá continuidade, onde
* a idéia final é fazer que cada container, conforme as ações do user,
* se comuniquem, nesse post estarei mostrando como dividir a tela e
* referenciar duas dessas divisões, vamo que aqui aprendemos executando.
* No proximo Post colocarei ação em cada container, e no terceiro post
* será surpresa ( será surpresa porque eu nunca fiz, será surpresa pra mim
* também, rsrs .... Espero que funcione )
*&---------------------------------------------------------------------*
REPORT zcl_gui_splitter_container.
*Tipos
*&---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_spfli,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF ty_spfli
.
* Tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_spfli TYPE TABLE OF ty_spfli,
t_fcat_spfli TYPE TABLE OF lvc_s_fcat,
t_sflight TYPE TABLE OF sflight,
t_fcat_sflight TYPE TABLE OF lvc_s_fcat.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_splitter TYPE REF TO cl_gui_splitter_container
.
DATA :
o_container_spfli TYPE REF TO cl_gui_container,
o_container_sflight TYPE REF TO cl_gui_container,
o_alv_spfli TYPE REF TO cl_gui_alv_grid,
o_alv_sflight TYPE REF TO cl_gui_alv_grid
.
* Inicio do processo
START-OF-SELECTION.
PERFORM f_selects.
CALL SCREEN 9001.
* varios containers e trabalhar com ele de forma separadas, o legal é que
* está tudo na mesma tela, a mágica disso é CL_GUI_SPLITTER_CONTAINER,
* Esse programa que estou usando como exemplo terá continuidade, onde
* a idéia final é fazer que cada container, conforme as ações do user,
* se comuniquem, nesse post estarei mostrando como dividir a tela e
* referenciar duas dessas divisões, vamo que aqui aprendemos executando.
* No proximo Post colocarei ação em cada container, e no terceiro post
* será surpresa ( será surpresa porque eu nunca fiz, será surpresa pra mim
* também, rsrs .... Espero que funcione )
*&---------------------------------------------------------------------*
REPORT zcl_gui_splitter_container.
*Tipos
*&---------------------------------------------------------------------*
TYPES :
BEGIN OF ty_spfli,
carrid TYPE scarr-carrid,
carrname TYPE scarr-carrname,
connid TYPE spfli-connid,
cityfrom TYPE spfli-cityfrom,
cityto TYPE spfli-cityto,
END OF ty_spfli
.
* Tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_spfli TYPE TABLE OF ty_spfli,
t_fcat_spfli TYPE TABLE OF lvc_s_fcat,
t_sflight TYPE TABLE OF sflight,
t_fcat_sflight TYPE TABLE OF lvc_s_fcat.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_splitter TYPE REF TO cl_gui_splitter_container
.
DATA :
o_container_spfli TYPE REF TO cl_gui_container,
o_container_sflight TYPE REF TO cl_gui_container,
o_alv_spfli TYPE REF TO cl_gui_alv_grid,
o_alv_sflight TYPE REF TO cl_gui_alv_grid
.
* Inicio do processo
START-OF-SELECTION.
PERFORM f_selects.
CALL SCREEN 9001.
quinta-feira, 11 de setembro de 2014
Classe - CL_GUI_DOCKING_CONTAINER
REPORT z_cl_gui_docking_container.
* Hoje vou mostrar como criar um alv orientado a Objeto sem precisar
* criar nada na tela, o segredo disso tá na classe cl_gui_docking_container
* que irei mostrar abaixo. Vamos lá.
* Estruturas e tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_out TYPE TABLE OF sflight,
t_fcat TYPE TABLE OF lvc_s_fcat,
st_layout TYPE lvc_s_layo
.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_alv TYPE REF TO cl_gui_alv_grid.
* Inicio do processo
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* Seleção dos dados
PERFORM f_select_sflight.
* Chamada da tela que irá mostrar o ALV
CALL SCREEN 9999.
**&---------------------------------------------------------------------*
** Modules da tela 9999 criada acima.
*PROCESS BEFORE OUTPUT.
* MODULE status_9999.
* MODULE initial_9999.
*
*PROCESS AFTER INPUT.
* MODULE exit_command_9999 AT EXIT-COMMAND.
*&---------------------------------------------------------------------*
* Hoje vou mostrar como criar um alv orientado a Objeto sem precisar
* criar nada na tela, o segredo disso tá na classe cl_gui_docking_container
* que irei mostrar abaixo. Vamos lá.
* Estruturas e tabelas internas
*&---------------------------------------------------------------------*
DATA :
t_out TYPE TABLE OF sflight,
t_fcat TYPE TABLE OF lvc_s_fcat,
st_layout TYPE lvc_s_layo
.
* Objetos
*&---------------------------------------------------------------------*
DATA :
o_docking TYPE REF TO cl_gui_docking_container,
o_alv TYPE REF TO cl_gui_alv_grid.
* Inicio do processo
*&---------------------------------------------------------------------*
START-OF-SELECTION.
* Seleção dos dados
PERFORM f_select_sflight.
* Chamada da tela que irá mostrar o ALV
CALL SCREEN 9999.
**&---------------------------------------------------------------------*
** Modules da tela 9999 criada acima.
*PROCESS BEFORE OUTPUT.
* MODULE status_9999.
* MODULE initial_9999.
*
*PROCESS AFTER INPUT.
* MODULE exit_command_9999 AT EXIT-COMMAND.
*&---------------------------------------------------------------------*
Assinar:
Postagens (Atom)