Olá, segue um exemplo prático de uma função para inserir pedido de vendas via ExecAuto:
Static Function fInsPVenda(aCbPV, aItPV)
Local nStatus := 0
Local cItem
Local cTes
Local aCabPV := {}
Local aItemPV := {}
Local dDataEntrega
Local aLinhaItem := {}
Local aArea
Local cCodCliS := ""
Local cLojCliS := ""
Local cNumPed := ""
Local cTipoPR := ""
//Adiciona os Itens no Cabeçalho do Pedido
aCabPV := {}
dDataEntrega = Daysum(Date(), 1)
AAdd(aCabPV,{"C5_TIPO" , "N", Nil})
//Pego o cliente tomador do pedido
cCodCliS := SUBSTR(aCbPV[1][2], 1, 6)
cLojCliS := SUBSTR(aCbPV[1][2], 7, 2)
AAdd(aCabPV,{"C5_CLIENTE", cCodCliS, Nil})
AAdd(aCabPV,{"C5_LOJACLI", cLojCliS, Nil})
AAdd(aCabPV,{"C5_CLIENT" , cCodCliS, Nil})
AAdd(aCabPV,{"C5_LOJAENT", cLojCliS, Nil})
AAdd(aCabPV,{"C5_TIPOCLI", Posicione("SA1", 1, xFilial("SA1") + cCodCliS + cLojCliS, "A1_TIPO"), Nil})
AAdd(aCabPV,{"C5_CONDPAG", aCbPV[1][5], Nil})
AAdd(aCabPV,{"C5_NATUREZ", "30103 ", Nil})
AAdd(aCabPV,{"C5_EMISSAO", dDataBase, Nil})
//AAdd(aCabPV,{"C5_DESC1", aCbPV[1][10], Nil})
AAdd(aCabPV,{"C5_INCISS" , "N", Nil})
AAdd(aCabPV,{"C5_TIPLIB" , "2", Nil})
AAdd(aCabPV,{"C5_MOEDA" , 1, Nil})
AAdd(aCabPV,{"C5_VEND1" , aCbPV[1][3], Nil})
AAdd(aCabPV,{"C5_TXMOEDA", 1, Nil})
AAdd(aCabPV,{"C5_TPCARGA", '1', Nil})
AAdd(aCabPV,{"C5_TABELA" , aCbPV[1][4], Nil})
//Montagem de item...]
aItemPV:= {}
cItem := 1
For nIt := 1 To Len(aItPV)
//Conout("Gravando Itens PV = " + aItPV[nIt][1])
cTes := '558'
aLinhaItem := {}
// localiza informações do produto
dbSelectArea("SB1")
dbSetOrder(1)
If dbSeek(xFilial("SB1") + aItPV[nIt][1])
// Regra enviada via Whatsapp
/*If SB1->B1_TIPO == "ME"
cTipoPR := "01"
elseif SB1->B1_TIPO == "PA" .OR. SB1->B1_TIPO == "PI"
cTipoPR := "11"
endif*/
AAdd(aLinhaItem,{"C6_ITEM" ,StrZero(cItem,2) ,Nil})
AAdd(aLinhaItem,{"C6_PRODUTO",Alltrim(SB1->B1_COD) ,Nil})
AAdd(aLinhaItem,{"C6_DESCRI" ,Alltrim(SB1->B1_DESC) ,Nil})
AAdd(aLinhaItem,{"C6_UM" ,SB1->B1_UM ,Nil})
AAdd(aLinhaItem,{"C6_QTDVEN" ,aItPV[nIt][2] ,Nil})
AAdd(aLinhaItem,{"C6_PRCVEN" ,aItPV[nIt][3] ,Nil})
AAdd(aLinhaItem,{"C6_PRUNIT" ,0 ,Nil})
AAdd(aLinhaItem,{"C6_LOCAL" ,"01" ,Nil})
AAdd(aLinhaItem,{"C6_CLI" ,cCodCliS ,nil})
AAdd(aLinhaItem,{"C6_LOJA" ,cLojCliS ,Nil})
AAdd(aLinhaItem,{"C6_ENTREG" ,dDataEntrega ,Nil})
AAdd(aLinhaItem,{"C6_SUGENTR",dDataEntrega ,Nil})
AAdd(aLinhaItem,{"C6_PEDCLI" ,"" ,Nil})
//AAdd(aLinhaItem,{"C6_OPER" ,cTipoPR ,Nil})
AAdd(aLinhaItem,{"C6_TES" ,cTes ,Nil})
//If aCbPV[1][5] $ GetMV("MV_FBWEB20")
AAdd(aLinhaItem,{"C6_QTDLIB" ,aItPV[nIt][2] ,Nil})
//EndIf
Endif
AAdd(aItemPV,AClone(aLinhaItem))
cItem := cItem + 1
Next nIt
lMsErroAuto := .F.
Begin Transaction
If Len(aCabPv) > 0 .And. Len(aItemPV) > 0
conout("adiciona pedido de vendas")
MSExecAuto({|x,y,z|Mata410(x,y,z)}, aCabPV, aItemPV, 3) //adiciona pedido de vendas
Endif
If lMsErroAuto
conout("erro ao incluir pedido")
mostraerro()
nStatus := -1
else
//conout("pedido incluido")
//cNumPed, cFundo, cAgencia, cConta
_cNumPed := SC5->C5_NUM
fGrvZ15(SC5->C5_NUM, _cFundo, _cAgencia, _cConta, _dVencto) //Grava De/Para de Pedido com Fundo
nStatus := 0
EndIf
End Transaction
cPedido := SC5->C5_NUM
lRet := .T.
If Select("SC5") > 0
SC5->(dbCloseArea())
EndIf
If Select("SB1") > 0
SB1->(dbCloseArea())
EndIf
Return nStatus