Fontes
#1
Adicionado 18 August 2008 - 07:50 AM
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
Adicionado 18 August 2008 - 08:38 AM
Jomar Kleber - PB, on 18-Aug-2008, 09:50, said:
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
Adicionado 18 August 2008 - 09:04 AM
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!!!
RMNeto, on 18-Aug-2008, 09:38, said:
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
Adicionado 18 August 2008 - 11:23 AM
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
Adicionado 18 August 2008 - 12:03 PM
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.
RMNeto, on 18-Aug-2008, 12:23, said:
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
Adicionado 18 August 2008 - 02:22 PM
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
Adicionado 18 August 2008 - 03:52 PM
RMNeto, on 18-Aug-2008, 15:22, said:
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
Adicionado 18 August 2008 - 04:08 PM
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
Adicionado 27 August 2008 - 09:37 AM
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.
RMNeto, on 18-Aug-2008, 17:08, said:
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
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.
#11
Adicionado 29 August 2012 - 02:33 PM
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.
Valdir 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.
1 usuário(s) esta(ão) lendo este tópico
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)












