Exemplo Inclusão/Alteração/Exclusão:
User Function MyMATA200(PARAMIXB3)
Local PARAMIXB1 := {}
Local PARAMIXB2 := {}
Local aGets := {}
Local lOK := .T.
Local cString
Private lMsErroAuto := .F.
Default PARAMIXB3 := 3
//------------------------//| Abertura do ambiente |//------------------------
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "PCP" TABLES "SB1","SG1","SG5"
ConOut(Repl("-",80))
ConOut(PadC("Teste de rotina automatica para estrutura de produtos",80))
//------------------------//| Teste de Inclusao |//------------------------
dbSelectArea("SB1")
dbSetOrder(1)
If !SB1->(MsSeek(xFilial("SB1")+"PA001"))
lOk := .F.
ConOut("Cadastrar produto acabado: PA001")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"PI001"))
lOk := .F.
ConOut("Cadastrar produto intermediario: PI001")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"PI002"))
lOk := .F.
ConOut("Cadastrar produto intermediario: PI002")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"PI003"))
lOk := .F.
ConOut("Cadastrar produto intermediario: PA003")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"MP001"))
lOk := .F.
ConOut("Cadastrar produto materia prima: MP001")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"MP002"))
lOk := .F.
ConOut("Cadastrar produto materia prima: MP002")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"MP003"))
lOk := .F.
ConOut("Cadastrar produto materia prima: MP003")
EndIf
If !SB1->(MsSeek(xFilial("SB1")+"MP004"))
lOk := .F.
ConOut("Cadastrar produto materia prima: MP004")
EndIf
If PARAMIXB3==3
PARAMIXB1 := {{"G1_COD","PA001",NIL},;
{"G1_QUANT",1,NIL},;
{"NIVALT","S",NIL}} // A variavel NIVALT eh utilizada pra recalcular ou nao a
// estrutura
aGets := {}
aadd(aGets,{"G1_COD","PA001",NIL})
aadd(aGets,{"G1_COMP","PI001",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PI001",NIL})
aadd(aGets,{"G1_COMP","PI002",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PI001",NIL})
aadd(aGets,{"G1_COMP","MP002",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PI002",NIL})
aadd(aGets,{"G1_COMP","MP001",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PA001",NIL})
aadd(aGets,{"G1_COMP","PI003",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PA001",NIL})
aadd(aGets,{"G1_COMP","MP004",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
aGets := {}
aadd(aGets,{"G1_COD","PI003",NIL})
aadd(aGets,{"G1_COMP","MP003",NIL})
aadd(aGets,{"G1_TRT",Space(3),NIL})
aadd(aGets,{"G1_QUANT",1,NIL})
aadd(aGets,{"G1_PERDA",0,NIL})
aadd(aGets,{"G1_INI",CTOD("01/01/01"),NIL})
aadd(aGets,{"G1_FIM",CTOD("31/12/49"),NIL})
aadd(PARAMIXB2,aGets)
If lOk
ConOut("Teste de Inclusao")
ConOut("Inicio: "+Time())
MSExecAuto({|x,y,z| mata200(x,y,z)},PARAMIXB1,PARAMIXB2,PARAMIXB3)
//Inclusao
ConOut("Fim: "+Time())
EndIf
Else
//--------------- Exemplo de Exclusao ------------------------------------
If lOk
SG1->(dbSetOrder(1))
SG1->(dbSeek(xFilial("SG1")+PadR('PA001',Len(SG1->G1_COD))))
PARAMIXB1 := {{"G1_COD","PA001",NIL},;
{"NIVALT","S",NIL}} // A variavel NIVALT eh utilizada pra recalcular
// ou nao a estrutura
ConOut("Teste de Exclusao do codigo PA001")
ConOut("Inicio: "+Time())
MSExecAuto({|x,y,z| mata200(x,y,z)},PARAMIXB1,NIL,5)
//Exclusao
lOk := !lMsErroAuto
ConOut("Fim: "+Time())
EndIf
If lOk
SG1->(dbSetOrder(1))
SG1->(dbSeek(xFilial("SG1")+PadR('PI001',Len(SG1->G1_COD))))
PARAMIXB1 := {{"G1_COD","PI001",NIL},; {"NIVALT","S",NIL}} // A variavel NIVALT eh utilizada pra recalcular
// ou nao a estrutura
ConOut("Teste de Exclusao do codigo PI001")
ConOut("Inicio: "+Time())
MSExecAuto({|x,y,z| mata200(x,y,z)},PARAMIXB1,NIL,5)
//Exclusao
lOk := !lMsErroAuto
ConOut("Fim: "+Time())
EndIf
If lOk
SG1->(dbSetOrder(1))
SG1->(dbSeek(xFilial("SG1")+PadR('PI002',Len(SG1->G1_COD))))
PARAMIXB1 := {{"G1_COD","PI002",NIL},; {"NIVALT","S",NIL}} // A variavel NIVALT eh utilizada pra recalcular
// ou nao a estrutura
ConOut("Teste de Exclusao do codigo PI002")
ConOut("Inicio: "+Time())
MSExecAuto({|x,y,z| mata200(x,y,z)},PARAMIXB1,NIL,5)
//Exclusao
lOk := !lMsErroAuto
ConOut("Fim: "+Time())
EndIf
If lOk
SG1->(dbSetOrder(1))
SG1->(dbSeek(xFilial("SG1")+PadR('PI003',Len(SG1->G1_COD))))
PARAMIXB1 := {{"G1_COD","PI003",NIL},; {"NIVALT","S",NIL}} // A variavel NIVALT eh utilizada pra recalcular
// ou nao a estrutura
ConOut("Teste de Exclusao do codigo PI003")
ConOut("Inicio: "+Time())
MSExecAuto({|x,y,z| mata200(x,y,z)},PARAMIXB1,NIL,5) //Exclusao
ConOut("Fim: "+Time()) EndIf
EndIf
If lMsErroAuto
If IsBlind()
If IsTelnet()
VTDispFile(NomeAutoLog(),.t.)
Else
cString := MemoRead(NomeAutoLog())
Aviso("Aviso de Erro:",cString)
EndIf
Else
MostraErro()
EndIf
Else
If lOk
Aviso("Aviso","Operacao efetuada com sucesso",{"Ok"})
Else Aviso("Aviso","Fazer os devidos cadastros",{"Ok"})
EndIf
Endif
Return
Exemplo Substituição:
#include "tbiconn.ch"
#include "protheus.ch"
User Function MyMATA200()
Local PARAMIXB1 := {}
Local PARAMIXB2 := {}
Local aGets := {}
Local lOK := .T.
Local PARAMIXB3 := 7
Private lMsErroAuto := .F.
RPCSetType(3)
PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" MODULO "SIGAPCP" TABLES "SB1","SG1","SG5","SC2","SD4"
If PARAMIXB3==7
aadd(PARAMIXB1,{"G1_CODORIG","9475-MP3",NIL})
aadd(PARAMIXB1,{"G1_GRPORIG","",NIL})
aadd(PARAMIXB1,{"G1_OPCORIG","",NIL})
aadd(PARAMIXB1,{"G1_CODDEST","9475-MP4",NIL})
aadd(PARAMIXB1,{"G1_GRPDEST","",NIL})
aadd(PARAMIXB1,{"G1_OPCDEST","",NIL})
aadd(PARAMIXB1,{"ALTEMPENHO","S",NIL}) //Se altera os empenhos. S = Sim e N = Não.
//Este campo não é obrigatório. Se ele não etiver no array, será considerado N - Não.
// Informar os itens Pais que será feito a substituição do componente origem pelo componente destino
aadd(PARAMIXB2,{"G1_COD","94751-PA",NIL})
aadd(PARAMIXB2,{"G1_COD","PI002",NIL})
MSExecAuto({|x,y,Z| mata200(x,y,z)},PARAMIXB1,PARAMIXB2,PARAMIXB3) //Substituição
If lMsErroAuto
MostraErro()
Else
alert("Substituição efetuada com sucesso")
Endif
Endif
Return