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”

aglutinarscacom001

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

 


Equipe Blog Advpl

Amantes da tecnologia

0 comentário

Deixe uma resposta