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