1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

Duvida CPAPI301 - numero da ordem gerada.

Discussão em 'EMS , HCM e Totvs 11' iniciado por reissobr, Março 14, 2021.

  1. reissobr

    reissobr Membro Participativo

    Bom dia Pesssoal.

    Estou usando a CPAPI301 para criar ordem de produção, e preciso após a criação, recuperar o numero da ordem gerada.
    Eu estou passando zero no campo tt-ord-prod.nr-ord-produ e a API está criando a ordem na sequencia das ordens manuais, está correto.
    Tinha entendido que o campo tt-ord-prod.rw-ord-prod teria o rowid do registro da ordem criada, mas pelo que estou vendo, após a execução da API, a tt-ord-prod não está disponível.
    Alguem sabe como recupero o numero da ordem aberta ?
    Att;
  2. reissobr

    reissobr Membro Participativo

    Pessoal,
    Fiz mais alguns testes, ai logo depois de executar a API coloquei um

    FIND FIRST tt-ord-prod NO-LOCK NO-ERROR e resolveu.

    Agora acesso o registro da tt-ord-prod, com o rowid do registro criado.
  3. Douglas Tomachevski

    Douglas Tomachevski Sem Pontuação

    reissobr, poderia compartilhar seu programa de gerar OP, sou iniciante e estou tentando fazer um programa deste mas estou impacado na ordem automatica.
    douglastomachevski@gmail.com
    obrigado
  4. reissobr

    reissobr Membro Participativo

    bom dia.

    Tenho o modelo abaixo, ele abre a OP, cria reserva, requisita, reporta e finaliza.

    Att;

    Código:
    {cdp/cd0666.i}
    {cpp/cpapi001.i}
    {cpp/cpapi002.i}
    {cpp/cpapi012.i}
    {cpp/cpapi301.i}
    
    
       
    CREATE tt-ord-prod.                
    ASSIGN  tt-ord-prod.nr-ord-produ  = 0                              /*    a api ira gerar automaticamente o nr. da OP                                      */
            tt-ord-prod.it-codigo     = c-it-codigo-pai            
            tt-ord-prod.qt-ordem      = de-qtidade-op              
            tt-ord-prod.UN            = ?                              /*    "?" - usa o padrÆo do item, param-cp,lin-prod o param-cs                         */               
            tt-ord-prod.dt-inicio     = dt-data-movto                  /*    valor inicial - today                                                            */   
            tt-ord-prod.dt-termino    = dt-data-movto                  /*    valor inicial - today                                                            */  
            tt-ord-prod.cd-planejado  = ?                              /*    "?" - usa o padrÆo do item, param-cp,lin-prod o param-cs                         */    
            tt-ord-prod.nr-linha      = ?                              /*    valor inicial = 0. = "?" - usa o padrÆo do item, param-cp,lin-prod o param-cs    */                  
            tt-ord-prod.tipo          = 9                              /*    9 = reaproveitamento    */
            tt-ord-prod.cod-estabel   = c-cod-estabel                  /*    "?" - usa o padrÆo do item, param-cp,lin-prod o param-cs                         */
            tt-ord-prod.cod-depos     = c-cod-depos                    /*    deposito para o produto acabado                                                  */
            tt-ord-prod.rep-prod       = 1                             /*    1 = reporte por ordem                                                             */
            tt-ord-prod.ind-tipo-movto        = 1                      /*    valor inicial = 0. 1 = Inclui, 2 = Modifica, 3 = Elimina, 4 = copia               */
            tt-ord-prod.gera-relacionamentos  = no                     /*    valor inicial = yes - Yes, gera reservas e oparacoes. No, nao gera                */
            tt-ord-prod.cod-versao-integracao = 003.                   /*    valor inicial = 0                                                                 */
    
    RUN cpp/cpapi301.p  (INPUT-OUTPUT table tt-ord-prod,
                         INPUT-OUTPUT table tt-reapro,                               
                         Input-output table tt-erro,
                         input YES).
    
    FOR EACH tt-erro:
        MESSAGE SKIP(2) "    " "ABERTURA ORDEM PRODUCAO"              "    "  SKIP
                        "    " "tt-erro.i-sequen = " tt-erro.i-sequen "    "  SKIP        
                        "    " "tt-erro.cd-erro  = " tt-erro.cd-erro  "    "  SKIP
                        "    " "tt-erro.mensagem = " tt-erro.mensagem "    "  SKIP(2)
                        VIEW-AS ALERT-BOX.
        RETURN "OK".
    END.
    
    
    /*---- reposiciona o registro da tt-ord-prod e  recupera o numedo da ordem gerada    ----*/
    
    ASSIGN i-nr-ord-produ = 0.
    
    FIND FIRST tt-ord-prod NO-LOCK NO-ERROR.                                               
    FIND FIRST ord-prod WHERE ROWID(ord-prod) = tt-ord-prod.rw-ord-prod NO-LOCK NO-ERROR.  
    
    IF AVAIL ord-prod THEN ASSIGN i-nr-ord-produ = ord-prod.nr-ord-produ.
    
    
    /*----    CRIACAO DA RESERVA    ----*/
    
    EMPTY TEMP-TABLE tt-ord.
    EMPTY TEMP-TABLE tt-res.
    EMPTY TEMP-TABLE tt-ope.
    EMPTY TEMP-TABLE tt-lixo.    /*    nome padrao conforme documentacao    */
    EMPTY TEMP-TABLE tt-erros.
    
    
    CREATE tt-res.                                                                                    
    ASSIGN tt-res.nr-ord-produ = i-nr-ord-produ                 /*    valor inicial = 0    */                  
           tt-res.it-codigo    = c-it-codigo-reserva    
           tt-res.item-pai     = c-it-codigo-pai
           tt-res.Quant-orig   = de-qtidade-op                  /*    valor inicial = 0    */                  
           tt-res.Un           = b-item.un                      /*    obrigatorio          */                                                                   
           tt-res.mes-reserva  = Month(dt-data-movto)           /*    obrigatorio          */                                                                  
           tt-res.dia-reserva  = Day(dt-data-movto)                     /*    obrigatorio          */                                                                  
           tt-res.ano-reserva  = Year(dt-data-movto)                    /*    obrigatorio          */
           tt-res.cod-depos    = c-cod-depos.
    
    RUN cpp/cpapi002.p(input table tt-ord,
                       input table tt-res,
                       input table tt-ope,
                       input table tt-lixo,
                       input-output table tt-erros). 
                          
    FOR EACH tt-erros:
       
        MESSAGE SKIP(2) "    " "CRIACAO RESERVA"                            "    " SKIP
                        "    " "tt-erros.nr-ord-produ  = " tt-erros.nr-ord-produ  "    " SKIP
                        "    " "tt-erros.linha         = " tt-erros.linha         "    " SKIP        
                        "    " "tt-erros.msg-erros     = " tt-erros.msg-erros     "    " SKIP(2)
                        VIEW-AS ALERT-BOX.
        RUN pi-cancelar.
        RETURN "OK".
    END.
       
    
    /*----    REQUISICAO DA REVERVA DA ORDEM    ----*/
       
    EMPTY TEMP-TABLE tt-requis.
    EMPTY TEMP-TABLE tt-erro.
       
    CREATE tt-requis.
    ASSIGN tt-requis.tipo-trans            = 1
           tt-requis.nr-ord-produ          = i-nr-ord-produ
           tt-requis.quantidade            = de-qtidade-op    /*    quantidade do reporte    */
           tt-requis.data                  = dt-data-movto       
           tt-requis.item-ini              = ""
           tt-requis.item-fim              = "ZZZZZZZZZZZZZZZZ"
           tt-requis.deposito-ini          = c-cod-depos
           tt-requis.deposito-fim          = c-cod-depos
           tt-requis.op-codigo-ini         = 0
           tt-requis.op-codigo-fim         = 99999
           tt-requis.cod-localiz-ini       = ""
           tt-requis.cod-localiz-fim       = "ZZZZZZZZZZZZZZZZZZZZ"
           tt-requis.procura-saldos        = YES
           tt-requis.carrega-reservas      = YES
           tt-requis.prog-seg              = "ESCP024"
           tt-requis.cod-versao-integracao = 001
           tt-requis.nro-docto             = "CTRL-RETALHO"
           tt-requis.serie-docto           = "".
           
    RUN cpp/cpapi012.p(INPUT        TABLE tt-requis,
                       INPUT-OUTPUT TABLE tt-erro,
                       INPUT              YES).
       
    FOR EACH tt-erro:
        MESSAGE SKIP(2) "    " "REQUISICAO ORDEM PRODUCAO"              "    "  SKIP
                        "    " "tt-erro.i-sequen = " tt-erro.i-sequen "    "  SKIP        
                        "    " "tt-erro.cd-erro  = " tt-erro.cd-erro  "    "  SKIP
                        "    " "tt-erro.mensagem = " tt-erro.mensagem "    "  SKIP(2)
                        VIEW-AS ALERT-BOX.
        RUN pi-cancelar.
        RETURN "OK".
    END.
       
           
    /*----    REPORTE ORDEM PRODUCAO    ----*/
    
    EMPTY TEMP-TABLE tt-rep-prod    NO-ERROR.  
    EMPTY TEMP-TABLE tt-refugo      NO-ERROR.  
    EMPTY TEMP-TABLE tt-res-neg     NO-ERROR.  
    EMPTY TEMP-TABLE tt-apont-mob   NO-ERROR.  
    EMPTY TEMP-TABLE tt-erro        NO-ERROR.         
    
    CREATE tt-rep-prod.
    ASSIGN tt-rep-prod.tipo                  = 1  /*  reporte por ordem  */
           tt-rep-prod.nr-ord-produ          = i-nr-ord-produ
           tt-rep-prod.data                  = dt-data-movto
           tt-rep-prod.qt-reporte            = de-qtidade-op
           tt-rep-prod.it-codigo             = c-it-codigo-pai
           tt-rep-prod.cod-depos             = c-cod-depos
           tt-rep-prod.cod-depos-sai         = c-cod-depos
           tt-rep-prod.un                    = item.un
           tt-rep-prod.nro-docto             = "CTRL-RETALHO"
           tt-rep-prod.serie-docto           = ""
           tt-rep-prod.finaliza-ordem        = TRUE    /*    TRUE ou FALSE    */
           tt-rep-prod.cod-versao-integracao = 1.
          
    run cpp/cpapi001.p  (input-output table tt-rep-prod,
                         input        table tt-refugo,
                         input        table tt-res-neg,
                         input        table tt-apont-mob,
                         input-output table tt-erro,
                         input        no).
       
         
    FOR EACH tt-erro:
        MESSAGE SKIP(2) "    " "REPORTE ORDEM PRODUCAO"              "    "  SKIP
                        "    " "tt-erro.i-sequen = " tt-erro.i-sequen "    "  SKIP        
                        "    " "tt-erro.cd-erro  = " tt-erro.cd-erro  "    "  SKIP
                        "    " "tt-erro.mensagem = " tt-erro.mensagem "    "  SKIP(2)
                        VIEW-AS ALERT-BOX.
        RETURN "OK".
    END.
    
    
    
  5. Douglas Tomachevski

    Douglas Tomachevski Sem Pontuação

    Muito obrigado, alterei os dados para meu uso.
    Quando checo a sintaxe, retorna OK mas quando rodo ele, reporta este erro:
    upload_2021-9-10_10-57-9.png
  6. Douglas Tomachevski

    Douglas Tomachevski Sem Pontuação

    funcionou, declarei {cdp/cdcfgman.i} e parou o erro.
    obrigado
    reissobr curtiu isso.

Compartilhe esta Página