segunda-feira, 24 de março de 2014

Function - Help - Dados de Teste




*  Eae Pessoal, hoje vou mostrar algo que ajuda muito a nós quando 
* estamos tendo problemas de testes em function(BAPI's tb)...
*  É um uma dica muito útil e simples, usarei uma BAPI como exemplo.
*  Sabe quando o funcional passa pra gente, todos os parametros para 
* execução da BAPI mas mesmo assim não funciona, além de sair reclamando
* pro funcional, vamos ver aonde essa BAPI é usada, e vamos colocar um 
* ponto de parada nela, além de você ficar procurando igual a um louco
* aonde está a diferença, você faz igual a imagem abaixo.


*  Clique com o botão direito no espaço onde apareceria alguma variavel.
* Entre na opção, 'Gravar parametros como dados de Teste(Se37)'. Nomeie.



*  Depois, acesse a se37, entre na respectiva function e execute, acima 
* haverá um icone escrito 'Diretório de dados de teste'.



*  Seleciona a variante q você criou e pronto, agora você tem um exemplo
* que funciona.... depois disso você compara as entradas e mostra pro
* funcional aonde ele errou, isso eh muito mais divertido que só 
* perguntar.
*  Valeooooooo....

sexta-feira, 17 de janeiro de 2014

Trocando Telas por Subtelas


* Um dia desses foi solicitado para que eu fizesse um programa que mostrasse
* o resultado em um ALV na mesma tela que a tela de seleção, já veio na
* cabeça, entrar no layout da Tela e desenhar todos os parametros que
* seriam necessários para o resultado correto... Mas aí eu lembrei de um
* jeito bem Maroto de resolver, que é colocando uma SubScreen na Tela e
* assim eu não precisaria desenhar nada, somente criar um selectio-screen
* normal e declarar ele como uma Subscreen, e depois na tela chamar como
* o exemplo abaixo. A vantagem disso é a velocidade de desenvolvimento, pois
* não precisará ficar desenhando cada parametro de entrada das seleções na Tela.

REPORT z_call_subscreen.

DATA :
  it_spfli  
TYPE TABLE OF spfli,
  st_layout 
TYPE lvc_s_layo.

DATA:
  o_alv       
TYPE REF TO cl_gui_alv_grid,
  o_container 
TYPE REF TO cl_gui_custom_container.

SELECTION-SCREEN BEGIN OF SCREEN 0100 AS SUBSCREEN.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS :
  p_carrid 
TYPE s_carr_id.
SELECTION-SCREEN END OF BLOCK   b1.
SELECTION-SCREEN END OF SCREEN 0100.

START-OF-SELECTION.

* Primeiramente vamos chamar nossa Screen.
  
CALL SCREEN 9000.

*  Agora vamos criar os objetos desse tela.



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.