Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Comentário: Migration of unmigrated content due to installation of a new plugin

Documento de API

Produto:

Datasul

Ocorrência:

Documentação de API

Nome Físicocpp/cpapi301.p

 


Considerações Gerais

 

Objetivo

Baseado na temp-table tt-ord-prod, serão criadas ordens de produção, ou então alteradas ou eliminadas ordens já existentes. 


Funcionamento

Devem ser passadas 3 temp-tables com informações e parâmetros para a criação de transações.

...

Exemplo de chamada da API.

Run cpp/cpapi301.p (input-output table tt-ord-prod,

                                  Input-output table tt-reapro,

                                  Input-output table tt-erro,

                                  Input l-deleta-erros

...


Os três primeiros parâmetros são as temp-tables passadas para o programa. O quarto parâmetro informa se a api irá eliminar os erros já existentes na temp-table tt-erro ou se irá acrescentar aos registros que já fazem parte da temp-table, os seus próprios registros de erros. 


Tabelas Temporárias

 


Nos atributos das tabelas temporárias de entrada e saída: 


tt-ord-prod

Entrada/Saída

Temp-table que possui todos os dados das novas ordens de produção que serão criadas. Também é utilizada para passar as informações de ordens já existentes que serão modificadas ou eliminadas.

Entrada

Atributo

Tipo

Formato

Valor Inicial

Obrigatório

Evolução

nr-ord-produ

Integer

>>>,>>>,>>9

0

 

 



it-codigo

Char

x(16)

 

 

 




qt-ordem

Deci-4

>>>>>,>>9.9999

0

 

 



qt-produzida

Deci-4

>>>>>,>>9.9999

0

 

 



qt-refugada

Deci-4

>>>>>,>>9.9999

0

 

 



un

Char

xx

 

 

 




dt-inicio

Date

99/99/9999

Today

 

 



dt-termino

Date

99/99/9999

Today

 

 



cd-planejado

Char

x(12)

 

 

 




estado

Integer

>9

1

 

 

emite



emite-requis

Logi

Sim/Não

Sim

 

 



emite-ordem

Logi

Sim/Não

Sim

 

 



cod-depos

Char

x(3)

 

 

 




nr-req-sum

Integer

>>>,>>>,>>9

0

 

 



dt-emissao

Date

99/99/9999

Today

 

 



ct-codigo

Char

x(8)

 

 

 




sc-codigo

Char

x(8)

 

 

 




qt-reportada

Deci-4

>>>>>,>>9.9999

0

 

 



qt-requisita

Deci-4

>>>>>,>>9.9999

0

 

 



lote-serie

Char

x(10)

 

 

 




narrativa

Char

x(2000)

 

 

 




nr-linha

Integer

>>9

0

 

 

usuario



tipo

Integer

>9

1

 

 



usuario-alt

Char

x(12)

?

 

 



data-alt

Date

99/99/9999

Today

 

 



cod-estabel

Char

x(3)

 

 

 




nome-abrev

Char

x(12)

 

 

 




nr-pedido

Char

x(12)

 

 

 




dt-orig

Date

99/99/9999

?

 

 



valorizada

Logi

Sim/Não

no

 

 



calc-cs-mat

Integer

>9

1

 

 



reporte-mob

Integer

>9

1

 

 



req-emitida

Logi

Sim/Não

Não

 

 



prioridade

Integer

999

0

 

 



val-per

Logi

Sim/Não

Não

 

 

cod



cod-refer

Char

x(8)

 

 

 




cod-gr-cli

Integer

>9

0

 

 



nr-ult-seq

Integer

>>>9

0

 

 



rep-prod

Integer

>9

1

 

 



qt-apr-cond

Deci-4

>>>>>,>>9.9999

0

 

 



qt-perda

Deci-5

>>>>,>>9.99999

0

 

 



custeio-prop-mob

Integer

>9

1

 

 



qt-inicial

Deci-4

>>>>>,>>9.9999

0

 

 



custeio-prop-mat

Integer

>9

1

 

 



prod-repet

Logi

Sim/Não

no

 

 



nr-ord-aber

Integer

>>>,>>>,>>9

0

 

 



nr-sequencia

Integer

>>,>>9

0

 

 



cons-mrp

Logi

Sim/Não

Sim

 

 



cons-pmp

Logi

Sim/Não

Sim

 

 

sc



ct-desp

Char

x(8)

 

 

 




sc-desp

Char

x(8)

 

 

 




origem

Char

x(2)

 

 

 




sit-aloc

Integer

>9

1

 

 



nr-ficha

Integer

>>>>,>>9

0

 

 



enc-mensal

Logi

Sim/Não

Não

 

 



it-inspec

Char

x(16)

 

 

 




ct-imob

Char

x(8)

 

 

 




sc-imob

Char

x(8)

 

 

 




prototipo

Logi

Sim/Não

Não

 

 



num-ord-inv

Integer

>>>,>>>,>>9

0

 

 



dest-manut

Integer

>9

1

 

 



nr-entrega

Integer

>>>>9

0

 

 



nr-ord-refer

Integer

>>>,>>>,>>9

0

 

 



conta-ordem

Char

x(17)

 

 

 




conta-despesa

Char

x(17)

 

 

 




conta-imob

Char

x(17)

 

 

 




custeio-prop-ggf

Integer

>9

1

 

 



calc-cs-mob

Integer

>9

1

 

 



calc-cs-ggf

Integer

>9

1

 

 



reporte-ggf

Integer

>9

1

 

 



nr-estrut

Integer

>>>>>>9

1

 

 



item-cotacao

char

x(16)

 

 

 




sequencia

Integer

>>>>9

0

 

 

nr-



es-codigo

Char

x(16)

 

 

 




nr-estrut-filha

Integer

>>>>>>9

0

 

 



cod-unid-negoc[1]

Char

X(3)

 

 

 




dt-disponibilidade

Date

 


?

 

 



ind-tipo-movto

Integer

 


0

 

 



faixa-numeracao

Integer

 


1

 

 



verifica-compras

Logical

 


No

 

 



aloca-reserva

Logical

 


?

 

 



aloca-lote

Logical

 


?

 

 



rw-ord-prod

Rowid

 


?

 

 



gera-relacionamentos

Logical

 


Yes

 

 



gera-reservas

Logical

 


Yes

 

 



prog-Seg

Char

 

 

 

 





seg-usuario

Char

 

 

 

 





ep-codigo-usuario

Integer

 


0

 

 



cod-versao-integracao

Integer

999

0

 

 



Considera-dias-desl

Logical

 


Não

 

 



Observação: Quando o campo nr-ord-prod é igual a 0 (zero), a api irá automaticamente gerar um número para a ordem de produção. A faixa de numeração utilizada (manual ou automática) é informada através do campo faixa-numeracao (1-manual, 2-automática).

Para efeitos de validação do número, quando este é informado, também é utilizado o campo faixa-numeração, podendo ser informado, além de 1 e 2, também o valor 3, o qual irá ignorar essa validação.

 


O campo ind-tipo-movto indica o tipo de movimento que será gerado pela API:

...

2 – Modificação

3 – Eliminação

4 – Cópia 


O campo verifica-compras serve apenas para a eliminação de ordens de produção. Quando setado com o valor yes, a rotina de eliminação irá verificar os relacionamentos da ordem com o módulo de compras, antes de realizar a exclusão.

...

São eles: un, tipo, estado, nr-linha, cod-refer, conta-ordem, rep-prod, sit-aloc, cod-estabel, cod-depos, cd-planejado, dt-orig, dt-emissao, calc-cs-mat, calc-cs-mob, calc-cs-ggf, reporte-mob, reporte-ggf, nr-ult-seq, origem, nome-abrev, cod-gr-cli, nr-pedido, nr-sequencia, lote-serie, prioridade, emite-ordem, emite-requis, narrativa. 


O campo gera-reservas será utilizado para release 204 ou superior. 


tt-reapro

Entrada/Saída

Nesta temp-table são informadas as reservas de reaproveitamento que serão passadas para a API.

Entrada

Atributo

Tipo

Formato

Valor Inicial

Obrigatório

Evolução

It-codigo

Char

“x(16)”

 

 

 




Cod-refer

Char

“x(8)”

 




Descricao

 

 

Descricao

Char

Char

“x(36)”

 

 

 




Un

Char

“x(2)”

 

 

 




Quant-Orig

Decimal

“->>>>>,>>9.9999”

0

 

 



tt-erro

Entrada/Saída

Nesta temp-table são armazenados os possíveis erros que ocorreram durante a criação/alteração/eliminação das ordens.

Entrada

Atributo

Tipo

Formato

Valor Inicial

Obrigatório

Evolução

i-sequen

Inteiro

999

 

 

 




cd-erro

Inteiro

>>>>9

 

 

 




Mensagem

Character

X(255)

 

 

 




Execução

...


Execução: O programa cpapi301.p irá executar estas validações básicas:

 


1ª Validação: Versão de Integração 


O programa irá verificar se o programa chamador está íntegro com a API, e isto ocorre por meio da verificação da versão de integração passada como parâmetro (campo cod-versao-integracao). Caso a versão esteja incompatível, a API abortará a execução retornando o código de erro 3941.

 

A versão atual que deve ser utilizada é a 003.


Outras Validações: 


- Número da ordem de produção;

...

- Cliente, Pedido.

Parâmetros de Saída

 


No retorno da execução da cpapi301.p, será retornado um dos valores abaixo (via RETURN-VALUE): 


NOK: houveram problemas nas validações ou na execução da API.

OK: execução com sucesso.

 

Funções/Includes/Procedures Externas

 

Algumas includes da API podem ser acrescentadas a um programa e utilizadas, sem a necessidade de chamadas à API. São elas:

 

{CPP/CPAPI301.I21} – Validações

Esta Include possui a declaração de uma procedure interna que permite realizar a validação da ordem de produção sem a necessidade de chamar a api. Para que isso aconteça, basta acrescentar essa include ao programa e colocar no local pertinente a chamada para a pi-valida-ord-prod, conforme o exemplo abaixo:

 

Run pi-valida-ord-prod (input 1,

                                      input yes,

                                      input 0,

                                      output c-erro,

                                      ouput c-texto).

 

Antes da chamada dessa procedure, é necessária a criação do registro na temp-table tt-ord-prod, além dos respectivos assigns a fim de preencher a temp-table com os dados que serão validados.

O primeiro input parameter indica o tipo de movimento que se deseja validar (1-inclusão, 2-modificação, 3-Eliminação e 4-Cópia).

O segundo input parameter utilizado pela procedure indica se ela irá retornar logo após a ocorrência do primeiro erro, ou se irá acumulando todos os erros apontados, retornando apenas quando terminar todas as validações.

O terceiro input parameter indica o número da ordem de produção.

O retorno da procedure é feito através do “Return-Value”, o qual será “OK” para uma validação perfeita ou “NOK” para uma validação interrompida por qualquer tipo de erro. Os códigos de erros são retornados em forma de lista (separados por vírgulas), no output parâmetro c-erro. O Output parâmetro c-texto retorna um texto acessório que é necessário para a impressão de algumas mensagens. Quando não for necessário, é retornado em branco.

Para a exibição das mensagens, pode ser utilizado o UT-MSGS.P, na forma abaixo:

Run pi-valida-ord-prod (input 1,

                                      input yes,

                                      input 0,

                                      output c-erro,

                                      ouput c-texto)

if return-value = “nok” then do:

   do i-cont = 1 to num-entries (c-erro):

      run utp/ut-msgs.p (input "show",

                                    input int (entry (i-cont, c-erro)),

                                    input entry (i-cont, c-texto)).

   end.

   return "adm-error".

end.

 

Para utilização desta Include, é necessário a declaração das seguintes includes e variáveis ao programa:

 

{cdp/cdcfgman.i}

{cdp/cdunif001.i}

{cdp/cd0666.i}

{cpp/cpapi301.i}

{cdp/cd9203.i}

 

DEFINE VARIABLE l-unid-neg AS LOGICAL NO-UNDO.

 

{cpp/cpapi301.i4}

{cpp/cpapi301.i23}

{cpp/cpapi301.i21}

{CPP/CPAPI301.I20}  - F-Gera-Número-Op-Manual / F-Gera-Número-Op-Automática

Possui a declaração de 2 functions que não utilizam parâmetros e tem por objetivo retornar um número de ordem de produção válido. Utilizadas quando da inclusão de novas ordens de produção.


Execução Persistente:

Para a execução persistente da CPAPI301, as variáveis e tabelas temporárias devem ser definidas corretamente, conforme especificação.


define variable h-cpapi301 as handle no-undo.

run cpp/cpapi301.p persistent set h-cpapi301 (input-output table tt-ord-prod,
                                              input-output table tt-reapro,
                                              input-output table tt-erro,
                                              input        true).

run ativaExecPersistente in h-cpapi301.

run pi-processa-ordens in h-cpapi301 (input-output table tt-ord-prod,
                                         input-output table tt-reapro,
                                         input-output table tt-erro,
                                         input        true).
 if  return-value = "nok":U then do:

    for each tt-erro:

    end.
 end.

run finalizaAPI in h-cpapi301.

if valid-handle(h-cpapi301) then

    delete procedure h-cpapi301.


Funções/Includes/Procedures Externas


Algumas includes da API podem ser acrescentadas a um programa e utilizadas, sem a necessidade de chamadas à API. São elas:

  • {CPP/CPAPI301.I21} – Validações
  • {CPP/CPAPI301.I7} – Gerar Lista de Processos (apesar do nome ela retorna apenas uma consulta de processos do item)



{CPP/CPAPI301.I21} – Validações

Esta Include possui a declaração de uma procedure interna que permite realizar a validação da ordem de produção sem a necessidade de chamar a api. Para que isso aconteça, basta acrescentar essa include ao programa e colocar no local pertinente a chamada para a pi-valida-ord-prod, conforme o exemplo abaixo:


Run pi-valida-ord-prod (input 1,

                                      input yes,

                                      input 0,

                                      output c-erro,

                                      ouput c-texto).


Antes da chamada dessa procedure, é necessária a criação do registro na temp-table tt-ord-prod, além dos respectivos assigns a fim de preencher a temp-table com os dados que serão validados.

O primeiro input parameter indica o tipo de movimento que se deseja validar (1-inclusão, 2-modificação, 3-Eliminação e 4-Cópia).

O segundo input parameter utilizado pela procedure indica se ela irá retornar logo após a ocorrência do primeiro erro, ou se irá acumulando todos os erros apontados, retornando apenas quando terminar todas as validações.

O terceiro input parameter indica o número da ordem de produção.

O retorno da procedure é feito através do “Return-Value”, o qual será “OK” para uma validação perfeita ou “NOK” para uma validação interrompida por qualquer tipo de erro. Os códigos de erros são retornados em forma de lista (separados por vírgulas), no output parâmetro c-erro. O Output parâmetro c-texto retorna um texto acessório que é necessário para a impressão de algumas mensagens. Quando não for necessário, é retornado em branco.

Para a exibição das mensagens, pode ser utilizado o UT-MSGS.P, na forma abaixo:

Run pi-valida-ord-prod (input 1,

                                      input yes,

                                      input 0,

                                      output c-erro,

                                      ouput c-texto)

if return-value = “nok” then do:

   do i-cont = 1 to num-entries (c-erro):

      run utp/ut-msgs.p (input "show",

                                    input int (entry (i-cont, c-erro)),

                                    input entry (i-cont, c-texto)).

   end.

   return "adm-error".

end.


Para utilização desta Include, é necessário a declaração das seguintes includes e variáveis ao programa:


{cdp/cdcfgman.i}

{cdp/cdunif001.i}

{cdp/cd0666.i}

{cpp/cpapi301.i}

{cdp/cd9203.i}


DEFINE VARIABLE l-unid-neg AS LOGICAL NO-UNDO.


{cpp/cpapi301.i4}

{cpp/cpapi301.i23}

{cpp/cpapi301.i21}

{CPP/CPAPI301.I20}  - F-Gera-Número-Op-Manual / F-Gera-Número-Op-Automática

Possui a declaração de 2 functions que não utilizam parâmetros e tem por objetivo retornar um número de ordem de produção válido. Utilizadas quando da inclusão de novas ordens de produção.

{CPP/CPAPI301.I17} – Calcula tamanho do período, conforme o tipo de período.



{CPP/CPAPI301.I7} – Gerar Lista de Processos


{cpp/cpapi301.i4}  /* Definição da tt-proces-item          */
{cpp/cpapi301.i7}  /* GerarListaProcesItem                     */

run GerarListaProcesItem (input <Código do Item>,   // Item é o único parâmetro Obrigatório
                                          input ?,    // Quantidade ou ? - Usado para Regra processo
                                          input ?,    // Estabelecimento ou ? - Usado para Regra processo
                                          input "",   // Referencia ou vazio "" - Usado para Regra processo
                                          input ?,    // Data Validade ou ?  - Usado para Regra processo , porém caso a data seja informada, ela também filtra a validade dos Roteiros e Listas de Componente.
                                          input ?,    // Linha de Produção ou ? - Usado para Regra processo
                                          input no, //  YES - Gera lista com todos os processos, NO - Gera apenas primeiro processo
                                          input ?,    // Unidade de Negócio ou ? - Usado para Regra processo
                                          input-output table tt-proces-item).

IMPORTANTE: é necessário que exista ao menos um processo criado, ou seja, se existir roteiros e listas de componentes, porém não foi criado processos para os mesmos, não serão criados automaticamente processos, pois esta procedure é apenas de consulta{CPP/CPAPI301.I17} – Calcula tamanho do período, conforme o tipo de período.




[1] O campo <cod-unid-negoc> existe apenas a partir da release 2.06B do EMS2. Sendo que ele será utilizado apenas quando utilizada a função de Unidade de Negócio no EMS5. Caso não seja informado o valor neste campo, e a função estiver ativa, então buscará a Unidade de Negócio padrão do ItemxEstabelecimentoxDepósito ou no caso de falta da primeira no ItemxEstabelecimento.