Versão atual:

duvida programação prepare environment

Estou com duvida no uso da função PREPARE ENVIRONMENT, quando trocar de filial perderá o conteúdo e posicionamento da tabela temporária (cAlSC7)?

Adicionado ==> Então pessoal, a ideia dessa rotina é mudar a filial no sistema, para gravar o msexecauto do pedido de compras conforme a informação da tabela temporária (cAlSC7)->C7_FILIAL.

Qual seria a melhor maneira? Também tentei a função abaixo, mas parece que não muda a filial.

RpcSetEnv(SM0->M0_CODIGO,(cAlSC7)->C7_FILIAL))

Por favor veja código abaixo:

(cAlSC7)->(dbGotop())

Do While (cAlSC7)->(!EOF())

   nOpc:=3

   _cFilial:=(cAlSC7)->C7_FILIAL

   PREPARE ENVIRONMENT EMPRESA "01" FILIAL &_cFilial MODULO "COM"


   DbSelectArea("SC7")

   SC7->(DbSetOrder(1))

   _cNumPed  :=GETSXENUM("SC7","C7_NUM")

   CONFIRMSX8()

   aCab :={}

   aItem:={}

   lMsErroAuto := .F.

   aCab := {{"C7_NUM"   ,_cNumPed           ,Nil},; //Num. Pedido

            {"C7_EMISSAO" ,(cAlSC7)->C7_EMISSAO ,Nil},; // Data de Emissao

            {"C7_FORNECE" ,(cAlSC7)->C7_FORNECE ,Nil},; // Fornecedor

            {"C7_LOJA"    ,(cAlSC7)->C7_LOJA    ,Nil},; // Loja do Fornecedor

            {"C7_COND"    ,(cAlSC7)->C7_COND    ,Nil},; // Condicao de pagamento

            {"C7_CONTATO" ,(cAlSC7)->C7_CONTATO ,Nil},; // Contato

            {"C7_FILENT"  ,(cAlSC7)->C7_FILENT  ,Nil}} // Filial Entrega

   _cChave:=(cAlSC7)->C7_FILIAL+(cAlSC7)->C7_NUM

   Do While (cAlSC7)->(!Eof()) .AND. (cAlSC7)->C7_FILIAL+(cAlSC7)->C7_NUM==_cChave

      Aadd(aItem,;

      {{"C7_ITEM"   ,(cAlSC7)->C7_ITEM    ,Nil},; //Numero do Item

       {"C7_PRODUTO",(cAlSC7)->C7_PRODUTO ,Nil},;  //Produto

       {"C7_QUANT"  ,(cAlSC7)->C7_QUANT   ,Nil},; //Quantidade

       {"C7_PRECO"  ,(cAlSC7)->C7_PRECO   ,Nil},; //Preco

       {"C7_DATPRF" ,(cAlSC7)->C7_DATPRF  ,Nil},; //Data De Entrega

       {"C7_TES"    ,(cAlSC7)->C7_TES     ,Nil},; //Tes

       {"C7_FLUXO"  ,(cAlSC7)->C7_FLUXO   ,Nil},; //Fluxo de Caixa (S/N)

       {"C7_NUMSC"  ,(cAlSC7)->C7_NUMSC   ,Nil},; //SC

       {"C7_ITEMSC" ,(cAlSC7)->C7_ITEMSC  ,Nil},; //SC ITEM

       {"C7_CC"     ,(cAlSC7)->C7_CC      ,Nil},; //CC

       {"C7_CONTA"  ,(cAlSC7)->C7_CONTA   ,Nil},; //CONTA

       {"C7_CLVL"   ,(cAlSC7)->C7_CLVL    ,Nil},; //CLVL

       {"C7_ITEMCTA",(cAlSC7)->C7_ITEMCTA ,Nil},; //ITEMCTA

       {"C7_XPROC"  ,(cAlSC7)->C7_XPROC   ,Nil},; //XPROC

       {"C7_LOCAL"  ,(cAlSC7)->C7_LOCAL   ,Nil}}) //Localizacao

       (cAlSC7)->(dbSkip())

   Enddo

   MSExecAuto({|v,x,y,z| MATA120(v,x,y,z)},1,aCab,aItem,nOpc) //{aItem}

   If lMsErroAuto 

      mostraerro("C:\TEMP\",_cNumPed)

      lMsErroAuto:=.F.

      Msginfo("Pedido de compras ocorreu inconsistência! Pedido WBC:"+ALLTRIM(_cWBC))

   Endif

   SC7->(dbSkip())

Enddo

RESET ENVIRONMENT

(cAlSC7)->( Dbclosearea() )

Agradeço desde já.

Versões (3):

Ver a versão formatada

duvida programação prepare environment

Comentário

new question