sexta-feira, 15 de março de 2013

Trabalhando com Números

  *  Salve Abapers, vamos conversar hoje sobre comandos que ajudam muito
* a gente quando estamos trabalhando com valores e números, são todos
* comandos simples, e como sempre feito pelo Blog, vou explicar e dar
* pelomenos um exemplo...
*&---------------------------------------------------------------------*
REPORT z_work_with_numbers.

* Primeiro vamos declarar as variáveis que vamos trabalhar...
DATA : v_int_pos  TYPE VALUE  '5',
       v_int_zero TYPE VALUE  '0',
       v_int_neg  TYPE VALUE '-5',
       v_dec_pos  TYPE DECIMALS VALUE  '1234.56',
       v_dec_neg  TYPE DECIMALS VALUE '-1234.89',
       v_string   TYPE string VALUE 'a1bcde2fg3hij5lmn78z'.

* Variáveis para tratativas numéricas
DATA : v_sign     TYPE i,
       v_trunc    TYPE i,
       v_frac     TYPE DECIMALS 2,
       v_sqrt     TYPE DECIMALS 2,
       v_sqrt_f   TYPE f,
       v_mod      TYPE i,
       v_div      TYPE i
       .

* Variáveis para tratativas alfanumericos.
DATA : v_strlen   TYPE i
       .




quarta-feira, 6 de março de 2013

ALV - Criação de variante de layout do ALV

  *  Um abaper Junior Bom, antes de pedir qualquer aumento pro chefe, tem
* que se garantir quando o assunto é ALV, e estamos aqui pra isso,
* para auxiliá-los nos seus programas, portanto abaixo estou dando um exemplo
* de como criar uma variante de layout de tela do seu ALV, sabe quando o
* KeyUser chega em você e fala que quer que o ALV venha somando algumas colunas,
* e faça subtotal, e coloque em ordem decrescente um monte de coisa, pra você
* não estressar com o ele, é só incluir dois parametros dentro da função
* que cria o alv, esses parametros são o 'i_save' e o 'is_variant', de
* brinde segue uma função que busca as variantes de layout do programa, segue
* código aihhhh minhaaa geeeennnntteeeeeee (Ritmo de carnaval ainda).
*  Qualquer dúvida estou a disposição.
REPORT z_criar_variante_layout_alv.

* Conjunto de tipos
TYPE-POOLS :
  slis.

* Tabelas
TABLES :
  scarr.

*Tipos
TYPES:
  BEGIN OF ty_spfli,
    carrid    TYPE spfli-carrid,
    connid    TYPE spfli-connid,
    countryfr TYPE spfli-countryfr,
    countryto TYPE spfli-countryto,
  END OF   ty_spfli,

  BEGIN OF ty_sflight,
     carrid    TYPE sflight-carrid,
     connid    TYPE sflight-connid,
     fldate    TYPE sflight-fldate,
     price     TYPE sflight-price,
     currency  TYPE sflight-currency,
     planetype TYPE sflight-planetype,
  END OF   ty_sflight,

  BEGIN OF ty_saplane,
    plantype TYPE saplane-planetype,
    consum   TYPE saplane-consum,
    producer TYPE saplane-producer,
  END OF   ty_saplane,

  BEGIN OF ty_outtab,
    carrid    TYPE scarr-carrid,
    connid    TYPE spfli-connid,
    fldate    TYPE sflight-fldate,
    price     TYPE sflight-price,
    currency  TYPE sflight-currency,
    planetype TYPE sflight-planetype,
    consum    TYPE saplane-consum,
    producer  TYPE saplane-producer,
    countryfr TYPE spfli-countryfr,
    countryto TYPE spfli-countryto,
    carrname  TYPE scarr-carrname,
    url       TYPE scarr-url,
  END OF ty_outtab
  .

* Tabelas Internas
DATA :
  it_scarr    TYPE TABLE OF scarr,
  it_spfli    TYPE TABLE OF ty_spfli,
  it_sflight  TYPE TABLE OF ty_sflight,
  it_saplane  TYPE TABLE OF ty_saplane,
  it_outtab   TYPE TABLE OF ty_outtab,
  it_fieldcat TYPE TABLE OF slis_fieldcat_alv
.

* Estruturas
DATA :
  st_scarr    TYPE scarr,
  st_spfli    TYPE ty_spfli,
  st_sflight  TYPE ty_sflight,
  st_saplane  TYPE ty_saplane,
  st_outtab   TYPE ty_outtab,
  st_fieldcat TYPE slis_fieldcat_alv,
  st_layout   TYPE slis_layout_alv,
  st_varia    TYPE disvariant
  .

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

*  Aqui tá parte do segredo, caso o programa já tenha alguma variável de
* de layout, na hora que clicar no matchcode do campo 'Layout' será
* criado um Pop-up com essas informações e assim você seleciona o que
* desejar.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
  PERFORM z_select_variavel_alv.

* Inicio do processo
START-OF-SELECTION.

  PERFORM : f_seleciona_dados.

  IF it_sflight IS NOT INITIAL.
    PERFORM : f_trata_dados,
              f_cria_alv
              .
  ENDIF.

* Fim do processo.
END-OF-SELECTION.