Árvore de páginas

Versões comparadas

Chave

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

P712SQL - Montagem das instruções SQL de carga memória para o MRP

Linha de Produto:

Protheus

Segmento:

Manufatura

Módulo:

SIGAPCP - Planejamento e Controle da Produção

Parâmetro(s):

NomeTipoDescriçãoDefaultObrigatórioReferência
PARAMIXB[1]CaracterTabela que está sendo carregada
X
PARAMIXB[2]CaracterVariável texto contendo os campos da clausula SELECT da instrução SQL que será executada.
X
PARAMIXB[3]CaracterVariável texto contendo as tabelas e condições, cláusulas FROM e WHERE, da instrução SQL que será executada.
X
PARAMIXB[4]CaracterVariável texto contendo a ordenação da instrução SQL que será executada (cláusula ORDER BY)
X

Idiomas:

Todos

País(es):

Todos

Banco(s) de Dados:

Todos

Sistema(s) Operacional(is):

Todos

Ponto de Entrada

Descrição:
O ponto de entrada P712SQL é executado na montagem das instruções SQL quer irão realizar a carga dos dados na memória. O ponto de entrada é chamado nas seguintes cargas:
  • Produto e saldo (HWA e T4V)
  • Estrutura (T4N)
  • Versão da Produção (T4M)
  • Demandas (T4J)
  • Ordens de Produção (T4Q)
  • Empenhos (T4S)
  • Solicitação de Compras (T4T)
  • Pedido de Compras (T4U)
Localização:

Classe CargaMemoria - Responsável por realizar a execução das instruções SQL e o carregamento dos dados que serão processados pelo MRP para a memória.

Eventos:

Antes da execução de cada Query das tabelas citadas anteriormente.

Programa Fonte:MrpDados_Carga_Documentos.PRW, MrpDados_Carga_Engenharia.PRW, MRPDados_CargaMemoria.PRW

Sintaxe:

P712SQL (cTabela, cFields, cQueryCon, cOrder) --> aRetQuery

Retorno:

Array contendo as três instruções do SQL.

Na posição 01 do array, retornar os campos da cláusula SELECT (cFields).

Na posição 02 do array, retornar as informações das cláusulas FROM e WHERE (cQueryCon)

Na posição 03 do array, retornar as informações da cláusula ORDER BY (cOrder)

Observações:

O ponto de entrada precisa retornar, nas três posições do array, instruções SQL que sejam válidas, dentro do padrão ANSI SQL.

Bloco de código
languagec#
firstline1
titleExemplo
linenumberstrue
#INCLUDE "TOTVS.CH"

User Function PA145GERP712SQL()
    Local cAliasQrycTabela := GetNextAlias()
	Local cOrigem   := "PCPA144"
    Local cTicket   := PARAMIXB[1]

	//
	//SC7 - Pedidos de Compra/AutorizaçõesLocal de Entrega
	//
	BeginSql Alias cAliasQry
	  SELECT C7_FILIAL, C7_NUM, C7_ITEM
		FROM %Table:SC7%
	   WHERE C7_SEQMRP = %Exp:cTicket%
		 AND %notDel%
	EndSql

	While (cAliasQry)->(!Eof())
		//Percorre todos os registros gerados no processamento
		Conout("SC7 - Documento: " + (cAliasQry)->C7_FILIAL + (cAliasQry)->C7_NUM + (cAliasQry)->C7_ITEM)
		(cAliasQry)->(dbSkip())
	End
	(cAliasQry)->(dbCloseArea())

	//
	//SC1 - Solicitações de Compra
	//
	BeginSql Alias cAliasQry
	  SELECT C1_FILIAL, C1_NUM, C1_ITEM
		FROM %Table:SC1%
	   WHERE C1_SEQMRP = %Exp:cTicket%
		 AND C1_ORIGEM = %Exp:cOrigem%
		 AND %notDel%
	EndSql

	While (cAliasQry)->(!Eof())
		//Percorre todos os registros gerados no processamento
		Conout("SC1 - Documento: " + (cAliasQry)->C1_FILIAL + (cAliasQry)->C1_NUM + (cAliasQry)->C1_ITEM)
		(cAliasQry)->(dbSkip())
	End
	(cAliasQry)->(dbCloseArea())

	//
	//SC2 - Ordens de Produção
	//
	BeginSql Alias cAliasQry
	  SELECT C2_FILIAL, C2_NUM, C2_ITEM, C2_SEQUEN
		FROM %Table:SC2%
	   WHERE C2_SEQMRP = %Exp:cTicket%
		 AND C2_BATROT = %Exp:cOrigem%
		 AND %notDel%
	EndSql

	While (cAliasQry)->(!Eof())
		//Percorre todos os registros gerados no processamento
		Conout("SC2 - Documento: " + (cAliasQry)->C2_FILIAL + (cAliasQry)->C2_NUM + (cAliasQry)->C2_ITEM + (cAliasQry)->C2_SEQUEN)
		(cAliasQry)->(dbSkip())
	End
	(cAliasQry)->(dbCloseArea())

	//
	//SD4 - Empenhos
	//
	BeginSql Alias cAliasQry
	  SELECT SD4.D4_FILIAL, SD4.D4_OP, SD4.D4_COD
		FROM %Table:SD4% SD4
	   INNER JOIN %Table:SC2% SC2
		  ON SD4.D4_FILIAL = SC2.C2_FILIAL
		 AND SD4.D4_OP     = CASE SC2.C2_OP WHEN ' ' THEN
		                        SC2.C2_NUM + SC2.C2_ITEM + SC2.C2_SEQUEN + SC2.C2_ITEMGRD //Operador de concatenação de string do banco pode ser diferente
							 ELSE
							    SC2.C2_OP
							 END
	   WHERE SD4.%notDel%
	     AND SC2.%notDel%
	     AND SC2.C2_SEQMRP = %Exp:cTicket%
	EndSql

	While (cAliasQry)->(!Eof())
		//Percorre todos os registros gerados no processamento
		Conout("SD4 - Documento: " + (cAliasQry)->D4_FILIAL + (cAliasQry)->D4_OP + (cAliasQry)->D4_COD)
		(cAliasQry)->(dbSkip())
	End
	(cAliasQry)->(dbCloseArea())

ReturnaSQL    := {}
    
	aAdd(aSQL, PARAMIXB[2])
	aAdd(aSQL, PARAMIXB[3])
	aAdd(aSQL, PARAMIXB[4])
	
	Conout(cTabela)
	
Return aSQL