quinta-feira, 14 de novembro de 2013

Função - DATE_CHECK_PLAUSIBILITY

*  Eae Galera, trabalhando com retorno de doc. financeiros, precisei
* tratar as informações de data dentro de um arquivo txt, a unica coisa
* que eu precisava verificar era se a data informada era uma data valida,
* pra não ficar criando logicas loucas para verificar a data, a SAP,
* Muito boazinha, criou essa função que faz todas essas verificações pra
* nós abapers.
*  Mais simples que essa não existe, ela nem retorno nada, só o SUBRC,
* mas é o suficiente para tomarmos atitude depois.

REPORT z_date_check_plausibility.

* Declarações
DATA :
  vl_message 
TYPE string.

* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS :
  p_date 
TYPE sy-datum.
SELECTION-SCREEN END OF BLOCK   b1.

START-OF-SELECTION.

  
CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY'
    
EXPORTING
      
date                      p_date
    
EXCEPTIONS
      plausibility_check_failed 
1
      
OTHERS                    2.

* Mensagem de retorno.
  
IF sy-subrc IS INITIAL.

    
CONCATENATE 'Data'
                 p_date
                 
'Ok.'
      
INTO vl_message
      
SEPARATED BY space.

    
MESSAGE vl_message TYPE 'S'.
  
ENDIF.

  
CLEAR vl_message.

segunda-feira, 21 de outubro de 2013

Programas Sem Objetos de textos


*  Na maioria das vezes que vamos trabalhar com os textos entramos no
* tradicional menu conforme imagem abaixo.


 
 
*  Mas como somos pessoas ousadas, queremos incluir esses textos na raça,
* sem precisar criar qualquer tipo de objeto de texto, hoje esse post vou
* mostrar como fazer isso, não sei te explicar qual momento poderiamos
* usar isso, mas o mais importante é saber que é possível e que não é
* dificil o quanto parece. Como sempre, o segredo é estar familiarizado com
* com a cara de Debugger, vamos começar
*&---------------------------------------------------------------------*
REPORT z_text_in_selection_screen.

TYPES :
 
BEGIN OF ty_name,
   name     
TYPE screen-name,
   
text(30TYPE c,
 
END OF   ty_name
 
.

DATA :
  st_name 
TYPE ty_name,
  it_name 
TYPE TABLE OF ty_name
  
.

* Declaração pra criar o Select-option.
DATA :
 vso_default 
TYPE c.

FIELD-SYMBOLS :
 <name> 
TYPE ANY.

* Tela de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1.
PARAMETERS :
  p_field1
(3TYPE c,
  p_field2
(5TYPE c,
  p_field3    
TYPE p,
  p_field4    
TYPE i
  
.
SELECT-OPTIONS :
  s_field5  
FOR vso_default.
.
SELECTION-SCREEN END OF BLOCK   b1.

* Processo inicial ( PBO )
AT SELECTION-SCREEN OUTPUT.

quarta-feira, 14 de agosto de 2013

Assing Component

*  Fala aee, olha um post muito interessante pra quem gosta de trabalhar
* de forma dinamica, hoje vamos falar sobre o comando 'Assign Component'
* é uma comando usado pra você se referenciar ao valor do campo e não
* ao campo em sí.
*  No exemplo abaixo estou fazendo um programa que mostra somente os
* chaves da tabela informada, onde deverá ser criado as estrutura e
* tabelas tudo de forma dinâmica, reparem quais são os valores de cada
* tabela interna e veja como trabalho com ela no relacionamento de
* alimentação da tabela principal que terá uma estrutura só com os
* campos chaves da tabela da tela de seleção.

* Qualquer dúvida ou complemento fiquem a vontade. Espero ajudar. Tnx.

* Tirem as aspas simples (') da frente dos Fields Symbols.... rs

 
 
*&---------------------------------------------------------------------*
REPORT z_assign_component.

TYPE-POOLS :
  slis
.

DATA :
  it_table    
TYPE REF TO data,
  st_line     
TYPE REF TO data,
  it_keys     
TYPE TABLE OF dfies,
  st_keys     
TYPE dfies,
  it_fcat     
TYPE TABLE OF lvc_s_fcat,
  st_fcat     
TYPE lvc_s_fcat,
  dy_table    
TYPE REF TO data,
  dy_line     
TYPE REF TO data
  
.

* Field-simbols
FIELD-SYMBOLS :
  ‘<fs_table>  
TYPE STANDARD TABLE,
  ‘<fs_line>
,
  ‘<dyn_table> 
TYPE STANDARD TABLE,
  ‘<dyn_line>
,
  ‘<dyn_field>
.

START-OF-SELECTION.

* Tela de seleção.
  
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
  
PARAMETERS :
    p_table 
TYPE dd02l-tabname OBLIGATORY,  " Nome da tabela
    p_rows  
TYPE i,      " Quantidade de linhas à retornar
    p_where 
TYPE char100 " Condições do Select ( sem ponto no final )
    
.
  
SELECTION-SCREEN END OF BLOCK   b1.

  
PERFORM z_select_dynamic,
            z_get_keys
,
            z_create_dynamic_table
,
            z_feed_dynamic_table
,
            z_alv
            
.

quarta-feira, 31 de julho de 2013

Considerações .....


*  Opa abapers, hoje vim passar as conquistas e o objetivo do blog, 
* primeiro vamos falar da 'Captação de Curriculos', os mais antigos sabem
* que tenho parceiros em RH e SAPHunters como amigos e eu repasso todos 
* os curriculos que recebo para eles 1 ou 2 vezes por quinzena, estou 
* correndo atrás de novos parceiros para que melhoremos essa distribuição
* de curriculos Abap Junior, e assim o blog possa ajudar mais ainda os 
* Abapers que estão começando, se não sabia e quer enviar e só mandar no
* Email de contato do Blog.
*  Juntamente com os Curriculos recebo também duvidas pontuais, e tento 
* ajudar o máximo possivel, assim criando varios casos e isso também
* me auxilia na criação de mais Posts como transferência de conhecimento
* o famoso KT (Knowledge Transfer), muito Obrigado.
*  O terceiro ponto e tão importante quanto as outras é o FeedBack que tenho
* recebido do pessoal por email e Skype (ex-msn), e estou muito feliz de
* saber que ajudo, mas gostaria de ressaltar que esse blog foi feito para 
* auxiliar mesmo o pessoal que está querendo entrar ness mundo louco do 
* SAP / ABAP e não tem ninguem melhor que vocês pra ditar o rumo do Blog,
* porisso podem usar o email para sugerir ou opnar sobre temas a ser 
* abordados no Blog, não sei quase nada de ABAP, mas me esforçarei para 
* resolver e dar exemplo de todos os temas enviados. Não estou muito 
* acostumado a mexer em redes sociais, mas vou tentar ser um pouco mais 
* ativo na Página do ABAPJUNIORES no Facebook também, criando algumas 
* enquetes e conto com a colaboração de todos, muito obrigado pessoal
* e vamos em frente porque ainda têm muito assunto em ABAP pra falar.
* Valeoooo.

quarta-feira, 24 de julho de 2013

At Select Screen

*  Eae pessoal, hoje vou mostrar um comando que é muito utilizado por
* nós abapers que é o 'AT SELECTION SCREEN' que conforme os Docs do SAP
* falam, esse comando é para criar evento durante o processamento da
* tela de seleção, quando você quer trabalhar as açoes do User como
* clicar em algo ou mudar algo na tela em momento de execução conforme a
* ação do User, segue os 'AT SELECTION SCREEN' mais usados ( pelomenos
* por mim rs ).
*  Bons estudos pessoal, e continuem mandando os emails com dúvidas,
* estarei respondendo o mais rápido possível.
*  Valeo.
*&---------------------------------------------------------------------*
REPORT z_at_select_screen.

* Tabelas
TABLES:
  makt.

* Variáveis
DATA :
 vg_maktx 
TYPE makt-maktx.

* Telas de seleção.
SELECTION-
SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
  p_matnr 
TYPE mara-matnr.
SELECTION-
SCREEN END OF BLOCK   b1.

SELECTION-
SCREEN BEGIN OF BLOCK b2 WITH FRAME.
SELECT-OPTIONS:
  s_outpu 
FOR makt-matnr MODIF ID gr1 NO INTERVALS.
SELECTION-SCREEN END OF BLOCK   b2.

*  Comando acionado quando apertado o botão de Match Code do parameter
* informado.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_matnr.
  BREAK-POINT.
  
PERFORM z_select_makt.

*  Comando acionado quando apertado o Botão F1 (Ajuda)no Parameters
* Informado
AT SELECTION-SCREEN ON HELP-REQUEST FOR p_matnr.
  
BREAK-POINT.
  
PERFORM z_help_matnr.

* Processo acionado ao iniciar o programa.
AT SELECTION-SCREEN OUTPUT.
  BREAK-POINT.
  
PERFORM z_trata_tela.

*  Reparem que em nenhum momento o programa foi inicializado, pois o
* comando 'AT SELECTION SCREEN' trabalha antes de qualquer processo.
START-OF-SELECTION.
  BREAK-POINT.