quinta-feira, 25 de maio de 2017

Função - DD_DOMVALUES_GET

REPORT valores_de_dominios.

*  Fala Pessoal, estou desenvolvendo um relatorio que irá trabalhar com
* informações de requests do ambiente, para um controle mais detalhado
* para a gerencia técnica e os mesmos me pediram pra colocar tudo sobre
* as requests e objetos incluindo os status deles, como na maioria dos
* textos sempre ficam em tabela separada conforme exemplo
* ( Ex1. MARA( Material ) -> MAKT ( Textos Material )
*   Ex2. J_1BDOCTYPES ( Tipo de documento ) -> J_1BDOCTYPEST ( Textos ... )
* Visualizando as tabelas pela transação SE16N é possivel ver a tabela de
* Textos referente a tabela consultada.



*  Isso facilita muito pegar os textos, mas as vezes os textos não estão em
* tabelas, estão implícitas dentro do dominio.




*  Perceba que na imagem acima não está informado o campo 'Tab. Valores'
* onde estaria a tabela dos possiveis textos, além disso, os textos descritivos
* estão diretamente no dominio.
*  Pra conseguir reservar essas informações que estão no dominio e só usar
* a função do titulo do post e pronto, rsrs.

*  Segue um codigo que fiz como exemplo onde alimento a tabela com
* informações de dois dominios, para que vocês percebam que a tabela
* de retorno é a mesma e dentro da mesma é definido uma chave (DOMNAME), 
* assim facilitando a busca.


segunda-feira, 13 de março de 2017

Debuggando processo em UPDATE TASK e SM13

REPORT update_task.
*--------------------------------------------------------------------*
*  Fala Galera, hoje vou mostrar como faz para debuggar processos em
* Update Task. Funções que são executadas em update Task são reservadas
* e são somentes processadas quando executada o commando 'COMMIT WORK',
* esse comando irá processar tudo pue ficou na pilha pra ser processado
* depois. Vamos lá.
* Observações : Estarei realizando essa demonstração com vocês com uma
* função muito importante de atualização de dados da Nota fiscal, mas
* logo no começo dela já tem uma validação do campo DOC_NUMBER, portanto
* não alimente esse campo, para não ter problemas de atualizar algo que
* não deveria.

*  Primeiramente para usar uma função em 'update task', a mesma, tem que
* ser uma função de atualização.




*  Agora coloque o código abaixo e vamos pros testes.
*  Primeira coisa que devemos fazer quando parar no primeiro 'break' e ir
* no menu 'Configurações->Modificar Configurações/Perfil Depurador' e entrar
* nessa janela abaixo



* 'Flag' o campo 'Depur. Atualização'.




segunda-feira, 12 de dezembro de 2016

Criação de Fórmulas SD - VOFM

*  Eae 'debuggadores' hoje vou mostrar como criar uma formula SD do começo
* ao fim, primeiramente essas formulas são códigos abaps encapsulados para
* processos especificos, depois de criados eles são definidos de forma
* Customizing pelo funcional que solicitou isso, no nosso caso de exemplo
* iremos mostrar a criação de uma formula SD.
*  Para essa criação precisamos ir para a transação VOFM ir no menu
* 'Fórmulas -> Base de condição'... Conforme imagem abaixo.





*  Depois, iremos definir o numero da formula ( na maioria das vezes o
* funcional imforma isso ) e dar 'Enter' o problema que esse processo gera
* objetos Standards que em seguida necessida de chave de acesso, é só mandar
* o print do objeto e copiar e colar a chave do objeto mais a instalação pro
* Basis do projeto que depois de 5 dias ( brincando... rs ) eles te retornam
* com a chave, essa chave você p~eo no campo correspondente e pronto, objeto
* pronto e criado para você colocar o código necessário.



*  Ao criar o objeto, ele virá com o assistente de modificação é só ir no
* menu 'Processar -> Operações de Modificação -> Desativar assistente'.




* Logo após isso, irá aparecer uma imagem para te amedrontar, mas não se
* preocupem é só um informativo.

quinta-feira, 29 de setembro de 2016

Modificando denominação de elementos Standard

*  Eae pessoal, queria mostrar pra vocês uma jeito muito interessante e 
* e fácil para modificar textos de elementos Standards de uma forma
* muito simples.....
*  Sabe quando o Key-user ( principalmente em uma implantação ) fala 
* que o campo chave de alguma transação tem a descrição diferente da 
* habitual, e que isso poderia causar algum desconforto para a linha de
* frente que usa a transação... Além de criamos alguma exit para mudar 
* o texto existe esse processo que vou mostrar abaixo que muda a 
* denominação do elemento de dados mesmo que Standard. As vezes os próprios 
* funcionais fazem isso, mas como todos nós queremos ser diferenciados, 
* vamos aprender mais essa.
* Primeiramente vamos entrar na transação 'CMOD' e vamos seguir o caminho 
* conforme a imagem abaixo.
* ( Ir para -> Ampliações globais -> palavras-chave -> modificar )







* Informe a lingua e o elemento de dados que você quer modificar o texto.







quarta-feira, 21 de setembro de 2016

Função - SELECT_OPTIONS_RESTRICT

REPORT zrestringindo_select_options.
*--------------------------------------------------------------------*
*  Fala galera, hoje vou mostrar a usar uma função que faz restrição nos
* select-options, muito das vezes os funcionais pedem para que não deixemos
* o usuário colocar qualquer coisa, ou nós mesmos percebemos que certas
* informações podem dar dump em um select ou processos.
* Ai estais a salvação.
A Ideia é ficar igual a imagem.




* Estruturas e tabelas internas.
DATA :
  lt_saplane 
TYPE TABLE OF saplane,
  ls_saplane 
LIKE LINE OF  lt_saplane
  
.

* Parametros de seleção
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
SELECT-OPTIONS :
  so_plane 
FOR ls_saplane-planetype NO INTERVALS
  
.
SELECTION-SCREEN END OF BLOCK   b1.

* PBO
AT SELECTION-SCREEN OUTPUT.
  
PERFORM restricao_campos.

quinta-feira, 8 de setembro de 2016

SAP Inside Track São Paulo 2016 - Developer - #SITSP

Pessoal, todo ano acontece um evento que agrega muito aos profissionais SAP, estou falando do SAP INSIDE TRACK que esse ano vai acontecer no dia 03 de dezembro em São Paulo, como sempre GRATUÍTO, sim na faixa,..... Vários profissionais da area irão falar de assuntos referentes a parte de desenvolvimento SAP, nós ABAPers não podemos perder isso.

Cliquem no texto linkado acima e veja maiores informações.

segunda-feira, 14 de março de 2016

Mandando Spool para Emails


FUNCTION zf_send_email.
*"----------------------------------------------------------------------
*"*"Interface local:
*"  IMPORTING
*"     VALUE(IM_SPOOL) TYPE  RSPOID OPTIONAL
*"     VALUE(IM_EMAIL) TYPE  AD_SMTPADR OPTIONAL
*"----------------------------------------------------------------------

*  Bom dia Abapers, conforme prometido hoje vou mostrar uma função prática
* que envia o Spool em anexo para o email informado, os parametros de
* importação estão informadas acima, qualquer dúvida comentem e vamos
* aprendendo juntos, coloquei alguns Breaks no código para visualizarem
* o processo.

* A transação para saber o Spool é a SP01 / SP02.

  
DATA :
    lt_lines        
TYPE TABLE OF tline,
    lst_lines       
LIKE LINE OF lt_lines,
    l_rspoid        
TYPE rspoid,
    lst_tsp01       
TYPE tsp01,
    l_objtype       
TYPE rststype-type,
    l_pdf_bytecount 
TYPE i,
    l_pdf_spoolid   
TYPE tsp01-rqident,
    l_btc_jobname   
TYPE tbtcjob-jobname,
    l_btc_jobcount  
TYPE tbtcjob-jobcount,
    l_xstring       
TYPE xstring,
    lt_soli_tab     
TYPE TABLE OF soli,      " soli_tab
    lt_solix_tab    
TYPE TABLE OF solix,      " solix_tab,
    l_size          
TYPE sood-objlen,
    lt_text         
TYPE TABLE OF solisti1,
    lst_text        
LIKE LINE OF lt_text,
    li_emails       
TYPE TABLE OF ad_smtpadr,
    lst_email       
TYPE ad_smtpadr,
    l_subject       
TYPE so_obj_des
    
.

  
DATA :
    lo_document  
TYPE REF TO cl_document_bcs,
    lo_bcs       
TYPE REF TO cl_bcs,
    lo_recipient 
TYPE REF TO if_recipient_bcs,
    lo_ex_bcs    
TYPE REF TO cx_bcs.

  
BREAK-POINT.

* Seleção para get dos detalhes do Spool Informado.
  
SELECT SINGLE FROM tsp01 INTO lst_tsp01 WHERE rqident im_spool.

  
IF sy-subrc IS INITIAL.
* Função para get dos atributos do Spool,
    
CALL FUNCTION 'RSTS_GET_ATTRIBUTES'
      
EXPORTING
*       AUTHORITY     = ' '
        
client        lst_tsp01-rqclient
        name          
lst_tsp01-rqo1name
      
IMPORTING
        objtype       
l_objtype
      
EXCEPTIONS
        fb_error      
1
        fb_rsts_other 
2
        no_object     
3
        no_permission 
4
        
OTHERS        5.

    
IF sy-subrc IS INITIAL.
* Inicio - Conversão SPOOL -> PDF
      
IF l_objtype(3) = 'OTF'.
        
CALL FUNCTION 'CONVERT_OTFSPOOLJOB_2_PDF'
          
EXPORTING
            src_spoolid              
lst_tsp01-rqident
            no_dialog                
space
          
IMPORTING
            pdf_bytecount            
l_pdf_bytecount
            pdf_spoolid              
l_pdf_spoolid
            btc_jobname              
l_btc_jobname
            btc_jobcount             
l_btc_jobcount
          
TABLES
            pdf                      
lt_lines[]
          
EXCEPTIONS
            err_no_otf_spooljob      
1
            err_no_spooljob          
2
            err_no_permission        
3
            err_conv_not_possible    
4
            err_bad_dstdevice        
5
            user_cancelled           
6
            err_spoolerror           
7
            err_temseerror           
8
            err_btcjob_open_failed   
9
            err_btcjob_submit_failed 
10
            err_btcjob_close_failed  
11
            
OTHERS                   12.

      
ELSE.
        
CALL FUNCTION 'CONVERT_ABAPSPOOLJOB_2_PDF'
          
EXPORTING
            src_spoolid              
lst_tsp01-rqident
            no_dialog                
space
          
IMPORTING
            pdf_bytecount            
l_pdf_bytecount
            pdf_spoolid              
l_pdf_spoolid
            btc_jobname              
l_btc_jobname
            btc_jobcount             
l_btc_jobcount
          
TABLES
            pdf                      
lt_lines[]
          
EXCEPTIONS
            err_no_abap_spooljob     
1
            err_no_spooljob          
2
            err_no_permission        
3
            err_conv_not_possible    
4
            err_bad_destdevice       
5
            user_cancelled           
6
            err_spoolerror           
7
            err_temseerror           
8
            err_btcjob_open_failed   
9
            err_btcjob_submit_failed 
10
            err_btcjob_close_failed  
11
            
OTHERS                   12.

      
ENDIF.

terça-feira, 23 de fevereiro de 2016

Convertendo Spool em PDF - RSTXPDFT4


*  Fala Galera, ultimamente precisei criar um arquivo PDF baseada no
* no Spool gerada pelo Smartforms e mandar por email, procurando algo
* que me ajudasse na internet, encontrei um programa que transforma 
* o Número do Spool em um arquivo .PDF dentro do diretório que escolher.
*  Esse programa não resolvia meu problema mas me ajudou muito pois 
* usei as funções que foram usadas nesse programa.
*  Primeiramente irei mostrar um passo a passo de como processar esse 
* programa e mais tarde num próximo post mostrar como fazer um arquivo 
* .pdf pelo Spool e enviar para um email.

*  O programa que estou falando é o 'RSTXPDFT4', vá na transação SE38
* coloque RSTXPDFT4 e execute.


* O primeiro parametro é o numero do Spool, para pegar essa informação
* vá na transação SP02 e copia o Spool desejado para conversão.