quinta-feira, 30 de maio de 2013

TabStrip no Module Pool


*  Eae rapaziada, hoje vamos trabalhar com uma ferramenta usada muito em
* transações Standards e que facilitam muito a visualização para o user
* separando as informações por topicos em ABAS, isso mesmo, vamos 
* trabalhar com TABSTRIP no MODULE POOL, como sempre falo, não é difícil
* mas pra trabalharmos com Module pool precisamos ter a idéia do PBO e PAI
* nítidos nas nossas cabeças, não lembra ????.. Acesse o Link abaixo...
* http://abapjuniores.blogspot.com/2011/04/module-pool-basico.html
*  Vamos começar agora, primeiramente vamos criar no Module Pool, depois
* de criar, vamos criar uma tela pra ele conforme imagem abaixo, se não 
* for problema pra vocês, usem a mesma nomenclatura que estou usando.




*  Agora com a tela criada vamos colocar os TabStrips na mesma, clique no
* botão 'LAYOUT' e vamos desenhar as ABAS apertando no botão 'Controle de 
* fichas' (Tabstrip Control) e vamos prencheer toda a area da tela, agora 
* criada vamos declarar que a mesma tem três(3) abas, clique duas vezes no
* objeto e coloque (3) no campo 'ELEM.ÍND.' que pra mim é Índice de abas,
* conforme abaixo( Não tem F1 desse parametro aqui ).




sexta-feira, 24 de maio de 2013

Comando Try / Catch


*  Nós, meros abap's, devemos trabalhar de uma forma que nunca cause
* problemas para o User, sempre informando, em formas de mensagens,
* caso alguma coisa saia fora do padrão. O problema é que as vezes acontece
* o famoso e temido 'DUMP' e isso é um pesadelo pra todo o ABAP porque
* significa que você não fez todas as tratativas possiveis, portanto o
* programa volta para a sua mão e você analisa o problema, analisando
* descobre que você não consegue tratar esse problema ( muito difícil
* isso acontecer ) mas mesmo assim, esse maldito 'DUMP' não pode ocorrer
* dinovo, pra garantir isso usamos o comando 'TRY / CATCH' que serve como
* uma forma de tratativa caso ocorra um 'DUMP' e assim você substitui
* aquela tela cheia de texto marcados em vermelho e que as vezes vem escrito
* tudo em alemão pro User e retorna uma mensagem toda feliz e tranquila.
*  Veja como abaixo. Esse comando é bem parecido com os de outras linguagens,
* use esse comando como ultima das suas ações, tente sempre tratar antes de
* processar qualquer coisa. Good Luck =)

REPORT try_catch.
*&---------------------------------------------------------------------*
DATA :
  vg_value  
TYPE i,
  vg_string 
TYPE string VALUE 'ABC',
  vg_cont   
TYPE i,
  it_mara   
TYPE TABLE OF mara,
  vg_where  
TYPE string VALUE 'VBELN = VG_STRING'.

*  Eu Criei um 'DO' pra vocês verem 'DUMP`s' diferentes acontecendo no mesmo
* programa e mesmo assim o processo não é abortado, e sim, é mostrado uma
* mensagem bem mais amigável.

terça-feira, 21 de maio de 2013

Initialization / Start-of-Selection


*  Bom dia, tava trabalhando e perguntaram pra mim qual a diferença entre
* o comando 'INITIALIZATION' e 'START-OF-SELECTION', bem, pra sanar a dúvidas
* fiz este post simples pra tentar mostrar pra vocês de forma prática a
* diferença entre os mesmos, logo após ambos os comandos coloquei o mesmo
* perform, na verdade, não faz muito sentido fazer isso, mas assim vocês
* vão ver um pouco mais nítido a diferença entre eles, reparem os dados
* na tabela interna 'IT_SCARR' e no parametro de seleção 'S_CARRID', durante
* os dois momentos diferentes.

REPORT z_initi_x_start.

* Declaração de tabelas transparentes
TABLES :
  scarr.

* Tabelas Internas e estruturas
DATA:
  it_scarr 
TYPE TABLE OF scarr,
  st_scarr 
TYPE scarr.

* Tela de seleção
SELECTION-
SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
  s_carrid 
FOR scarr-carrid obligatory.
SELECTION-
SCREEN END OF BLOCK   b1.


*  INITIALIZATION - Esse comando força a execução de processos antes mesmo de
* mostrar a tela de seleção, funciona como o PBO de um Module Pool.
* Remember
* http://abapjuniores.blogspot.com.br/2011/04/module-pool-basico.html
INITIALIZATION.

  BREAK-POINT.

  
PERFORM z_seleciona_carrid.

*  START-OF-SELECTION - processo normal de um programa, após alimentar os dados
* na tela de seleção, os mesmos servirão como condição para as seleções de dados
* do programa e outras tratativas convenientes.
START-OF-SELECTION.

  BREAK-POINT.

  
PERFORM z_seleciona_carrid.

quinta-feira, 16 de maio de 2013

Procurando Objetos em Requests - SE03


*  Opa, trabalhando encima de um sapScript, o meu chefe perguntou...
* Quantas requests já foram pra produção com esse Formulário que você
* está trabalhando ? Na hora eu já falei não sei, mas vou ver...
*  Indo ver, percebi que não tem a opção 'Utilitarios/versões' que mostra
* todas as requests do objeto que estamos trabalhando igual a 'SE38',
* foi nessa hora que eu encontrei a transação 'SE03' que nada mais é que
* uma transação que dá um auxilio pra trabalhar com requests, o legal é
* que o primeiro link do menu é 'Procurar objetos em Ordens/Tarefas'..



segunda-feira, 13 de maio de 2013

Função - C14W_NUMBER_CHAR_CONVERSION


*  As vezes temos que trabalhar com numeros flutuantes ( type F )
* e na hora de mostrar percebos que o valor não eh muito amigável
* para um relatório, então usamos a função abaixo e o Key User
* vira nosso fã.
REPORT z_float_char_decimals.

TYPES :
  
BEGIN OF ty_saplane,
    planetype 
TYPE saplane-planetype,
    seatsmax  
TYPE saplane-seatsmax,
    consum    
TYPE saplane-consum,
    con_unit  
TYPE saplane-con_unit,
  
END OF   ty_saplane
  .

* Declaração da estrutura e variáveis
DATA :
  st_saplane 
TYPE ty_saplane,
  vg_char30  
TYPE char30,
  vg_dec     
TYPE esecompavg
  .

* Tela de seleção
SELECTION-
SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
  p_plane 
TYPE saplane-planetype obligatory.
SELECTION-
SCREEN END OF BLOCK   b1.

* Inicio do processo
START-
OF-SELECTION.

  
PERFORM : z_select_saplane,
            z_mostra_dados
          .