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'.

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.


*  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'.


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
  
.




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.





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.
*&---------------------------------------------------------------------*

quarta-feira, 27 de agosto de 2014

Função - LVC_TRANSFER_FROM_SLIS


*  Vamos mudar tudo para Orientação a Objeto', é o que a SAP fala sobre o
* ABAP no futuro, o problema vai ser dar manutenção nos ALV's antigos
* mudando para o ALV Orientado, para dar uma mãozinha nisso, existem duas
* funções que fazem a conversão do formato das tabelas usadas entre a
* função 'reuse_alv_gri_display' e a classe cl_gui_alv_grid, como sou
* defensor da Orientacao a objeto estarei mostrando a função que
* converte de Estrutural para Orientado, mas para não ficarem revoltados
* comigo a funcao q faz inverso é a 'LVC_TRANSFER_TO_SLIS'.
*&---------------------------------------------------------------------*
REPORT z_from_estrut_to_orient.

DATA :
 t_fcat     
TYPE TABLE OF slis_fieldcat_alv,
 t_fcat_lvc 
TYPE TABLE OF lvc_s_fcat,
 t_sflight  
TYPE TABLE OF sflight
 
.

* Selecao de dados
SELECT *
  
FROM sflight
  
INTO TABLE t_sflight
  
UP TO 10 ROWS
  
.

BREAK-POINT.

* Criação do catalogo de campos da função
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  
EXPORTING
    i_program_name         
sy-repid
*   I_INTERNAL_TABNAME     =
    i_structure_name       
'SFLIGHT'
*   I_CLIENT_NEVER_DISPLAY = 'X'
*   I_INCLNAME             =
*   I_BYPASSING_BUFFER     =
*   I_BUFFER_ACTIVE        =
  
CHANGING
    ct_fieldcat            
t_fcat
  
EXCEPTIONS
    inconsistent_interface 
1
    program_error          
2
    
OTHERS                 3.

BREAK-POINT.