segunda-feira, 30 de maio de 2011

Simbolo de Texto

" Tome cuidado pra não deixar Simbolo de texto grudado com '/' pois o programa pode considerar como uma variavel de programa na hora que for criar. "

sexta-feira, 27 de maio de 2011

Função - POINT_IN_TIME_CONVERT

  "  Function onde vc informa os segundos e ele retorna o dia e a hora.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980
" bem pelomenos aki e a partir de 1980 srsrs

REPORT zmjpoint_in_type_convert.

DATA : g_pit TYPE i " Variavel que recebe retorno da função
      .

data : g_sel_datum TYPE sy-datum,
       g_sel_uzeit TYPE sy-uzeit
       .

g_pit = 60000.

CALL function 'POINT_IN_TIME_CONVERT'
  exporting
    POINT_IN_TIME       = G_PIT    " Quantidade de segundos informados
 importing
   DATE                 = G_SEL_DATUM " Data Retorno
   time                 = g_sel_uzeit " Hora Retorno
          .

WRITE : 'Data: ',g_sel_datum,/
        'Hora: ', g_sel_uzeit,/
        'Retorno: ', g_pit
       .

Função DATE_TIME_CONVERT

  "  Function muito simples onde vc informa o dia e a hora que e ele 
" retorna a quantidade de segundos.
" Não se esqueça que eh a partir de 00:00:00 de 01/01/1980

REPORT zmjdate_type_convert.

DATA : g_pit TYPE i " Variavel que recebe retorno da função
      .

CALL FUNCTION 'DATE_TIME_CONVERT'
  EXPORTING
    date                 = sy-datum " Dia do sistema
    time                 = sy-uzeit " Hora do sistema
  IMPORTING
    point_in_time        = g_pit    " Retorno
  EXCEPTIONS
    date_before_rel_date = 1
    date_to_big          = 2
    OTHERS               = 3.

WRITE : 'Data: ',sy-datum,/
        'Hora: ', sy-uzeit,/
        'Retorno: ', g_pit,/
       .

Nomenclatura Padrão

" Toda a vez que for nomear algum objeto, use o padrão de nomenclatura do cliente, se não tiver, crie uma ou use o do SAP, Mas nunca nomeie de qualquer jeito"

segunda-feira, 16 de maio de 2011

Select com campos de tipos diferentes

  "  Com o código abaixo conseguiremos trabalha num select comparando dois
" campos com tipos diferentes, kona-knuma é do tipo char10 e o campo
" cdhdr-objectid tem o tipo char90 portanto na hora de fazer a comparação
" e vc apertar Ctrl+f2 ( espero que vcs façam isso toda hora) irá aparecer
" este erro...


 

"  Para que não aconteça isso vc deverá alimentar a primeira tabela e depois
" jogar os dados pra dentro de uma tabela auxiliar onde o campo que vc irá
" usar no select será do mesmo tipo da tabela que vc que pegar os novos dados,
" parece dificil mas é sussa. Debuga este programa e conseguiram ver.
" Espero que vcs tenham dados na tabela KONA, na proxima eu uso outras tabelas.

REPORT zmj_fields_ne.

TYPES :
  " Estipulações ...
  BEGIN OF ty_kona,
    knuma  TYPE kona-knuma ," Estipulação
    vkorg  TYPE kona-vkorg ," Organização de Vendas
    vtweg  TYPE kona-vtweg ," Canal Distribuição
  END OF   ty_kona,

  " Estipulações aux para comparar tipo no select OBjectid/knuma
  BEGIN OF ty_kona_aux,
    knuma TYPE cdhdr-objectid," Estipulação
    vkorg TYPE kona-vkorg ,   "Organização de Vendas
    vtweg TYPE kona-vtweg ,   "Canal Distribuição
  END OF   ty_kona_aux,

  " Cabeçalho do documento de modificação
  BEGIN OF ty_cdhdr,
    objectclas TYPE cdhdr-objectclas,   " Classe de objetos
    objectid   TYPE cdhdr-objectid,     " Valor do objeto
    changenr   TYPE cdhdr-changenr,     " Nº modificação do documento
  END OF   ty_cdhdr
  .

" Tabelas Internas ....
DATA : it_kona     TYPE TABLE OF ty_kona,
       it_kona_aux TYPE TABLE OF ty_kona_aux,
       it_cdhdr    TYPE TABLE OF ty_cdhdr
       .

" Estruturas ...
DATA : st_kona     TYPE ty_kona,
       st_kona_aux TYPE ty_kona_aux,
       st_cdhdr    TYPE ty_cdhdr
       .

START-OF-SELECTION.

  PERFORM : z_seleciona_dados,
            z_mostra_dados
            .
*&---------------------------------------------------------------------*
*&      Form  Z_SELECIONA_DADOS
*&---------------------------------------------------------------------*
*       Seleciona os dados da tabela
*----------------------------------------------------------------------*
FORM z_seleciona_dados .

  " Seleção tabela KONA
  SELECT knuma
         vkorg
         vtweg
    FROM kona
    INTO TABLE it_kona
    .
  " Aki tah o pulo do gato ... olhem no form o comentário...
  PERFORM z_trata_it_kona_aux.

  " Seleção tabela CDHDR conforme dados da tabela IT_KONA_AUX
  SELECT objectclas
         objectid
         changenr
    FROM cdhdr
    INTO TABLE it_cdhdr
    FOR ALL ENTRIES IN it_kona_aux
    WHERE objectid = it_kona_aux-knuma.

ENDFORM.                    " Z_SELECIONA_DADOS

*&---------------------------------------------------------------------*
*&      Form  Z_TRATA_IT_KONA_AUX
*&---------------------------------------------------------------------*
*       Passa os dados da tabela it_kona para a it_kona_aux com tipo do
"  campo knuma modificado assim conseguindo compará-los no select.
*----------------------------------------------------------------------*
FORM z_trata_it_kona_aux .

  LOOP AT it_kona INTO st_kona.
    MOVE-CORRESPONDING st_kona TO st_kona_aux.
    st_kona_aux-knuma  = st_kona-knuma.
    APPEND st_kona_aux TO it_kona_aux.
  ENDLOOP.

ENDFORM.                    " Z_TRATA_IT_KONA_AUX

*&---------------------------------------------------------------------*
*&      Form  Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
*       Axibe os dados.
*----------------------------------------------------------------------*
FORM z_mostra_dados .

  LOOP AT it_cdhdr INTO st_cdhdr.
    WRITE st_cdhdr.
  ENDLOOP.

ENDFORM.                    " Z_MOSTRA_DADOS

sexta-feira, 13 de maio de 2011

Função - DDIF_FIELDINFO_GET

 
"  Essa function traz pra vc a descrição do campo informado,
" muito usado em estipulações e modificações na SAP.

REPORT  zmj_prog_003.
" Tabelas Transparentes ....
TABLES : cdpos
.
" Tabelas Transparentes
DATA : DFIES_TAB like table of dfies,
       st_DFIES like dfies_tab with header line
       .

" Tela de Seleção .....
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_fname type cdpos-fname,
             p_tname type cdpos-tabname
  .
SELECTION-SCREEN END OF BLOCK b1.

" Start of Selection
START-OF-SELECTION.
  PERFORM : z_ddif_fieldinfo_get,
            z_mostra_dados
            .

*&---------------------------------------------------------------------*
*&      Form  Z_DDIF_FIELDINFO_GET
*&---------------------------------------------------------------------*
FORM z_ddif_fieldinfo_get .

  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname             = p_tname     " Nome da Tabela
     fieldname            = p_fname     " Nome do Campo
     langu                = sy-langu    " Lingua do sistema
 TABLES
     dfies_tab            = dfies_tab   " Tabela de retorno
                  .
break-point.

ENDFORM.                    " Z_DDIF_FIELDINFO_GET

*&---------------------------------------------------------------------*
*&      Form  Z_MOSTRA_DADOS
*&---------------------------------------------------------------------*
form Z_MOSTRA_DADOS .

LOOP AT dfies_tab into st_dfies.

  write : /,'Tabela : ', st_dfies-tabname ,/
           ,'Campo: ', st_dfies-fieldname ,/
           , 'Descrição do campo:' , st_dfies-FIELDTEXT
.
ENDLOOP.

endform.                    " Z_MOSTRA_DADOS

terça-feira, 10 de maio de 2011

Estruturas sujas

Dica do Dia.

" Limpar as estruturas antes de trabalhar com elas para que não tenha sujeira de informação, Principalmente em dentro do 'LOOP antes de 'READ TABLE."

Função - POPUP_TO_CONFIRM_STEP

  "  Olha uma função para relação com o usuário, onde o mesmo dá um retorno
" pro programa e assim o programa procede conforme a decisão do usuário.

report zFunc_aprov.

tables : bseg,
         bkpf
          .
" Constantes ....
constants : c_x type value 'X',
            c_j type value 'J',
            c_n type VALUE 'N',
            c_c type value 'C'
            .
" Variáveis Globais ....
data : vg_answer type c
        .

" Tela de seleção ....
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.

PARAMETERS :     r_pergu  RADIOBUTTON GROUP rad1,
                 r_nperg  RADIOBUTTON GROUP rad1 DEFAULT 'X'
                  .
SELECTION-SCREEN END OF BLOCK b1.

start-of-selection.

IF r_pergu = 'X'.
  perform : z_perguntar
    .
  CASE vg_answer.
    WHEN c_j.
      write 'Vc aceitou'.
    WHEN c_n.
      write 'vc Não Aceitou'.
    WHEN OTHERS.
      write 'vc Cancelou o esquema'.
  ENDCASE.
else.
  write 'Vc não quis responder nada'.

ENDIF.

*&---------------------------------------------------------------------*
*&      Form  Z_PERGUNTAR
*&---------------------------------------------------------------------*
form Z_PERGUNTAR .
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
  EXPORTING
 "   DEFAULTOPTION        = 'Y'      " Deixa padronizado na resposta 'Yes'
    textline1            = ' Vc Deseja isso mesmo ' " Texto Informativo 1
*   TEXTLINE2            = ' '                      " texto Informativo 2
    titel                = 'Decisão'                " Titulo da Caixa
"   START_COLUMN         = 25        " Posição horizontal da caixa
*   START_ROW            = 6         " Posição Vertical da caixa
   CANCEL_DISPLAY       = 'X'        " add O botão 'Cancel na telinha
 IMPORTING
   ANSWER                = vg_answer " Variável q recebe retorno do usuário
          .
endform.                    " Z_PERGUNTAR

"  Me disseram antes de postar que esta function já eh obsoleta quem souber
" qual é a function do Momento posta aeeee.