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] Erro - Importador de resultados dos componentes da folha esp

Discussão em 'EMS , HCM e Totvs 11' iniciado por heybell, Abril 1, 2009.

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

    heybell Sem Pontuação

    Buenas,

    Alguém aí que tenha conhecimento do EMS 204 datasul pode analisar o que há de errado com este programa: O programa deverá importar os resultados dos componentes da folha de especificação. O arquivo de entrada está em csv e possue o código do item e os resultdos dos componentes da folha a serem importados para a tabela it-carac-tec que são as caracteristicas técnicas do item. O programa funciona porém não grava nada... Há, são 67 componentes da folha de especificação...


    DEF VAR c-arq-import AS CHAR NO-UNDO FORMAT "x(60)" INIT "C:\resultados.csv".
    DEF VAR c-it-codigo LIKE it-carac-tec.it-codigo NO-UNDO.
    DEFINE VARIABLE ls-compon AS CHARACTER extent 67 NO-UNDO.
    DEFINE VARIABLE i-cont AS INTEGER NO-UNDO INIT 0.
    DEF VAR h-acomp AS HANDLE NO-UNDO.
    /* DEF VAR h-boin172 AS HANDLE NO-UNDO. */
    /* DEF VAR r-chave AS ROWID NO-UNDO. */

    DEF TEMP-TABLE tt-it-carac-tec LIKE it-carac-tec
    FIELD rownum AS INT
    FIELD r-rowid AS ROWID.

    /* temp utilizada para retorno de erros da BO*/
    /* define temp-table rowerrors no-undo */
    /* field errorsequence as INTEGER */
    /* field errornumber as integer */
    /* field errordescription as character */
    /* field errorparameters as character */
    /* field errortype as character */
    /* field errorhelp as character */
    /* field errorsubtype as character. */

    DEF TEMP-TABLE tt-erro
    FIELD observacao LIKE it-carac-tec.observacao
    FIELD it-codigo LIKE it-carac-tec.it-codigo.
    /* FIELD erro LIKE rowerrors.errordescription. */

    FORM c-arq-import LABEL " Arquivo CSV " SKIP
    WITH frame Resultados title "Informe Arquivo a Importar:"
    SIDE-LABELS 1 DOWN CENTERED VIEW-AS DIALOG-BOX.

    UPDATE c-arq-import SKIP WITH FRAME Resultados.

    FOR EACH tt-it-carac-tec:
    DELETE tt-it-carac-tec.
    END.

    run utp/ut-acomp.p persistent set h-acomp.

    run pi-inicializar in h-acomp (input return-value).

    INPUT FROM "C:/resultados.csv" NO-CONVERT.
    REPEAT:
    IMPORT DELIMITER ";"
    c-it-codigo
    ls-compon[01]
    ls-compon[02]
    ls-compon[03]
    ls-compon[04]
    ls-compon[05]
    ls-compon[06]
    ls-compon[07]
    ls-compon[08]
    ls-compon[09]
    ls-compon[10]
    ls-compon[11]
    ls-compon[12]
    ls-compon[13]
    ls-compon[14]
    ls-compon[15]
    ls-compon[16]
    ls-compon[17]
    ls-compon[18]
    ls-compon[19]
    ls-compon[20]
    ls-compon[21]
    ls-compon[22]
    ls-compon[23]
    ls-compon[24]
    ls-compon[25]
    ls-compon[26]
    ls-compon[27]
    ls-compon[28]
    ls-compon[29]
    ls-compon[30]
    ls-compon[31]
    ls-compon[32]
    ls-compon[33]
    ls-compon[34]
    ls-compon[35]
    ls-compon[36]
    ls-compon[37]
    ls-compon[38]
    ls-compon[39]
    ls-compon[40]
    ls-compon[41]
    ls-compon[42]
    ls-compon[43]
    ls-compon[44]
    ls-compon[45]
    ls-compon[46]
    ls-compon[47]
    ls-compon[48]
    ls-compon[49]
    ls-compon[50]
    ls-compon[51]
    ls-compon[52]
    ls-compon[53]
    ls-compon[54]
    ls-compon[55]
    ls-compon[56]
    ls-compon[57]
    ls-compon[58]
    ls-compon[59]
    ls-compon[60]
    ls-compon[61]
    ls-compon[62]
    ls-compon[63]
    ls-compon[64]
    ls-compon[65]
    ls-compon[66]
    ls-compon[67].

    RUN pi-acompanhar in h-acomp (input "Importando: " + string(c-it-codigo)).

    FIND FIRST ITEM
    WHERE ITEM.it-codigo = c-it-codigo NO-LOCK NO-ERROR.

    /* IF AVAIL ITEM THEN DO: */

    FIND FIRST folh-espec
    WHERE folh-espec.cd-folha = item.cd-folh-item NO-LOCK NO-ERROR.
    /* IF NOT AVAIL folh-espec THEN DO: */

    FOR EACH it-carac-tec NO-LOCK
    WHERE it-carac-tec.cd-folha = item.cd-folh-item:
    IF AVAIL it-carac-tec THEN DO:

    ASSIGN i-cont = i-cont + 1
    /* tt-it-carac-tec.it-codigo = c-it-codigo */
    it-carac-tec.observacao = ls-compon[i-cont].
    END.
    ELSE DO:

    CREATE tt-it-carac-tec.
    /* BUFFER-COPY it-carac-tec EXCEPT observacao TO tt-it-carac-tec. */
    ASSIGN i-cont = i-cont + 1
    /* tt-it-carac-tec.it-codigo = c-it-codigo */
    it-carac-tec.observacao = ls-compon[i-cont].
    /* RUN pi-cria-carac. */
    END.
    END.
    END.
    /* . */
    /* CREATE tt-erro. */
    /* ASSIGN tt-erro.it-codigo = c-it-codigo */
    /* tt-erro.observacao = ls-compon[i-cont]. */
    /* /* tt-erro.erro = "Erro ao gravar caracteristicas.". */ */
    /* */


    RUN pi-finalizar IN h-acomp.

    OUTPUT TO c:\temp\it-carac-tec.txt.
    FOR EACH tt-it-carac-tec WHERE it-carac-tec.it-codigo = "000035CRT0003":
    PUT tt-it-carac-tec.it-codigo
    tt-it-carac-tec.observacao
    tt-it-carac-tec.cd-folha
    tt-it-carac-tec.cd-comp
    tt-it-carac-tec.tipo-result.
    END.
    OUTPUT CLOSE.
    OS-COMMAND SILENT START c:\temp\it-carac-tec.txt.
    INPUT CLOSE.

    MESSAGE "Componentes da FE importados."
    VIEW-AS ALERT-BOX INFO BUTTONS OK.
  2. af.dums

    af.dums Membro Ativo

    Opa

    Cara, pergunta:

    Pelo que entendi do teu código, apenas se o registro já existir você vai atualizar ele? Se ele não exisitr você apenas cria em uma tabela temporária e mais nada? Não faz nada com ele?
    Acho que o problema é que falta alguma coisa no final como:

    Código:
    for each tt-it-carac-tec:
        create it-carac-tec.
        buffer-copy tt-it-carac-tec to it-carac-tec.
    end.
    
    Flw.
Status do Tópico:
Não esta aberto para novas mensagens.

Compartilhe esta Página