Blog de dicas SAP e comentários: SD, MM, PP, WM, ABAP, Tecnologia da Informação e S/4 HANA Develoment.
sexta-feira, 27 de setembro de 2013
terça-feira, 24 de setembro de 2013
A Conta 6xxxxx requer UMA classif.contábil Relevante parágrafo um contab.custos
ESTAMOS com o seguinte Erro, Trata-se de hum Processo de Amostra Grátis, mas when Vamos Fazer o LANÇAMENTO na VF02 o Sistema Localidade: Não ESTA permitindo, e recebemos a seguinte MENSAGEM:
A Conta 6xxxxx requer UMA classif.contábil Relevante parágrafo um contab.custos
MENSAGEM N º KI235
Diagnóstico
Localidade: Não FOI Entrada nenhuma Classificação Contábil de controlar parágrafo UMA Conta Relevante par de Contabilidade de Custos.
ATIVIDADES fazer Sistema
A Conta 6xxxxx ESTA Definida Como classe de custo.
Por ISSO, E Preciso de sempre INDICAR UMA Classificação Contábil de controle.
Entao na KA02 Você. Podera Entrar com ESTA cta / classe de Custo e INSERIR UM Objeto de Classificação Contábil UO então verifique com Seu Pessoal de CO se Ellis PODEM Fazer UMA Derivação Automática na OKB9.
segunda-feira, 23 de setembro de 2013
SPED PIS COFINS
Para quem tem interesse sobre o assunto, segue umas notinhas SAP para o Sped.....
Lógico a aplicação das notas não depende somente desta lista, mas cada ambiente exige uma analise do que deve ser aplicado para o relatório (extrator) do SPED funcione corretamente, além é claro dos acertos em BADI, includes Z, etc....etc.
quinta-feira, 12 de setembro de 2013
GGB1 GGB0 PROGRAMA RGUGBR00
Regras de validação
Tentar utilizar, se possível, ao invés de Field/User Exit para Validação/Substituição, as Regras de Validação (transação GGB0/OB28) ou as Regras de Substituição (transação GGB1/OBBH) a transação GGB4 remete a ambas regras.
http://www.youtube.com/watch?v=ge2Zl5d7ak0
Após associar a etapa a nova regra e super importante
RGUGBR00
Para modificação de DIV a regra devera ser colocada no Cabeçalho do documento
Conforme
*---------------------------------------------------------------------*
* FORM ZXXX - VALIDAÇÃO DE DIVISÃO *
*---------------------------------------------------------------------*
* Modificar o campo divisão na conta de diferença de preço quando
* ocorrer o movimento de transferência de material
*---------------------------------------------------------------------*
FORM z013 CHANGING bool_data TYPE gb002_015.
FIELD-SYMBOLS: <fs_bwart>, "Tipo de movimento
<fs_matnr>, "Material
<fs_umwrk>. "Centro receptor
DATA: vc_bwart LIKE mseg-bwart,
vc_matnr LIKE mara-matnr,
vc_spart LIKE mara-spart,
vc_gsber LIKE v134g-gsber,
vc_umwrk LIKE mseg-umwrk.
* Recuperando o TIPO DE MOVIMENTO
ASSIGN ('(SAPMM07M)RM07M-BWARTWA') TO <fs_bwart>.
IF <fs_bwart> IS ASSIGNED.
vc_bwart = <fs_bwart>.
ENDIF.
* Recuperando o CENTRO RECEPTOR
ASSIGN ('(SAPMM07M)MSEGK-UMWRK') TO <fs_umwrk>.
IF <fs_umwrk> IS ASSIGNED.
vc_umwrk = <fs_umwrk>.
ENDIF.
* Para todos os registros contidos na tab. recebida na chamada do FORM, faremos...
LOOP AT bool_data-bseg INTO bseg.
* Se BSEG-HKONT = '0004118001' e SY-TCODE = 'MB1B' e Tipo movimento (MSEG-BWART - tela da MB1B) = 'ZXX' ou 'ZX1' ou 'ZX2' ou 'ZX3'
IF ( bseg-hkont = '0004118001' AND
sy-tcode = 'MB1B' AND
( vc_bwart = 'ZXX' OR
vc_bwart = 'ZX1' OR
vc_bwart = 'ZX2' OR
vc_bwart = 'ZX3' ) ).
SELECT SINGLE gsber
INTO vc_gsber
FROM v134g
WHERE werks = vc_umwrk
AND spart eq '10'. "vc_spart.
bseg-gsber = vc_gsber .
MODIFY bool_data-bseg FROM bseg.
ENDIF.
ENDLOOP.
Brincando com SET, não é filmagem é SAP
Usando SET GS01 GS02 GS03
http://help.sap.com/saphelp_46c/helpdata/pt/5b/d2297e43c611d182b30000e829fbfe/frameset.htm
Tela GS01 – Criar set
Como descobrir onde um SET É USADO
EWK1
Resultado
No código
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
client = client
setid = loc_setid
tabname = table
fieldname = fieldname
no_descriptions = no_descriptions
no_rw_info = no_rw_info
date_from = date_from
date_to = date_to
TABLES
set_hierarchy = loc_sethier
set_values = loc_setvalues
EXCEPTIONS
set_not_found = 1
OTHERS = 3.
IF sy-subrc <> 0.
PERFORM send_message_gs004 USING loc_setid '3'.
ENDIF.
Módulo de função:
Programa na Miro: SAPLMR1M
Para o include na miro: ZRGGBS000
form u102 using zlspr.
data: vc_setname type sethier-shortname,
vc_setid type sethier-setid,
v_zlspr type bseg-zlspr.
data: rg_user type zibkk_r_hkont occurs 0.
* Efetua query
select single zlspr from bseg into v_zlspr.
if bseg-zlspr is initial and sy-subrc ne 0.
bseg-zlspr = 'M'.
elseif bseg-zlspr <> v_zlspr and sy-subrc = 0.
if v_zlspr = 'M' and bseg-wrbtr le '50.000,00'.
vc_setname = 'Nome_do_set_1'.
perform busca_setid using vc_setname changing vc_setid.
perform busca_intervalo tables rg_user using vc_setid.
if sy-uname in rg_user.
bseg-zlspr = ' '.
else.
message e001(zfi) with text-001.
endif.
elseif v_zlspr = 'M' and bseg-wrbtr between '50.000,00' and '150.000,00'.
vc_setname = 'Nome_do_set_2'.
perform busca_setid using vc_setname changing vc_setid.
perform busca_intervalo tables rg_user using vc_setid.
if sy-uname in rg_user.
bseg-zlspr = ' '.
else.
message e001(zfi) with text-001. "usuário não tem permissão para
endif.
elseif v_zlspr = 'M' and bseg-wrbtr gt '150.000,01'.
vc_setname = 'Nome_do_set_3'.
perform busca_setid using vc_setname changing vc_setid.
perform busca_intervalo tables rg_user using vc_setid.
if sy-uname in rg_user.
bseg-zlspr = ' '.
else.
message e001(zfi) with text-001. "usuário não tem permissão para
endif.
endif.
How to use GS01, GS02, GS03
P Antes de imprimir pense em seu compromisso com o Meio ambiente.
Trace SQL
Trace de autorização, ST05, trace de SQL. Como sabem o SAP é um sistema que suporta diversos bancos de dados e devido à diversidade de linguagens e de bancos de dados existentes, a maneira de se comunicar entre uns e outros seria realmente complicado de providenciar, a não ser pela existência de padrões que nos permitem a realização das operações básicas de uma forma universal. É justamente disso que se trata o Structured Query Language ( SQL ) que não é mais do que uma linguagem padrão de comunicação com base de dados. Falamos portanto, de uma linguagem normalizada que nos permite trabalhar com qualquer tipo de linguagem em combinação com qualquer tipo de base de dados. No caso do SAP estamos falando do ABAP e do SQL juntos. Basicamente o comando SELECT é utilizado para ler Tabelas, O UPDATE para atualizar e o DELETE para excluir ( Deletar ) registros de uma tabela e o INSERT faz as inserções ( inclui ). Temos muitos outros comandos SQL e diversos tutoriais na Internet para quem quiser se aprofundar no assunto.
O nosso trace faz mapeamento de comandos SQL, muito útil para se saber que tabelas são tratadas em uma aplicação. No caso de um desenvolvimento "Z", mesmo se for chamado por uma aplicação Standard um trace faz este mapeamento SQL.
Passo a Passo:
1. Executar a transação ST05,
2. Marcar "SQL Trace"
3. Ativar o trace, clicando em "Activate Trace"
e aguardar a mensagem "SQL trace is For User XXXXXXXXXXX Activated"
4. Executar a transação a ser mapeada, com /N + Transação
5. No meu caso executei a VA01 ( ordem de vendas e gravei um documento de vendas ).
6. Executar novamente a transação ST05,
7. Desativar o trace, clicando em "Deactive Trace"
8. Executar a analise do trace, clicando em "Display Trace"
9. Ao executar a analise, deixe marcado apenas "SQL Trace" e "Trace List",
assunto que o trace foi executado.
Devemos ficar atentos ao retorno do Objeto de SQL, Sendo RC=0 Ok e RC diferente de zero, um problema de execução. RC ( Return code , código de retorno da função ).
Para mais detalhes, dar um clik duplo no comando SQL
Neste momento também é possível verificar o código ABAP e o dicionário de dados.
OBS: Dica Importante
Se você estiver procurando problemas relacionado a performance, a linha onde o campo "Duration"estiver em vermelho, temos um serio problema de performance de acesso ao banco de dados. Ou seja, o Trace também pode ser utilizado para identificar problemas de performance.
Fonte: Ricardo Borges
P Antes de imprimir pense em seu compromisso com o Meio ambiente.
ASSIGN do ABAP
Algumas vezes, precisamos de uma informação onde ela já não esta mais disponível.
Neste caso o ASSIGN do ABAP pode ser aplicado com ótimo resultado.
Para que o ASSIGN funcione, você só precisa saber o programa e o campo-tabela
a ser utilizado, desde que este parâmetro esteja em memória ou seja carregado.
Este recurso ABAP é muito útil nos desenvolvimentos que envolvem exits e/ou BADIs, porque evita e re-leitura desnecessária de tabelas para obter dados.
Este recurso simples pode ser testado na sua exit e/ou badi sem grandes problemas.
Vejamos o exemplo abaixo:
Colocamos um break-point em uma exit de SD, da gravação da ordem de vendas.
Após o break, vamos consultar uma informação em uma tela de SD, para saber o programa de tela e o campo-tabela para simularmos o ASSIGN no momento do Debug.
Observe que estamos verificando a seguinte informação:
Após o F1 no campo incoterm, obtemos os seguintes dados:
Área de tela VBKD-INCO1
Nome do programa SAPMV45A
Após execução da VA01, o SAP vai parar o break-point definido.
Neste caso, foi colocado o código do programa entre chaves...
(SAPMV45A)
E em seguida a tabela e o campo que deve ser feito o ASSIGN.
VBKD-INCO1
No exemplo acima, o conteúdo do campo é “CIF”...que pode ser assimilado por uma
Variável e utilizado em um desenvolvimento.
Muito útil, poderia ser qualquer campo de qualquer tela de uma transação...
Complementando:
O exemplo acima é de um campo de tela, o exemplo abaixo é de uma informação que é processada sem as telas.
Para fazer o ASSIGN, você precisa debugar o programa e pegar seu nome de processamento no SAP, exemplo:
Função j_1b_process_tkomv
Todo programa em memória começa como SAPL, exemplo: SAPLJ1BCONDTAX abaixo
Preciso capturar o conteúdo do campo m_caller que está dentro da função
J1BCONDTAX(m_caller)
DATA lt_gt_taxdata TYPE j_1btxdata.
FIELD-SYMBOLS: . “Caso for tabela colocar o tipo exemplo:
FIELD-SYMBOLS: type table.
UNASSIGN: .
ASSIGN (' SAPLJ1BCONDTAX(m_caller)') TO .
IF IS ASSIGNED.* Tabela recebe ponteiro
lt_gt_taxdata = .ENDIF.
Fonte: Ricardo Borges
P Antes de imprimir pense em seu compromisso com o Meio ambiente.