Jump to content


- - - - -

Fontes










10 respostas a este tópico

#1 Jomar Kleber - PB

    Membro - Junior 2

  • Membros
  • PipPipPipPip
  • 157 posts

Adicionado 18 August 2008 - 07:50 AM

Bom dia,



Pessoal será que alguem teria o fonte da API sfapi009, do chão de fabrica para consulta? Estou tentando reportar as ordens de produção aqui na empresa por Lote, mas a API sempre considera o lote mais antigo e não o que a gente indica nas reservas da ordens.


Valeu,

Jomar Kleber.

#2 RMNeto

    Progress MVP (01/07)

  • Coordenador
  • 2592 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 18 August 2008 - 08:38 AM

View PostJomar Kleber - PB, on 18-Aug-2008, 09:50, said:

Bom dia,



Pessoal será que alguem teria o fonte da API sfapi009, do chão de fabrica para consulta? Estou tentando reportar as ordens de produção aqui na empresa por Lote, mas a API sempre considera o lote mais antigo e não o que a gente indica nas reservas da ordens.


Valeu,

Jomar Kleber.

Amigo,

Esta API é de uso exclusivo da Datasul e não pode ser liberada (o fonte aberto) por se tratar de um produto registrado.

se quiser uma ajuda posta a sua lógica que eu tento dar umas dicas...

Sou especialista em Produção e Engenharia (da Datasul).


RMNeto.

#3 Jomar Kleber - PB

    Membro - Junior 2

  • Membros
  • PipPipPipPip
  • 157 posts

Adicionado 18 August 2008 - 09:04 AM

Bom dia,


Caro RMneto, então voce vai me ajudar. Vou descrever o que esta acontecendo e segue em anexo o arquivo para vc ver.

Bem, aqui nos abrimos ordens de produção por lote, ou seja tem um lote associado a ela. Bem na abertura dessa ordens alguns itens da RESERVA dessa ordem eles são controlados por lote e consequentemente tem o lote associado a eles. Bem Fizemos isso para quando reportamos a operações da ordem, pelo coletor, ele consumir apenas o saldo que esta associado aquele lote do item da reserva da ordem. Mais ele não faz isso, ele pega o lote mais antigo e baixa dele, desconsiderando o lote que se encontra associado aos itens das reservas.

Segue em anexo todos os passo a passo para vc olhar e constatar o que esta acontecendo.

Obrigado pela ajuda,
Jomar Kleber.
Meu skype (jomar-lilica).

Caro RMneto o anexo é maior que a capacidade do tamanho maximo. Tem como lhe mandar por e-mail?

Se tiver me manda um email para jomarkleber@gmail.com ou me fala o seu. Obrigado!!!







View PostRMNeto, on 18-Aug-2008, 09:38, said:

Amigo,

Esta API é de uso exclusivo da Datasul e não pode ser liberada (o fonte aberto) por se tratar de um produto registrado.

se quiser uma ajuda posta a sua lógica que eu tento dar umas dicas...

Sou especialista em Produção e Engenharia (da Datasul).


RMNeto.


#4 RMNeto

    Progress MVP (01/07)

  • Coordenador
  • 2592 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 18 August 2008 - 11:23 AM

Amigo,

Poste aqui a temp-table que você carrega para passar de parâmetro para API.

No caso da CPAPI001.p que é a API de reporte da produção, seria a tt-rep-prod.

RMNeto.

#5 Jomar Kleber - PB

    Membro - Junior 2

  • Membros
  • PipPipPipPip
  • 157 posts

Adicionado 18 August 2008 - 12:03 PM

Boa tarde,

Aqui nos reportamos tudo pelas API do chão de Fabrica. Usamos a SFAPI009.

a temp-table é essa abaixo:

Define Temp-table tt-import-rep-oper
Field tipo-rep As Integer
Field nr-ord-produ As Integer
Field num-operac-sfc As Integer
Field num-split-operac As Integer
Field cod-roteiro As Character
Field op-codigo As Integer
Field cod-ctrab As Character
Field it-codigo As Character
Field cod-refer As Character
Field lote-serie As Character
Field dat-valid-lote As Date
Field qtd-produzida As Decimal
Field cod-motiv-refugo As Character
Field qtd-refugada As Decimal
Field qtd-retrabalho As Decimal
Field conta-refugo As Character
Field dat-inic-rep As Date
Field hr-inic-rep As Decimal
Field dat-fim-rep As Date
Field hr-fim-rep As Decimal
Field dat-inic-setup As Date
Field hr-inic-setup As Decimal
Field dat-fim-setup As Date
Field hr-fim-setup As Decimal
Field cod-equipe As Character
Field cod-operador As Character
Field cod-ferramenta As Character
Field finaliza As Logical
Field linha As Integer
Field erro As Logical.


Existe o lote, mas o saldo não sai do lote que colocamos.


Jomar Kleber.



View PostRMNeto, on 18-Aug-2008, 12:23, said:

Amigo,

Poste aqui a temp-table que você carrega para passar de parâmetro para API.

No caso da CPAPI001.p que é a API de reporte da produção, seria a tt-rep-prod.

RMNeto.


#6 RMNeto

    Progress MVP (01/07)

  • Coordenador
  • 2592 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 18 August 2008 - 02:22 PM

Amigo,

não é a definição da temp-table que eu quero ver, mas sim a criação da mesma.

Onde você carrega os dados nela para passar de parâmetro para a API.


RMNeto.

#7 Jomar Kleber - PB

    Membro - Junior 2

  • Membros
  • PipPipPipPip
  • 157 posts

Adicionado 18 August 2008 - 03:52 PM

View PostRMNeto, on 18-Aug-2008, 15:22, said:

Amigo,

não é a definição da temp-table que eu quero ver, mas sim a criação da mesma.

Onde você carrega os dados nela para passar de parâmetro para a API.

Create tt-import-rep-oper-sum.
Assign tt-import-rep-oper-sum.tipo-rep = 1
tt-import-rep-oper-sum.nr-ord-produ = ord-prod.nr-ord-produ
tt-import-rep-oper-sum.cod-roteiro = oper-ord.cod-roteiro
tt-import-rep-oper-sum.op-codigo = oper-ord.op-codigo
tt-import-rep-oper-sum.cod-ctrab = tt-reporte.cod-ctrab
tt-import-rep-oper-sum.it-codigo = ord-prod.it-codigo /* oper-ord.it-codigo */
tt-import-rep-oper-sum.cod-refer = ord-prod.cod-refer
tt-import-rep-oper-sum.lote-serie = ord-prod.lote-serie
tt-import-rep-oper-sum.dat-valid-lote = (tt-reporte.dt-trans + 1000)
tt-import-rep-oper-sum.qtd-produzida = (tt-reporte.qtde-break - (tt-reporte.qtde + tt-reporte.refugo))
tt-import-rep-oper-sum.qtd-refugada = tt-reporte.refugo
tt-import-rep-oper-sum.cod-equipe = tt-reporte.cod-equipe
tt-import-rep-oper-sum.cod-operador = ""
tt-import-rep-oper-sum.dat-inic-rep = tt-reporte.dt-trans
tt-import-rep-oper-sum.hr-inic-rep = (Time - Int(i-tempo))
tt-import-rep-oper-sum.dat-fim-rep = tt-reporte.dt-trans
tt-import-rep-oper-sum.hr-fim-rep = Time
tt-import-rep-oper-sum.cod-ferramenta = ""
tt-import-rep-oper-sum.finaliza = NO /*IF tt-reporte.finaliza = "S" THEN YES ELSE NO*/
tt-import-rep-oper-sum.cod-motiv-refugo = tt-reporte.cod-mot-ref
tt-import-rep-oper-sum.tp-reporte = ?.

IF tt-import-rep-oper-sum.hr-inic-rep < 0
THEN ASSIGN tt-import-rep-oper-sum.hr-inic-rep = 86400 + tt-import-rep-oper-sum.hr-inic-rep
tt-import-rep-oper-sum.dat-inic-rep = tt-import-rep-oper-sum.dat-inic-rep - 1.
IF AVAILABLE split-operac
THEN ASSIGN tt-import-rep-oper-sum.cod-ctrab = split-operac.cod-ctrab
tt-import-rep-oper-sum.num-operac-sfc = split-operac.num-operac-sfc
tt-import-rep-oper-sum.num-split-operac = split-operac.num-split-operac.

IF tt-import-rep-oper-sum.hr-inic-rep = tt-import-rep-oper-sum.hr-fim-rep
THEN ASSIGN tt-import-rep-oper-sum.hr-fim-rep = tt-import-rep-oper-sum.hr-fim-rep + 1.

IF ord-prod.cod-refer <> ""
THEN ASSIGN tt-import-rep-oper-sum.lote-serie = ord-prod.cod-estabel + "." + STRING(ord-prod.nr-ord-produ,"999999").
END.



FOR EACH tt-import-rep-oper-sum:
IF SUBSTR(tt-import-rep-oper-sum.it-codigo,LENGTH(TRIM(tt-import-rep-oper-sum.it-codigo)),1) = "B" THEN NEXT.
FIND FIRST ord-prod
WHERE ord-prod.nr-ord-produ = tt-import-rep-oper-sum.nr-ord-produ
NO-ERROR.
FIND FIRST estabelec-ext NO-LOCK
WHERE estabelec-ext.cod-estabel = ord-prod.cod-estabel
NO-ERROR.
CREATE tt-import-rep-oper.
BUFFER-COPY tt-import-rep-oper-sum EXCEPT tp-reporte TO tt-import-rep-oper.
ASSIGN v-tipo = NO
v-raw = ?.
ASSIGN i-aux = i-aux + 1.
IF tt-import-rep-oper-sum.qtd-retrabalho > 0 THEN DO:
ASSIGN tt-import-rep-oper.qtd-retrabalho = 0.
IF AVAILABLE estabelec-ext
THEN ASSIGN ord-prod.cod-depos = estabelec-ext.dep-seg.
ELSE ASSIGN ord-prod.cod-depos = "2AQ".
END.
ELSE DO :
FIND FIRST item-uni-estab NO-LOCK
WHERE item-uni-estab.cod-estabel = ord-prod.cod-estabel AND
item-uni-estab.it-codigo = ord-prod.it-codigo NO-ERROR.
IF AVAILABLE item-uni-estab THEN DO:
ASSIGN ord-prod.cod-depos = IF item-uni-estab.deposito-pad = "" THEN "EPA" ELSE item-uni-estab.deposito-pad.
END.
ELSE DO:
ASSIGN ord-prod.cod-depos = "EPA".
END.

END.
FIND FIRST ord-prod NO-LOCK
WHERE ord-prod.nr-ord-produ = tt-import-rep-oper-sum.nr-ord-produ
NO-ERROR.

RUN pi-reporta-sfc.
IF l-erro THEN DO :
/* Message "Ocorreu erro!" View-as Alert-box. */
/* Run bcp/bc9115.p (0,"Erro no Reporte!",8,20,3). */

RETURN 'Ok':U.
/* LEAVE. */

END.
END.



Procedure pi-reporta-sfc:
FOR EACH tt-erro:
DELETE tt-erro.
END.

RUN sfc/sfapi009.p (INPUT 204,
INPUT TABLE tt-import-rep-oper,
OUTPUT TABLE tt-erro).
ASSIGN l-erro = NO.
FIND FIRST tt-erro NO-ERROR.
IF AVAILABLE tt-erro
THEN ASSIGN l-erro = YES.
FOR EACH tt-import-rep-oper:
DELETE tt-import-rep-oper.
END.



END PROCEDURE.



RMNeto.


#8 RMNeto

    Progress MVP (01/07)

  • Coordenador
  • 2592 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 18 August 2008 - 04:08 PM

Amigo,

só tem uma coisa estranha... você falow que o lote é definido antes mas tem isso no código:

tt-import-rep-oper-sum.lote-serie = ord-prod.lote-serie

E mais em baixo tem isso:

IF ord-prod.cod-refer <> "" THEN 
	 ASSIGN tt-import-rep-oper-sum.lote-serie = ord-prod.cod-estabel + "." + STRING(ord-prod.nr-ord-produ,"999999").


Par fazer a baixa do lote da reserva vocês estão indicando os lotes no campo da reserva no programa CP0302B ???

RMNeto.

#9 Jomar Kleber - PB

    Membro - Junior 2

  • Membros
  • PipPipPipPip
  • 157 posts

Adicionado 27 August 2008 - 09:37 AM

Oi RMneto,

Desculpa a demora na resposta, é que é fechamento aqui e começa em uma base simulado ai consome todo nosso tempo.

Olha eu coloco sim os lotes nas reservas da ordem no CP0302B, e esse código que você comentou foi feito para garantor que o lote fosse preenchido. De qualquer forma ainda não deu certo. To fazendo no padrão Datasul e ver se lá puxa do correto. Na rotina SF0303. Um parto de lentidão. Se tiver mais alguma dica para mim eu agradeceira. Valeu. E vou voltar a esse assunto com vc. Obrigado mais uma vez.


Jomar Kleber.





View PostRMNeto, on 18-Aug-2008, 17:08, said:

Amigo,

só tem uma coisa estranha... você falow que o lote é definido antes mas tem isso no código:

tt-import-rep-oper-sum.lote-serie = ord-prod.lote-serie

E mais em baixo tem isso:

IF ord-prod.cod-refer <> "" THEN 
	 ASSIGN tt-import-rep-oper-sum.lote-serie = ord-prod.cod-estabel + "." + STRING(ord-prod.nr-ord-produ,"999999").


Par fazer a baixa do lote da reserva vocês estão indicando os lotes no campo da reserva no programa CP0302B ???

RMNeto.


#10 Valdir Fantin

    Membro - Novato

  • Membros
  • Pip
  • 2 posts
  • Estado:São Paulo

Adicionado 29 May 2012 - 02:34 PM

  • Pessoal alguem tem a definição da temp-table tt-import-rep-oper usada na api sfapi009 versao ems206b.
Grato

#11 RMNeto

    Progress MVP (01/07)

  • Coordenador
  • 2592 posts
  • Você é Humano?:Sim
  • Sexo:Masculino
  • Estado:São Paulo

Adicionado 29 August 2012 - 02:33 PM

Segue abaixo definição:

define temp-table tt-import-rep-oper no-undo
    field   tipo-rep		    as  integer
    field   nr-ord-produ	    as  integer	
    field   num-operac-sfc	  as  integer
    field   num-split-operac    as  integer
    field   cod-roteiro		 as  character
    field   op-codigo		   as  integer
    field   cod-ctrab		   as  character
    field   it-codigo		   as  character
    field   cod-refer		   as  character
    field   lote-serie		  as  character
    field   dat-valid-lote	  as  date
    FIELD   per-ppm			 LIKE ITEM.per-ppm /*** fator concentracao ppm   ***/
    field   qtd-produzida	   as  DECIMAL	 /*** quantidade aprovada    ***/
    FIELD   cod-motiv-refugo    AS  CHARACTER
    field   qtd-refugada	    as  decimal
    field   qtd-refugada-un-ref  as  decimal
    FIELD   qtd-retrabalho	  AS  DECIMAL
    FIELD   ct-refugo		   like rep-prod.ct-refugo
    FIELD   sc-refugo		   like rep-prod.sc-refugo
    field   dat-inic-rep	    as  date
    field   hr-inic-rep		 as  decimal
    field   dat-fim-rep		 as  date
    field   hr-fim-rep		  as  decimal
    field   dat-inic-setup	  as  date
    field   hr-inic-setup	   as  decimal
    field   dat-fim-setup	   as  date
    field   hr-fim-setup	    as  decimal
    field   cod-equipe		  as  character
    field   cod-operador	    as  character   format  "99999-9"
    field   cod-ferramenta	  as  character
    FIELD   num-contador-ini    AS  INTEGER
    FIELD   num-contador-fim    AS  INTEGER
    field   finaliza		    as  logical
    field   linha			   as  integer
    field   erro			    as  logical
    index   split   is primary  tipo-rep it-codigo
    index   num-linha linha.


RMNeto.


View PostValdir Fantin, on 29 May 2012 - 02:34 PM, said:

  • Pessoal alguem tem a definição da temp-table tt-import-rep-oper usada na api sfapi009 versao ems206b.
Grato






1 usuário(s) esta(ão) lendo este tópico

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)