[RESOLVIDO] cpapi001.p

Discussão em 'EMS , HCM e Totvs 11' iniciado por Will, Fevereiro 22, 2010.

Status do Tópico:
Não esta aberto para novas mensagens.
  1. Will

    Will Membro Participativo

    Olá pessoa tudo bem??
    Estou trabalhando no programa de reporte de ordens de produção utilizando a cpapi001.p.
    Porém, preciso consumir meus saldos de depósitos diferentes. Até então o meu programa consumia somente de um depósito informado no próprio programa.
    Verificando os manuais, vi que existe a opção de busca-saldo-estoque, que quando setado valor SIM deveria buscar saldo em x depósitos que tenham saldo diferente de 0. Porém ao entrar em contato com um consultor da Datasul, o mesmo me informou que esta opçãp não trabalha de forma correta, que o certo seria fazer de forma manual toda rotina.
    Algu´me já desenvolveu algo parecido?
    Preciso dum help para saber por onde começo. Desde já obrigado.
  2. Will

    Will Membro Participativo

    Alguém já trabalhou com o mesmo??? com as funções da cpapi001.p???
  3. fasouza

    fasouza Membro Participativo

    Já fiz um programa para reporte automático de OP, segue um breve exemplo espero que ajude.

    Qualquer coisa favor entrar em contato.

    msn: fabio_asouza@hotmail.com

    Código:
    {cpp\cpapi001.i}     
    {cpp\cpapi001.i1}     
    {cdp\cd0666.i}
    
    DEFINE VARIABLE h-cpapi001          AS HANDLE       NO-UNDO.
    
    DEFINE TEMP-TABLE tt-erro-api       NO-UNDO LIKE tt-erro.
    
    IF VALID-HANDLE(h-cpapi001) THEN
        DELETE PROCEDURE h-cpapi001.
        
    EMPTY TEMP-TABLE tt-rep-prod.
    EMPTY TEMP-TABLE tt-refugo.
    EMPTY TEMP-TABLE tt-res-neg.
    EMPTY TEMP-TABLE tt-apont-mob.
    EMPTY TEMP-TABLE tt-erro.
    EMPTY TEMP-TABLE tt-erro-api.
    
    
    RUN cpp\cpapi001.p PERSISTENT SET h-cpapi001 (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-api,
                                                  INPUT        YES).
    
        
    CREATE tt-rep-prod.
    ASSIGN tt-rep-prod.nr-ord-prod          = ord-prod.nr-ord-produ
           tt-rep-prod.reserva              = YES
           tt-rep-prod.tipo                 = 1  /*1-Reporte por Ordem/2-Reporte por Operação/3-Reporte por Ponto de Controle*/
           tt-rep-prod.prog-seg             = 'CPBA303'
           tt-rep-prod.carrega-reservas     = NO
           tt-rep-prod.procura-saldos       = NO
           tt-rep-prod.finaliza-ordem       = LOGICAL (tg-finalizar:SCREEN-VALUE IN FRAME f-cad)
           tt-rep-prod.baixa-reservas       = 1
           tt-rep-prod.requis-automatica    = NO
           tt-rep-prod.data                 = dt-fabricacao
           tt-rep-prod.un                   = item.un
           tt-rep-prod.qt-reporte           = (ord-prod.qt-ordem - ord-prod.qt-produzida - ord-prod.qt-refugada)
           tt-rep-prod.qt-refugo            = 0
           tt-rep-prod.it-codigo            = ord-prod.it-codigo
           tt-rep-prod.qt-apr-cond          = 0     
           tt-rep-prod.nro-docto            = STRING(ord-prod.nr-ord-produ)
           tt-rep-prod.serie-docto          = ''
           tt-rep-prod.cod-depos            = ''
           tt-rep-prod.lote-serie           = ''
           tt-rep-prod.cod-refer            = ''
           tt-rep-prod.dt-vali-lote         = ?
           tt-rep-prod.cod-localiz          = ''
           tt-rep-prod.conta-refugo         = ''
           i-seq                            = i-seq + 1
           tt-rep-prod.seq                  = i-seq
           
           da-dt-emissao                    = ord-prod.dt-emissao.
    
    RUN pi-recebe-tt-rep-prod IN h-cpapi001 (INPUT TABLE tt-rep-prod).
                
    RUN pi-valida-ordem IN h-cpapi001 (INPUT  NO,
                                       INPUT  tt-rep-prod.nr-ord-prod,
                                       INPUT  1,
                                       OUTPUT c-cod-erro,
                                       OUTPUT c-desc-erro).
    
    IF TRIM(c-cod-erro) <> '' THEN DO:
    
        DO i-count = 1 TO NUM-ENTRIES(c-cod-erro):
    
            RUN pi-erro (INPUT tt-rep-prod-tmp.nr-ord-produ,
                         INPUT INT(ENTRY(i-count,c-cod-erro)),
                         INPUT 'Validação Ordem de Produção~~' + ENTRY(i-count,c-desc-erro)).
    
        END. /*DO i-count = 1 TO NUM-ENTRIES(c-cod-erro):*/
    
        ASSIGN c-ordens-problema    = c-ordens-problema + STRING(tt-rep-prod-tmp.nr-ord-produ) + ','
               tt-rep-prod-tmp.sel  = NO.
    
        NEXT blk-filho.
    
    END. /*IF TRIM(c-cod-erro) <> '' THEN DO:*/
    
    RUN pi-recebe-tt-reservas  IN h-cpapi001 (INPUT TABLE tt-reservas).
    RUN pi-recebe-tt-aloca     IN h-cpapi001 (INPUT TABLE tt-aloca).
    RUN pi-carrega-tt-reservas IN h-cpapi001 (INPUT YES,
                                              INPUT 1,
                                              INPUT ?).
    
    IF RETURN-VALUE = 'NOK':u THEN DO:
    
        RUN pi-erro (INPUT tt-rep-prod-tmp.nr-ord-produ,
                     INPUT 17006,
                     INPUT 'Ocorreram erros durante a execução do método PI-CARREGA-TT-RESERVAS para a ordem de produção ' + STRING(tt-rep-prod-tmp.nr-ord-produ)).
    
        ASSIGN c-ordens-problema    = c-ordens-problema + STRING(tt-rep-prod-tmp.nr-ord-produ) + ','
               tt-rep-prod-tmp.sel  = NO.
    
        NEXT blk-filho.
    
    END. /*IF RETURN-VALUE = 'NOK':u THEN DO:*/
    
    RUN pi-retorna-tt-reservas IN h-cpapi001 (OUTPUT TABLE tt-reservas).
    
    RUN pi-valida-rep-prod IN h-cpapi001 (INPUT  NO,
                                          INPUT  tt-rep-prod.nr-ord-prod,
                                          OUTPUT c-cod-erro,
                                          OUTPUT c-desc-erro).
    
    IF TRIM(c-cod-erro) <> '' THEN DO:
    
        DO i-count = 1 TO NUM-ENTRIES(c-cod-erro):
    
            RUN pi-erro (INPUT tt-rep-prod-tmp.nr-ord-produ,
                         INPUT INT(ENTRY(i-count,c-cod-erro)),
                         INPUT 'Validação Reporte da Produção~~' + ENTRY(i-count,c-desc-erro)).
    
        END. /*DO i-count = 1 TO NUM-ENTRIES(c-cod-erro):*/
    
        ASSIGN c-ordens-problema    = c-ordens-problema + STRING(tt-rep-prod-tmp.nr-ord-produ) + ','
               tt-rep-prod-tmp.sel  = NO.
    
        NEXT blk-filho.
    
    END. /*IF TRIM(c-cod-erro) <> '' THEN DO:*/
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página