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

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

[RESOLVIDO] API SF009 - VALIDAÇÃO SALDO DAS RESERVAS

Discussão em 'EMS , HCM e Totvs 11' iniciado por rodolfo.rcs, Fevereiro 5, 2018.

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

    rodolfo.rcs Membro Participativo

    Prezados,

    como consigo validar o saldo das reservas utilizando a api SFAPI009, estou tentando customizar o reporte de chão de fábrica aqui da empresa. O problema é que hora o a API requisita do depósito ALM outra momento requisita do depósito PRO. Porém, ao modificar o depósito da tt-reservas gostaria de validar se encontrou saldo e mandar um aviso das reservas que não foram encontradas saldo em estoque.

    Alguém teria um exemplo??
    Outro ponto porque não consigo da um display na tt-reservas apresenta a mensagem:

    Operações de INPUT/OUTPUT não são permitidas para variáveis do tipo RAW, ROWID, MEMPTR, BLOB, CLOB ou LONGCHAR. (11382)
    ** Nao entendi a linha 78. (196)


    Abaixo segue QG teste que estou realizando.

    DEFINE VARIABLE h-sfapi009 AS HANDLE NO-UNDO.
    DEFINE VARIABLE c-aux AS CHARACTER NO-UNDO.
    DEFINE VARIABLE de-aux AS DECIMAL NO-UNDO.
    DEFINE VARIABLE dt-aux AS DATE NO-UNDO.

    {sfc/sfapi009.i} /*tt-param-reporte*/
    {cdp/cd0666.i} /*tt-erro*/
    {cpp/cpapi001.i1} /*tt-reservas*/
    {sfc/sf0303a.i1} /*tt-ref*/



    RUN sfc/sfapi009.p PERSISTENT SET h-sfapi009(INPUT 205,
    INPUT TABLE tt-import-rep-oper,
    OUTPUT TABLE tt-erro).

    /*Definição dos Parâmetros. Apenas o parâmetro l-msg-termina-ordem será setado,
    os demais ficaram com seus valores default*/
    CREATE tt-param-reporte.
    ASSIGN tt-param-reporte.cod-param = "l-msg-termina-ordem"
    tt-param-reporte.log-result-param = NO.
    RUN recebeParametros IN h-sfapi009(INPUT TABLE tt-param-reporte).

    /*Seleciona os registros de Split e Centro de Trabalho que serão reportados*/
    FIND FIRST split-operac
    WHERE split-operac.nr-ord-produ = 45.

    FIND FIRST ctrab
    WHERE ctrab.cod-ctrab = "BACK L20" NO-LOCK NO-ERROR.


    RUN setaRowSplitCtrab IN h-sfapi009(INPUT ROWID(split-operac),
    INPUT ROWID(ctrab)).
    IF RETURN-VALUE = "NOK" THEN
    RUN retornaTTErro IN h-sfapi009(OUTPUT TABLE tt-erro).
    ELSE DO:

    FOR EACH tt-reservas NO-LOCK.
    ASSIGN tt-reservas.cod-depos = "PRO".
    END.


    /*Seta as quantidades Aprovada(5 unidades) e Refugada(3 unidades)*/
    RUN recebeValorCampos IN h-sfapi009("qtd-aprov", "", ?, 10, ?).
    RUN recebeValorCampos IN h-sfapi009("qtd-refgda", "", ?, 0, ?).
    RUN recebeValorCampos IN h-sfapi009("operador", "000001", ?, ?, ?).
    RUN recebeValorCampos IN h-sfapi009("dep-refugo", "DSV", ?, ?, ?).

    /*Através da execução do método a seguir, a API irá:
    - Setar a nova data e hora de início do Reporte;
    - Calcular o tempo real da Operação, baseado no tempo padrão
    proporcional a quantidade informada;
    - Calcular e setar a data e hora de término do Reporte.
    Foram usadas variáveis auxiliares para receber os retornos da API,
    pois os valores não serão utilizados.*/
    RUN ajustaTempoPelaQtd IN h-sfapi009
    (INPUT TODAY, /*<date-dat-inic-reporte> - 01/nov/2006*/
    INPUT "0935", /*<char-hra-inic-rep> - 09:35*/
    INPUT-OUTPUT dt-aux, /*<date-dat-fim-reporte>*/
    INPUT-OUTPUT c-aux, /*<char-hra-fim-rep>*/
    INPUT 10, /*<decimal-qtd-total> - qtd aprovada + qtd refugada*/
    OUTPUT de-aux). /*<decimal-de-tempo-oper>*/

    /*Executa os métodos para regerar as Reservas, Alocações e MOB/GGF,
    pois é obrigatória a execução destes métodos após a edição de alguns
    campos específicos (vide documentação)*/
    RUN pi-cria-tt-reservas-alocacoes IN h-sfapi009.

    RUN geraMobGGFAutomatico IN h-sfapi009.

    RUN pi-recebe-tt-reservas IN h-sfapi009(INPUT TABLE tt-reservas).

    RUN verificaSaldoReservas IN h-sfapi009.

    RUN pi-retorna-tt-reservas IN h-sfapi009(OUTPUT TABLE tt-reservas).

    FOR EACH tt-reservas NO-LOCK.
    DISP tt-reservas WITH 1 COL WIDTH 500.
    END.


    /*Retorna as Reservas*/
    RUN pi-retorna-tt-reservas IN h-sfapi009(OUTPUT TABLE tt-reservas).
    /*
    /*Modifica a quantidade da reserva do Item "FFRE" */
    FIND FIRST tt-reservas WHERE tt-reservas.it-codigo = "FFRE" NO-ERROR.
    ASSIGN tt-reservas.quant-requis = 8.
    */
    RUN pi-recebe-tt-reservas IN h-sfapi009(INPUT TABLE tt-reservas).

    /*Cria o registro de Justificativa do Refugo gerado*/
    FIND FIRST motiv-refugo
    WHERE motiv-refugo.cod-motiv-refugo = "001" /*Qualidade do */
    NO-LOCK NO-ERROR. /*Material Externo*/
    CREATE tt-ref.
    ASSIGN tt-ref.rw-split-operac = ROWID(split-operac)
    tt-ref.nr-ord-prod = split-operac.nr-ord-produ
    tt-ref.cod-motiv-refugo = motiv-refugo.cod-motiv-refugo
    tt-ref.codigo-rejei = motiv-refugo.codigo-rejei
    tt-ref.qtd-operac-refgda = 0. /*Justificando 3 unidades refugadas*/

    RUN pi-recebe-tt-ref IN h-sfapi009(INPUT TABLE tt-ref).

    /*Chama a efetivação do Reporte*/
    RUN processaReporte IN h-sfapi009.
    IF RETURN-VALUE = "NOK":U THEN
    RUN retornaTTErro IN h-sfapi009(OUTPUT TABLE tt-erro).
    END.

    /*Faz a finalização da API*/
    RUN finalizaAPI IN h-sfapi009.

    /*Mostra os erros, caso tenham ocorrido.*/
    IF CAN-FIND(FIRST tt-erro) THEN DO:
    FOR EACH tt-erro:
    DISP tt-erro WITH WIDTH 500.
    END.
    RETURN "NOK":U.
    END.

    RETURN "OK":U.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página