Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Expandir
titleModelo para copiar e criar novo Expandir de error.log

Explicação

Esse erro acontece quando (...), sejam as possíveis causas:

  • A
  • B
  • C
  • D
  • E


Tópicos de Análise (com tickets de exemplo)

Deck of Cards
startHiddenfalse
effectDuration0.5
idCusto Médio
effectTypehorizontal
loopCardstrue
Card
defaulttrue
id#Ticket
label#Ticket

Erro

Expandir
titleVer erro

Para ver o erro completo, abra o ticket: link aqui

Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD


Tópicos de Análise

Expandir
title1 - Avaliar o retorno dentro da primeira função

Note que na linha X, no valor do atributo (...)

Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD ERROR


Trecho exato:

Sabemos então, que (...)




Expandir
title2 - Procurar em cada função da pilha, indícios do que gerou o erro (pergunte/campo/tabela/filtro)
Bloco de código
firstline1
titleTrecho
linenumberstrue
Called from FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 1004


A - Buscando pela função da primeira pilha

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK

Conseguimos extrair:

  • A
  • B


B - Anotação 2

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK 

Resultado pós análise/interação:





Expandir
titleArray Out of Boundsarray out of bounds [_] of [_] on aArray (_____.PR_)
Card
defaulttrue
id#17629156
label#17629156

Explicação

O Array (ou Matriz) no Advpl é um tipo básico de dado que permite criar listas de tamanho e conteúdo dinâmicos. Um erro do tipo "Array out of bounds" (fora dos limites) indica que o fonte tentou buscar uma posição, em uma variável do tipo Array, que não existe. Exemplo: O fonte pede para buscar a posição 4 de um Array que só possui 3 posições.


Expandir
titleVer erro
Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD ERROR ([24164], taissamiranda, PCL57)   21/07/2023 16:33:17
array out of bounds [8] of [7]  on {||  (IIF(!EMPTY(AATIVIDADES[OLBX:NAT,2]) .AND. TK380VALIDO(AATIVIDADES,OLBX:NAT,OCALEND2:DDIAATU),(TK380EXECLISTA(AATIVIDADES[OLBX:NAT]),AATIVIDADES:=TK380CARREGASU4(OCALEND2:DDIAATU),ASORT(AATIVIDADES,,,{|X,Y|DTOS(X[3])+X[4]<DTOS(Y[3])+Y[4]}),OLBX:SETARRAY(AATIVIDADES),OLBX:BLINE:={||{TK380LEG(AATIVIDADES[OLBX:NAT,2]),AATIVIDADES[OLBX:NAT,3],AATIVIDADES[OLBX:NAT,4],AATIVIDADES[OLBX:NAT,5],AATIVIDADES[OLBX:NAT,6],TK380RETROT(AATIVIDADES[OLBX:NAT,7])}},TK380PDETALHES(@ADET_PANEL,AATIVIDADES[OLBX:NAT],@OPDETALHES),TK380PPENDENCIA(@APEND_PANEL,AATIVIDADES[OLBX:NAT],@OPPENDENCIA),TK380ATUSAUDACAO(OU6STATUS,OUOMETA,AATIVIDADES[OLBX:NAT]),OLBX:REFRESH(),ODLGAGENDA:REFRESH()),))}(TMKA380.PRW) 04/05/2023 16:01:55 line : 383

[TOTVS build: 7.00.210324P-20230531]
Called from ::MSDIALOG:ACTIVATE
Called from TMKA380(TMKA380.PRW) 04/05/2023 16:01:55 line : 395
Called from __EXECUTE(APLIB090.PRW) 23/05/2023 15:13:31 line : 721
Called from MDIEXECUTE(APLIB260.PRW) 23/05/2023 15:13:31 line : 924
Expandir
titleAnálise realizada

Ticket de referência: #17629156

1. O primeiro passo é tentar identificar o nome do Array que o sistema está validando, isso pode ser feito:

  • Pelo próprio erro,  através do Stack das funções chamadas no erro ou no cabeçalho do erro que aponta o erro:

Neste caso o Array "aAtividades" é citado no cabeçalho do erro:

Bloco de código
titleSTACK
array out of bounds [8] of [7]  on {||  (IIF(!EMPTY(AATIVIDADES[OLBX:NAT,2]) .AND. TK380VALIDO(AATIVIDADES,OLBX:NAT,OCALEND2:DDIAATU),(TK380EXECLISTA(AATIVIDADES[OLBX:NAT]),AATIVIDADES:=TK380CARREGASU4(OCALEND2:DDIAATU),ASORT(AATIVIDADES,,,{|X,Y|DTOS(X[3])+X[4]<DTOS(Y[3])+Y[4]}),OLBX:SETARRAY(AATIVIDADES),OLBX:BLINE:={||{TK380LEG(AATIVIDADES[OLBX:NAT,2]),AATIVIDADES[OLBX:NAT,3],AATIVIDADES[OLBX:NAT,4],AATIVIDADES[OLBX:NAT,5],AATIVIDADES[OLBX:NAT,6],TK380RETROT(AATIVIDADES[OLBX:NAT,7])}},TK380PDETALHES(@ADET_PANEL,AATIVIDADES[OLBX:NAT],@OPDETALHES),TK380PPENDENCIA(@APEND_PANEL,AATIVIDADES[OLBX:NAT],@OPPENDENCIA),TK380ATUSAUDACAO(OU6STATUS,OUOMETA,AATIVIDADES[OLBX:NAT]),OLBX:REFRESH(),ODLGAGENDA:REFRESH()),))}(TMKA380.PRW) 04/05/2023 16:01:55 line : 383
  • Pela linha do fonte onde o erro ocorre:

Neste caso, o erro ocorre após a validação do array "aAtividades":

Bloco de código
titleFonte
	// Botoes da para execucao das tarefas.
	DEFINE SBUTTON FROM 05,nCol-65 TYPE 1  ;
							ACTION 	(IIF(	!Empty(aAtividades[oLbx:nAt,2]) .AND. Tk380Valido(aAtividades,oLbx:nAt,oCalend2:dDiaAtu),;
											(Tk380ExecLista(aAtividades[oLbx:nAt]),;
											aAtividades := Tk380CarregaSU4(oCalend2:dDiaAtu),;
											ASORT(aAtividades,,,{|x,y| DToS(x[3])+x[4] < DToS(y[3])+y[4]}),;
											oLbx:SetArray(aAtividades),;
											oLbx:bLine:={||{Tk380Leg(	aAtividades[oLbx:nAt,2]),;
																		aAtividades[oLbx:nAt,3],;
																		aAtividades[oLbx:nAt,4],;
																		aAtividades[oLbx:nAt,5],;
																		aAtividades[oLbx:nAt,6],;
																		Tk380RetRot(aAtividades[oLbx:nAt,7])}},;
											Tk380PDetalhes(@aDet_Panel,aAtividades[1],@oPDetalhes)	,;	  // Atualiza o painel de detalhes
											Tk380PPendencia(@aPend_Panel,aAtividades[1],@oPPendencia),;  // Atualiza o painel de pendencias
											Tk380AtuSaudacao(oU6Status,oUOMeta,aAtividades[1]),; 		// Atualiza os dados do cabecalho.
											oLbx:Refresh(),;
											oDlgAgenda:Refresh()),; 
											)) ;
							ENABLE OF oPanel3 PIXEL <--- O Erro ocorre aqui


2. Identificado o Array que vamos investigar, precisamos avaliar os campos/variáveis que formam esse Array

No fonte do erro (TMKA380) é identificado que quem preenche o Array é a função "Tk380CarregaSU4":

Bloco de código
titleCarrega
	oCalend2:bChange    := {|| 	aAtividades:=Tk380CarregaSU4(oCalend2:dDiaAtu),;  <--- Veja que atribui ao array o retorno dessa função

Então vamos verificar o em qual fonte esta a função "Tk380CarregaSU4", neste caso o fonte "TMKA380C", e procurar pelo preenchimento do array "aAtividades".

A adição de elementos no Array é realizada através da função "AAdd":

Bloco de código
titleaAtividades
If nTotal > 0
				AAdd(aAtividades,{	(cTmpSU4)->U4_LISTA	,; 	// 1
						"3",; 	// 2
						(cTmpSU4)->U4_DATA	,; 	// 3
						(cTmpSU4)->U4_HORA1	,; 	// 4
						(cTmpSU4)->U4_DESC	,; 	// 5
						(cTmpSU4)->U4_OPERAD,; 	// 6
						(cTmpSU4)->U4_TELE	,; 	// 7
						(cTmpSU4)->U4_CODLIG,;	// 8
						(cTmpSU4)->U4_FORMA})	// 9	
		Else
			AAdd(aAtividades,{	(cTmpSU4)->U4_LISTA	,; 	// 1
						(cTmpSU4)->U4_STATUS,; 	// 2
						(cTmpSU4)->U4_DATA	,; 	// 3
						(cTmpSU4)->U4_HORA1	,; 	// 4
						(cTmpSU4)->U4_DESC	,; 	// 5
						(cTmpSU4)->U4_OPERAD,; 	// 6
						(cTmpSU4)->U4_TELE	,; 	// 7
						(cTmpSU4)->U4_CODLIG,;	// 8
						(cTmpSU4)->U4_FORMA})	// 9		
		EndIf
	Else
		AAdd(aAtividades,{	(cTmpSU4)->U4_LISTA	,; 	// 1
						(cTmpSU4)->U4_STATUS,; 	// 2
						(cTmpSU4)->U4_DATA	,; 	// 3
						(cTmpSU4)->U4_HORA1	,; 	// 4
						(cTmpSU4)->U4_DESC	,; 	// 5
						(cTmpSU4)->U4_OPERAD,; 	// 6
						(cTmpSU4)->U4_TELE	,; 	// 7
						(cTmpSU4)->U4_CODLIG,;	// 8
						(cTmpSU4)->U4_FORMA})	// 9
	EndIf	


3. Agora que já sabemos quais campos ou informações compõem esse array vamos focar a investigação nesses campos (todos)


  

Expandir
titleConclusão do caso

Solicitamos ao cliente verificar os campos que compõem o array:

  • Eles existem no SX3?
  • Eles estão como "usados" no CFG?
  • O "Nível" (X3_NIVEL) foi alterado?
  • A "ordem" (X3_ORDEM) foi alterada?

O cliente verificou que todos os campos estavam ok, mas o erro persistia.

Então verificamos se esses campos foram preenchidos na tabela SU4 e foi verificado que os campos U4_DATA e U4_HORA1 não eram preenchidos, verificamos que o conteúdo desses campos vem dos campos "Retorno" (ACF_PENDEN) e "Hora" (ACF_HRPEND), porém no processo do cliente esses campos não eram preenchidos mesmo eles sendo obrigatórios.

O cliente retirou a obrigatoriedade dos campos, mesmo sendo bloqueados no CFG.

  

Expandir
titleInvalid macro source (_____: Error token failed, no valid token)

Explicação

Esse erro acontece qual é alterado a estrutura de dicionário padrão do Protheus, ou foi realizado um filtro de rotina invalido, sejam as possíveis causas:

  • Ordem de campos (X3_ORDEM)
  • Estrutura de campos (Dados da tabela SX3)
  • Estrutura de gatilhos (Dados da tabela SX6)
  • Estrutura de perguntes (Dados da tabela SX1)
  • Filtros com sintaxe errada (nas telas na pesquisa)


Tópicos de Análise (com tickets de exemplo)

Deck of Cards
startHiddenfalse
effectDuration0.5
idCusto Médio
effectTypehorizontal
loopCardstrue
Card
defaulttrue
id#17597701
label#17597701

Erro

Expandir
titleVer erro

Para ver o erro completo, abra o ticket: https://totvssuporte.zendesk.com/agent/tickets/17597701

Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD ERROR ([22385], Robson, LAPTOP-IOFSC6N4)   02/08/2023 18:23:20
invalid macro source (SSYacc0105e: Error token failed, no valid token):({|a,b,c| FWInitCpo(a,b,c),xRet:=(@!),FWCloseCpo(a,b,c,.T.),xRet }) on FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 5520 


Tópicos de Análise

Expandir
title1 - Avaliar o retorno dentro da primeira função

Note que na linha 2, no valor do atributo "xRet" há o retorno "@!" indicando que isso foi o que o sistema recebeu e, depois houve o erro:

Bloco de código
firstline1
titleTrecho
linenumberstrue
THREAD ERROR ([22385], Robson, LAPTOP-IOFSC6N4)   02/08/2023 18:23:20
invalid macro source (SSYacc0105e: Error token failed, no valid token):({|a,b,c| FWInitCpo(a,b,c),xRet:=(@!),FWCloseCpo(a,b,c,.T.),xRet }) on FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 5520


Trecho exato:

Sabemos então, que o conteúdo (variável/pergunte/campo/filtro) que gerou o erro possui o formato "@!".


Expandir
title2 - Procurar em cada função da pilha, indícios do que gerou o erro (pergunte/campo/tabela/filtro)
Bloco de código
firstline1
titleTrecho
linenumberstrue
Called from FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 1004
Called from FORMSTRUTABLE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 433
Called from FWFORMSTRUCT(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10 line : 3985
Called from FWMBROWSE:LOADCOLUMNS(FWMBROWSE.PRW) 04/04/2023 15:05:10 line : 1796
Called from FWMBROWSE:ACTIVATE(FWMBROWSE.PRW) 04/04/2023 15:05:10 line : 562
Called from FWMARKBROWSE:ACTIVATE(FWMARKBROWSE.PRW) 04/04/2023 15:05:10 line : 267
Called from FWMARKBROWSE(MSLIB.PRW) 04/04/2023 15:05:10 line : 10784
Called from MARKBROWSEF(MSLIB.PRW) 04/04/2023 15:05:10 line : 5783
Called from MARKBROW(MSLIB.PRW) 04/04/2023 15:05:10 line : 5763
Called from MATA500(MATA500.PRX) 17/03/2022 18:01:27 line : 129
Called from __EXECUTE(APLIB090.PRW) 04/04/2023 15:05:08 line : 721
Called from MDIEXECUTE(APLIB260.PRW) 04/04/2023 15:05:08 line : 924  


A - Buscando pela função da primeira pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK FWFORMSTRUCT(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10

  Param 1: NTYPE(N) : 3
  Param 2: CALIASSX2(C) : SC6
  Param 3: BSX3(U) : NIL
  Param 4: LVIEWUSADO(L) : .F.
  Param 5: LVIRTUAL(L) : .T.
  Param 6: LFILONVIEW(L) : .F.
  Param 7: CPROGRAM(C) : MATA500
  Local 1: NTYPE(N) :3
  Local 2: CALIASSX2(C) :SC6
  Local 3: BSX3(U) :NIL
  Local 4: LVIEWUSADO(L) :.F.
  Local 5: LVIRTUAL(L) :.T.
  Local 6: LFILONVIEW(L) :.F.
  Local 7: CPROGRAM(C) :MATA500
  Local 8: AAUX(A) :
  Local 9: OSTRUCT(U) :NIL

Conseguimos extrair:

  • O programa onde deu o erro é o MATA500 pelo parâmetro 7.
  • A tabela do erro posicionada é a tabela SC6 pelo parâmetro 2.


B - Buscando pela segunda função da pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK FORMSTRUTABLE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10

  Param 1: CALIASSX2(C) : SC6
  Param 2: BSX3(U) : NIL
  Param 3: LVIEWUSADO(L) : .F.
  Param 4: LVIRTUAL(L) : .T.
  Param 5: LFILONVIEW(L) : .F.
  Param 6: NTYPE(N) : 3
  Local 1: CALIASSX2(C) :SC6
  Local 2: BSX3(U) :NIL
  Local 3: LVIEWUSADO(L) :.F.
  Local 4: LVIRTUAL(L) :.T.
  Local 5: LFILONVIEW(L) :.F.
  Local 6: NTYPE(N) :3
  Local 7: AAREA(A) :
  Local 8: AAUX(A) :
  Local 9: AGROUPS(A) :
  Local 10: ARETORNO(A) :
  Local 11: CAUX(C) :
  Local 12: LHASXXA(L) :.F.
  Local 13: LOLDSET(L) :.F.
  Local 14: LUSADO(L) :.T.
  Local 15: LUSADOMODEL(L) :.T.
  Local 16: NPOS(N) :0
  Local 17: NX(N) :0
  Local 18: NY(N) :0
  Local 19: CQUERY(C) :INSERT INTO dbo.##TMPSC00_122 (X3_CAMPO) SELECT XAM_FIELD FROM XAM010 XAM WHERE  XAM.XAM_FIELD IN (SELECT SX3.X3_CAMPO FROM SX3010 SX3 WHERE  SX3.X3_ARQUIVO = 'SC6' AND SX3.D_E_L_E_T_ = ' ' ) AND XAM.XAM_ANONIM = '1' AND XAM.D_E_L_E_T_=' ' AND NOT EXISTS (SELECT XAMSUB.R_E_C_N_O_ FROM XAM010 XAMSUB WHERE  XAMSUB.XAM_FIELD = XAM.XAM_FIELD AND XAMSUB.XAM_ANONIM = '2' AND XAMSUB.D_E_L_E_T_=' ')   ORDER BY  XAM_FIELD
  Local 20: CALIASQ(C) :SCGN0000ED
  Local 21: LINDB(L) :.T.
  Local 22: LEMPTYBSX3(L) :.T.
  Local 23: LRETCACHE(L) :.F.
  Local 24: LLOCSX2(L) :.F.
  Local 25: AMDLFIELDS(A) :
  Local 26: AVIEWFIELDS(A) :
  Local 27: ARETURN(U) :NIL
  Local 28: NLENX3(N) :10
  Local 29: CX3CBOXANONYM(C) :SELECT XAM_FIELD FROM XAM010 XAM WHERE  XAM.XAM_FIELD IN (SELECT SX3.X3_CAMPO FROM SX3010 SX3 WHERE  SX3.X3_ARQUIVO = 'SC6' AND SX3.D_E_L_E_T_ = ' ' ) AND XAM.XAM_ANONIM = '1' AND XAM.D_E_L_E_T_=' ' AND NOT EXISTS (SELECT XAMSUB.R_E_C_N_O_ FROM XAM010 XAMSUB WHERE  XAMSUB.XAM_FIELD = XAM.XAM_FIELD AND XAMSUB.XAM_ANONIM = '2' AND XAMSUB.D_E_L_E_T_=' ')   ORDER BY  XAM_FIELD
  Local 30: BSEEKANONYM(B) :{|CFIELD| (CANONYMALIAS)->(DBSEEK(CFIELD))}
  Local 31: LTEMPTABLE(L) :.T.
  Local 32: CANONYMALIAS(C) :SCGN0000EF

Conseguimos extrair:

  • A tabela do erro posicionada é a tabela SC6 pelo parâmetro 1.


C - Buscando pela terceira função da pilha "FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK FORMVIEWFIELD(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10

  Param 1: CALIASALT(C) : SCGN0000ED
  Local 1: CALIASALT(C) :SCGN0000ED
  Local 2: ARETORNO(A) :
  Local 3: NMAXLENCOMBO(N) :0
  Local 4: NINITCBOX(N) :0
  Local 5: NX(N) :0
  Local 6: ACOMBO(A) :
  Local 7: ATMP(A) :
  Local 8: BPICTVAR(U) :NIL
  Local 9: CX3CBOX(C) :      

Conseguimos extrair:

  • Nenhuma pista.


D - Buscando pela quarta função da pilha "FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
STACK FWBUILDFEATURE(PROTHEUSFUNCTIONMVC.PRX) 04/04/2023 15:05:10

  Param 1: NTIPO(N) : 4
  Param 2: CEXPRADVPL(C) : @!                  
  Local 1: NTIPO(N) :4
  Local 2: CEXPRADVPL(C) :@!                  
  Local 3: CAUX(C) :FWInitCpo(a,b,c),xRet:=(@!),FWCloseCpo(a,b,c,.T.),xRet
  Local 4: XRET(U) :NIL 

OBSERVAÇÃO: De longe, a pilha mais clara até agora, mostra o cabeçalho do erro e o formato do retorno do erro "@!", o erro está aqui, mas não foi clareado para nós onde exatamente.

Conseguimos extrair:

  • A validação do erro
  • O formato do retorno do erro ("xRet")


E - Buscando pela quinta função da pilha "STACK { | E | ERRORDIALOG( E )}", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
 Param 1: E(O) : O
  Local CodeBlock 1: E(O) :O

Conseguimos extrair:

  • Nenhuma pista


F - Buscando pela sexta função da pilha "STACK { | E | ERRORDIALOG( E ) }(APLIB240.PRW)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
  Param 1: E(O) : O
  Local 1: E(O) :O
  Local 2: LINSIGA(L) :.T.
  Local 3: CMSG(U) :NIL
  Local 4: NI(U) :NIL
  Local 5: CX(U) :NIL
  Local 6: CERROR(U) :NIL
  Local 7: LSKIPERROR(L) :.F.
  Local 8: AOBJLOG(A) :
  Local 9: NX(U) :NIL
  Local 10: URETURN(U) :NIL

Conseguimos extrair:

  • Nenhuma pista


E - Buscando pela sétima função da pilha "ERRORDLG(APLIB240.PRW)", obtemos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
 Param 1: E(O) : O
  Local CodeBlock 1: E(O) :O

Conseguimos extrair:

  • Nenhuma pista


OBSERVAÇÃO: Nesse caso, a análise das pilhas foi importante para nos certificar que o erro estava no formato (@!) e na tabela (SC6) no processo da rotina (MATA500), mas o erro específico não foi localizado ainda.


Expandir
title3 - Localizar a última tabela olhada pelo sistema antes do erro

No error.log digite " **", ou seja, espaço-asterisco-asterisco e procure. Irá aparecer onde o documento levar, a ultima parada do sistema, importante para localizar o que ele foi gravar e não conseguiu. Obtemos esse resultado:

Bloco de código
firstline1
titleTrecho
linenumberstrue
 _SC00; Rdd:TOPCONN; Alias:SCGN0000EF; Filter :; Recno:5000; Total Recs:0; Order:1
     Index (0) :**SC0001  X3_CAMPO
    Field 1: X3_CAMPO(C) :      


OBSERVAÇÃO: Nesse caso, não foi útil para nós, pois a última parada foi em uma tabela temporária "**SC0001", seguimos analisando.

Expandir
title4 - Localizar campo na tabela SX3

Simboliza o último campo visto pelo sistema antes do erro, ao procurar no error.log por "SX3" temos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
SX3010; Rdd:TOPCONN; Alias:SX3; Filter :; Recno:112953; Total Recs:166831; Order:1
     Index (0) :**SX30101  X3_ARQUIVO+X3_ORDEM
     Index (1) :SX30102  X3_CAMPO
     Index (2) :SX30103  X3_GRPSXG+X3_ARQUIVO+X3_ORDEM
     Index (3) :SX30104  X3_ARQUIVO+X3_FOLDER+X3_ORDEM
     Index (4) :SX30105  X3_ARQUIVO+X3_IDXFLD+X3_CAMPO
    Field 1: X3_ARQUIVO(C) :SC6
    Field 2: X3_ORDEM(C) :AC
    Field 3: X3_CAMPO(C) :C6_SOLCOM 
    Field 4: X3_TIPO(C) :C
    Field 5: X3_TAMANHO(N) :6
    Field 6: X3_DECIMAL(N) :0
    Field 7: X3_TITULO(C) :Num. Solicit
    Field 8: X3_TITSPA(C) :Num. Solicit
    Field 9: X3_TITENG(C) :Req.No.     
    Field 10: X3_DESCRIC(C) :Número da Solicitação de 
    Field 11: X3_DESCSPA(C) :Numero de Solicitud de   
    Field 12: X3_DESCENG(C) :Number of Request of     
    Field 13: X3_PICTURE(C) :@!                                           
    Field 14: X3_VALID(C) :                                                                                                                                
    Field 15: X3_USADO(C) :x       x       x       x       x       x       x       x       x       x       x       x       x       x       x x     
    Field 16: X3_RELACAO(C) :                                                                                                                                
    Field 17: X3_F3(C) :      
    Field 18: X3_NIVEL(N) :1
    Field 19: X3_RESERV(C) :    x           
    Field 20: X3_CHECK(C) F : 
    Field 21: X3_TRIGGER(C) : 
    Field 22: X3_PROPRI(C) : 
    Field 23: X3_BROWSE(C) : 
    Field 24: X3_VISUAL(C) : 
    Field 25: X3_CONTEXT(C) : 
    Field 26: X3_OBRIGAT(C) :        
    Field 27: X3_VLDUSER(C) :                                                                                                                                
    Field 28: X3_CBOX(C) :                                                                                                                                
    Field 29: X3_CBOXSPA(C) :                                                                                                                                
    Field 30: X3_CBOXENG(C) :                                                                                                                                
    Field 31: X3_PICTVAR(C) :                    
    Field 32: X3_WHEN(C) :                                                            
    Field 33: X3_INIBRW(C) :                                                                                
    Field 34: X3_GRPSXG(C) :   
    Field 35: X3_FOLDER(C) : 
    Field 36: X3_PYME(C) :S
    Field 37: X3_CONDSQL(C) :                                                                                                                                                                                                                                                          
    Field 38: X3_CHKSQL(C) :                                                                                                                                                                                                                                                          
    Field 39: X3_IDXSRV(C) :N
    Field 40: X3_ORTOGRA(C) : 
    Field 41: X3_IDXFLD(C) :N
    Field 42: X3_TELA(C) :               
    Field 43: X3_PICBRV(C) :                                                  
    Field 44: X3_AGRUP(C) :   
    Field 45: X3_POSLGT(C) :1
    Field 46: X3_MODAL(C) :2

Conseguimos extrair:

  • O campo possui o formato do erro "@!"
  • O campo é padrão e tem suas informações (campos da SX3) no padrão.
  • O campo que antecede erro está na SC6.
  • O campo está com a ordem errada (X3_ORDEM = AC)


Pela natureza do campo, o pedido de venda proveniente veio de uma solicitação de compras, podemos ver qual valor ele carregava no sistema procurando por "C6_SOLCOM", temos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
    Field 137: C6_SOLCOM(C) :        

Nesse caso do erro, então, ele estava vazio no momento.


Após visualizar o campo, temos de verificar pois já podem ser a causa do erro:

  • É padrão?
  • Os campos da SX3 estão no padrão?
  • O campo está na ordenação (X3_ORDEM) certa?

Nessa etapa pode ser comparado o seu ambiente com o do cliente.




Expandir
title5 - Localizar parâmetro na tabela SX6

Simboliza o último parâmetro visto pelo sistema antes do erro, ao procurar no error.log por "SX6" temos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
SX6010; Rdd:TOPCONN; Alias:SX6; Filter :; Recno:9266; Total Recs:10702; Order:1
     Index (0) :**SX60101  X6_FIL+X6_VAR
    Field 1: X6_FIL(C) :        
    Field 2: X6_VAR(C) :MV_USAX3BR
    Field 3: X6_TIPO(C) :C
    Field 4: X6_DESCRIC(C) :Se "S" indica que nao será validado o X3_USADO do 
    Field 5: X6_DSCSPA(C) :"S" indica que no se validara el X3_USADO del     
    Field 6: X6_DSCENG(C) :When "S", the X3_USADO assigned to the field will 
    Field 7: X6_DESC1(C) :campo para exibicao no browse.                    
    Field 8: X6_DSCSPA1(C) :campo para exhibicion en el browse.               
    Field 9: X6_DSCENG1(C) :not be validated for displaying in the browser.   
    Field 10: X6_DESC2(C) :                                                  
    Field 11: X6_DSCSPA2(C) :                                                  
    Field 12: X6_DSCENG2(C) :                                                  
    Field 13: X6_CONTEUD(C) :S                                                                                                                                                                                                                                                         
    Field 14: X6_CONTSPA(C) :S                                                                                                                                                                                                                                                         
    Field 15: X6_CONTENG(C) :S                                                                                                                                                                                                                                                         
    Field 16: X6_PROPRI(C) :S
    Field 17: X6_PYME(C) :S
    Field 18: X6_VALID(C) :                                                                                                                                
    Field 19: X6_INIT(C) :                                                                                                                                
    Field 20: X6_DEFPOR(C) :S                                                                                                                                                                                                                                                         
    Field 21: X6_DEFSPA(C) :S                                                                                                                                                                                                                                                         
    Field 22: X6_DEFENG(C) :S                                                                                                                                                                                                                                                         
    Field 23: X6_EXPDEST(C) :1

Conseguimos extrair:

  • O último parâmetro olhado pelo sistema foi o MV_USAX3BR
  • Está no padrão
  • Os campos do parâmetro estão no padrão
  • O valor do parâmetro está "Default" no padrão


OBSERVAÇÃO: Logo, a provável causa do erro não é esse parâmetro.

Expandir
title6 - Localizar pergunte na tabela SX1

Simboliza o último pergunte visto pelo sistema antes do erro, ao procurar no error.log por "SX1" temos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
  SX1010; Rdd:TOPCONN; Alias:SX1; Filter :; Recno:32746; Total Recs:55784; Order:1
     Index (0) :**SX10101  X1_GRUPO+X1_ORDEM
     Index (1) :SX10102  X1_IDFIL+X1_ORDEM
    Field 1: X1_GRUPO(C) :MTA510    
    Field 2: X1_ORDEM(C) :01
    Field 3: X1_PERGUNT(C) :Taxa deflacao ICMS ?          
    Field 4: X1_PERSPA(C) :¿Tasa Deflac. ICMS ?          
    Field 5: X1_PERENG(C) :ICMS Deflation Rate ?         
    Field 6: X1_VARIAVL(C) :mv_ch5
    Field 7: X1_TIPO(C) :N
    Field 8: X1_TAMANHO(N) :5
    Field 9: X1_DECIMAL(N) :2
    Field 10: X1_PRESEL(N) :0
    Field 11: X1_GSC(C) :G
    Field 12: X1_VALID(C) :                                                            
    Field 13: X1_VAR01(C) :mv_par01       
    Field 14: X1_DEF01(C) :               
    Field 15: X1_DEFSPA1(C) :               
    Field 16: X1_DEFENG1(C) :               
    Field 17: X1_CNT01(C) : 0.00                                                       
    Field 18: X1_VAR02(C) :               
    Field 19: X1_DEF02(C) :               
    Field 20: X1_DEFSPA2(C) :               
    Field 21: X1_DEFENG2(C) :               
    Field 22: X1_CNT02(C) :                                                            
    Field 23: X1_VAR03(C) :               
    Field 24: X1_DEF03(C) :               
    Field 25: X1_DEFSPA3(C) :               
    Field 26: X1_DEFENG3(C) :               
    Field 27: X1_CNT03(C) :                                                            
    Field 28: X1_VAR04(C) :               
    Field 29: X1_DEF04(C) :               
    Field 30: X1_DEFSPA4(C) :               
    Field 31: X1_DEFENG4(C) :               
    Field 32: X1_CNT04(C) :                                                            
    Field 33: X1_VAR05(C) :               
    Field 34: X1_DEF05(C) :               
    Field 35: X1_DEFSPA5(C) :               
    Field 36: X1_DEFENG5(C) :          
    Field 37: X1_CNT05(C) :                                                            
    Field 38: X1_F3(C) :      
    Field 39: X1_PYME(C) :S
    Field 40: X1_GRPSXG(C) :   
    Field 41: X1_HELP(C) :              
    Field 42: X1_PICTURE(C) :                                        
    Field 43: X1_IDFIL(C) :      
  SXK010; Rdd:TOPCONN; Alias:SXK; Filter :; Recno:5000; Total Recs:0; Order:2
     Index (0) :SXK0101  XK_GRUPO+XK_SEQ+XK_IDUSER
     Index (1) :**SXK0102  XK_IDUSER+XK_GRUPO+XK_SEQ
    Field 1: XK_GRUPO(C) :          
    Field 2: XK_SEQ(C) :  
    Field 3: XK_IDUSER(C) :       
    Field 4: XK_CONTEUD(C) :                                                                                                                                                                                                                                                          
    Field 5: XK_FORM(C) :                     

Conseguimos extrair:

  • O último parâmetro olhado pelo sistema foi do grupo "MTA510", de ordenação 1.
  • Está no padrão
  • Os campos do parâmetro estão no padrão
  • O valor do parâmetro está "Default" no padrão


OBSERVAÇÃO: Logo, a provável causa do erro não é esse pergunte.

Expandir
title7 - Localizar pontos de entrada influentes

Simboliza as customizações ativadas pelo sistema antes do erro ocorrer, basta procuramos pelos valores "XX6_CODFUN" e "XX7_CODFUN", fazendo isso temos:

Bloco de código
firstline1
titleTrecho
linenumberstrue
 XX6010; Rdd:TOPCONN; Alias:XX6; Filter :; Recno:15; Total Recs:23; Order:1
     Index (0) :**XX60101  XX6_CODFUN+XX6_TYPE
     Index (1) :XX60102  XX6_DESC+XX6_CODFUN
    Field 1: XX6_CODFUN(C) :A097APRF
    Field 2: XX6_TYPE(C) :1
    Field 3: XX6_DESC(C) :Automaticamente adicionado pelo sistema.-29/08/2022         
  XX7010; Rdd:TOPCONN; Alias:XX7; Filter :; Recno:15; Total Recs:23; Order:1
     Index (0) :**XX70101  XX7_CODFUN+XX7_TYPE+XX7_FILIAL
     Index (1) :XX70102  XX7_TYPE+XX7_CODFUN+XX7_FILIAL
    Field 1: XX7_CODFUN(C) :A097APRF
    Field 2: XX7_TYPE(C) :1
    Field 3: XX7_FILIAL(C) :        
    Field 4: XX7_STATUS(C) :1
    Field 5: XX7_DEFRET(C) :                                        

Conseguimos extrair:

  • A customização não tem a ver com os fontes do erro.


OBSERVAÇÃO: Logo, a provável causa do erro não é esse ponto de entrada "A097APRF".


Resultado pós análise/interação



Card
defaulttrue
id#
label#



...