Árvore de páginas

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)
  • 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.

Exemplo
#INCLUDE "TOTVS.CH"

User Function P712SQL()
    Local aRetorno   := {}
    Local cTabela    := Trim(PARAMIXB[1])
    Local cFields    := Trim(PARAMIXB[2])
    Local cQueryCon  := Trim(PARAMIXB[3])
    Local cOrder     := Trim(PARAMIXB[4])
	Local lBeginSql2 := .F.
	Local lBeginSql3 := .F.
	Local lBeginSql4 := .F.
	Local lAlterou   := .T.

	//Tratamento BeginSQL
	If Right(cFields, 1) == '%'
		cFields    := StrTran(cFields, "%", "")
		lBeginSql2 := .T.
	EndIf
	If Right(cQueryCon, 1) == '%'
		cQueryCon  := StrTran(cQueryCon, "%", "")
		lBeginSql3 := .T.
	EndIf
	If Right(cOrder, 1) == '%'
		cOrder     := StrTran(cOrder, "%", "")
		lBeginSql4 := .T.
	EndIf

    Conout("Query de carga da tabela " + cTabela + ":")
    Conout("SELECT " + cFields + " FROM " + cQueryCon + " ORDER BY " + cOrder)

	Do Case
		//Só consideraremos produtos com controle de Lote e Sublote
		Case cTabela == 'HWA'
			cQueryCon += " AND HWA_RASTRO <> 'N' "

		//Só consideraremos Pedidos de Compras com quantidade maior que 10
		Case cTabela == 'T4U'
			cQueryCon += " AND T4U_QTD > 10 "

		//Só consideraremos OPs com quantidade maior que 100
		Case cTabela == 'T4Q'
			cQueryCon += " AND T4Q_SALDO > 100 "

		//Trocaremos o armazém da demanda pelo armazém do produto
		Case cTabela == 'T4J'
			cFields := StrTran(cFields, " T4J.T4J_LOCAL", " HWA.HWA_LOCPAD As T4J_LOCAL")

		Otherwise
			lAlterou := .F.
	EndCase

	//Só precisa retornar o array aRetorno se realmente a query foi alterada
	If lAlterou
		Conout("A carga da tabela " + cTabela + " utilizara a query especifica:")
    	Conout("SELECT " + cFields + " FROM " + cQueryCon + " ORDER BY " + cOrder)

		//Tratamento BeginSQL
		If lBeginSql2
			cFields := "% " + cFields + "%"
		EndIf
		If lBeginSql3
			cQueryCon := "% " + cQueryCon + "%"
		EndIf
		If lBeginSql4
			cOrder := "% " + cOrder + "%"
		EndIf

		aAdd(aRetorno, cFields)
		aAdd(aRetorno, cQueryCon)
		aAdd(aRetorno, cOrder)
	Else
		Conout("A carga da tabela " + cTabela + " utilizara a query padrao do MRP.")
	EndIf

Return aRetorno