segunda-feira, 23 de julho de 2018

Os sys-da-vida giram em torno do ABAP.

Na linguagem ABAP existem códigos que são de utilização obrigatória para qualquer programa que faça alterações no PRD. Não que você venha a usar todos. Mas os principais você deve e pode conhecer.


SY-SUBRC - Orienta se uma determinada ação obteve sucesso. No ABAP, a expressão lógica "IS INITIAL" nos indica que o operador contém seu valor inicial. Isso retorna um teste lógico. Neste ponto você cria o seu "se".
SY-UNAME - Retorna o nome do usuário. Essa é boa para relatórios, cargas e cargas.SY-DATUM - Retorna a data do sistema. Sempre bom saber que dia a "caca" foi feita!SY-UZEIT -   Retorna a hora, minuto e segundo do sistema - Horário exato da "caca"SY-TCODE - Retorna código da transação atual. Usado quando seu código quer testar a transação. Quero que valide pela XK01, coloco isso! A XK02 nem passa.SY-TABIX - Retorna o número da linha da tabela atual (Normalmente usando dentro de loop.) - Regra cuidado com loop de loop, and select de loop e loopppp e loooppppp... SY-LANGU - Retorna o idioma de logon do usuário. Quase não usado quando regionalizado então, nem pisca.SY-DYNNR - Retorna o número da tela atual. Boa. Quero a tela a telaaaa ... essaaa telaaaaa!SY-UCOMM - Retorna o nome de um botão pressionado (OKCODE). Se clicar no X da direita fecha, mas e o X da esquerda. Eu disse somente no dá direitaaaaa. Na dúvida coloque o nome do botão!
Mais abap deste ponto para baixo, mas é bom conhecer. Isso não te ocupará espaço!
SY-MANDT - Retorna o mandante do sistema. Trava este código somente neste mandante!
SY-REPID - Retorna o nome do programa. 
SY-CPROG - Nome do programa principal.
SY-FDPOS - Utilizado na comparação de Strings.SY-BATCH - Indica a execução de um programa em background.SY-LINNO - Retorna a linha corrente de um relatório.SY-LISEL - Retorna a linha selecionada em relatórios interativos.SY-MANDT - Retorna o mandante do sistema.SY-PAGNO - Retorna a página atual de um relatório.SY-TVAR0 .. SY-TVAR9 - Retorna elementos de textos ou títulos de relatórios.SY-VLINE - Efetua a fechamento de bordas em um relatório.SY-ULINE(N) - Imprime uma linha com n posições.SY-DBCNT - Dentro de SELECT, contém o contador de interação.

E para que uso isso??? Como bom especificador, todo Z criado no sistema deve possuir no mínimo alguns destes no código. Imagine que você crie um programa para dar uma carga de dados. E se a carga falhar? E se... e se... Seeeeeee .... Fudxxx!
Claro que não. Se for fazer um Z para gravar alguma coisa, peça ao abap para internamente no programa gravar em uma tabela Z de log acrescentado o antes e o depois em uma coluna marcada com X, o SY-UNAME, SY-DATUM, SY-UZEIT. Pronto, você fez o programa e qualquer um que o executar deixará gravado o que foi feito.
Na dúvida, no erro... Basta desfazer a caca! (ahhhhhh não previu isso). Ainda assim, seu dia foi salvo porque todas alterações foram gravadas. Isso é o que importa!


SRET SAP

SRET


Arvore de relatórios... Cada um com seu cada um, cada um... Um susto.

NFe 4.0 Rejeição 833


A rejeição está ocorrendo no QAS.

Rejeição 883: GTIN (cEAN) sem informação [nItem:999] - Como resolver?
Quando for emitida uma NF-e (modelo 55) ou NFC-e (modelo 65) e o GTIN (Campo: cEAN) não for informado, haverá a rejeição 883 - GTIN (cEAN) sem informação [nItem:999].

Exceções e Observações
Para essa Regra de Validação não há exceções. Para produtos que não possuem GTIN, utilizar a informação de "SEM GTIN".

Regra de Validação da Sefaz 833

Exemplo
Foi emitida uma NF-e sem o preenchimento o campo cEAN. Nessas condições, a NF-e foi rejeitada pelo motivo 883.
Trecho de XML: 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<prod>
    <cProd>272128RA</cProd>
    <!-- GTIN (Global Trade Item Number) do produto, antigo código
EAN ou código de barras -->
    <cEAN/>
    <xProd>J.B. Impressora Officeprint 1420</xProd>
    <NCM>94034000</NCM>
    <CFOP>6107</CFOP>
    <uCom>PC</uCom>
    <qCom>1.0000</qCom>
    <vUnCom>118.90000000</vUnCom>
    <vProd>118.90</vProd>
    <!-- GTIN (Global Trade Item Number) da unidade tributável, antigo código
EAN ou código de barras -->
    <cEANTrib>SEM GTIN</cEANTrib>
    <uTrib>UN</uTrib>
    <qTrib>1.0000</qTrib>
    <vUnTrib>118.90000000</vUnTrib>
    <indTot>1</indTot>
</prod>

Como resolver?
Caso o seu sistema ERP faça o cálculo / geração automática do GTIN de cada produto, é importante reportar essa situação a sua equipe de suporte / desenvolvimento para que seja corrigido o problema.
No exemplo apresentado, para resolução foi preenchido "SEM GTIN".
Trecho de XML que deverá ser alterado: 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<prod>
    <cProd>272128RA</cProd>
    <!-- GTIN (Global Trade Item Number) do produto, antigo código
EAN ou código de barras -->
    <cEAN>SEM GTIN</cEAN>
    <xProd>J.B. Impressora Officeprint 1420</xProd>
    <NCM>94034000</NCM>
    <CFOP>6107</CFOP>
    <uCom>PC</uCom>
    <qCom>1.0000</qCom>
    <vUnCom>118.90000000</vUnCom>
    <vProd>118.90</vProd>
    <!-- GTIN (Global Trade Item Number) da unidade tributável, antigo código
EAN ou código de barras -->
    <cEANTrib>SEM GTIN</cEANTrib>
    <uTrib>UN</uTrib>
    <qTrib>1.0000</qTrib>
    <vUnTrib>118.90000000</vUnTrib>
    <indTot>1</indTot>
</prod>


Após a correção da NF-e, faça o reenvio do documento. No ambiente QAS do ECC o sistema foi parametrizado para fazer o mesmo que hoje está em PRD. Informando a tag Ean “SEM GTIN” na geração do xml.

Embora no ambiente de homologação o sistema da Sefaz esteja validando está informação. A Nota Técnica 2017.001_v1.30 prorroga o prazo para dezembro de 2018.

Ambiente de homologação 02/07/2018 – Aceita no QAS a informação sem Gtin ou material preenchido com EAN
Ambiente de produção 01/12/2018 - Será obrigatória em PRD e deverá ser criado demanda para atuação desta necessidade.

No SAP ECC PRD foi implementado um código na BADI ADD DATA que insere a informação “SEM GTIN” (abapimente falando)

CLASSE ZGE_CL_J_1BNF_ADD_DATA
Método ADD_DATA

Atenção:
Esse código não passa via bapi e shdb na J1B1N

sexta-feira, 4 de maio de 2018

WM TRANSACTIONS

Transações SAP WM
Transação
Descrição
LB01
Criar necessidade de transferência
LB02
Modificar necessidade transferência
LB03
Exibir necessidade transferência
LB10
NTs para tipo de depósito
LB11
NTs para material
LB12
NTs e instr.transf.para material
LB13
NTs para necessidade
LH01
Atribuir UC picking a OT
LH03
Atribuir UC picking a OT exibição
LI01
Criar doc.inventário
LI01N
Criar doc.inventário
LI02
Modificar doc.inventário
LI02N
Modificar doc.inventário
LI03
Exibir doc.inventário
LI03N
Exibir documento de inventário
LI04
Imprimir doc.inventário
LI05
Hist.invent.p/posição no depós.
LI11
Entrar contagem inventário
LI11N
Entrar contagem inventário
LI12
Modificar contagem inventário
LI12N
Modificar contagem inventário
LI13
Exibir contagem inventário
LI13N
Exibir contagem inventário
LI14
Efetuar recontagem
LI20
Retificar diferenças inventário WM
LI21
Retificar diferenças inventár.MM-IM
LP10
Picking direto para OP
LP11
Coloc.à disposição WM peças de caixa
LP11W
Disponibiliz.WM peça de caixa (IAC)
LP12
Colocar à disp.peças sol.rem.(WM/PP)
LS01
Criar mestre de depósito
LS01N
Criar mestre de depósito
LS02
Modificar mestre de depósito
LS02N
Modificar mestre de depósito
LS03
Exibir mestre de depósito
LS03N
Exibir mestre de depósito
LS04
Exibir posições vazias
LS05
Criação de posições no depósito
LS22
Modificar quantos
LS23
Exibir quantos
LS24
Exibir quantos para material
LS25
Exibir quantos por posição no depós.
LS26
Estoques em depósito para material
LS27
Exibir quantos para unidade estoque
LS28
Exibição de unidades estoq./posição
LS32
Modificar unidade de estoque
LS33
Exibir unidade de estoque
LT01
Criar ordem de transferência
LT02
Criar OT para diferença inventário
LT03
Criar OT para fornecimento
LT04
Criar OT da NT
LT05
Processar instrução transferência
LT06
Criar OT para doc.material
LT07
Criar OT para unid.estoque mista
LT08
Entrada adic.manual em unid.estoque
LT09
Função ponto ID para unidades estoq.
LT0A
Planjmto.preliminar de unidades estq
LT0B
Entrada em depósito UCs existentes
LT0C
Saída de depósito UCs existentes
LT0D
Transferência UCs existentes
LT0E
Criar OT retirada p/picking 2 etapas
LT0F
Gerar OT para recebimento
LT0H
Entrada em depós./transferência UCs
LT0I
Saída de depósito UCs
LT0J
Armazenar unidade comercial
LT0S
Criar OT válida p/vários fornecim.
LT10
Criar OT a partir lista estoques
LT11
Confirmar item de ordem transferênc.
LT12
Confirmar ordem de transferência
LT13
Confirmar OT para unidade de estoque
LT14
Confirmar item OT de planj.prelimin.
LT15
Estornar ordem de transferência
LT16
Estornar OT para unidade depósito
LT17
Entrada individual dados reais
LT1A
Modificar ordem de transferência
LT21
Exibir ordem de transporte
LT31
Impressão manual de OT
LT32
Impressão de OT para unidade estoque
LT41
Preparar NTs para process.coletivo
LT42
Criar OT no processmto.coletivo
LT43
Formar grupos para remessas
LT44
ProcColetivo Liberação
LT72
Determinar procedimento de 2 etapas
LT73
Exibir característica de duas etapas
LU01
Criar instrução de transferência
LU02
Modificar instrução de transferência
LU03
Exibir instrução de transferência
LU04
Seleção instrução de transferência
VM01
Criar substância perigosa
VM02
Modificar substância perigosa
VM03
Exibir subst.perig.


terça-feira, 23 de janeiro de 2018

JOB NUMERAÇÃO AUTOMATICA DE NF

J_1BNFECALLRFC

Programa utilizado para numeração de notas fiscais no SAP


Sim, a configuração esta na SPRO-> Componente válidos para várias aplicações -> Funções Gerais de Aplicação --> Nota Fiscal -> Saida -> Atribuir parâmetros de numeração e impressão (dentro do formulário que esta associado a Empresa e Filial, na guia NF-e campo Exe.RFC)

Exemplo:
Se for 1 - a numeração será determinada pela ação manual do usuário no monitor J1BNFE
Se for 3 - Cria o escalonamento do job para o programa J_1BNFECALLRFC (é chamado automaticamente apór a gravação do Docnum)



terça-feira, 20 de setembro de 2016

Programa para inutilizar nota

J_1BNFECHECKNUMBERRANGES – Utilizado para inutilizar range de numeração de nota inconsistente


quarta-feira, 24 de agosto de 2016