O Conhecimento

O conhecimento é inútil a menos que você o compartilhe.

sexta-feira, 21 de dezembro de 2012

Catchable Runtime Errors (DUMP's)

Sempre é bom usar e lembrar do uso do CATH......em algumas situações pode ser muito útil e evita surpresas......uma delas é a divisão por zero.


REPORT demo_catch_endcatch.
DATA: result TYPE p DECIMALS 3,
      number TYPE i VALUE 11.

CATCH SYSTEM-EXCEPTIONS arithmetic_errors = 5.
  DO.
    number = number - 1.
    result = 1 / number.
    WRITE: / number, result.
ENDDO.
ENDCATCH.

SKIP.
IF sy-subrc = 5.
  WRITE / 'Division by zero!'.
ENDIF.


Fonte: http://help.sap.com/saphelp_nw04/helpdata/en/cf/f2bbce142c11d3b93a0000e8353423/frameset.htm

quinta-feira, 13 de dezembro de 2012

ALV LIST/GRID RAPIDEX.......

AlV GRID RAPIDÃO.......AJUDA PRA CARAMBA.....

*&---------------------------------------------------------------------*
*& Report  ZTESTELT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ztestelt.
TYPE-POOLS: slis.
TABLES: j_1bnfdoc, j_1bnflin.
PARAMETERS: p_docnum TYPE j_1bnfdoc-docnum.
DATA: it_lin TYPE STANDARD TABLE OF j_1bnflin.
DATA: wa_lin LIKE LINE OF it_lin.
DATA: it_fieldcat  TYPE  slis_t_fieldcat_alv,
      wa_fieldcat   LIKE LINE OF it_fieldcat.

SELECT *
  FROM j_1bnflin
  INTO TABLE it_lin
  WHERE docnum = p_docnum.
if sy-subrc = 0.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_structure_name       = 'j_1bnflin'
  CHANGING
    ct_fieldcat            = it_fieldcat
  EXCEPTIONS
    inconsistent_interface = 1
    program_error          = 2
    OTHERS                 = 3.
IF sy-subrc <> 0.
  MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY' "ou REUSE_ALV_GRID_DISPLAY
     EXPORTING
          i_callback_program = sy-repid
          i_structure_name   = 'j_1bnflin'
          it_fieldcat        = it_fieldcat
          i_default          = 'A'
     TABLES
          t_outtab           = it_lin.
endif.

stop.

sexta-feira, 7 de dezembro de 2012

Função busca texto breve Material ('DGREL_LB02_READ_MAKTX' )


Todo Consultor SAP tem seu "alfarrábio"..........


Porém o contexto muda um pouco passando de livro sem valor para um livro de muito valor pois quanto se trata de poupar tempo o melhor e ter tudo bem guardado e de fácil acesso para poupar trabalho na procura.......por isso coloquei alguns post sobre funções para não ter que ficar procurando no meu micro e nem na internet....segue mais uma função para recuperar texto breve de material.
 

      CALL FUNCTION 'DGREL_LB02_READ_MAKTX' " busca texto breve
      EXPORTING
        i_matnr           wa_aux-matnr
     IMPORTING
       e_maktx           wa_item-short_text
*         E_FLG_ERROR       =




alfarrábio
(Al-Farabi, antropónimo.
antropônimo [filósofo árabe do séc. IX-X])
s. m.
s. m.
1. Livro antigo e geralmente de grandes dimensões. = CALHAMAÇO, CARTAPÁCIO
2. Livro de pouco valor ou utilidade.

Função para Recuperar Domicilo Fiscal ('J_1BREAD_BRANCH_DATA')

Segue função para recuperar Domicilio Fiscal.....facilita mmmmuuuuuiiiiiiittttttooooooo......


CALL FUNCTION 'J_1BREAD_BRANCH_DATA'
        EXPORTING
          branch            wa_aux-werks -----> centro
          bukrs             ls_header-comp_code -----> empresa - bukrs
        IMPORTING
          address           address
          branch_data       branch_data
          cgc_number        cgc_number
          address1          address1
        EXCEPTIONS
          branch_not_found  1
          address_not_found 2
          company_not_found 3
          OTHERS            4.

Função Importar Tabelas EXCEL ('TEXT_CONVERT_XLS_TO_SAP'/'ALSM_EXCEL_TO_INTERNAL_TABLE')

Para Importar Tabelas EXCEL....segue as maneiras......eu prefiro a primeira sugestão ....vai depender do uso e pra que.....mas fica a dica todas funcionam.....a diferença é minima entre elas.....bom uso......

TYPESBEGIN OF tp_exc,
        campo1 TYPE string,
        campo2 TYPE string,
        campo3 TYPE string,
        campo4 TYPE string,
        campo5 TYPE string,
        campo6 TYPE string,
        campo7 TYPE string,
        campo8 TYPE string,
        campo9 TYPE string,
        campo10 TYPE string,
        campo11 TYPE string,
        campo12 TYPE string,
        campo13 TYPE string,
        campo14 TYPE string,
  END OF tp_exc.

DATAit_tp_exc TYPE STANDARD TABLE OF tp_exc.
DATAwa_tp_exc LIKE LINE OF it_tp_exc.


 TYPES truxs_t_text_data(4096TYPE OCCURS 0.

    DATAit_data_xls TYPE truxs_t_text_data,
          it_xls      LIKE alsmex_tabline OCCURS WITH HEADER LINE.

* Carrega tabela do excel em outra válida
    CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
      EXPORTING
        i_tab_raw_data       it_data_xls
        i_filename           p_entr
      TABLES
        i_tab_converted_data it_tp_exc
      EXCEPTIONS
        conversion_failed    1
        OTHERS               2.

Segunda Sugestão........

PARAMETERSp_entr   LIKE rlgrap-filename .

DATAt_excel   LIKE alsmex_tabline OCCURS WITH HEADER LINE .

data:linha_f     TYPE VALUE 65535 ,
         colun_f     TYPE VALUE 6 .


CLEAR t_excel.
    REFRESH t_excel.

    CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
      EXPORTING
        filename                p_entr
        i_begin_col             1
        i_begin_row             1
        i_end_col               colun_f
        i_end_row               linha_f
      TABLES
        intern                  t_excel
      EXCEPTIONS
        inconsistent_parameters 1
        upload_ole              2
        OTHERS                  3.

quinta-feira, 29 de novembro de 2012

visão J_1BTAXCODEV - SPED

Boa.....depois de ja ter feito isso umas 2 vezes e sempre na hora que precisa não lembro como se faz...então dai vem o funcional dizendo a visão J_1BTAXCODEV o atualiza os dados porém não aparece na hora de consultar os dados novamente...dai fica uma loucura para tenar achar a solução nunca lembramos como que solucionamos o problema.....dai segue o lembrete para não esquecer jamais.....abs....


Transação SE54 - visão J_1BTAXCODEV.

- Marque: Generated objects.

- Comando F7

- Comando F7 novamente

- Na janela marque "new field/sec table in structure".

- Na proxima janela marque "Normal field", comando "ENTER" e gere/salve a tabela


Pronto só refazer a geração da view e problema resolvido......

Sempre este problema é precedido por aplicação de notas do SPED.....

Homenagem ao Rivalino (MM)...tai Riva pra não esquecer jamais!!!!!rs...

quarta-feira, 14 de novembro de 2012

Ativação / Desativação SCREEN EXIT........

Olá mais um lembrete para não perdemos tempo com bobagem.....

Na migração de um EHP4 para EHP5 uma screen exit das transações ME21N / ME22N / ME23N ,
simplesmente ficou desativada, ou seja voltou a a tela como era antes da ativação da screen exit.

Bom, até blz......mas todos os objetos estão ativos mas menos um, e um principal, o projeto da screen exit...basta ativar o projeto e a screen exit volta ao normal.....


vamos as telas:


terça-feira, 13 de novembro de 2012

ALV GRID BOTÃO CHECK / UNCHECK

BLZ.......

Mais pra guardar....botão de check e uncheck de todas as linhas de um ALD GRID usando o REUSE_ALV_GRID_DISPLAY

Dado um relatorio.......


Temos a Saida ABAIXO:

 
 
Repare nos botões, abaixo:
 
 
 
 
Eles fazem o que dizem.........MARCAR TODOS.......e/ou DESMARCAR TODOS......
 
 
 
 
Atente que para este efeito temos que varrer todo o ALV e marcar e desmarcar o campo check......Para isso usamos o codigo abaixo: (para OO fazemos um pouco diferemte disso)

quarta-feira, 10 de outubro de 2012

SPED PIS COFINS e FISCAL

Opa....estamos sumidos....mas a coisa deu uma apertada por causa da entrega dos SPED's.

A SAP desenvolveu sua solução para a entrega dos SPED's porém o grande problema estar em manter os ambientes dos clientes atualizados conforme a atualizações liberadas pela própria SAP.

Com a liberação da Primeira versão, a primeira leva da implementação foi realizada e os arquivos foram enviados dentro dos prazos estabelecidos.

Porém o layout dos arquivos é mudado para atender várias particularidades da legislação e também do que não foi atendido na digamos primeira versão.

Daí muda-se o layout e quem sofre são os ABAP's, MM's FI's, para fazer a coisa funcionar.

Quanto mais Z's implementados para criar um arquivo que espelhe o negocio do cliente, pior a manutenção.

Com a aplicação das notas de atualização dos programas, muita coisa é modificada, além das estruturas de dicionario, várias outras são criadas, muitas outras modificadas, e pra manter os Z's que foram modificados para atender a uma demanda em um determinado momento do tempo das empresas, se torna uma tarefa ardua e pra não dizer mágica.

Quanto mais standard melhor, até agora é a conclusão que melhor define a situação de aplicação de notas para o SPED.

Claro que as empresas não vão deixar de atender as exigencias da legislação evitando a criação de programas Z's, não devem deixar de serem feitos, não é esse o ponto e sim o trabalho em manter todo o processo atualizado, pois além de atualizar via nota os standards ainda temos o retrabalho de atualizar os Z's.....e haja tutano pra advinhar o que a SAP criou/alterou/deletou/trocou em todos os objetos do programa do SPED (BADI/INCLUDES/DICIONARIO DE DADOS/ENHANCEMENT, etc.....).

Podemos acompanhar as notas no site da SAP, mas isso dai já é outro assunto........abs.


terça-feira, 28 de agosto de 2012

Função Envio de Email

Segue função basicona para envio de email......




 
código fonte.......

quarta-feira, 15 de agosto de 2012

Programa Envio de Email.......

Programa simples para colocar num job para envio de email de um log qualquer....bem bakana e facil de ser adaptado a qualquer situação......


vamos lá.....o resultado é bem legal......



sexta-feira, 3 de agosto de 2012

Verificando Estoque na Ordem de Produção CO01 CO02

Essa foi bem legal de se implementar t-code que não conhecia dentre outros vários aspectos que vamos citar na implementação feita.

Lembrando, já existe uma maneira STANDARD de fazer isso, porém não sei o motivo certo o cliente pediu para ser feito dessas maneira.

Vamos ao cenario, realizar uma trava para não liberar a ordem de produção se não houver estoque para o(s) material(ais) envolvidos na ordem de produção.

Envolve, exit's, ENHANCEMENT's, display de log, import e export de tabelas, envio de email, achei o resultado bem satisfatorio da solução.

vamos ao básico descobrir os pontos.....de AMPLIAÇÃO..... t-code SE93, daí recuperamos o pacote da t-code que vamos atuar, no caso da t-code co01/co02 é o pacote CO.



Proximo passo na t-code SE84 e verificar os pontos de ampliação de cada t-code, ja vou dar os pontos ja mastigados pois dá um pouco de trabalho até saber o que realmente vai te atender, segue abaixo a tela da SE84.


Pontos de ampliação do pacote CO......em especifico as exit's que procuramos, mas poderia ser BADI, ENHANCEMENT's, SE84 da pra se procurar de tudo.

pontos de ampliação que vamos trabalhar, estão marcados na imagem abaixo.




na exit abaixo vamos fazer o envio de email e setar o status da ordem.....




para localizar a badi


badi a ser usada......isso é apenas uma demonstração de como encontrar os objetos para chegar ao objeto exato é bom consultor o PAI GOOGLE e/ou o SDN da SAP ou um funcional experiente, sei lá qualquer referencia pois se não vai se gastar muito tempo nesta tentativa erro.



Vamos a lógica e ao desenvolvimento. Na t-code CO01, existe um flag que depois de acionado fica assim:

depois de liberar a nota, quando houver a gravação a intervenção vai checar os estoques disponiveis conforme especificação do usuario e mostrar um log de erro, e apenas grava a ordem e não libera-la.


 a ordem depois de gravada



envia o email.....


ficou muito bala a solução...demorou um pouco até entender todo o processamento e todas as possibilidades da transação mas deu certo.


Depois de tudo pronto tivemos um problema com a rotina de envio de emeil pois ele faz um commit da a t-code passava a dar dump, copiamos a função e retiramos o commit da mesma, assim ficou zerado, tudo funcionando corretamente.
 
Caso precise de alguma orientação ou mesmo o fonte dos progs., favor entrar ricardomourabraga@gmail.com....obrigado..... 

segunda-feira, 23 de julho de 2012

Aparecido Borges: Dicas e Truques de SAP - Consultando Requests nas tabelas E070/E071 - Workshop de TAXBRA em 28/07 Promenady em São Paulo

Aparecido Borges: Dicas e Truques de SAP - Consultando Requests nas tabelas E070/E071 - Workshop de TAXBRA em 28/07 Promenady em São Paulo


Dica do parceiro Aparecido, sobre consulta a request.....vale a pena ler......e principalmente guardar.

Função Dados Filial

A visão J_1BT001WV, traz a relação empresa/filial/local de negócios.....




ou se preferir..o join abaixo faz a mesma coisa.....


SELECT a~mandt b~werks b~land1 b~name1 b~j_1bbranch a~bukrs b~bwkey c~intca
INTO TABLE it_zj_1bt001wv
    FROM t001k AS a INNER JOIN t001w AS b
    ON a~mandt = b~mandt AND a~bwkey = b~bwkey
    INNER JOIN t005 AS c ON a~mandt = c~mandt AND b~land1 = c~land1
  WHERE b~werks = wa_it_zcmd013-werks AND a~bukrs = wa_it_zcmd013-bukrs
AND c~intca = 'BR' OR c~intca = 'KR' OR c~intca = 'TH' OR c~intca = 'IN' OR c~intca = 'TW'.

Isso para recuperar a filial de acordo com o centro e assim buscar os dados da filial (endereço/CNPJ) função abaixo: CALL FUNCTION 'J_1BREAD_BRANCH_DATA'

quinta-feira, 19 de julho de 2012

Smartforms Alteração Image em Tempo de Impressão

Segue um esquema para fazer impressão de imagens no smartform variando as imagens conforme por exemplo o nome da empresa....

Dentro do smartform inclua um codigo para que o prog faça a variação de imagens conforme for alterando os dados de impressão.....dai depois confirme se a imagem existe no BD com o select se existir otimo , se não imprime uma imagem existente (zlogo_pontual_sap) assim não da erro na execução de impressão ....



Depois no grafico inclua a variavel com o nome e tipo do grafico que voce esta mudando dinamicamente no codigo acima....dai cada vez que mudar os dados muda a imagem impressa.....


Simples facil bakana e funcoona bem demais.....inté.

quarta-feira, 18 de julho de 2012

Download Image SMW0(zero)

Epa!!!!! Necessidade faz o sapo pular....pequeno programa para o download das images do repositorio da T-code SMW0(zero).

REPORT  ZDOWN_IMAGE2.

data: FILENAME LIKE  RLGRAP-FILENAME.

DATA: I_WWWDATA_TAB LIKE WWWDATATAB OCCURS 100 WITH HEADER LINE.

data: wa_WWWDATA_TAB LIKE LINE OF I_WWWDATA_TAB.

RANGES: SO_OBJID FOR  I_WWWDATA_TAB-OBJID,

        SO_TEXT  FOR  I_WWWDATA_TAB-TEXT,

        SO_DEVCL FOR TADIR-DEVCLASS.

DATA:  L_OBJECT LIKE TADIR-OBJECT,

        L_LINES  TYPE SY-TABIX.

data: G_RELID LIKE WWWDATA-RELID.

G_RELID = 'MI'.

CONCATENATE 'W3' G_RELID INTO L_OBJECT.

SO_OBJID-sign = 'I'.

SO_OBJID-option = 'CP'.
SO_OBJID-low = 'ZSAPLOGON*'.

append SO_OBJID.

SELECT *
FROM WWWDATA AS F INNER JOIN TADIR AS P
               ON F~OBJID = P~OBJ_NAME
               INTO  CORRESPONDING FIELDS OF TABLE I_WWWDATA_TAB
               WHERE F~TEXT IN SO_TEXT
               AND   F~SRTF2 = 0
               AND   F~RELID = G_RELID
               AND   P~PGMID    = 'R3TR'
               AND   P~OBJECT   = L_OBJECT
               AND   P~DEVCLASS IN SO_DEVCL
               AND   P~OBJ_NAME IN SO_OBJID.
SORT i_WWWDATA_TAB BY DEVCLASS OBJID ASCENDING.

loop at i_WWWDATA_TAB into wa_WWWDATA_TAB.

  CONCATENATE'C:\temp\' wa_WWWDATA_TAB-OBJID '.GIF' into FILENAME.

  CALL FUNCTION'DOWNLOAD_WEB_OBJECT'
  
 EXPORTING
      KEY              = wa_WWWDATA_TAB
    
DESTINATION       = FILENAME.

ENDLOOP.

terça-feira, 17 de julho de 2012

DDA no SAP

Olha nós ai novamente....graças a deus......
Vamos para a implementação do  DDA - Débito Direto Autorizado...pra quem não sabe o que é segue o link....DDA - FEBRABAN Sistema de cobrança que ainda não pegou por causa da cultura do papel, mas com certeza é o futuro mais próximo, curto e economico do processo de cobrança no Brasil.

Chega de papo e vamos a implementação......

Primeiro vamos a aplicação de notas SAP, segue a lista mas a lista varia de ambiente para ambiente dependendo do support package...vai a lista......
0001579415/0001627377/0001630442/0001644550/0001652414/0001653351/0001659236/0001666697/0001702609/0001717247

Depois dos ajustes conforme as notas, vem algumas alterações para para atender o cliente.

Para o padrão cnab240 (digamos que é um padrão QUE NÃO É PADRÃO).....cada banco usa como melhor lhe convem, então para o banco itau ao receber o arquivo que foi processado os pagamentos via DDA fizemos uma intervençaõ para incluir agencia e conta, porque essas informações não vem no retorno do arquivo.


quinta-feira, 12 de julho de 2012

CÓPIA MB56 COM NOVO PARAMETRO

Bom, o SAP, é muito massa por causa disso pode-se copiar e não se paga a mais para isso, ou seja, voce copia um standard e transforma ele em um  Z do jeito que voce desejar.

Esse trabalho foi legal pois o planejamento foi bem maior que as ações, e por se tratar de um prog. recursivo que gera uma arvore de vários niveis..o tempo gasto para entender o que ele fazia e como fazia foi maior, mas as intervenções na cópia foram minimas....vamos aos passos.

Cópia do report e inclusão do campo ordem = CHVW-AUFNR

imagem abaixo mostra como era a t-code original


 image da t-code com o parametro ORDEM incluido


terça-feira, 3 de julho de 2012

T-CODE Relatórios

T-CODE'S para relatórios SREL, SAP1, GRR3...... Os relatórios de FI você consegue visualizar pelas transações F.99, F.98, F.97.

terça-feira, 26 de junho de 2012

Screen Exit ME21N / ME22N / ME23N

Opa, coisa massa de se fazer.....uma screen exit em um campo de cunho obrigatorio na EKKO, com direito a append em tabela standard mais screen exit e field exit, mensagem de erro e tudo que se tem direito em uma boa programação......vamos aos passos.....


1 - Cria-se a estrutura com os campos que deseja incluir na tela

2 - Criação da estrutura append que usa a estrutura criada acima e ja inclui automaticamente na EKKO

3 - O append ja é incluido na tabela conforme abaixo


 
Blogger Templates