Passo a passo: | Quando existir a necessidade de alterar um item especifico da Getdados, existem dois campos que podem ser utilizados, os campos são: LINPOS e AUTDELETA. O primeiro deve ser utilizado para localizar o item do aCols que sofrerá alteração, o segundo instruí a rotina automática para deletar a linha. Caso não seja utilizado o LINPOS esta função irá reconstruir todo o aCols. Exemplo #Include 'Protheus.ch' #include "TbiConn.ch" User Function MyATFA010()// Local aItens := {} // Array com os dados a serem enviados pela MsExecAuto() para gravacao automatica dos itens do ativo Local aDadosAuto := {} // Array com os dados a serem enviados pela MsExecAuto() para gravacao automatica da capa do bem Local aCab := {} // Determina se as mensagens de help devem ser direcionadas para o arq. de log Private lMsHelpAuto := .f. // Determina se houve alguma inconsistencia na execucao da rotina Private lMsErroAuto := .f. PREPARE ENVIRONMENT EMPRESA "99" FILIAL "01" aCab := { {'N1_FILIAL' ,'01' ,NIL},; {'N1_CBASE' ,'0000000005' ,NIL},; {'N1_ITEM' ,'0001' ,NIL},; {'N1_QUANTD' , 10 ,NIL},; {'N1_AQUISIC' ,dDataBase ,NIL},; {'N1_DESCRIC' ,'TESTE COM A ROTINA AUTOMATICA ATFA010 01' ,NIL},; {'N1_CHAPA' ,'000005' ,NIL}} //array com os dados a serem enviados pela MsExecAuto() para gravacao automatica do item tipo 01 aAdd(aItens,{ {'N3_TIPO' ,'01' ,NIL},; {'N3_HISTOR' ,"TESTE COM A ROTINA AUTOMATICA 0000000001" ,NIL},; {'N3_TPSALDO' ,'1' ,NIL},; {'N3_TPDEPR' ,'1' ,NIL},; {'N3_CCONTAB' ,'00000000000000000008' ,NIL},; {'N3_VORIG1' ,1000 ,NIL},; {'N3_VORIG2' ,0.39999 ,NIL},; {'N3_VORIG3' ,3000 ,NIL},; {'N3_VMXDEPR' ,0 ,NIL},; {'N3_VLSALV1' ,0 ,NIL},; {'N3_PERDEPR' ,0 ,NIL},; {'N3_PRODMES' ,0 ,NIL},; {'N3_PRODANO' ,0 ,NIL},; {'N3_DINDEPR' ,dDataBase ,NIL},; {"LINPOS","N3_TIPO" ,'01'},; {"AUTDELETA","N" ,Nil}}) //array com os dados a serem enviados pela MsExecAuto() para gravacao automatica do item tipo 10 aAdd(aItens,{ {'N3_TIPO' ,'10' ,NIL},; {'N3_HISTOR' ,"TESTE COM A ROTINA AUTOMATICA 0000000001" ,NIL},; {'N3_TPSALDO' ,'1' ,NIL},; {'N3_TPDEPR' ,'1' ,NIL},; {'N3_CCONTAB' ,'00000000000000000008' ,NIL},; {'N3_VORIG1' ,10000 ,NIL},; {'N3_VORIG2' ,0.39999 ,NIL},; {'N3_VORIG3' ,30000 ,NIL},; {'N3_VMXDEPR' ,0 ,NIL},; {'N3_VLSALV1' ,0 ,NIL},; {'N3_PERDEPR' ,0 ,NIL},; {'N3_PRODMES' ,0 ,NIL},; {'N3_PRODANO' ,0 ,NIL},; {'N3_DINDEPR' ,dDataBase ,NIL},; {"LINPOS","N3_TIPO" ,'10' },; {"AUTDELETA","N" ,Nil}}) ConOut("Inicio") MSExecAuto( {|X,Y,Z| ATFA010(X,Y,Z)} ,aCab ,aItens, 4) If !lMsErroAuto ConOut(OemToAnsi("Incluido com sucesso! ")) Else ConOut(OemToAnsi("Erro na inclusao!")) MostraErro() EndIf ConOut(OemToAnsi("Fim : ")+Time()) RESET ENVIRONMENT Return Obs.: é necessário criar uma condição para inclusão e alteração pois o exemplo acima atende somente a Alteração. |
---|
|