Outro dia me perguntaram como incluir registro na tabela SC1 - Solicitação de Compras (MATA110) e fazer com que os gatilhos funcionem e perguntaram se é possível aglutinar várias Solicitações em uma só. Para isso é preciso utilizar o MsExecAuto do MATA110, a sua sintaxe é simples: MSExecAuto({|X,Y,Z| Mata110(X,Y,Z)}, aCabecalho, aItens, nOpcao) Onde: aCabecalho - Array contendo as informações para o cabeçalho aItens - Array contendo as informações dos itens que serão inseridos nOpcao - é onde informa se será uma inclusão, alteração ou exclusão 3 - Incluir 4 - Alterar 5 - Excluir Irei postar apenas uma parte do código, para vê-lo na integra, clique no botão "Baixar agora" [sdm_download id="3041" fancy="0"]
lMsErroAuto := .f. aCabecalho := {} aCabecalho :={ ; { "C1_FILIAL" , xFilial("SC1") , NIL},; { "C1_SOLICIT" , UsrRetName(RetCodUsr()) , NIL},; { "C1_EMISSAO" , dDatabase , NIL},; { "C1_UNIDREQ" , "01" , NIL},; { "C1_CODCOMP" , aSC[01,11] , NIL}; } aItens := {} aAdd(aItens, { {"C1_ITEM" , "0001" , NIL},; // 13-Item da SC {"C1_PRODUTO" , aSC[nContador, 03], NIL},; // 03-Produto {"C1_LOCAL" , aSC[nContador, 10], NIL},; // 10-Local {"C1_DESCRI" , aSC[nContador, 04], NIL},; // 04-Descricao {"C1_QUANT" , aSC[nContador, 05], NIL},; // 05-Quantidade {"C1_ZZCLASS" , aSC[nContador, 08], NIL},; // 08-Class. Prod. {"C1_CC" , aSC[nContador, 09], NIL},; // 09-Centro de Custo {"C1_CODCOMP" , "1" , NIL},; // 11-Cod. Comprad {"C1_UNIDREQ" , "01" , NIL},; // 12-Unid. Requis {"C1_DATPRF" , aSC[nContador, 06], NIL},; // 06-Data Entrega {"C1_ZZAGLUT" , "S" , NIL},; // 07-SC Aglutinada? {"C1_IMPORT" , aSC[nContador, 15], NIL},; // 15-Produto Imp. {"C1_OP" , aSC[nContador, 16], NIL},; {"C1_CLVL" , aSC[nContador, 09], NIL}}) // 09-Cod. Funcionario MSExecAuto({|X,Y,Z| Mata110(X,Y,Z)}, aCabecalho, aItens, 3) //insere a SC no novo numero If lMsErroAuto MsgStop("Problemas na execucao da Rotina Automatica MATA110 [INCLUSAO].") MostraErro() DisarmTransaction() lRetorno := .f. Else ConfirmSx8() EndIf