Skip to Content
0
Jul 22 at 01:28 PM

Procedure não esta validando corretamente

70 Views Last edit Jul 22 at 02:52 PM 10 rev

Bom Dia. Estou fazendo uma procedimento para impedir que alguns usuários editem o cadastro de parceiros de negócios. Um procedimento executa sem erros, porem quando você validar no SAP ao alterar um campo aparece uma mensagem de erro que não está prevista e quando tento alterar os campos que ainda não estão sendo validados no procedimento eu não consigo.

Se eu comentar o SELECT da tabela CRD1 e da tabela ACR1 um procedimento funciona perfeitamente.

Bom Dia. Estou fazendo um procedimento para evitar que alguns usuários editem o cadastro de parceiros de negócios. Uma procedure roda sem erros, porém quando vou validar no SAP ao alterar um campo aparece uma mensagem de erro que não era esperada e quando tento alterar campos que ainda não estão sendo validados na procedure não consigo.

Se eu comentar a tabela SELECT CRD1 e a tabela ACR1, o procedimento funciona perfeitamente.
IF (: iErrorCode = 0) AND (: sObjTyp = '2') AND (: sTraTyp = 'U') ENT & Atilde; O
   SELECIONE
		IFNULL (pn. "CreditLine", 0),
		IFNULL (pn. "GroupNum", 0),
		      (pn. "CardType"),
		      (pn. "CardName"),
	    IFNULL (pn. "CardFName", ''),
		      (pn. "Telefone1"),
		      (pn. "Telefone2"),
		      (pn. "Celular"),
	    IFNULL (pn. "E_Mail", ''),
		      (pn. "CmpPrivate")		
		INTO LimiteCred, CondPagto, Tipo, NomePN, NomeEstrangeiro, Tel1, Tel2, Cel, Email, TipoPN
	DE "OCRD" pn
	ONDE pn. "CardCode" =: sKeyVal;
	
	SELECIONE O TOP 1
		IFNULL (pn. "CreditLine", 0),
		IFNULL (pn. "GroupNum", 0),
		      (pn. "CardType"),
		      (pn. "CardName"),
		IFNULL (pn. "CardFName", ''),
		      (pn. "Telefone1"),
		      (pn. "Telefone2"),
		      (pn. "Celular"),
		IFNULL (pn. "E_Mail", ''),
		      (pn. "CmpPrivate")
		INTO OldLimiteCred, OldCondPagto, OldTipo, OldNomePN, OldNomeEstrangeiro, OldTel1, OldTel2, OldCel, OldEmail, OldTipoPN
	DE "ACRD" pn
	ONDE pn. "CardCode" =: sKeyVal
	ORDER BY pn. "LogInstanc" DESC;
		
		
		SELECIONE
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o", ''),
        IFNULL (pn. "Rua", ''),
        IFNULL (pn. "Bloco", ''),
        IFNULL (pn. "ZipCode", ''),
        IFNULL (pn. "Cidade", ''),
        IFNULL (pn. "Condado", ''),
        IFNULL (pn. "Estado", ''),
        IFNULL (pn. "Edif & iacute; cio", ''),
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o2", ''),
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o3", ''),
        IFNULL (pn. "AddrType", ''),
        IFNULL (pn. "StreetNo", '')
      INTO Endereco1, Rua, Quadra, Cep, Cidade, Munic & iacute; pio, Estado, Predio, Endereco2, Endereco3, TipoEnd, Numero
        DE "CRD1" pn	
	    ONDE pn. "CardCode" =: sKeyVal;
	    
	    
	  SELECIONE O TOP 1
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o", ''),
        IFNULL (pn. "Rua", ''),
        IFNULL (pn. "Bloco", ''),
        IFNULL (pn. "ZipCode", ''),
        IFNULL (pn. "Cidade", ''),
        IFNULL (pn. "Condado", ''),
        IFNULL (pn. "Estado", ''),
        IFNULL (pn. "Edif & iacute; cio", ''),
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o2", ''),
        IFNULL (pn. "Endereço & ccedil; o & ccedil; o3", ''),
        IFNULL (pn. "AddrType", ''),
        IFNULL (pn. "StreetNo", '')
	  INTO OldEndereco1, Old Street, OldQuadra, OldCep, OldCidade, OldCounty, OldEstado, OldPredio, OldEndereco2, OldEndereco3, OldTipoEnd, OldNumero
        DE "ACR1" pn	
		ONDE pn. "CardCode" =: sKeyVal;
		
		
		
	(SELECIONE t0. "USER_CODE" INTO usuario
		DE "OUSR" T0 onde t0. "USERID" =
			(SELECIONE IFNULL (t1. "UserSign2", t1. "UserSign") 
			 DE "OCRD" t1 ONDE t1. "CardCode" =: sKeyVal
			 )
	);
	
	IF ((LimiteCred <> OldLimiteCred) OR (CondPagto <> OldCondPagto) OU (Tipo <> OldTipo) OR (NomePN <> OldNomePN)
	     OU (NomeEstrangeiro <> OldNomeEstrangeiro) OU (Tel1 <> OldTel1) OU (Tel2 <> OldTel2) OR (Cel <> OldCel)
	     OU (Email <> OldEmail) OU (TipoPN <> OldTipoPN) OU (Endereco1 <> OldEndereco1) OU (Rua <> Old Budap) OR (Quadra <> OldQuadra)
	     OR (Cep <> OldCep) OR (Cidade <> OldCidade) OR (County <> OldCounty) OR (Estado <> OldEstado) OR (Predio <> OldPredio)
	     OR (Endereco2 <> OldEndereco2) OR (Endereco3 <> OldEndereco3) OU (TipoEnd <> OldTipoEnd) OR (Numero <> OldNumero))
	     ENT & Atilde; O
	
		--IF (usuario <> 'gerente' AND usuario <> 'n.brito' AND usuario <> 'p.rolim' AND usuario <> 'c.santos') ENT & Atilde; O
		IF (usuario <> 'n.brito' AND usuario <> 'p.rolim' AND usuario <> 'c.santos' / * AND usuario <> 'gerente' * /) ENT & Atilde; O
			iErrorCode: = '21';
			sErrorMessage: = 'Usu & aacute; rio sem permiss & atilde; o para alterar o cadastro do PN. ';		
		FIM SE;
	FIM SE;
FIM SE;


<br>

Erro no Sap B1

 

[SAP AG][LIBODBCHDB][HDBODBC] General error;1300 fetch returns more than requested number of rows: search table error: "TESTE-INDUSTRIA", "SBO_SP_TRANSACTIONNOTIFICATION":line 38 col 4 (at pos 1186):[1300](range3) fetch returns more than requeste...

Eu segui este caminho "TESTE-INDUSTRIA", "SBO_SP_TRANSACTIONNOTIFICATION":line 38 col 4" e me deparei com isto:

IF :error = 0 THEN CALL "P_PS" ( :object_type, :transaction_type, :num_of_cols_in_key, :list_of_key_cols_tab_del, :list_of_cols_val_tab_del, error, error_message ); END IF;

Não sei como resolver, alguém pode me ajudar?