Árvore de páginas

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.

Todas as temp-tables são passadas como parâmetro por meio do comando INPUT-OUTPUT, pois além de passar parâmetros, elas retornam informações para o programa chamador.

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-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



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-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



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



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:

1 – Inclusão

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.

Os campos aloca-reserva e aloca-lote informam se a API irá realizar a alocação das reservas quando da criação da ordem. Se os campos contiverem ?, será utilizado o default existente nos parâmetros da produção.

O campo rw-ord-prod retorna o rowid da tabela ord-prod, quando a api é executada com sucesso, servindo também para receber o rowid da ordem original, quando for selecionada a opção de cópia.

O campo gera-relacionamentos informa à api se além do registro na tabela ord-prod e ext-ord, deverão ser gerados os relacionamentos correspondentes àquela ordem, nas tabelas reservas, oper-ord e pert-ord. Na opção cópia, se o campo for setado como no, os relacionamentos da nova ordem são copiados da ordem de origem. Se for setado como yes, os relacionamentos são regerados.

Os campos prog-seg, seg-usuário e ep-codigo-usuario são utilizados para a integração com o módulo de investimentos e SWS, indicando qual o programa chamador e o usuário ativo no momento.

Vários campos da temp-table podem ser informados com ?, o que irá disparar uma rotina de utilização de dados default, que irá preencher os campos com os defaults adequados, retirados das tabelas item, param-cp, lin-prod e param-cs.

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

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;

- Ordem de investimentos;

- Quantidade de ordem;

- Código do estabelecimento;

- Estado, Tipo, Nr-Sequencia, Nr-estrut;

- Planejador;

- Conta-Contábil;

- Item;

- Data Início, Data Término;

- Unidade;

- Depósito;

- Linha 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.


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.




[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.