Módulo: DRAWBACK
Funcionalidade: Apropriação
Data/Hora da Publicação: 19/05/2006 00:00:00
Data/Hora Última Alteração: 17/02/2011 13:48:56
Descrição da Nota: DESENVOLVIMENTO DA APROPRIAÇÃO/DESAP. COMUM/INTERMEDIARIO POR NCM
Sintoma
Desenvolvimento do programa de apropriação/desapropriação Comum/Intermediario por ncm
Solução
Desenvolvimento do programa de apropriação/desapropriação Comum/Intermediario por ncm
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01373 Data: 19/05/2006 Hora: 08:32:11
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01373
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00114
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
DESENVOLVIMENTO DA APROPRIAÇÃO/DESAP. COMUM/INTERMEDIARIO POR NCM
----------------------------------------------------------------------------------------------------
Palavras Chave:
APROPRIAÇÃO - DESAPROPRIAÇÃO - COMUM - INTERMEDIARIO
/PWS/ZYCIR254
----------------------------------------------------------------------------------------------------
Objetos da nota:
DOMD /PWS/ZYCID170
DTED /PWS/ZYCIL817
PROG /PWS/ZYCIR254
PROG /PWS/ZYCIR254F01
PROG /PWS/ZYCIR254I01
PROG /PWS/ZYCIR254O01
REPS /PWS/ZYCIR254
REPS /PWS/ZYCIR254F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DOMD /PWS/ZYCID170
------------------------------------------------------------------------
Domínio modificado: /PWS/ZYCID170
-Valores individuais
Modificado valor fixo "G"
Texto modificado, idioma: PT (38 caracteres):
"Base dos saldos dos insumos importados"
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DTED /PWS/ZYCIL817
------------------------------------------------------------------------
Elemento de dados modificado: /PWS/ZYCIL817
Descrição breve modificada (49 caracteres), idioma: PT
"GL - Método de Apropriação insumos intermediarios"
Denominador breve modificado (10 caracteres), idioma: PT
"Apr interm"
Denominador médio modificado (14 caracteres), idioma: PT
"Método Apr int"
Denominador longo modificado (28 caracteres), idioma: PT
"Método Apropr. Intermediario"
Título modificado (28 caracteres), idioma: PT
"Método Apropr. Intermediario"
---------------------------------------------------------------------------------------------------
Modificações efetuadas em PROG /PWS/ZYCIR254
****************************Status GUI: 0003
*Definição das teclas de funções:
Código de função CANCE
Categoria de função Função de aplicação
Texto de função Cancelar
Nome de ícone ICON_CANCEL
****************************Status GUI: ST0001
*Teclas de função:
F2 SELE Selecionar
F5 APROP Apropriar
F6 MALL Marcar
F7 DALL Desmarcar
F8 APROV Aprovar
Shift-F1 LOGER Log
Ctrl-F1 FIRST First
Ctrl-F2 PRIOR Prior
Ctrl-F3 NEXT Next
Ctrl-F4 LAST Last
*Definição das teclas de funções:
Código de função ENTE
Categoria de função Função de aplicação
Texto de função ENTE
Código de função BACK
Categoria de função Função de aplicação
Texto de função Voltar
Código de função ABORT
Categoria de função E Comando exit
Texto de função Encerrar
Código de função P--
Categoria de função Função de aplicação
Texto de função 1ª página
Nome de ícone ICON_FIRST_PAGE
Código de função P-
Categoria de função Função de aplicação
Texto de função Página anterior
Nome de ícone ICON_PREVIOUS_PAGE
Código de função P+
Categoria de função Função de aplicação
Texto de função Página seguinte
Nome de ícone ICON_NEXT_PAGE
Código de função P++
Categoria de função Função de aplicação
Texto de função Última página
Nome de ícone ICON_LAST_PAGE
Código de função SELE
Categoria de função Função de aplicação
Texto de função Selecionar
Nome de ícone ICON_SELECT_DETAIL
Código de função APROP
Categoria de função Função de aplicação
Texto de função Apropriar
Nome de ícone ICON_TREE
Texto informativo Apropriar Exportaçõe
Código de função MALL
Categoria de função Função de aplicação
Texto de função Marcar
Nome de ícone ICON_SELECT_ALL
Texto informativo Marcar Todos
Código de função DALL
Categoria de função Função de aplicação
Texto de função Desmarcar
Nome de ícone ICON_DESELECT_ALL
Texto informativo Desmarcar Todos
Código de função APROV
Categoria de função Função de aplicação
Texto de função Aprovar
Nome de ícone ICON_ALLOW
Texto de ícones Aprovar
Texto informativo Aprovar Apropriação
Código de função LOGER
Categoria de função Função de aplicação
Texto de função Log
Nome de ícone ICON_ERROR_PROTOCOL
Texto informativo Log de Processamento
Código de função FIRST
Categoria de função Função de aplicação
Texto de função First
Nome de ícone ICON_TOTAL_LEFT
Texto informativo Primeiro Item
Código de função PRIOR
Categoria de função Função de aplicaç
Texto de função Prior
Nome de ícone ICON_COLUMN_LEFT
Texto informativo Item Anterior
Código de função NEXT
Categoria de função Função de aplicaç
Texto de função Next
Nome de ícone ICON_COLUMN_RIGHT
Texto informativo Próximo Item
Código de função LAST
Categoria de função Função de aplicação
Texto de função Last
Nome de ícone ICON_TOTAL_RIGHT
Texto informativo Último Item
****************************Status GUI: ST0004
*Teclas de função:
F2 SELE Selecionar
F5 DESAPR Desapropriar
F6 MALL Marcar
F7 DALL Desmarcar
*Definição das teclas de funções:
Código de função ENTE
Categoria de função Função de aplicação
Texto de função ENTE
Código de função BACK
Categoria de função Função de aplicação
Texto de função Voltar
Código de função ABORT
Categoria de função E Comando exit
Texto de função Encerrar
Código de função MALL
Categoria de função Função de aplicação
Texto de função Marcar
Nome de ícone ICON_SELECT_ALL
Texto informativo Marcar Todos
Código de função DALL
Categoria de função Função de aplicação
Texto de função Desmarcar
Nome de ícone ICON_DESELECT_ALL
Texto informativo Desmarcar Todos
Código de função DESAPR
Categoria de função Função de aplicação
Texto de função Desapropriar
Nome de ícone ICON_TREE
Código de função SELE
Categoria de função Função de aplicação
Texto de função Selecionar
Nome de ícone ICON_SELECT_DETAIL
****Codigo fonte:
*---------------------------------------------------------------------*
* Report /PWS/ZYCIR070
* *
*---------------------------------------------------------------------*
* ProcWork SoftWare
* Produto: Pw.CE
* Módulo : MM
* DESCRIÇÃ0 : CI - Apropriação/Desapropriação - Seleção de Dados
*
* Help Desk: 11-5504-0270
*----------------------------------------------------------------------*
* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA
*----------------------------------------------------------------------*
* Nome Data Descrição
*-----------------------------------------------------------------------
REPORT /pws/zycir070 MESSAGE-ID /pws/zycim.
* Controles de Tela
CONTROLS: tc_exp TYPE TABLEVIEW USING SCREEN '0001',
tc_exp_ap TYPE TABLEVIEW USING SCREEN '0002',
tc_imp_ap TYPE TABLEVIEW USING SCREEN '0002',
tc_log TYPE TABLEVIEW USING SCREEN '0003',
tc_exp_desa TYPE TABLEVIEW USING SCREEN '0004'.
* Tabela transparentes
TABLES: ekko ,
t001 ,
/pws/zycee002,
/pws/zycet002,
/pws/zycit244,
/pws/zycit245,
/pws/zycit279,
/pws/zycie282,
/pws/zycit282,
/pws/zycit321,
/pws/zycit283,
/pws/zycit094,
/pws/zycit100,
/pws/zycie100,
/pws/zycet117,
/pws/zycit327,
*PWS245742 - Início ----------------------------------------------------
/pws/zycit439,
*PWS245742 - Fim -------------------------------------------------------
*PWS243757 - Início ----------------------------------------------------
vbap.
*PWS243757 - Fim -------------------------------------------------------
.
* Tabelas Internas
* Controla exportações selecionadas.
DATA: BEGIN OF it_zycet002 OCCURS 0.
INCLUDE STRUCTURE /pws/zycet002.
DATA: qtdbx LIKE /pws/zycet002-fkimg,
mexp(1) TYPE c .
DATA: END OF it_zycet002.
*Cabeçario de exportação
DATA: BEGIN OF it_zycet001 OCCURS 0.
INCLUDE STRUCTURE /pws/zycet001.
DATA: END OF it_zycet001.
*Itens da DI
DATA: BEGIN OF itab_zycit246 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit246.
DATA: END OF itab_zycit246.
* grupo da exportação.
DATA: BEGIN OF it_zycet002_grp OCCURS 0.
INCLUDE STRUCTURE /pws/zycet002.
DATA: qtdbx LIKE /pws/zycet002-fkimg,
mexp(1) TYPE c ,
grp LIKE mvke-mvgr1 .
DATA: END OF it_zycet002_grp.
*** PWS171210 - Inicio
* Controla exportações com itens estornados
DATA: BEGIN OF it_zycet002_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycet002.
DATA: END OF it_zycet002_aux.
*** PWS171210 - Fim
* Controla as Desapropriações.
DATA: BEGIN OF it_zycet002_desa OCCURS 0.
INCLUDE STRUCTURE /pws/zycet002.
DATA: qtdapr LIKE /pws/zycit283-qtd_apr,
mexp(1) TYPE c.
DATA: END OF it_zycet002_desa.
* Controla Apropriações (Importações)
DATA: BEGIN OF it_apr OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
data: un_ncm like /pws/zycit245-meins,
perc(10).
DATA: END OF it_apr.
DATA: BEGIN OF it_apr_final OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
data: un_ncm like /pws/zycit245-meins,
perc(10).
DATA: END OF it_apr_final.
DATA: BEGIN OF it_apr_final_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
DATA: END OF it_apr_final_aux.
DATA: BEGIN OF it_zycit283 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit283.
DATA: END OF it_zycit283.
DATA: BEGIN OF it_zycit282_des OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
DATA: END OF it_zycit282_des.
DATA: BEGIN OF it_zycit282_est OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
DATA: END OF it_zycit282_est.
DATA: BEGIN OF it_zycit283_des OCCURS 0.
INCLUDE STRUCTURE /pws/zycit283.
DATA: END OF it_zycit283_des.
DATA: BEGIN OF it_zycit283_est OCCURS 0.
INCLUDE STRUCTURE /pws/zycit283.
DATA: END OF it_zycit283_est.
DATA: BEGIN OF it_agrup OCCURS 0.
INCLUDE STRUCTURE mvke.
DATA: END OF it_agrup.
* Fornecedores utilizados
DATA: BEGIN OF itab_fornec OCCURS 0.
DATA: lifnr LIKE /pws/zycie244-lifnr,
nrseqd LIKE /pws/zycie244-nrseqd.
DATA: END OF itab_fornec.
DATA: BEGIN OF it_zycit422 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit422.
DATA: END OF it_zycit422.
DATA: BEGIN OF itab_zycet117 OCCURS 0.
INCLUDE STRUCTURE /pws/zycet117.
DATA: END OF itab_zycet117.
* Tabela de parâmetros de lista técnica de material.
DATA: BEGIN OF it_zycit281 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit281.
DATA: END OF it_zycit281.
* Tabela de Importações Recebidas
DATA: BEGIN OF it_zycit279 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit279.
data: matnr_alt like /pws/zycit279-matnr.
DATA: END OF it_zycit279.
DATA: BEGIN OF it_zycit279_save OCCURS 0.
INCLUDE STRUCTURE /pws/zycit279.
data: matnr_alt like /pws/zycit279-matnr.
DATA: END OF it_zycit279_save.
* Tabela de Insumos alternativos
DATA: BEGIN OF itab_zycit433 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit433.
DATA: END OF itab_zycit433.
* Cabeçalho dos Ato Concessórios
DATA: BEGIN OF it_zycit244 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit244.
DATA: END OF it_zycit244.
* Tabela de Ato Concessórios - Importações
DATA: BEGIN OF it_zycit245 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit245.
DATA: END OF it_zycit245.
* Tabela de Importações Realizadas
DATA: BEGIN OF it_zycit282 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
DATA: END OF it_zycit282.
* Tabela de Ato Concessórios - Exportações
DATA: BEGIN OF it_zycit247 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit247.
DATA: END OF it_zycit247.
DATA: BEGIN OF it_zycit247_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycit247.
DATA: END OF it_zycit247_aux.
DATA: BEGIN OF it_zycit247_save OCCURS 0.
INCLUDE STRUCTURE /pws/zycit247.
DATA: END OF it_zycit247_save.
DATA: itab_stko LIKE stko OCCURS 0 WITH HEADER LINE.
DATA: it_stpox2 LIKE stpox OCCURS 0 WITH HEADER LINE.
DATA: it_matcat LIKE cscmat OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF it_stpox OCCURS 0.
INCLUDE STRUCTURE stpox.
DATA: mngko2 LIKE /pws/zycie240d-mngko.
DATA: END OF it_stpox.
* Tabela de Ato Concessórios - Exportações
DATA: BEGIN OF it_zycit247f OCCURS 0.
INCLUDE STRUCTURE /pws/zycit247.
DATA: END OF it_zycit247f.
* Controla Botões da barra de ferramentas.
DATA: BEGIN OF it_buttons OCCURS 0.
DATA: bname(35) TYPE c.
DATA: END OF it_buttons.
* Controla a exibição do log de processamento.
DATA: BEGIN OF it_log_erro OCCURS 0.
DATA: ltext(135) TYPE c.
DATA: END OF it_log_erro.
* Trata Ordem de Venda.
DATA : BEGIN OF itab_zycee085 OCCURS 10.
INCLUDE STRUCTURE /pws/zycee085.
DATA : END OF itab_zycee085.
DATA : BEGIN OF itab_saida OCCURS 10.
INCLUDE STRUCTURE /pws/zycee085.
DATA : END OF itab_saida.
* Lista tecnica
DATA: BEGIN OF it_materiais OCCURS 0,
matnr LIKE mara-matnr,
werks LIKE marc-werks,
stlan LIKE stpox-stlan,
stlnr LIKE stpo-stlnr,
stlal LIKE stpox-stlal,
capid LIKE tc04-capid.
DATA: END OF it_materiais.
DATA: BEGIN OF i_final OCCURS 0,
insumo LIKE mara-matnr,
produto LIKE stpox-idnrk,
centro LIKE stpox-werks,
ncm LIKE marc-steuc,
qtunit TYPE p DECIMALS 5,
meins LIKE stpox-meins.
DATA: END OF i_final.
DATA: BEGIN OF itab_lista OCCURS 0,
matnr LIKE mara-matnr,
ncm LIKE marc-steuc,
usagem TYPE p DECIMALS 5,
qtd like /pws/zycit282-qtd_mimp,
meins LIKE stpox-meins,
perc(10) .
DATA: END OF itab_lista.
data: itab_lista_aux like itab_lista occurs 0 with header line.
data: itab_lista_f like itab_lista occurs 0 with header line.
data: itab_zycit439 like /pws/zycit439 occurs 0 with header line.
*PWs245742 - Início ----------------------------------------------------
* PERDAS POR MATERIAL X INSUMO
*data: begin of it_zycit439 occurs 0.
* include structure /pws/zycit439.
*data: end of it_zycit439.
*PWS245742 - Fim -------------------------------------------------------
*PWS243757 - Início ----------------------------------------------------
* Documento de vendas: dados de item
data: begin of it_vbap occurs 0,
vbeln like vbap-vbeln,
netpr like vbap-netpr,
end of it_vbap.
*PWS243757 - Fim ------------------------------------------------------
* Work Área
DATA: wa_cols TYPE cxtab_column.
* Declaração de variáveis.
DATA: v_erro(1) TYPE c VALUE 'N' ,
v_errolt(1) TYPE c ,
v_dias type i ,
v_dtforn LIKE sy-datum ,
ok_code LIKE sy-ucomm ,
mexp(1) TYPE c ,
v_ilinhas TYPE i ,
v_mtxt1_0001(40) TYPE c ,
v_mtxt1_0002(40) TYPE c ,
v_ctxt1_0002(40) TYPE c ,
nextline TYPE sy-tabix ,
v_menorpct TYPE p DECIMALS 5 ,
v_pct_com TYPE p DECIMALS 5 ,
rimc1 LIKE indx-srtfd VALUE 'R070PAR1',
v_import(1) TYPE c VALUE 'N' ,
v_campo(35) TYPE c ,
v_valor(35) TYPE c ,
v_linha TYPE i ,
v_pos TYPE i ,
v_idx LIKE sy-tabix ,
v_indic1 LIKE icon-id ,
v_indic2 LIKE icon-id ,
v_indicatu LIKE sy-tabix ,
v_aprov(1) TYPE c VALUE 'N' ,
v_index TYPE sy-tabix ,
v_errolog(135) TYPE c ,
v_qtdbx LIKE /pws/zycet002-fkimg ,
v_exapr ,
v_apcomp(1) TYPE c ,
v_perc(10) TYPE c ,
v_tptrans(1) TYPE c ,
v_un_ncm LIKE /pws/zycit245-meins ,
v_apr LIKE /pws/zycit283-qtd_apr ,
v_saldo_mat TYPE p DECIMALS 3 ,
v_perc_di TYPE p DECIMALS 2 ,
v_saldo_di TYPE p DECIMALS 3 ,
v_qtd_apropriada type p decimals 3 ,
*PWS243757 - Início ----------------------------------------------------
v_valor_imp like /pws/zycit282-imp_s_cob_camb ,
v_exp_camb like /pws/zycit282-exp_c_cob_camb,
v_ebelp like /pws/zycit282-ebelp ,
v_ebelp2 like /pws/zycit282-ebelp ,
v_imp_camb like /pws/zycit282-imp_s_cob_camb,
*PWS243757 - Fim -------------------------------------------------------
*PWS251144 - Início ----------------------------------------------------
v_exit.
*PWS251144 - Fim -------------------------------------------------------
* Seleção de Dados (Tela: Critério de Seleção) -------------------------
selection-screen BEGIN OF block scr1 WITH frame title text-000.
SELECT-OPTIONS: nrseqexp FOR /pws/zycee002-nrseq ,
vbeln_va FOR /pws/zycee002-vbeln_va,
aupos FOR /pws/zycee002-aupos ,
vbeln_vf FOR /pws/zycee002-vbeln_vf,
posnr FOR /pws/zycee002-posnr ,
docnum FOR /pws/zycee002-docnum ,
vbeln_vl FOR /pws/zycee002-vbeln_vl,
posnl FOR /pws/zycee002-posnl ,
eebeln FOR /pws/zycee002-ebeln ,
eebelp FOR /pws/zycee002-ebelp ,
matnr FOR /pws/zycee002-matnr .
SELECTION-SCREEN END OF BLOCK scr1.
* ----------------------------------------------------------------------
INITIALIZATION.
*Authority-check Transação
authority-check object 'S_TCODE' id 'TCD' field sy-tcode.
if sy-subrc ne 0.
message i015 with text-290 sy-tcode.
leave program.
endif.
START-OF-SELECTION.
* Checa o tipo de transação chamada (manual ou automática) para trata-
* mento da apropriação.
CASE sy-tcode.
WHEN '/PWS/ZYCIR254'.
v_tptrans = 'A'.
WHEN '/PWS/ZYCIR254_D'.
v_tptrans = 'D'.
ENDCASE.
CLEAR v_exapr.
* Importa dados das exportações direto do embarque.
IMPORT it_zycet002 FROM MEMORY ID rimc1.
* Caso o relatório seja executado diretamente pelo embarque, efetua a
* apropriação direto sem exigir seleção de dados ou filtro de exporta-
* ções na tela 0001.
IF sy-subrc NE 0.
* Checa se foi preenchido algum valor como parâmetro.
PERFORM check_minimum_selection CHANGING v_erro.
CASE v_erro.
WHEN 'N'.
PERFORM select_data CHANGING v_erro.
CASE v_erro.
WHEN 'N'.
IF v_tptrans NE 'D'.
PERFORM execute_process.
ELSE.
PERFORM execute_process_desa.
ENDIF.
WHEN 'S'.
IF v_exapr IS INITIAL.
MESSAGE s015 WITH text-001.
ELSE.
MESSAGE s015 WITH text-040 text-041.
ENDIF.
ENDCASE.
WHEN 'S'.
MESSAGE s015 WITH text-033 text-034.
ENDCASE.
ELSE.
*** PWS171210 - Inicio
IF NOT it_zycet002[] IS INITIAL.
DELETE it_zycet002 WHERE fksto = 'X'
OR shkzg = 'X'.
ENDIF.
*** PWS171210 - Fim
*** 07/07/04 - Inicio.
* Se estiver executando a apropriação remove itens já apropriados.
IF NOT it_zycet002[] IS INITIAL AND v_tptrans NE 'D'.
LOOP AT it_zycet002.
SELECT SINGLE * FROM /pws/zycit282
WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
* and vbeln_vf = it_zycet002-vbeln_vf
* and posnr = it_zycet002-posnr
* and docnum = it_zycet002-docnum
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
IF sy-subrc EQ 0 .
v_exapr = 'S'.
DELETE it_zycet002.
ENDIF.
ENDLOOP.
IF it_zycet002[] IS INITIAL.
IF v_exapr IS INITIAL.
MESSAGE s015 WITH text-001.
ELSE.
MESSAGE s015 WITH text-040 text-041.
ENDIF.
ELSE.
* Trata Ordem de Venda, Devoluções, Etc.
PERFORM trata_ordem_venda.
* Ordena a tabela interna de exportações.
SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.
* Executa a apropriação das exportações.
PERFORM run_appropriation_exportation.
v_import = 'S'.
* Posiciona a tabela interna de exportações vinda do embarque no
* registro hum com 'X'.
MOVE 1 TO v_indicatu.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
ENDIF.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
* Chama a tela de apropriações processadas.
CALL SCREEN 0002.
* Limpa endereço de memória com os dados da exportação.
FREE MEMORY ID rimc1.
ENDIF.
ENDIF.
*** 07/07/04 - Fim.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form select_data
*&---------------------------------------------------------------------*
FORM select_data CHANGING v_erro.
* itens já apropriados
DATA: it_zycit282_temp LIKE /pws/zycit282.
* Seleciona dados das exportações.
CLEAR: it_zycet002 ,
it_zycet002_aux.
REFRESH: it_zycet002 ,
it_zycet002_aux.
SELECT * FROM /pws/zycet002 INTO TABLE it_zycet002
WHERE nrseq IN nrseqexp
AND vbeln_va IN vbeln_va
AND aupos IN aupos
* AND vbeln_vf IN vbeln_vf
* AND posnr IN posnr
* AND docnum IN docnum
AND vbeln_vl IN vbeln_vl
AND posnl IN posnl
AND ebeln IN eebeln
AND ebelp IN eebelp
AND matnr IN matnr
AND fkimg > 0
*** PWS171210 - Inicio
AND shkzg NE 'X'
AND fksto NE 'X'.
*** PWS171210 - Fim
IF sy-subrc NE 0.
v_erro = 'S'.
ENDIF.
*** 07/07/04 - Inicio.
* Se estiver executando a apropriação remove itens já apropriados.
IF NOT it_zycet002[] IS INITIAL AND v_tptrans NE 'D'.
LOOP AT it_zycet002.
SELECT SINGLE * FROM /pws/zycit282 INTO it_zycit282_temp
WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
IF sy-subrc EQ 0 .
v_exapr = 'S'.
DELETE it_zycet002.
ENDIF.
ENDLOOP.
IF it_zycet002[] IS INITIAL.
v_erro = 'S'.
ENDIF.
ENDIF.
*** 07/07/04 - Fim.
ENDFORM. " select_data
*&---------------------------------------------------------------------*
*& Form executa_processo
*&---------------------------------------------------------------------*
FORM execute_process.
* Trata Ordem de Venda, Devoluções, Etc.
PERFORM trata_ordem_venda.
* Ordena a tabela interna de exportações.
SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.
* Posiciona a table control com as exportações na primeira linha.
tc_exp-top_line = 1.
* Chama a tela com as exportações selecionadas para executar a apropria-
* ção.
CALL SCREEN 0001.
ENDFORM. " execute_process
INCLUDE /PWS/ZYCIR254I01.
*INCLUDE /pws/zycir070i01.
INCLUDE /PWS/ZYCIR254F01.
*INCLUDE /pws/zycir070f01.
INCLUDE /PWS/ZYCIR254O01.
*INCLUDE /pws/zycir070o01.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PROG /PWS/ZYCIR254F01
*----------------------------------------------------------------------*
***INCLUDE /PWS/ZYCIR070F01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form execute_back_button *
*&---------------------------------------------------------------------*
FORM execute_back_button.
LEAVE TO SCREEN 0.
ENDFORM. " execute_back_button
*&---------------------------------------------------------------------*
*& Form execute_mall_button *
*&---------------------------------------------------------------------*
FORM execute_mall_button.
LOOP AT it_zycet002.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002.
ENDLOOP.
ENDFORM. " execute_mall_button
*&---------------------------------------------------------------------*
*& Form execute_dall_button *
*&---------------------------------------------------------------------*
FORM execute_dall_button.
LOOP AT it_zycet002.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
ENDFORM. " execute_dall_button
*&---------------------------------------------------------------------*
*& Form blaettern *
*&---------------------------------------------------------------------*
FORM blaettern USING p_tccurr p_tclins p_itlin p_okcode
CHANGING nextline.
DATA: b_overlapping(1) TYPE c VALUE 'X'.
IF p_itlin EQ 0.
EXIT.
ENDIF.
CALL FUNCTION 'SCROLLING_IN_TABLE'
EXPORTING
entry_to = p_itlin "Nº de linha da tabela
loops = p_tclins "Número de linha da TC na tela
ok_code = p_okcode
entry_act = p_tccurr
last_page_full = ' '
overlapping = b_overlapping
IMPORTING
entry_new = nextline.
ENDFORM. " blaettern
*&---------------------------------------------------------------------*
*& Form execute_aprop_button *
*&---------------------------------------------------------------------*
FORM execute_aprop_button.
* Checa se foi marcado uma linha da table control.
* Caso tenha alguma exportação marcada, prossegue com a apro-
* priação.
READ TABLE it_zycet002 WITH KEY mexp = 'X'.
IF sy-subrc EQ 0.
* Elimina as exportações não selecionadas.
DELETE it_zycet002 WHERE mexp NE 'X'.
* Retira o 'X' da marcação dos registros de exportação.
LOOP AT it_zycet002.
IF sy-tabix EQ 1.
MOVE sy-tabix TO v_indicatu.
it_zycet002-mexp = 'X'.
ELSE.
it_zycet002-mexp = ' '.
ENDIF.
MODIFY it_zycet002.
ENDLOOP.
* Ordena a tabela interna de exportações.
SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.
* Executa a apropriação das exportações.
PERFORM run_appropriation_exportation.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
* Chama a tela de apropriações processadas.
CALL SCREEN 0002.
ELSE.
MESSAGE s015 WITH text-002 text-003.
ENDIF.
ENDFORM. " execute_aprop_button
*&---------------------------------------------------------------------*
*& Form run_appropriation_exportation *
*&---------------------------------------------------------------------*
FORM run_appropriation_exportation.
DATA: v_ncm_temp(5),
v_ncm_b LIKE it_zycet002_grp-steuc.
SELECT SINGLE * FROM /pws/zycit321.
REFRESH itab_zycit439.
SELECT * FROM /pws/zycit439 INTO TABLE itab_zycit439
WHERE dtde <= sy-datum AND
dtate >= sy-datum.
IF NOT it_zycet002[] IS INITIAL.
CLEAR it_zycet001. REFRESH it_zycet001.
SELECT * FROM /pws/zycet001 INTO TABLE it_zycet001
FOR ALL ENTRIES IN it_zycet002
WHERE nrseq EQ it_zycet002-nrseq.
* Seleciona na Tabela de parâmetros a lista técnica de materiais de
* cada exportação.
CLEAR it_zycit281.
REFRESH it_zycit281.
SELECT * FROM /pws/zycit281 INTO TABLE it_zycit281
FOR ALL ENTRIES IN it_zycet002
WHERE matnr EQ it_zycet002-matnr.
*Seleciona Atos Comuns.
* Seleciona os Atos Concessórios com saldo para efetuar as
* apropriações.
CLEAR it_zycit247. REFRESH it_zycit247.
SELECT * FROM /pws/zycit247 INTO TABLE it_zycit247
FOR ALL ENTRIES IN it_zycet002
* WHERE codmat EQ it_zycet002-matnr
WHERE j_1bnbm EQ it_zycet002-steuc
AND esgotado EQ space.
IF sy-subrc EQ 0.
* Seleciona o cabeçalho dos Atos Concessórios.
CLEAR it_zycit244. REFRESH it_zycit244.
SELECT * FROM /pws/zycit244 INTO TABLE it_zycit244
FOR ALL ENTRIES IN it_zycit247
WHERE nrseqd EQ it_zycit247-nrseqd
AND status EQ 'D'
AND ( tipo EQ 'C' OR tipo EQ 'F' )
AND vcto_fn >= sy-datum
AND dtatoc NE '00000000'
AND modalidade EQ 'S'.
* Seleciona os componentes importados dos Atos Concessórios.
CLEAR it_zycit245. REFRESH it_zycit245.
SELECT * FROM /pws/zycit245 INTO TABLE it_zycit245
FOR ALL ENTRIES IN it_zycit247
WHERE nrseqd EQ it_zycit247-nrseqd.
* Seleciona os componentes importados recebidos efetivamente.
CLEAR it_zycit279. REFRESH it_zycit279.
SELECT * FROM /pws/zycit279 INTO TABLE it_zycit279
FOR ALL ENTRIES IN it_zycit247
WHERE nrseqd EQ it_zycit247-nrseqd
AND esgotado EQ space.
* Seleciona dados do cabeçalho da lista técnica, para busca da
* quantidade base do material exportado.
CLEAR itab_stko. REFRESH itab_stko.
SELECT * FROM stko INTO TABLE itab_stko
FOR ALL ENTRIES IN it_zycit247
WHERE stlty EQ 'M'
AND stlnr EQ it_zycit247-stlnr
AND stlal EQ it_zycit247-stlal.
ENDIF.
* Ordena tabela interna de materiais.
PERFORM sort_records_zycit247.
* Trava os registros de recebimento.
PERFORM lock_record_receb.
* Trava os registros do ato concessório.
PERFORM lock_record_ato.
* Ordena a tabela interna de recebimentos (importações)
SORT it_zycit279 BY nrseq ebeln ebelp matnr.
LOOP AT it_zycet002.
IF t001-bukrs NE it_zycet002-bukrs.
SELECT SINGLE * FROM t001 WHERE bukrs EQ it_zycet002-bukrs.
ENDIF.
* READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr
* werks = it_zycet002-werks.
PERFORM converte_um_base USING it_zycet002-matnr
CHANGING it_zycet002-vrkme
it_zycet002-fkimg.
IF it_zycet002-fkimg IS INITIAL.
CONTINUE.
ENDIF.
*Seleciona lista tecnica para explosão
READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr
werks = it_zycet002-werks.
IF sy-subrc NE 0.
*Se o material não possui lista para o centro informado busca o centro
* produtor para selecionar a lista tecnica.
SELECT SINGLE a~wrk02
FROM ( t460a AS a INNER JOIN marc AS b ON
a~werks EQ b~werks AND
a~sobsl EQ b~sobsl AND
a~beskz EQ b~beskz )
INTO it_zycet002-werks
WHERE b~matnr EQ it_zycet002-matnr
AND b~werks EQ it_zycet002-werks
AND a~beskz EQ 'F'.
IF sy-subrc EQ 0.
READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr
werks = it_zycet002-werks.
ENDIF.
ENDIF.
IF sy-subrc EQ 0.
* Puxa lista técnica de materiais.
CLEAR: it_stpox, it_stpox2, it_matcat.
REFRESH: it_stpox, it_stpox2, it_matcat. v_errolt = 'N'.
PERFORM get_bom_of_materials TABLES it_stpox2
it_matcat
USING it_zycit281-matnr
it_zycit281-capid
it_zycit281-werks
it_zycit281-stlan
it_zycit281-stlnr
it_zycit281-stlal
CHANGING v_errolt.
IF v_errolt EQ 'N'.
* Trata recursividade dos componentes.
PERFORM collect_materials TABLES it_stpox it_stpox2 it_matcat.
* Monta tabela com os insumos e quantidades para a apropriação.
REFRESH itab_lista. CLEAR itab_lista.
LOOP AT i_final.
itab_lista-matnr = i_final-insumo.
itab_lista-usagem = i_final-qtunit.
itab_lista-ncm = i_final-ncm.
itab_lista-meins = i_final-meins.
itab_lista-qtd = itab_lista-usagem * it_zycet002-fkimg.
APPEND itab_lista.
ENDLOOP.
* Seleciona data de remessa.
SELECT SINGLE bldat FROM likp INTO v_dtforn
WHERE vbeln EQ it_zycet002-vbeln_vl.
* Apropria o material vigente.
PERFORM appropriate_current_record.
ELSE.
* Trata log erro (Lista técnica materiais não processada).
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-015 it_zycet002-matnr
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ELSE.
* Trata log erro (Não há lista técnica de mat. parametrizada).
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-016 it_zycet002-matnr
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ENDLOOP.
ENDIF.
* Remove as mensagem repedidas no Log de Erros.
SORT it_log_erro BY ltext.
DELETE ADJACENT DUPLICATES FROM it_log_erro .
ENDFORM. " run_appropriation_exportation
*&---------------------------------------------------------------------*
*& Form check_buttons_screen *
*&---------------------------------------------------------------------*
FORM check_buttons_screen.
REFRESH it_buttons.
CASE sy-dynnr.
WHEN '0001'.
CLEAR it_buttons.
it_buttons-bname = 'APROV'. "Oculta Botão Aprovar Apropriação.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'FIRST'. "Oculta Botão Primeiro Item.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'PRIOR'. "Oculta Botão Item Anterior.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'NEXT'. "Oculta Botão Próximo Item.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'LAST'. "Oculta Botão Último Item.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'LOGER'. "Oculta Botão Log de Processamento.
APPEND it_buttons.
WHEN '0002'.
CLEAR it_buttons.
it_buttons-bname = 'MALL'. "Oculta Botão Marcar Todos.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'DALL'. "Oculta Botão Desmarcar Todos.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'APROP'. "Oculta Botão de Apropriação.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'P++'. "Oculta Botão de Apropriação.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'P+'. "Oculta Botão de Apropriação.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'P-'. "Oculta Botão de Apropriação.
APPEND it_buttons.
CLEAR it_buttons.
it_buttons-bname = 'P--'. "Oculta Botão de Apropriação.
APPEND it_buttons.
IF it_log_erro[] IS INITIAL.
CLEAR it_buttons.
it_buttons-bname = 'LOGER'. "Oculta Botão Log de Processamento.
APPEND it_buttons.
ENDIF.
IF it_apr_final[] IS INITIAL.
CLEAR it_buttons.
it_buttons-bname = 'APROV'. "Oculta Botão de Aprovação.
APPEND it_buttons.
ENDIF.
ENDCASE.
ENDFORM. " check_buttons_screen
*&---------------------------------------------------------------------*
*& Form execute_back_button2 *
*&---------------------------------------------------------------------*
FORM execute_back_button2.
* Desbloqueia os registros de recebimento.
PERFORM unlock_record_receb.
* Desbloqueia os registros do ato concessório.
PERFORM unlock_record_ato.
*** INICIO MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010
*** Caso tenha sido execuado ela transação de embarque de Exportação
*** voltar para a tela de Exportação.
IF sy-tcode EQ '/PWS/ZYCE003_A'.
v_import = 'E'.
ENDIF.
*** FIM MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010
* Se o relatório foi executado através do embarque exportação,
* volta direto ao embarque exportação. Se foi executado direto através
* da transação, retorna a tela de critério de seleção.
CASE v_import.
WHEN 'S'.
LEAVE PROGRAM.
WHEN 'N'.
LEAVE TO TRANSACTION sy-tcode.
*** INICIO MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010
WHEN 'E'.
LEAVE TO TRANSACTION sy-tcode AND SKIP FIRST SCREEN.
*** FIM MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010
ENDCASE.
ENDFORM. " execute_back_button2
*&---------------------------------------------------------------------*
*& Form execute_aprov_button2 *
*&---------------------------------------------------------------------*
FORM execute_aprov_button2.
DATA: v_confirm(1) TYPE c.
IF it_apr_final[] IS INITIAL.
MESSAGE s015 WITH text-012 text-013.
EXIT.
ENDIF.
IF v_aprov EQ 'S'.
MESSAGE s015 WITH text-010.
ELSE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = text-006
* DIAGNOSE_OBJECT = ' '
text_question = text-007
text_button_1 = text-008
* ICON_BUTTON_1 = ' '
text_button_2 = text-009
* ICON_BUTTON_2 = ' '
default_button = '1'
display_cancel_button = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
IMPORTING
answer = v_confirm
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF v_confirm EQ '1'.
PERFORM save_appropriations.
ENDIF.
ENDIF.
ENDFORM. " execute_aprov_button2
*&---------------------------------------------------------------------*
*& Form execute_first_button2 *
*&---------------------------------------------------------------------*
FORM execute_first_button2.
MOVE 1 TO v_indicatu.
tc_exp_ap-top_line = v_indicatu.
LOOP AT it_zycet002 WHERE mexp = 'X'.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
ENDIF.
ENDFORM. " execute_first_button2
*&---------------------------------------------------------------------*
*& Form execute_prior_button2 *
*&---------------------------------------------------------------------*
FORM execute_prior_button2.
IF v_indicatu > 1.
v_indicatu = v_indicatu - 1.
ENDIF.
tc_exp_ap-top_line = v_indicatu.
LOOP AT it_zycet002 WHERE mexp = 'X'.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
ENDIF.
ENDFORM. " execute_prior_button2
*&---------------------------------------------------------------------*
*& Form execute_next_button2
*&---------------------------------------------------------------------*
FORM execute_next_button2.
DESCRIBE TABLE it_zycet002 LINES v_ilinhas.
IF v_indicatu < v_ilinhas.
v_indicatu = v_indicatu + 1.
ENDIF.
IF v_indicatu > 4.
IF v_indicatu NE tc_exp_ap-top_line.
tc_exp_ap-top_line = tc_exp_ap-top_line + 1.
ENDIF.
ENDIF.
LOOP AT it_zycet002 WHERE mexp = 'X'.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
ENDIF.
ENDFORM. " execute_next_button2
*&---------------------------------------------------------------------*
*& Form execute_last_button2 *
*&---------------------------------------------------------------------*
FORM execute_last_button2.
DESCRIBE TABLE it_zycet002 LINES v_ilinhas.
v_indicatu = v_ilinhas.
tc_exp_ap-top_line = v_indicatu.
LOOP AT it_zycet002 WHERE mexp = 'X'.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
* Posiciona as importações de acordo com os registros de exportações.
PERFORM locate_record_appropriation.
ENDIF.
ENDFORM. " execute_last_button2
*&---------------------------------------------------------------------*
*& Form execute_sele_button2 *
*&---------------------------------------------------------------------*
FORM execute_sele_button2.
CLEAR: v_campo, v_valor, v_linha.
GET CURSOR FIELD v_campo VALUE v_valor LINE v_linha.
CASE v_campo.
WHEN 'V_INDIC1'.
IF v_linha > 0.
v_pos = tc_exp_ap-top_line + v_linha - 1.
MOVE v_pos TO v_indicatu.
LOOP AT it_zycet002 WHERE mexp EQ 'X'.
it_zycet002-mexp = ' '.
MODIFY it_zycet002.
ENDLOOP.
READ TABLE it_zycet002 INDEX v_indicatu.
IF sy-subrc EQ 0.
it_zycet002-mexp = 'X'.
MODIFY it_zycet002 INDEX v_indicatu.
* Posiciona as importações de acordo com os registros de
* exportações.
PERFORM locate_record_appropriation.
ENDIF.
ENDIF.
ENDCASE.
ENDFORM. " execute_sele_button2
*&---------------------------------------------------------------------*
*& Form locate_record_appropriation *
*&---------------------------------------------------------------------*
FORM locate_record_appropriation.
* Posiciona a tabela de importações de acordo com o registro
* selecionado nas exportações.
CLEAR it_apr. REFRESH it_apr.
LOOP AT it_zycet002 WHERE mexp EQ 'X'.
LOOP AT it_apr_final WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vf = it_zycet002-vbeln_vf
AND posnr = it_zycet002-posnr
AND docnum = it_zycet002-docnum
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
MOVE-CORRESPONDING it_apr_final TO it_apr.
APPEND it_apr.
ENDLOOP.
ENDLOOP.
ENDFORM. " locate_record_appropriation
*&---------------------------------------------------------------------*
*& Form get_bom_of_materials *
*&---------------------------------------------------------------------*
* Objetivo: Pega lista tecnica do material
*&---------------------------------------------------------------------*
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
*&---------------------------------------------------------------------*
* --> p_matnr
* --> p_capid
* --> p_werks
* --> p_stlan
* --> p_stlnr
* --> p_stlal
* <-- p_erro
* <-> p_list
* <-> p_list2
*&---------------------------------------------------------------------*
* Chamado Data Descrição
*&---------------------------------------------------------------------*
* 230434 04/05/2005 Iclucão da parte para gravar na tabela
* /pws/zycit327
*&---------------------------------------------------------------------*
FORM get_bom_of_materials TABLES p_list LIKE it_stpox2[]
p_list2 LIKE it_matcat[]
USING p_matnr
p_capid
p_werks
p_stlan
p_stlnr
p_stlal
CHANGING p_erro.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
capid = p_capid
datuv = sy-datum
mktls = 'X'
mehrs = 'X'
mtnrv = p_matnr
stlal = p_stlal
stlan = p_stlan
svwvo = 'X'
werks = p_werks
vrsvo = 'X'
TABLES
stb = p_list
matcat = p_list2
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF sy-subrc NE 0.
p_erro = 'S'.
ENDIF.
* Chamado 230434 - Inicio
DATA: v_datum LIKE sy-datum,
v_trans(20) TYPE c ,
idmemory1 LIKE indx-srtfd VALUE 'ITMAT' ,
idmemory2 LIKE indx-srtfd VALUE 'ITINS' .
DATA: BEGIN OF itab_zycit327 OCCURS 0.
INCLUDE STRUCTURE /pws/zycit327.
DATA: END OF itab_zycit327.
* Seleciona o nome da transação (REPORT) de explosão de lista técnica.
SELECT SINGLE transacao FROM /pws/zycet079 INTO v_trans
WHERE codmod EQ 'D'
AND func EQ 'LTM'.
IF sy-subrc NE 0 OR v_trans IS INITIAL.
MESSAGE i015 WITH text-052 text-053.
LEAVE PROGRAM.
EXIT.
ENDIF.
CLEAR i_final. REFRESH i_final.
CLEAR it_materiais. REFRESH it_materiais.
it_materiais-matnr = p_matnr.
it_materiais-werks = p_werks.
it_materiais-stlan = p_stlan.
it_materiais-stlnr = p_stlnr.
it_materiais-stlal = p_stlal.
it_materiais-capid = p_capid.
APPEND it_materiais.
* Exporta a tabela com o material a ser explodida a lista técnica.
EXPORT it_materiais TO MEMORY ID idmemory1.
* Chama programa de explosão de lista técnica.
SUBMIT (v_trans) AND RETURN.
* Importa a tabela final com os insumos explodidos.
IMPORT i_final FROM MEMORY ID idmemory2.
IF sy-subrc NE 0 OR i_final[] IS INITIAL.
p_erro = 'S'.
ELSE.
* Tratamento de laudo técnico
SELECT * FROM /pws/zycit327 INTO TABLE itab_zycit327
FOR ALL ENTRIES IN i_final
WHERE produto EQ i_final-produto
AND centro EQ i_final-centro.
LOOP AT i_final.
READ TABLE itab_zycit327 WITH KEY produto = i_final-produto
insumo = i_final-insumo
centro = i_final-centro
usagem = i_final-qtunit.
READ TABLE p_list WITH KEY idnrk = i_final-insumo.
IF sy-subrc EQ 0.
IF sy-datum < itab_zycit327-data_de OR
sy-datum > itab_zycit327-data_ate.
MOVE: i_final-produto TO /pws/zycit327-produto,
i_final-centro TO /pws/zycit327-centro,
i_final-insumo TO /pws/zycit327-insumo,
i_final-qtunit TO /pws/zycit327-usagem,
i_final-meins TO /pws/zycit327-meins,
* sy-datum TO /pws/zycit327-data_de,
p_list-datuv TO /pws/zycit327-data_de,
* '99991231' TO /pws/zycit327-data_ate.
p_list-datub TO /pws/zycit327-data_ate.
MODIFY /pws/zycit327 FROM /pws/zycit327.
ENDIF.
ELSE.
READ TABLE itab_zycit327 WITH KEY produto = i_final-produto
insumo = i_final-insumo
centro = i_final-centro.
IF sy-subrc EQ 0.
MOVE: i_final-produto TO /pws/zycit327-produto ,
i_final-centro TO /pws/zycit327-centro ,
i_final-insumo TO /pws/zycit327-insumo ,
i_final-qtunit TO /pws/zycit327-usagem ,
i_final-meins TO /pws/zycit327-meins ,
* sy-datum TO /pws/zycit327-data_de,
p_list-datuv TO /pws/zycit327-data_de,
* '99991231' TO /pws/zycit327-data_ate.
p_list-datub TO /pws/zycit327-data_ate.
MODIFY /pws/zycit327 FROM /pws/zycit327.
CLEAR v_datum.
v_datum = sy-datum - 1.
MOVE v_datum TO itab_zycit327-data_ate.
MODIFY /pws/zycit327 FROM itab_zycit327.
ELSE.
MOVE: i_final-produto TO /pws/zycit327-produto ,
i_final-centro TO /pws/zycit327-centro ,
i_final-insumo TO /pws/zycit327-insumo ,
i_final-qtunit TO /pws/zycit327-usagem ,
i_final-meins TO /pws/zycit327-meins ,
* sy-datum TO /pws/zycit327-data_de,
p_list-datuv TO /pws/zycit327-data_de,
* '99991231' TO /pws/zycit327-data_ate.
p_list-datub TO /pws/zycit327-data_ate.
MODIFY /pws/zycit327 FROM /pws/zycit327.
ENDIF.
ENDIF.
ENDLOOP.
LOOP AT itab_zycit327.
READ TABLE i_final WITH KEY produto = itab_zycit327-produto
insumo = itab_zycit327-insumo
centro = itab_zycit327-centro
qtunit = itab_zycit327-usagem.
IF sy-subrc NE 0.
CLEAR v_datum.
v_datum = sy-datum - 1.
MOVE: v_datum TO itab_zycit327-data_ate.
MODIFY /pws/zycit327 FROM itab_zycit327.
ENDIF.
ENDLOOP.
* p_list[] = i_final[].
ENDIF.
* Limpa o endereço de memória e seu conteúdo.
FREE MEMORY ID idmemory2.
* Chamado 230434 - Fim
ENDFORM. " get_bom_of_materials
*&---------------------------------------------------------------------*
*& Form appropriate_current_record *
*&---------------------------------------------------------------------*
FORM appropriate_current_record.
DATA: v_apmat(1) TYPE c ,
v_diasv TYPE /pws/zycit321-dia_ant ,
v_qtdaprop LIKE /pws/zycet002-fkimg ,
v_qtdbase LIKE itab_stko-bmeng,
v_error(1) TYPE c .
v_apmat = 'N'.
*** Inicio Modificação - Victor Neves 02/06/2004 - F6DK906822
*** Ordena para pegar apartir do ato concessório mais antigo.
SORT it_zycit247 BY nrseqd.
*** Fim Modificação - Victor Neves 02/06/2004 - F6DK906822
CLEAR: it_zycet001, v_pct_com.
READ TABLE it_zycet001 WITH KEY nrseq = it_zycet002-nrseq.
IF it_zycet001-dtprev IS INITIAL.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-075 it_zycet002-nrseq text-077
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
EXIT.
ENDIF.
REFRESH itab_lista_f.
itab_lista_f[] = itab_lista[].
* LOOP AT it_zycit247 WHERE codmat EQ it_zycet002-matnr
LOOP AT it_zycit247 WHERE j_1bnbm EQ it_zycet002-steuc
AND esgotado EQ ' '
AND werks EQ it_zycet002-werks.
READ TABLE itab_stko WITH KEY stlnr = it_zycit247-stlnr
stlal = it_zycit247-stlal.
IF sy-subrc NE 0.
v_qtdbase = 1.
ELSE.
v_qtdbase = itab_stko-bmeng.
ENDIF.
CLEAR it_zycit244.
READ TABLE it_zycit244 WITH KEY nrseqd = it_zycit247-nrseqd.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
* Verifica dias de antecedencia ao vencimento do ato
IF it_zycit244-vcto_vg IS INITIAL.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-031 it_zycit244-nrseqd text-076
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
CONTINUE.
ENDIF.
v_diasv = it_zycit244-vcto_vg - it_zycet001-dtprev.
IF v_diasv < /pws/zycit321-dia_ant.
CONTINUE.
ENDIF.
v_pct_com = v_qtdaprop / it_zycet002-fkimg .
IF v_qtdaprop >= it_zycet002-fkimg.
EXIT.
ENDIF.
v_apmat = 'S'.
v_error = 'N'.
* Se o tipo de ato concessório não for genérico, executa uma rotina
* de apropriação não genérica, senão, executa uma rotina específica
* para genérico.
IF it_zycit244-tipo NE 'G'.
PERFORM appropriate_tng CHANGING v_qtdaprop v_qtdbase v_error.
ELSE.
PERFORM appropriate_tg CHANGING v_qtdaprop v_qtdbase v_error.
ENDIF.
* IF NOT v_apcomp IS INITIAL.
* EXIT.
* ENDIF.
IF v_error EQ 'S'.
CONTINUE.
ENDIF.
ENDLOOP.
REFRESH: itab_lista.
* IF v_apcomp IS INITIAL.
itab_lista[] = itab_lista_f[].
* ENDIF.
*****************************************
IF NOT itab_lista_f[] IS INITIAL.
IF /pws/zycit321-apr_gen EQ 'G'.
LOOP AT itab_lista_f.
itab_lista_f-qtd = itab_lista_f-usagem *
( it_zycet002-fkimg * v_pct_com ).
MODIFY itab_lista_f.
ENDLOOP.
ELSE.
LOOP AT itab_lista_f.
itab_lista_f-qtd = itab_lista_f-usagem * it_zycet002-fkimg.
MODIFY itab_lista_f.
ENDLOOP.
ENDIF.
REFRESH itab_lista_aux.
itab_lista_aux[] = itab_lista_f[].
REFRESH: itab_fornec.
LOOP AT it_zycit247f WHERE j_1bnbm EQ it_zycet002-steuc
AND esgotado EQ ' '
AND werks EQ it_zycet002-werks.
CLEAR it_zycit244.
READ TABLE it_zycit244 WITH KEY nrseqd = it_zycit247f-nrseqd.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
READ TABLE itab_fornec WITH KEY lifnr = it_zycit244-lifnr.
IF sy-subrc EQ 0 AND
itab_fornec-nrseqd NE it_zycit244-nrseqd.
CONTINUE.
ENDIF.
* Verifica dias de antecedencia ao vencimento do ato
IF it_zycit244-vcto_vg IS INITIAL.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-031 it_zycit244-nrseqd text-076
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
CONTINUE.
ENDIF.
v_diasv = it_zycit244-vcto_vg - it_zycet001-dtprev.
IF v_diasv < /pws/zycit321-dia_ant.
CONTINUE.
ENDIF.
PERFORM apr_tf .
DELETE itab_lista_aux WHERE qtd <= 0.
* Verifica se ainda existem insumos a serem apropriados
IF itab_lista_aux[] IS INITIAL.
EXIT.
ENDIF.
* v_menorpct
ENDLOOP.
ENDIF.
****************************************************
* Atualiza Log de Erro (Não há Atos Concessórios com Saldo).
IF v_apmat = 'N'.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-021 it_zycet002-matnr '/' it_zycet002-werks
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
IF v_apmat = 'N'.
CLEAR v_qtdaprop.
ENDIF.
MOVE v_qtdaprop TO it_zycet002-qtdbx.
MODIFY it_zycet002.
ENDFORM. " appropriate_current_record
*&---------------------------------------------------------------------*
*& Form get_pct *
*&---------------------------------------------------------------------*
FORM get_pct USING p_qtdtmp p_qtdebase CHANGING p_menorpct.
DATA: p_pct_aux TYPE p DECIMALS 5 ,
v_qtdtot LIKE /pws/zycee002-fkimg,
v_qttmp LIKE /pws/zycee002-fkimg,
v_tabix LIKE sy-tabix,
v_perda LIKE /pws/zycie245-perda,
v_qtd_perda LIKE /pws/zycee002-fkimg,
v_tabix_245 LIKE sy-tabix,
c_pct_dec TYPE p DECIMALS 2.
CLEAR it_zycit279.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr_alt NE space.
LOOP AT itab_lista.
REFRESH itab_zycit433.
SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433
WHERE matnr EQ itab_lista-matnr.
itab_zycit433-matnr = itab_lista-matnr.
itab_zycit433-matnr_alt = itab_lista-matnr.
APPEND itab_zycit433.
LOOP AT itab_zycit433.
it_zycit279-matnr_alt = itab_zycit433-matnr.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr EQ itab_zycit433-matnr_alt
AND nrseqd EQ it_zycit247-nrseqd.
ENDLOOP.
**************************
CLEAR: v_qtdtot, v_qtd_perda, v_perda, it_zycit245.
LOOP AT it_zycit279 WHERE matnr_alt EQ itab_lista-matnr
AND esgotado = space
AND nrseqd = it_zycit247-nrseqd .
* v_dtforn
CLEAR: v_perda, v_dias.
v_dias = v_dtforn - it_zycit279-dtnf.
IF it_zycit281-nrdprod > v_dias.
CONTINUE.
ENDIF.
READ TABLE itab_zycit439 WITH KEY
insumo = it_zycit279-matnr
matnr = it_zycet002-matnr.
IF sy-subrc NE 0 OR
itab_zycit439-perda_e IS INITIAL.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_zycit247-nrseqd
* codcomp = it_zycit279-matnr.
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
v_perda = it_zycit245-perda_e.
ENDIF.
ELSE.
v_perda = itab_zycit439-perda_e.
ENDIF.
v_qtd_perda = ( it_zycit279-slqtde * v_perda ) /
( 100 - v_perda ).
v_qtdtot = v_qtdtot + it_zycit279-slqtde + v_qtd_perda.
ENDLOOP.
p_pct_aux = ( v_qtdtot / itab_lista-qtd ) * 100.
* Menor percentual
IF /pws/zycit321-percent EQ 'N'.
IF ( p_menorpct IS INITIAL
OR p_menorpct > p_pct_aux ) AND
NOT p_pct_aux IS INITIAL.
p_menorpct = p_pct_aux.
ENDIF.
* Maior percentual
ELSEIF /pws/zycit321-percent EQ 'M'.
IF p_menorpct IS INITIAL
OR p_menorpct < p_pct_aux.
p_menorpct = p_pct_aux.
ENDIF.
ENDIF.
IF p_pct_aux > 100.
p_pct_aux = 100.
ENDIF.
c_pct_dec = p_pct_aux.
MOVE c_pct_dec TO itab_lista-perc.
CONCATENATE itab_lista-perc '%' INTO itab_lista-perc.
MODIFY itab_lista.
ENDLOOP.
IF p_menorpct > 100.
p_menorpct = 100.
ENDIF.
ENDFORM. " get_pct
*&---------------------------------------------------------------------*
*& Form verify_receive_all_components *
*&---------------------------------------------------------------------*
FORM verify_receive_all_components CHANGING p_allcomp p_totit.
* Verifica se todos os componentes do ato concessório atual foram
* recebidos efetivamente.
p_allcomp = 'S'.
LOOP AT it_zycit245 WHERE nrseqd EQ it_zycit247-nrseqd.
READ TABLE it_zycit279 WITH KEY matnr = it_zycit245-codcomp
nrseqd = it_zycit245-nrseqd.
IF sy-subrc NE 0.
p_allcomp = 'N'.
EXIT.
ENDIF.
* Apura quantos itens têem que ser apropriados no total.
p_totit = p_totit + 1.
ENDLOOP.
ENDFORM. " verify_receive_all_components
*&---------------------------------------------------------------------*
*& Form save_appropriations *
*&---------------------------------------------------------------------*
FORM save_appropriations.
* Elimina as exportações não apropriadas.
LOOP AT it_zycet002.
v_index = sy-tabix.
READ TABLE it_apr_final WITH KEY nrseqexp = it_zycet002-nrseq
vbeln_va = it_zycet002-vbeln_va
aupos = it_zycet002-aupos
vbeln_vf = it_zycet002-vbeln_vf
posnr = it_zycet002-posnr
docnum = it_zycet002-docnum
vbeln_vl = it_zycet002-vbeln_vl
posnl = it_zycet002-posnl
eebeln = it_zycet002-ebeln
eebelp = it_zycet002-ebelp.
IF sy-subrc NE 0.
DELETE it_zycet002 INDEX v_index.
UPDATE /pws/zycet002 SET staprop = 'E'
WHERE nrseq = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl.
ELSE.
UPDATE /pws/zycet002 SET staprop = 'A'
WHERE nrseq = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl.
ENDIF.
ENDLOOP.
MODIFY /pws/zycit282 FROM TABLE it_apr_final.
MODIFY /pws/zycit283 FROM TABLE it_zycit283.
MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.
MODIFY /pws/zycit245 FROM TABLE it_zycit245.
MODIFY /pws/zycit279 FROM TABLE it_zycit279_save.
COMMIT WORK.
IF sy-subrc EQ 0.
v_aprov = 'S'.
MESSAGE s015 WITH text-011.
CLEAR it_log_erro. REFRESH it_log_erro.
* Desbloqueia os registros de recebimento.
PERFORM unlock_record_receb.
* Desbloqueia os registros do ato concessório.
PERFORM unlock_record_ato.
ENDIF.
ENDFORM. " save_appropriations
*&---------------------------------------------------------------------*
*& Form execute_loger_button2 *
*&---------------------------------------------------------------------*
FORM execute_loger_button2.
CALL SCREEN '0003' STARTING AT 3 4. " ending at 89 12.
ENDFORM. " execute_loger_button2
*&---------------------------------------------------------------------*
*& Form sort_records_zycit247 *
*&---------------------------------------------------------------------*
FORM sort_records_zycit247.
CLEAR it_zycit247_aux. REFRESH it_zycit247_aux.
* Ordena a tabela interna de cabeçalho dos atos concessórios.
SORT it_zycit244 BY dtatoc ASCENDING.
it_zycit247_aux[] = it_zycit247[].
CLEAR it_zycit247. REFRESH it_zycit247.
* Realimenta a tabela interna de materiais (exportação) em ordem de
* data, de acordo com o cabeçalho do ato concessório.
LOOP AT it_zycit244.
*Authority-check Centro
AUTHORITY-CHECK OBJECT 'C_PPBD'
ID 'AKTTYP' FIELD 'V'
ID 'WERKS' FIELD it_zycit244-werks.
IF sy-subrc NE 0.
* message i015 with text-289 it_zycit244-werks.
DELETE it_zycit244.
DELETE it_zycit247 WHERE nrseqd EQ it_zycit244-nrseqd.
DELETE it_zycit245 WHERE nrseqd EQ it_zycit244-nrseqd.
DELETE it_zycit279 WHERE nrseqd EQ it_zycit244-nrseqd.
CONTINUE.
ENDIF.
*Authority-check Empresa
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD it_zycit244-bukrs "Empresa
ID 'ACTVT' FIELD '01'.
IF sy-subrc NE 0.
DELETE it_zycit244.
DELETE it_zycit247 WHERE nrseqd EQ it_zycit244-nrseqd.
DELETE it_zycit245 WHERE nrseqd EQ it_zycit244-nrseqd.
DELETE it_zycit279 WHERE nrseqd EQ it_zycit244-nrseqd.
CONTINUE.
ENDIF.
LOOP AT it_zycit247_aux WHERE nrseqd = it_zycit244-nrseqd.
CLEAR it_zycit247.
IF it_zycit244-tipo EQ 'C' .
MOVE-CORRESPONDING it_zycit247_aux TO it_zycit247.
READ TABLE it_zycit279 WITH KEY nrseqd = it_zycit247_aux-nrseqd.
IF sy-subrc EQ 0.
APPEND it_zycit247.
ENDIF.
ELSE.
MOVE-CORRESPONDING it_zycit247_aux TO it_zycit247f.
READ TABLE it_zycit279 WITH KEY nrseqd = it_zycit247_aux-nrseqd.
IF sy-subrc EQ 0.
APPEND it_zycit247f.
ENDIF.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM. " sort_records_zycit247
*&---------------------------------------------------------------------*
*& Form appropriate_tng *
*&---------------------------------------------------------------------*
* Chamado Data Descrição
* ----------------------------------------------------------------------
* 220218 02/05/2005 Alterado calculo da quantidade a ser
* apropriada para utilizar o campo
* it_stpox-MNGKO2 como usagem do componente.
* ----------------------------------------------------------------------
FORM appropriate_tng CHANGING p_qtdaprop p_qtdebase p_error.
DATA: "v_menorpct TYPE p DECIMALS 5 ,
v_allcomp(1) TYPE c ,
v_totit TYPE i ,
v_totit_tmp TYPE i ,
v_qtdtmp LIKE /pws/zycet002-fkimg ,
v_qtdtmp2 LIKE /pws/zycet002-fkimg ,
v_bxreceb LIKE /pws/zycit279-slqtde ,
v_bxatoc LIKE /pws/zycit247-sdomat_e,
v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,
v_saldo_e LIKE /pws/zycit247-sdomat_e,
v_meins_e LIKE /pws/zycit247-meins ,
v_dtnf LIKE sy-datum ,
* v_dias LIKE /pws/zycit281-nrdprod ,
v_mdias ,
v_aprcomum ,
v_dttax LIKE sy-datum .
* DATA: itab_zycit433 LIKE /pws/zycit433 OCCURS 0 WITH HEADER LINE.
* Apura a quantidade a ser usada do Ato concessório para os cálculos.
v_qtdtmp = it_zycet002-fkimg - p_qtdaprop.
v_meins_e = it_zycit247-meins.
v_saldo_e = it_zycit247-sdomat_e.
PERFORM converte_um_base USING it_zycet002-matnr
CHANGING v_meins_e
v_saldo_e.
IF v_saldo_e >= v_qtdtmp.
v_qtdtmp = v_qtdtmp.
ELSE.
v_qtdtmp = v_saldo_e.
ENDIF.
LOOP AT itab_lista.
itab_lista-qtd = itab_lista-usagem * v_qtdtmp.
MODIFY itab_lista.
ENDLOOP.
CLEAR: v_menorpct, v_allcomp, v_totit, v_totit_tmp, v_mdias.
* Apura a menor porcentagem usada entre todos os componentes do Ato.
PERFORM get_pct USING v_qtdtmp p_qtdebase CHANGING v_menorpct.
* Verifica se todos os componentes do ato foram recebidos efetivamente
* PERFORM verify_receive_all_components CHANGING v_allcomp v_totit.
IF v_menorpct > 0. " AND v_allcomp EQ 'S'.
REFRESH: itab_lista_aux.
LOOP AT itab_lista.
itab_lista_aux = itab_lista.
itab_lista_aux-qtd = ( itab_lista-qtd * v_menorpct ) / 100.
itab_lista-qtd = itab_lista-qtd - itab_lista_aux-qtd.
APPEND itab_lista_aux.
MODIFY itab_lista.
ENDLOOP.
v_bxatoc = itab_lista_aux-qtd / itab_lista_aux-usagem.
* v_bxatoc = ( v_qtdtmp * v_menorpct ) / 100.
* Se o que for apropriado deste ato for maior do que a quantidade a
* ser exportada, vai para o próximo ato.
v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).
IF v_bxatoc_tmp > it_zycet002-fkimg.
v_bxatoc = it_zycet002-fkimg - p_qtdaprop .
* p_error = 'S'.
* EXIT.
ENDIF.
CLEAR: v_apcomp.
CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.
IF p_qtdebase IS INITIAL.
p_qtdebase = 1.
ENDIF.
LOOP AT itab_lista_aux.
v_qtdtmp2 = itab_lista_aux-usagem *
( it_zycet002-fkimg - p_qtdaprop ) .
CLEAR it_zycit279.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr_alt NE space.
REFRESH itab_zycit433.
SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433
WHERE matnr EQ itab_lista_aux-matnr.
itab_zycit433-matnr = itab_lista_aux-matnr.
itab_zycit433-matnr_alt = itab_lista_aux-matnr.
APPEND itab_zycit433.
LOOP AT itab_zycit433.
it_zycit279-matnr_alt = itab_zycit433-matnr.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr EQ itab_zycit433-matnr_alt
AND nrseqd EQ it_zycit247-nrseqd.
ENDLOOP.
CLEAR: v_aprcomum.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd
AND esgotado = space
AND matnr_alt EQ itab_lista_aux-matnr.
CLEAR v_dias.
v_dias = v_dtforn - it_zycit279-dtnf.
IF it_zycit281-nrdprod > v_dias.
CONTINUE.
ENDIF.
CLEAR it_apr_final.
MOVE: it_zycet002-nrseq TO it_apr_final-nrseqexp ,
it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,
it_zycet002-aupos TO it_apr_final-aupos ,
it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,
it_zycet002-posnr TO it_apr_final-posnr ,
it_zycet002-docnum TO it_apr_final-docnum ,
it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,
it_zycet002-posnl TO it_apr_final-posnl ,
it_zycet002-ebeln TO it_apr_final-eebeln ,
it_zycet002-ebelp TO it_apr_final-eebelp ,
it_zycet002-steuc TO it_apr_final-j_1bnbmexp,
it_zycit279-nrseq TO it_apr_final-nrseqimp ,
it_zycit279-ebeln TO it_apr_final-ebeln ,
it_zycit279-ebelp TO it_apr_final-ebelp ,
it_zycit279-nrseqd TO it_apr_final-nrseqd ,
it_zycet002-matnr TO it_apr_final-matnr_exp ,
it_zycet002-vrkme TO it_apr_final-meins_e ,
it_zycet002-fkimg TO it_apr_final-qtd_eorg ,
itab_lista_aux-perc TO it_apr_final-perc ,
v_bxatoc TO it_apr_final-qtd_mexp ,
v_bxatoc TO it_apr_final-qtd_ncm ,
it_zycet002-vrkme TO it_apr_final-um_ncm ,
it_zycit247-nritem TO it_apr_final-nritem ,
it_zycit279-matnr TO it_apr_final-matnr_imp ,
itab_lista-meins TO it_apr_final-un_ncm ,
it_zycit279-meins TO it_apr_final-meins_i .
PERFORM converte_um_ncm USING it_apr_final-matnr_exp
CHANGING it_apr_final-um_ncm
it_zycet002-werks
it_apr_final-qtd_ncm.
it_apr_final-mengecom = it_zycit279-slqtde.
* Trata perda e Perda excedente
READ TABLE itab_zycit439 WITH KEY
insumo = it_apr_final-matnr_imp
matnr = it_zycet002-matnr.
IF sy-subrc EQ 0.
IF itab_zycit439-perda IS INITIAL.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
ENDIF.
ELSE.
it_apr_final-perda = itab_zycit439-perda.
ENDIF.
IF itab_zycit439-perda_e IS INITIAL.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda_e = it_zycit245-perda_e.
ENDIF.
ELSE.
it_apr_final-perda_e = itab_zycit439-perda_e.
ENDIF.
ELSE.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-perda_e = it_zycit245-perda_e.
ENDIF.
ENDIF.
it_apr_final-qtd_iorg = itab_lista_aux-qtd.
************************* ajusta quantidade a apropriar .
itab_lista_aux-qtd = itab_lista_aux-qtd -
( itab_lista_aux-qtd * ( it_apr_final-perda_e / 100 ) ) .
*************************
IF it_zycit279-slqtde < itab_lista_aux-qtd.
it_apr_final-qtd_mimp = it_zycit279-slqtde.
ELSE.
it_apr_final-qtd_mimp = itab_lista_aux-qtd.
ENDIF.
itab_lista_aux-qtd = it_apr_final-qtd_iorg .
it_apr_final-qtd_iorg = v_qtdtmp2.
************************* calcula quantidade de perda excesiva.
it_apr_final-qtd_perda_e =
( it_apr_final-qtd_mimp * it_apr_final-perda_e )
/ ( 100 - it_apr_final-perda_e ) .
it_apr_final-qtd_iorg = it_apr_final-qtd_iorg -
( it_apr_final-qtd_iorg * ( it_apr_final-perda_e / 100 ) ).
*************************
v_qtdtmp2 = v_qtdtmp2 - it_apr_final-qtd_mimp -
it_apr_final-qtd_perda_e .
* Calcula perda
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )
* ( it_apr_final-perda / 100 ).
* Atualiza saldos
itab_lista_aux-qtd = itab_lista_aux-qtd -
it_apr_final-qtd_mimp - it_apr_final-qtd_perda_e.
DATA: v_nrseqdi LIKE /pws/zycit085-nrseqdi.
FREE itab_zycit246.
SELECT SINGLE * FROM /pws/zycit094
INTO /pws/zycit094
WHERE nrseq EQ it_apr_final-nrseqimp.
IF sy-subrc = 0.
SELECT SINGLE nrdi dtreg dttax
FROM /pws/zycit085
INTO (it_apr_final-nrdi,it_apr_final-dtreg,v_dttax)
WHERE nrbl EQ /pws/zycit094-nrseqce.
ENDIF.
* Verifica o saldo para Export/Import C/S Cobertura Cambial.
IF it_zycit244-importacao NE 'X'.
it_apr_final-exp_c_cob_camb =
it_zycet002-fkimg * it_zycit247-tolling.
CLEAR v_valor_imp.
v_valor_imp = it_zycit279-valor.
PERFORM valor_converte_imp USING 'BRL'
'USD'
v_dttax
CHANGING v_valor_imp.
it_apr_final-imp_s_cob_camb =
it_apr_final-qtd_mimp * v_valor_imp.
ELSE.
SELECT vbeln netpr FROM vbap
INTO TABLE it_vbap
WHERE vbeln EQ it_apr_final-vbeln_va.
READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.
IF sy-subrc EQ 0.
it_apr_final-exp_c_cob_camb =
it_apr_final-qtd_mexp * it_vbap-netpr.
ENDIF.
ENDIF.
*----------------------------------------------------------------------*
*-Calcular Campo QTD equivalente mat.de export.------------------------*
DATA: v_usagem TYPE p DECIMALS 5.
v_usagem = ( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )
/ itab_lista_aux-usagem.
MOVE v_usagem TO it_apr_final-qtd_eq_mexp.
CLEAR it_apr_final_aux.
MOVE it_apr_final TO it_apr_final_aux.
APPEND it_apr_final_aux.
APPEND it_apr_final.
*Remove insumo da lista técnica do intermediario caso tenha sido
* apropriado em ato comum.
DELETE itab_lista_f WHERE matnr = itab_lista_aux-matnr.
it_zycit279-slqtde = it_zycit279-slqtde -
it_apr_final-qtd_mimp.
IF it_zycit279-slqtde <= 0.
it_zycit279-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279.
* Atualiza a tabela de importações realizadas e seus saldos.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
nrseqd = it_zycit279-nrseqd
matnr = it_zycit279-matnr.
IF sy-subrc NE 0.
CLEAR it_zycit279_save.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ELSE.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde - it_apr_final-qtd_mimp.
IF it_zycit279_save-slqtde <= 0.
it_zycit279_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDIF.
DELETE itab_lista_f WHERE matnr EQ itab_lista_aux-matnr.
v_aprcomum = 'X'.
IF v_apcomp IS INITIAL.
v_apcomp = 'S'.
ENDIF.
IF itab_lista_aux-qtd <= 0.
EXIT.
ENDIF.
ENDLOOP.
* IF v_aprcomum IS INITIAL.
** read table it_apr_final with key
* itab_lista_f = itab_lista_aux.
* APPEND itab_lista_f.
* ENDIF.
ENDLOOP.
* Checa se foi efetuada as apropriações dos componentes.
IF v_apcomp IS INITIAL.
IF NOT v_mdias IS INITIAL.
CONCATENATE text-066 it_zycit281-nrdprod
text-067 it_zycit281-matnr
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
p_error = 'S'.
EXIT.
* ELSE.
ENDIF.
v_saldo_e = v_bxatoc .
PERFORM converte_unidade USING it_zycet002-matnr
it_zycet002-vrkme
it_zycit247-meins
CHANGING v_saldo_e.
it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_saldo_e.
IF it_zycit247-sdomat_e <= 0.
it_zycit247-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247.
* Atualiza a tabela de exportações e seus saldos.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit247-nrseqd
nritem = it_zycit247-nritem.
IF sy-subrc NE 0.
CLEAR it_zycit247_save.
MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.
APPEND it_zycit247_save.
ELSE.
it_zycit247_save-sdomat_e =
it_zycit247_save-sdomat_e - v_saldo_e.
IF it_zycit247_save-sdomat_e <= 0.
it_zycit247_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit247-nrseqd
AND nritem = it_zycit247-nritem.
ENDIF.
p_qtdaprop = p_qtdaprop + v_bxatoc.
ELSE.
* Atualiza Log de Erro.
IF v_menorpct <= 0.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-031 it_zycit247-nrseqd text-018
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ELSEIF v_allcomp EQ 'N'.
CLEAR: v_errolog, it_log_erro.
CONCATENATE
text-017 it_zycet002-matnr text-019 it_zycit247-nrseqd text-020
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ENDIF.
ENDFORM. " appropriate_tng
*&---------------------------------------------------------------------*
*& Form appropriate_tg *
*&---------------------------------------------------------------------*
FORM appropriate_tg CHANGING p_qtdaprop
p_qtdebase
p_error.
DATA: v_menorpct TYPE p DECIMALS 5 ,
v_qtdtmp LIKE /pws/zycet002-fkimg ,
v_bxreceb LIKE /pws/zycit279-slqtde ,
v_bxatoc LIKE /pws/zycit247-sdomat_e,
v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,
v_valor_imp LIKE /pws/zycit282-imp_s_cob_camb.
* Apura a quantidade a ser usada do Ato concessório para os cálculos.
IF it_zycit247-sdomat_e >= it_zycet002-fkimg.
v_qtdtmp = it_zycet002-fkimg.
ELSE.
v_qtdtmp = it_zycit247-sdomat_e.
ENDIF.
IF v_qtdtmp > p_qtdaprop.
v_qtdtmp = v_qtdtmp - p_qtdaprop.
ELSE.
v_qtdtmp = p_qtdaprop - v_qtdtmp.
ENDIF.
CLEAR v_menorpct.
* Apura a menor porcentagem usada entre todos os componentes do Ato.
PERFORM get_pct_tg USING v_qtdtmp p_qtdebase CHANGING v_menorpct.
IF v_menorpct > 0.
v_bxatoc = ( v_qtdtmp * v_menorpct ) / 100.
* Se o que for apropriado deste ato for maior do que a quantidade a
* ser exportada, vai para o próximo ato.
v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).
IF v_bxatoc_tmp > it_zycet002-fkimg.
p_error = 'S'.
EXIT.
ENDIF.
CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd
AND esgotado = ' '.
READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.
IF sy-subrc EQ 0.
v_bxreceb = ( ( v_qtdtmp *
( it_stpox-mngko2 / p_qtdebase ) ) * v_menorpct ) / 100.
* Verifica se o item recebido tem saldo suficiente. Caso não
* tenha, vai para o próximo item do recebimento.
IF it_zycit279-slqtde < v_bxreceb.
CONTINUE.
ENDIF.
CLEAR it_apr_final.
MOVE: it_zycet002-nrseq TO it_apr_final-nrseqexp ,
it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,
it_zycet002-aupos TO it_apr_final-aupos ,
it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,
it_zycet002-posnr TO it_apr_final-posnr ,
it_zycet002-docnum TO it_apr_final-docnum ,
it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,
it_zycet002-posnl TO it_apr_final-posnl ,
it_zycet002-ebeln TO it_apr_final-eebeln ,
it_zycet002-ebelp TO it_apr_final-eebelp ,
it_zycet002-steuc TO it_apr_final-j_1bnbmexp,
it_zycit279-nrseq TO it_apr_final-nrseqimp ,
it_zycit279-ebeln TO it_apr_final-ebeln ,
it_zycit279-ebelp TO it_apr_final-ebelp ,
it_zycit279-nrseqd TO it_apr_final-nrseqd ,
it_zycet002-matnr TO it_apr_final-matnr_exp,
it_zycet002-vrkme TO it_apr_final-meins_e ,
it_zycet002-fkimg TO it_apr_final-qtd_eorg ,
v_bxatoc TO it_apr_final-qtd_mexp ,
it_zycit279-matnr TO it_apr_final-matnr_imp,
it_zycit279-meins TO it_apr_final-meins_i ,
v_bxreceb TO it_apr_final-qtd_mimp .
it_apr_final-qtd_iorg =
( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).
*PWS243757 - Início ---------------------------------------------------
* Verifica o saldo para Export/Import C/S Cobertura Cambial.
IF it_zycit244-importacao NE 'X'.
it_apr_final-exp_c_cob_camb =
it_zycet002-fkimg * it_zycit247-tolling.
CLEAR v_valor_imp.
v_valor_imp = it_zycit279-valor.
PERFORM valor_converte_imp USING 'BRL'
'USD'
it_apr_final-dtreg
CHANGING v_valor_imp.
it_apr_final-imp_s_cob_camb =
it_apr_final-qtd_mimp * v_valor_imp.
ELSE.
SELECT vbeln netpr FROM vbap
INTO TABLE it_vbap
WHERE vbeln EQ it_apr_final-vbeln_va.
READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.
IF sy-subrc EQ 0.
it_apr_final-exp_c_cob_camb =
it_apr_final-qtd_mexp * it_vbap-netpr.
ENDIF.
ENDIF.
*PWS243757 - Fim ------------------------------------------------------
*PWS245742 - Início ----------------------------------------------------
SELECT * FROM /pws/zycit439
WHERE insumo EQ it_apr_final-matnr_imp
AND matnr EQ it_zycet002-matnr.
ENDSELECT.
IF sy-subrc EQ 0.
IF /pws/zycit439-dtde > sy-datum AND
/pws/zycit439-dtate <= sy-datum.
it_apr_final-perda = /pws/zycit439-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ELSE.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
codcomp = it_apr_final-matnr_imp.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ENDIF.
ENDIF.
ELSE.
READ TABLE it_zycit245 WITH KEY nrseqd = it_apr_final-nrseqd.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ENDIF.
ENDIF.
*PWS245742 - Fim -------------------------------------------------------
CLEAR it_apr_final_aux.
MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.
APPEND it_apr_final_aux.
APPEND it_apr_final.
it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.
IF it_zycit279-slqtde <= 0.
it_zycit279-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279.
* Atualiza a tabela de importações realizadas e seus saldos.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
nrseqd = it_zycit279-nrseqd
matnr = it_zycit279-matnr.
IF sy-subrc NE 0.
CLEAR it_zycit279_save.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ELSE.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde - v_bxreceb.
IF it_zycit279_save-slqtde <= 0.
it_zycit279_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR it_zycit283.
MOVE: it_zycet002-nrseq TO it_zycit283-nrseqexp,
it_zycet002-vbeln_va TO it_zycit283-vbeln_va,
it_zycet002-aupos TO it_zycit283-aupos ,
it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,
it_zycet002-posnr TO it_zycit283-posnr ,
it_zycet002-docnum TO it_zycit283-docnum ,
it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,
it_zycet002-posnl TO it_zycit283-posnl ,
it_zycet002-ebeln TO it_zycit283-eebeln ,
it_zycet002-ebelp TO it_zycit283-eebelp ,
it_zycit247-codmat TO it_zycit283-matnr ,
it_zycit247-nrseqd TO it_zycit283-nrseqd ,
it_zycit247-meins TO it_zycit283-meins ,
v_bxatoc TO it_zycit283-qtd_apr .
APPEND it_zycit283.
it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.
IF it_zycit247-sdomat_e <= 0.
it_zycit247-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247.
* Atualiza a tabela de exportações e seus saldos.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit247-nrseqd
codmat = it_zycit247-codmat
werks = it_zycit247-werks
stlan = it_zycit247-stlan
stlnr = it_zycit247-stlnr
stlal = it_zycit247-stlal.
IF sy-subrc NE 0.
CLEAR it_zycit247_save.
MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.
APPEND it_zycit247_save.
ELSE.
it_zycit247_save-sdomat_e =
it_zycit247_save-sdomat_e - v_bxatoc.
IF it_zycit247_save-sdomat_e <= 0.
it_zycit247_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit247-nrseqd
AND codmat = it_zycit247-codmat
AND werks = it_zycit247-werks
AND stlan = it_zycit247-stlan
AND stlnr = it_zycit247-stlnr
AND stlal = it_zycit247-stlal.
ENDIF.
p_qtdaprop = p_qtdaprop + v_bxatoc.
ELSE.
* Atualiza Log de Erro.
IF v_menorpct <= 0.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-017 it_zycet002-matnr text-018
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ENDIF.
ENDFORM. " appropriate_tg
*&---------------------------------------------------------------------*
*& Form get_pct_tg *
*&---------------------------------------------------------------------*
FORM get_pct_tg USING p_qtdtmp
p_qtdebase
CHANGING p_menorpct.
DATA: p_pct_aux TYPE p DECIMALS 5.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd.
READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.
IF sy-subrc EQ 0.
p_pct_aux =
( it_zycit279-slqtde / ( p_qtdtmp *
( it_stpox-mngko2 / p_qtdebase ) ) ) * 100.
IF p_pct_aux < p_menorpct OR p_menorpct IS INITIAL.
p_menorpct = p_pct_aux.
ENDIF.
ENDIF.
ENDLOOP.
IF p_menorpct > 100.
p_menorpct = 100.
ENDIF.
ENDFORM. " get_pct_tg
*&---------------------------------------------------------------------*
*& Form appropriate_tng_mod *
*&---------------------------------------------------------------------*
FORM appropriate_tng_mod CHANGING p_qtdaprop
p_qtdebase
p_error
p_pctapr.
DATA: v_allcomp(1) TYPE c ,
v_totit TYPE i ,
v_totit_tmp TYPE i ,
v_qtdtmp LIKE /pws/zycet002-fkimg ,
v_apcomp(1) TYPE c ,
v_bxreceb LIKE /pws/zycit279-slqtde ,
v_bxatoc LIKE /pws/zycit247-sdomat_e,
v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,
v_valor_imp LIKE /pws/zycit282-imp_s_cob_camb,
v_dttax LIKE sy-datum.
* Apura a quantidade a ser usada do Ato concessório para os cálculos.
IF it_zycit247-sdomat_e >= it_zycet002-fkimg.
v_qtdtmp = it_zycet002-fkimg.
ELSE.
v_qtdtmp = it_zycit247-sdomat_e.
ENDIF.
IF v_qtdtmp > p_qtdaprop.
v_qtdtmp = v_qtdtmp - p_qtdaprop.
ELSE.
v_qtdtmp = p_qtdaprop - v_qtdtmp.
ENDIF.
CLEAR: v_allcomp, v_totit, v_totit_tmp.
* Verifica se todos os componentes do ato foram recebidos efetivamente
PERFORM verify_receive_all_components CHANGING v_allcomp v_totit.
IF p_pctapr > 0 AND v_allcomp EQ 'S'.
v_bxatoc = ( v_qtdtmp * p_pctapr ) / 100.
* Se o que for apropriado deste ato for maior do que a quantidade a
* ser exportada, vai para o próximo ato.
v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).
IF v_bxatoc_tmp > v_qtdbx.
p_error = 'S'.
EXIT.
ENDIF.
CLEAR: v_apcomp.
CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd
AND esgotado = ' '.
READ TABLE it_zycit245 WITH KEY codcomp = it_zycit279-matnr
nrseqd = it_zycit279-nrseqd.
IF sy-subrc EQ 0.
READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.
IF sy-subrc EQ 0.
v_bxreceb =
( ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ) *
p_pctapr ) / 100.
* Verifica se o item recebido tem saldo suficiente. Caso não
* tenha, vai para o próximo item do recebimento.
IF it_zycit279-slqtde < v_bxreceb.
CONTINUE.
ENDIF.
* Apura o total de itens apropriados para confrontar com o que
* foi recebido totalmente.
v_totit_tmp = v_totit_tmp + 1.
CLEAR it_apr_final.
MOVE: it_zycet002-nrseq TO it_apr_final-nrseqexp ,
it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,
it_zycet002-aupos TO it_apr_final-aupos ,
it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,
it_zycet002-posnr TO it_apr_final-posnr ,
it_zycet002-docnum TO it_apr_final-docnum ,
it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,
it_zycet002-posnl TO it_apr_final-posnl ,
it_zycet002-ebeln TO it_apr_final-eebeln ,
it_zycet002-ebelp TO it_apr_final-eebelp ,
it_zycet002-steuc TO it_apr_final-j_1bnbmexp,
it_zycit279-nrseq TO it_apr_final-nrseqimp ,
it_zycit279-ebeln TO it_apr_final-ebeln ,
it_zycit279-ebelp TO it_apr_final-ebelp ,
it_zycit279-nrseqd TO it_apr_final-nrseqd ,
it_zycet002-matnr TO it_apr_final-matnr_exp,
it_zycet002-vrkme TO it_apr_final-meins_e ,
it_zycet002-fkimg TO it_apr_final-qtd_eorg ,
v_bxatoc TO it_apr_final-qtd_mexp ,
it_zycit279-matnr TO it_apr_final-matnr_imp,
it_zycit279-meins TO it_apr_final-meins_i ,
v_bxreceb TO it_apr_final-qtd_mimp .
it_apr_final-qtd_iorg =
( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).
*PWS243757 - Início ---------------------------------------------------
* Verifica o saldo para Export/Import C/S Cobertura Cambial.
IF it_zycit244-importacao NE 'X'.
it_apr_final-exp_c_cob_camb =
it_zycet002-fkimg * it_zycit247-tolling.
CLEAR v_valor_imp.
v_valor_imp = it_zycit279-valor.
PERFORM valor_converte_imp USING 'BRL'
'USD'
v_dttax
CHANGING v_valor_imp.
it_apr_final-imp_s_cob_camb =
it_apr_final-qtd_mimp * v_valor_imp.
ELSE.
SELECT vbeln netpr FROM vbap
INTO TABLE it_vbap
WHERE vbeln EQ it_apr_final-vbeln_va.
READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.
IF sy-subrc EQ 0.
it_apr_final-exp_c_cob_camb =
it_apr_final-qtd_mexp * it_vbap-netpr.
ENDIF.
ENDIF.
*PWS243757 - Fim ------------------------------------------------------
*PWS245742 - Início ----------------------------------------------------
SELECT * FROM /pws/zycit439
WHERE insumo EQ it_apr_final-matnr_imp
AND matnr EQ it_zycet002-matnr.
ENDSELECT.
IF sy-subrc EQ 0.
it_apr_final-perda = /pws/zycit439-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ELSE.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
codcomp = it_apr_final-matnr_imp.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ENDIF.
ENDIF.
*PWS245742 - Fim -------------------------------------------------------
CLEAR it_apr_final_aux.
MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.
APPEND it_apr_final_aux.
APPEND it_apr_final.
it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.
IF it_zycit279-slqtde <= 0.
it_zycit279-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279.
* Atualiza a tabela de importações realizadas e seus saldos.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
nrseqd = it_zycit279-nrseqd
matnr = it_zycit279-matnr.
IF sy-subrc NE 0.
CLEAR it_zycit279_save.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ELSE.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde - v_bxreceb.
IF it_zycit279_save-slqtde <= 0.
it_zycit279_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDIF.
IF v_apcomp IS INITIAL.
v_apcomp = 'S'.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* Checa se foi efetuada as apropriações dos componentes.
IF v_apcomp IS INITIAL.
p_error = 'S'.
EXIT.
ELSE.
* Estorna os componentes apropriados não salvando-os na tabela
* transparente caso não tenha sido efetuada a apropriação de todos
* os componentes do ato concessório em vigência.
IF v_totit NE v_totit_tmp.
LOOP AT it_apr_final_aux.
LOOP AT it_zycit279 WHERE
nrseq = it_apr_final_aux-nrseqimp
AND ebeln = it_apr_final_aux-ebeln
AND ebelp = it_apr_final_aux-ebelp
AND nrseqd = it_apr_final_aux-nrseqd
AND matnr = it_apr_final_aux-matnr_imp.
it_zycit279-slqtde =
it_zycit279-slqtde + it_apr_final-qtd_mimp.
IF it_zycit279-slqtde > 0.
it_zycit279-esgotado = ' '.
ENDIF.
MODIFY it_zycit279.
DELETE it_zycit279_save WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDLOOP.
DELETE it_apr_final WHERE
nrseqexp = it_apr_final_aux-nrseqexp
AND vbeln_va = it_apr_final_aux-vbeln_va
AND aupos = it_apr_final_aux-aupos
AND vbeln_vf = it_apr_final_aux-vbeln_vf
AND posnr = it_apr_final_aux-posnr
AND docnum = it_apr_final_aux-docnum
AND vbeln_vl = it_apr_final_aux-vbeln_vl
AND posnl = it_apr_final_aux-posnl
AND eebeln = it_apr_final_aux-eebeln
AND eebelp = it_apr_final_aux-eebelp
AND nrseqimp = it_apr_final_aux-nrseqimp
AND ebeln = it_apr_final_aux-ebeln
AND ebelp = it_apr_final_aux-ebelp
AND nrseqd = it_apr_final_aux-nrseqd.
ENDLOOP.
p_error = 'S'.
EXIT.
ENDIF.
ENDIF.
CLEAR it_zycit283.
MOVE: it_zycet002-nrseq TO it_zycit283-nrseqexp,
it_zycet002-vbeln_va TO it_zycit283-vbeln_va,
it_zycet002-aupos TO it_zycit283-aupos ,
it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,
it_zycet002-posnr TO it_zycit283-posnr ,
it_zycet002-docnum TO it_zycit283-docnum ,
it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,
it_zycet002-posnl TO it_zycit283-posnl ,
it_zycet002-ebeln TO it_zycit283-eebeln ,
it_zycet002-ebelp TO it_zycit283-eebelp ,
it_zycit247-nrseqd TO it_zycit283-nrseqd ,
it_zycit247-meins TO it_zycit283-meins ,
v_bxatoc TO it_zycit283-qtd_apr .
APPEND it_zycit283.
it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.
IF it_zycit247-sdomat_e <= 0.
it_zycit247-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247.
* Atualiza a tabela de exportações e seus saldos.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit247-nrseqd
codmat = it_zycit247-codmat
werks = it_zycit247-werks
stlan = it_zycit247-stlan
stlnr = it_zycit247-stlnr
stlal = it_zycit247-stlal.
IF sy-subrc NE 0.
CLEAR it_zycit247_save.
MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.
APPEND it_zycit247_save.
ELSE.
it_zycit247_save-sdomat_e =
it_zycit247_save-sdomat_e - v_bxatoc.
IF it_zycit247_save-sdomat_e <= 0.
it_zycit247_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit247-nrseqd
AND codmat = it_zycit247-codmat
AND werks = it_zycit247-werks
AND stlan = it_zycit247-stlan
AND stlnr = it_zycit247-stlnr
AND stlal = it_zycit247-stlal.
ENDIF.
p_qtdaprop = p_qtdaprop + v_bxatoc.
ELSE.
* Atualiza Log de Erro.
IF p_pctapr <= 0.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-017 it_zycet002-matnr text-018
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ELSEIF v_allcomp EQ 'N'.
CLEAR: v_errolog, it_log_erro.
CONCATENATE
text-017 it_zycet002-matnr text-019 it_zycit247-nrseqd text-020
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ENDIF.
ENDFORM. " appropriate_tng_mod
*&---------------------------------------------------------------------*
*& Form appropriate_tg_mod *
*&---------------------------------------------------------------------*
FORM appropriate_tg_mod CHANGING p_qtdaprop
p_qtdebase
p_error
p_pctapr.
DATA: v_qtdtmp LIKE /pws/zycet002-fkimg ,
v_bxreceb LIKE /pws/zycit279-slqtde ,
v_bxatoc LIKE /pws/zycit247-sdomat_e,
v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e.
* Apura a quantidade a ser usada do Ato concessório para os cálculos.
IF it_zycit247-sdomat_e >= v_qtdbx.
v_qtdtmp = v_qtdbx.
ELSE.
v_qtdtmp = it_zycit247-sdomat_e.
ENDIF.
IF v_qtdtmp > p_qtdaprop.
v_qtdtmp = v_qtdtmp - p_qtdaprop.
ELSE.
v_qtdtmp = p_qtdaprop - v_qtdtmp.
ENDIF.
IF p_pctapr > 0.
v_bxatoc = ( v_qtdtmp * p_pctapr ) / 100.
* Se o que for apropriado deste ato for maior do que a quantidade a
* ser exportada, vai para o próximo ato.
v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).
IF v_bxatoc_tmp > v_qtdbx.
p_error = 'S'.
EXIT.
ENDIF.
CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd
AND esgotado = ' '.
READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.
IF sy-subrc EQ 0.
v_bxreceb = ( ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ) *
p_pctapr ) / 100.
* Verifica se o item recebido tem saldo suficiente. Caso não
* tenha, vai para o próximo item do recebimento.
IF it_zycit279-slqtde < v_bxreceb.
CONTINUE.
ENDIF.
CLEAR it_apr_final.
MOVE: it_zycet002-nrseq TO it_apr_final-nrseqexp ,
it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,
it_zycet002-aupos TO it_apr_final-aupos ,
it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,
it_zycet002-posnr TO it_apr_final-posnr ,
it_zycet002-docnum TO it_apr_final-docnum ,
it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,
it_zycet002-posnl TO it_apr_final-posnl ,
it_zycet002-ebeln TO it_apr_final-eebeln ,
it_zycet002-ebelp TO it_apr_final-eebelp ,
it_zycet002-steuc TO it_apr_final-j_1bnbmexp,
it_zycit279-nrseq TO it_apr_final-nrseqimp ,
it_zycit279-ebeln TO it_apr_final-ebeln ,
it_zycit279-ebelp TO it_apr_final-ebelp ,
it_zycit279-nrseqd TO it_apr_final-nrseqd ,
it_zycet002-matnr TO it_apr_final-matnr_exp,
it_zycet002-vrkme TO it_apr_final-meins_e ,
it_zycet002-fkimg TO it_apr_final-qtd_eorg ,
v_bxatoc TO it_apr_final-qtd_mexp ,
it_zycit279-matnr TO it_apr_final-matnr_imp,
it_zycit279-meins TO it_apr_final-meins_i ,
v_bxreceb TO it_apr_final-qtd_mimp .
it_apr_final-qtd_iorg =
( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).
*PWS243757 - Início ---------------------------------------------------
* Verifica o saldo para Export/Import C/S Cobertura Cambial.
IF it_zycit244-importacao NE 'X'.
it_apr_final-exp_c_cob_camb =
it_zycet002-fkimg * it_zycit247-tolling.
it_apr_final-imp_s_cob_camb =
it_apr_final-qtd_mimp * it_zycit279-valor.
ELSE.
SELECT vbeln netpr FROM vbap
INTO TABLE it_vbap
WHERE vbeln EQ it_apr_final-vbeln_va.
READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.
IF sy-subrc EQ 0.
it_apr_final-exp_c_cob_camb =
it_apr_final-qtd_mexp * it_vbap-netpr.
ENDIF.
ENDIF.
*PWS243757 - Fim ------------------------------------------------------
*PWS245742 - Início ----------------------------------------------------
SELECT * FROM /pws/zycit439
WHERE insumo EQ it_apr_final-matnr_imp
AND matnr EQ it_zycet002-matnr.
ENDSELECT.
IF sy-subrc EQ 0.
it_apr_final-perda = /pws/zycit439-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ELSE.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
codcomp = it_apr_final-matnr_imp.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.
ENDIF.
ENDIF.
*PWS245742 - Fim -------------------------------------------------------
CLEAR it_apr_final_aux.
MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.
APPEND it_apr_final_aux.
APPEND it_apr_final.
it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.
IF it_zycit279-slqtde <= 0.
it_zycit279-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279.
* Atualiza a tabela de importações realizadas e seus saldos.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
nrseqd = it_zycit279-nrseqd
matnr = it_zycit279-matnr.
IF sy-subrc NE 0.
CLEAR it_zycit279_save.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ELSE.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde - v_bxreceb.
IF it_zycit279_save-slqtde <= 0.
it_zycit279_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDIF.
ENDIF.
ENDLOOP.
CLEAR it_zycit283.
MOVE: it_zycet002-nrseq TO it_zycit283-nrseqexp,
it_zycet002-vbeln_va TO it_zycit283-vbeln_va,
it_zycet002-aupos TO it_zycit283-aupos ,
it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,
it_zycet002-posnr TO it_zycit283-posnr ,
it_zycet002-docnum TO it_zycit283-docnum ,
it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,
it_zycet002-posnl TO it_zycit283-posnl ,
it_zycet002-ebeln TO it_zycit283-eebeln ,
it_zycet002-ebelp TO it_zycit283-eebelp ,
it_zycit247-nrseqd TO it_zycit283-nrseqd ,
it_zycit247-meins TO it_zycit283-meins ,
v_bxatoc TO it_zycit283-qtd_apr .
APPEND it_zycit283.
it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.
IF it_zycit247-sdomat_e <= 0.
it_zycit247-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247.
* Atualiza a tabela de exportações e seus saldos.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit247-nrseqd
codmat = it_zycit247-codmat
werks = it_zycit247-werks
stlan = it_zycit247-stlan
stlnr = it_zycit247-stlnr
stlal = it_zycit247-stlal.
IF sy-subrc NE 0.
CLEAR it_zycit247_save.
MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.
APPEND it_zycit247_save.
ELSE.
it_zycit247_save-sdomat_e =
it_zycit247_save-sdomat_e - v_bxatoc.
IF it_zycit247_save-sdomat_e <= 0.
it_zycit247_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit247-nrseqd
AND codmat = it_zycit247-codmat
AND werks = it_zycit247-werks
AND stlan = it_zycit247-stlan
AND stlnr = it_zycit247-stlnr
AND stlal = it_zycit247-stlal.
ENDIF.
p_qtdaprop = p_qtdaprop + v_bxatoc.
ELSE.
* Atualiza Log de Erro.
IF p_pctapr <= 0.
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-017 it_zycet002-matnr text-018
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
ENDIF.
ENDIF.
ENDFORM. " appropriate_tg_mod
*&---------------------------------------------------------------------*
*& Form reverse_appropriation_mod *
*&---------------------------------------------------------------------*
FORM reverse_appropriation_mod.
LOOP AT it_apr_final WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vf = it_zycet002-vbeln_vf
AND posnr = it_zycet002-posnr
AND docnum = it_zycet002-docnum
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp
AND matnr_exp = it_zycet002-matnr.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_apr_final-nrseqimp
ebeln = it_apr_final-ebeln
ebelp = it_apr_final-ebelp
nrseqd = it_apr_final-nrseqd
matnr = it_apr_final-matnr_imp.
IF sy-subrc EQ 0.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde + it_apr_final-qtd_mimp.
IF it_zycit279_save-slqtde > 0.
it_zycit279_save-esgotado = ' '.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_apr_final-nrseqimp
AND ebeln = it_apr_final-ebeln
AND ebelp = it_apr_final-ebelp
AND nrseqd = it_apr_final-nrseqd
AND matnr = it_apr_final-matnr_imp.
ENDIF.
READ TABLE it_zycit279 WITH KEY nrseq = it_apr_final-nrseqimp
ebeln = it_apr_final-ebeln
ebelp = it_apr_final-ebelp
nrseqd = it_apr_final-nrseqd
matnr = it_apr_final-matnr_imp.
IF sy-subrc EQ 0.
it_zycit279-slqtde = it_zycit279-slqtde + it_apr_final-qtd_mimp.
IF it_zycit279-slqtde > 0.
it_zycit279-esgotado = ' '.
ENDIF.
MODIFY it_zycit279 TRANSPORTING slqtde esgotado
WHERE nrseq = it_apr_final-nrseqimp
AND ebeln = it_apr_final-ebeln
AND ebelp = it_apr_final-ebelp
AND nrseqd = it_apr_final-nrseqd
AND matnr = it_apr_final-matnr_imp.
ENDIF.
DELETE it_apr WHERE nrseqexp = it_apr_final-nrseqexp
AND vbeln_va = it_apr_final-vbeln_va
AND aupos = it_apr_final-aupos
AND vbeln_vf = it_apr_final-vbeln_vf
AND posnr = it_apr_final-posnr
AND docnum = it_apr_final-docnum
AND vbeln_vl = it_apr_final-vbeln_vl
AND posnl = it_apr_final-posnl
AND eebeln = it_apr_final-eebeln
AND eebelp = it_apr_final-eebelp
AND nrseqimp = it_apr_final-nrseqimp
AND ebeln = it_apr_final-ebeln
AND ebelp = it_apr_final-ebelp
AND nrseqd = it_apr_final-nrseqd.
DELETE it_apr_final.
ENDLOOP.
LOOP AT it_zycit283 WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vf = it_zycet002-vbeln_vf
AND posnr = it_zycet002-posnr
AND docnum = it_zycet002-docnum
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit283-nrseqd
codmat = it_zycit283-matnr.
IF sy-subrc EQ 0.
it_zycit247_save-sdomat_e =
it_zycit247_save-sdomat_e + it_zycit283-qtd_apr.
IF it_zycit247_save-sdomat_e > 0.
it_zycit247_save-esgotado = ' '.
ENDIF.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit283-nrseqd
AND codmat = it_zycit283-matnr.
ENDIF.
READ TABLE it_zycit247 WITH KEY nrseqd = it_zycit283-nrseqd
codmat = it_zycit283-matnr.
IF sy-subrc EQ 0.
it_zycit247-sdomat_e = it_zycit247-sdomat_e + it_zycit283-qtd_apr.
IF it_zycit247-sdomat_e > 0.
it_zycit247-esgotado = ' '.
ENDIF.
MODIFY it_zycit247 TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit283-nrseqd
AND codmat = it_zycit283-matnr.
ENDIF.
ENDLOOP.
ENDFORM. " reverse_appropriation_mod
*&---------------------------------------------------------------------*
*& Form execute_process_desa *
*&---------------------------------------------------------------------*
FORM execute_process_desa.
* Trata Ordem de Venda, Devoluções, Etc.
PERFORM trata_ordem_venda.
* filtra somente as exportações com apropriações realizadas.
PERFORM load_appropriatons.
* Posiciona a table control com as exportações na primeira linha.
tc_exp_desa-top_line = 1.
* Chama a tela com as exportações selecionadas para executar as
* desapropriações.
*PWS251144 - Início ----------------------------------------------------
IF v_exit = 'X'.
EXIT.
ENDIF.
*PWS251144 - Início ----------------------------------------------------
IF it_zycet002_desa[] IS INITIAL.
MESSAGE s015 WITH text-065.
ELSE.
CALL SCREEN 0004.
ENDIF.
ENDFORM. " execute_process_desa
*&---------------------------------------------------------------------*
*& Form execute_desaprop_button_0004 *
*&---------------------------------------------------------------------*
FORM execute_desaprop_button_0004.
DATA: BEGIN OF it_zycit282_aux OCCURS 0.
INCLUDE STRUCTURE /pws/zycit282.
DATA: END OF it_zycit282_aux.
DATA: v_status LIKE /pws/zycit244-status.
* Checa se foi marcado uma linha da table control.
* Caso tenha alguma exportação marcada, prossegue com a desapro-
* priação.
READ TABLE it_zycet002_desa WITH KEY mexp = 'X'.
IF sy-subrc EQ 0.
*** PWS176335 - Inicio
* Se o Ato Concessório foi Encerrado, não permite a desapropriação.
SELECT * FROM /pws/zycit282 INTO TABLE it_zycit282_aux
WHERE nrseqexp = it_zycet002_desa-nrseq.
READ TABLE it_zycit282_aux WITH KEY nrseqexp =
it_zycet002_desa-nrseq.
SELECT SINGLE status FROM /pws/zycit244 INTO v_status
WHERE nrseqd = it_zycit282_aux-nrseqd.
IF v_status NE 'E'.
* Elimina as exportações não selecionadas.
DELETE it_zycet002_desa WHERE mexp NE 'X'.
* Retira o 'X' da marcação dos registros de exportação.
LOOP AT it_zycet002_desa.
it_zycet002_desa-mexp = ' '.
MODIFY it_zycet002_desa.
ENDLOOP.
* Ordena a tabela interna de exportações.
SORT it_zycet002_desa BY nrseq vbeln_va vbeln_vf posnr ASCENDING.
PERFORM run_dispossession_exportation.
ELSE.
MESSAGE s015 WITH text-036 text-037.
ENDIF.
ELSE.
MESSAGE s015 WITH text-002 text-024.
ENDIF.
*** PWS176335 - Inicio
ENDFORM. " execute_desaprop_button_0004
*&---------------------------------------------------------------------*
*& Form load_appropriatons *
*&---------------------------------------------------------------------*
FORM load_appropriatons.
CLEAR: it_zycet002_desa,
it_zycit247 ,
it_zycit279 ,
it_zycit282_des ,
it_zycit283_des .
REFRESH: it_zycet002_desa,
it_zycit247 ,
it_zycit279 ,
it_zycit282_des ,
it_zycit283_des .
* Seleciona as apropriações realizadas.
IF NOT it_zycet002[] IS INITIAL.
SELECT * FROM /pws/zycit282 INTO TABLE it_zycit282_des
FOR ALL ENTRIES IN it_zycet002
WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
IF NOT it_zycit282_des[] IS INITIAL.
* seleciona os materiais do ato concessório.
SELECT * FROM /pws/zycit247 INTO TABLE it_zycit247
FOR ALL ENTRIES IN it_zycit282_des
WHERE nrseqd = it_zycit282_des-nrseqd.
* seleciona os recebimentos dos componentes.
SELECT * FROM /pws/zycit279 INTO TABLE it_zycit279
FOR ALL ENTRIES IN it_zycit282_des
WHERE nrseq = it_zycit282_des-nrseqimp
AND ebeln = it_zycit282_des-ebeln
AND ebelp = it_zycit282_des-ebelp.
ENDIF.
ENDIF.
CLEAR: v_exit.
LOOP AT it_zycet002.
READ TABLE it_zycit282_des WITH KEY nrseqexp = it_zycet002-nrseq
vbeln_va = it_zycet002-vbeln_va
aupos = it_zycet002-aupos
vbeln_vl = it_zycet002-vbeln_vl
posnl = it_zycet002-posnl
eebeln = it_zycet002-ebeln
eebelp = it_zycet002-ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE * FROM /pws/zycit244
WHERE nrseqd EQ it_zycit282_des-nrseqd.
IF /pws/zycit244-tipo NE 'C'.
v_exit = 'X'.
MESSAGE s015 WITH text-068.
EXIT.
ENDIF.
MOVE-CORRESPONDING it_zycet002 TO it_zycet002_desa.
MOVE it_zycit282_des-qtd_mexp TO it_zycet002_desa-qtdapr.
APPEND it_zycet002_desa.
ENDIF.
ENDLOOP.
ENDFORM. " load_appropriatons
*&---------------------------------------------------------------------*
*& Form run_dispossession_exportation *
*&---------------------------------------------------------------------*
* Objetivo: Desapropriar materiais
*&---------------------------------------------------------------------*
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
*&---------------------------------------------------------------------*
* --> <nonon-nonon>
* <-- <nonon-nonon>
* <-- <nonon-nonon>
* <-> <nonon-nonon>
*&---------------------------------------------------------------------*
* Chamado Data Descrição
*&---------------------------------------------------------------------*
* 233207 18/05/2005 Incluído consistencia para verificar se
* campo /PWS/ZYCEE116-NRRE está preenchido
* Caso estiver preenchido, não deixar
* desapropriar.
*&---------------------------------------------------------------------*
FORM run_dispossession_exportation.
DATA: v_confirm(1) TYPE c,
v_pct TYPE i,
v_cont TYPE i.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = text-006
* DIAGNOSE_OBJECT = ' '
text_question = text-025
text_button_1 = text-008
* ICON_BUTTON_1 = ' '
text_button_2 = text-009
* ICON_BUTTON_2 = ' '
default_button = '1'
display_cancel_button = 'X'
* USERDEFINED_F1_HELP = ' '
* START_COLUMN = 25
* START_ROW = 6
* POPUP_TYPE =
IMPORTING
answer = v_confirm
* TABLES
* PARAMETER =
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF v_confirm EQ '2' OR v_confirm EQ 'A'.
EXIT.
ELSE."Se RE(/PWS/ZYCEE116-NRRE) estiver preenchido não desapropriar.
SELECT * FROM /pws/zycet117
INTO TABLE itab_zycet117
WHERE nrseq IN nrseqexp.
IF sy-subrc EQ 0.
LOOP AT itab_zycet117 WHERE nrre NE space.
MESSAGE i015 WITH text-063 itab_zycet117-nrseqre '.' text-064.
ENDLOOP.
IF sy-subrc = 0.
EXIT.
ENDIF.
ENDIF.
ENDIF.
CLEAR: it_zycit247_save,
it_zycit279_save,
it_zycit282_est ,
it_zycit283_est .
REFRESH: it_zycit247_save,
it_zycit279_save,
it_zycit282_est ,
it_zycit283_est .
DESCRIBE TABLE it_zycet002_desa LINES v_ilinhas.
v_cont = 1.
SORT it_zycet002_desa BY nrseq vbeln_va aupos vbeln_vl posnl.
DELETE ADJACENT DUPLICATES FROM it_zycet002_desa COMPARING
nrseq vbeln_va aupos vbeln_vl posnl.
LOOP AT it_zycet002_desa.
* Apura a porcentagem total executada e passa como parâmetro para
* apresentar a ampulheta de execução.
v_pct = ( 100 * v_cont ) / v_ilinhas.
IF v_pct > 100.
v_pct = 100.
ENDIF.
CLEAR it_zycet002.
READ TABLE it_zycet002 WITH KEY
nrseq = it_zycet002_desa-nrseq
vbeln_va = it_zycet002_desa-vbeln_va
aupos = it_zycet002_desa-aupos
* AND vbeln_vf = it_zycet002_desa-vbeln_vf
* AND posnr = it_zycet002_desa-posnr
* AND docnum = it_zycet002_desa-docnum
vbeln_vl = it_zycet002_desa-vbeln_vl
posnl = it_zycet002_desa-posnl.
IF sy-subrc NE 0.
CONTINUE.
ENDIF.
PERFORM show_progress USING v_pct.
* desapropria as importações (componentes) recebidos.
LOOP AT it_zycit282_des WHERE nrseqexp = it_zycet002-nrseq
AND vbeln_va = it_zycet002-vbeln_va
AND aupos = it_zycet002-aupos
* AND vbeln_vf = it_zycet002-vbeln_vf
* AND posnr = it_zycet002-posnr
* AND docnum = it_zycet002-docnum
AND vbeln_vl = it_zycet002-vbeln_vl
AND posnl = it_zycet002-posnl
AND eebeln = it_zycet002-ebeln
AND eebelp = it_zycet002-ebelp.
READ TABLE it_zycit279 WITH KEY
nrseq = it_zycit282_des-nrseqimp
ebeln = it_zycit282_des-ebeln
ebelp = it_zycit282_des-ebelp
nrseqd = it_zycit282_des-nrseqd
matnr = it_zycit282_des-matnr_imp.
IF sy-subrc EQ 0.
it_zycit279-slqtde =
it_zycit279-slqtde + it_zycit282_des-qtd_mimp.
IF it_zycit279-slqtde > it_zycit279-menge.
it_zycit279-slqtde = it_zycit279-menge.
ENDIF.
IF it_zycit279-slqtde > 0.
it_zycit279-esgotado = ' '.
ENDIF.
MODIFY it_zycit279 TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit282_des-nrseqimp
AND ebeln = it_zycit282_des-ebeln
AND ebelp = it_zycit282_des-ebelp
AND nrseqd = it_zycit282_des-nrseqd
AND matnr = it_zycit282_des-matnr_imp.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit282_des-nrseqimp
ebeln = it_zycit282_des-ebeln
ebelp = it_zycit282_des-ebelp
nrseqd = it_zycit282_des-nrseqd
matnr = it_zycit282_des-matnr_imp.
IF sy-subrc EQ 0.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde + it_zycit282_des-qtd_mimp.
IF it_zycit279_save-slqtde > it_zycit279_save-menge.
it_zycit279_save-slqtde = it_zycit279_save-menge.
ENDIF.
IF it_zycit279_save-slqtde > 0.
it_zycit279_save-esgotado = ' '.
ENDIF.
MODIFY it_zycit279_save
TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit282_des-nrseqimp
AND ebeln = it_zycit282_des-ebeln
AND ebelp = it_zycit282_des-ebelp
AND nrseqd = it_zycit282_des-nrseqd
AND matnr = it_zycit282_des-matnr_imp.
ELSE.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ENDIF.
MOVE-CORRESPONDING it_zycit282_des TO it_zycit282_est.
APPEND it_zycit282_est.
ENDIF.
ENDLOOP.
v_cont = v_cont + 1.
ENDLOOP.
** salva nas tabelas transparentes os novos saldos.
* MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.
MODIFY /pws/zycit279 FROM TABLE it_zycit279_save.
* elimina as apropriações estornadas.
DELETE /pws/zycit282 FROM TABLE it_zycit282_est.
DELETE /pws/zycit283 FROM TABLE it_zycit283_est.
SORT it_zycit282_est BY nrseqexp vbeln_va aupos vbeln_vl posnl
eebeln eebelp nrseqd.
DELETE ADJACENT DUPLICATES FROM it_zycit282_est
COMPARING nrseqexp vbeln_va aupos vbeln_vl posnl
eebeln eebelp nrseqd.
LOOP AT it_zycit282_est.
******
READ TABLE it_zycit247 WITH KEY nrseqd = it_zycit282_est-nrseqd
nritem = it_zycit282_est-nritem.
IF sy-subrc EQ 0.
it_zycit247-sdomat_e = it_zycit247-sdomat_e +
it_zycit282_est-qtd_mexp.
IF it_zycit247-sdomat_e > it_zycit247-qtd_iten.
it_zycit247-sdomat_e = it_zycit247-qtd_iten.
ENDIF.
IF it_zycit247-sdomat_e > 0.
it_zycit247-esgotado = ' '.
ENDIF.
MODIFY it_zycit247 TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit282_est-nrseqd
AND nritem = it_zycit282_est-nritem.
READ TABLE it_zycit247_save WITH KEY
nrseqd = it_zycit247-nrseqd
nritem = it_zycit247-nritem.
IF sy-subrc EQ 0.
it_zycit247_save-sdomat_e = it_zycit247-sdomat_e.
it_zycit247_save-esgotado = it_zycit247-esgotado.
MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado
WHERE nrseqd = it_zycit247-nrseqd
AND nritem = it_zycit247-nritem.
ELSE.
MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.
APPEND it_zycit247_save.
ENDIF.
* MOVE-CORRESPONDING it_zycit283_des TO it_zycit283_est.
* APPEND it_zycit283_est.
ENDIF.
******
UPDATE /pws/zycet002 SET staprop = ' '
WHERE nrseq = it_zycit282_est-nrseqexp
AND vbeln_va = it_zycit282_est-vbeln_va
AND aupos = it_zycit282_est-aupos
AND vbeln_vl = it_zycit282_est-vbeln_vl
AND posnl = it_zycit282_est-posnl.
ENDLOOP.
MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.
COMMIT WORK.
IF sy-subrc EQ 0.
MESSAGE s015 WITH text-026.
LEAVE TO SCREEN 0.
ENDIF.
ENDFORM. " run_dispossession_exportation
*&---------------------------------------------------------------------*
*& Form show_progress *
*&---------------------------------------------------------------------*
FORM show_progress USING p_pct.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
percentage = p_pct
text = ''.
ENDFORM. " show_progress
*&---------------------------------------------------------------------*
*& Form lock_record_receb *
*&---------------------------------------------------------------------*
FORM lock_record_receb.
LOOP AT it_zycit279.
CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT279'
EXPORTING
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
EXCEPTIONS
foreign_lock = 1
system_failure = 2.
CASE sy-subrc.
WHEN 1.
* Trata log erro (Não foi possível travar registro).
CLEAR: v_errolog, it_log_erro.
CONCATENATE text-027 it_zycit279-ebeln text-028
it_zycit279-ebelp text-029
INTO v_errolog SEPARATED BY space.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
DELETE it_zycit279.
WHEN 2.
* Trata log erro (Problemas no bloqueio do registro).
CLEAR: v_errolog, it_log_erro.
MOVE text-030 TO v_errolog.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
DELETE it_zycit279.
ENDCASE.
ENDLOOP.
ENDFORM. " lock_record_receb
*&---------------------------------------------------------------------*
*& Form lock_record_ato *
*&---------------------------------------------------------------------*
FORM lock_record_ato.
LOOP AT it_zycit247.
CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT247'
EXPORTING
nrseqd = it_zycit247-nrseqd
* nritem = it_zycit247-codmat
EXCEPTIONS
foreign_lock = 1
system_failure = 2.
CASE sy-subrc.
WHEN 1.
* Trata log erro (Não foi possível travar registro).
MESSAGE i013 WITH text-056 text-057 text-058.
LEAVE PROGRAM.
WHEN 2.
* Trata log erro (Problemas no bloqueio do registro).
CLEAR: v_errolog, it_log_erro.
MOVE text-030 TO v_errolog.
MOVE v_errolog TO it_log_erro.
APPEND it_log_erro.
DELETE it_zycit247.
ENDCASE.
ENDLOOP.
ENDFORM. " lock_record_ato
*&---------------------------------------------------------------------*
*& Form unlock_record_receb *
*&---------------------------------------------------------------------*
FORM unlock_record_receb.
LOOP AT it_zycit279.
CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT279'
EXPORTING
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp.
ENDLOOP.
ENDFORM. " unlock_record_receb
*&---------------------------------------------------------------------*
*& Form unlock_record_ato *
*&---------------------------------------------------------------------*
FORM unlock_record_ato.
LOOP AT it_zycit247.
CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT247'
EXPORTING
nrseqd = it_zycit247-nrseqd.
* codmat = it_zycit247-codmat.
ENDLOOP.
ENDFORM. " unlock_record_ato
*&---------------------------------------------------------------------*
*& Form trata_ordem_venda
*&---------------------------------------------------------------------*
FORM trata_ordem_venda.
DATA: nrseq LIKE /pws/zycee085-nrseq, " Sequencial de Agrupamento
itab_zycit428 LIKE /pws/zycit428 OCCURS 0 WITH HEADER LINE.
CLEAR itab_zycee085. REFRESH itab_zycee085.
* SELECT * FROM /pws/zycit428 INTO TABLE itab_zycit428
* WHERE export EQ 'X'.
LOOP AT it_zycet002.
*Authority-check Centro
AUTHORITY-CHECK OBJECT 'C_PPBD'
ID 'AKTTYP' FIELD 'V'
ID 'WERKS' FIELD it_zycet002-werks.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-289 it_zycet002-werks.
DELETE it_zycet002 WHERE werks EQ it_zycet002-werks.
CONTINUE.
ENDIF.
*Authority-check Empresa
AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'
ID 'BUKRS' FIELD it_zycet002-bukrs "Empresa
ID 'ACTVT' FIELD '01'.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-291 it_zycet002-bukrs.
DELETE it_zycet002 WHERE bukrs EQ it_zycet002-bukrs.
CONTINUE.
ENDIF.
nrseq = nrseq + 1.
itab_zycee085-nrseq = nrseq.
SHIFT itab_zycee085-nrseq RIGHT DELETING TRAILING space.
UNPACK itab_zycee085-nrseq TO itab_zycee085-nrseq.
MOVE : it_zycet002-mandt TO itab_zycee085-mandt,
it_zycet002-vbeln_va TO itab_zycee085-vbeln_va,
it_zycet002-vbeln_vf TO itab_zycee085-vbeln_vf,
it_zycet002-vbeln_vl TO itab_zycee085-vbeln_vl,
it_zycet002-posnl TO itab_zycee085-posnl,
it_zycet002-posnr TO itab_zycee085-posnr,
it_zycet002-aupos TO itab_zycee085-aupos,
it_zycet002-ntgew TO itab_zycee085-ntgew,
it_zycet002-brgew TO itab_zycee085-brgew,
it_zycet002-shkzg TO itab_zycee085-shkzg,
it_zycet002-nfnum TO itab_zycee085-nfnum,
it_zycet002-auart TO itab_zycee085-auart,
it_zycet002-fkart TO itab_zycee085-fkart,
it_zycet002-waers TO itab_zycee085-waers,
it_zycet002-gewei TO itab_zycee085-gewei,
it_zycet002-inco1 TO itab_zycee085-inco1,
it_zycet002-fkimg TO itab_zycee085-fkimg,
it_zycet002-vrkme TO itab_zycee085-vrkme,
it_zycet002-vlme TO itab_zycee085-vlme .
APPEND itab_zycee085.
ENDLOOP.
EXPORT itab_zycee085 TO MEMORY ID 'ODOC'.
CALL FUNCTION '/PWS/ZYCE_TRATA_ORDEM'
TABLES
t_saida = itab_saida.
FREE MEMORY ID 'ODOC'.
LOOP AT itab_saida WHERE vlme = space OR
( ntgew = space AND brgew = space AND fkimg = space ).
DELETE it_zycet002 WHERE vbeln_va = itab_saida-vbeln_va
AND vbeln_vf = itab_saida-vbeln_vf
AND vbeln_vl = itab_saida-vbeln_vl
AND posnl = itab_saida-posnl
AND posnr = itab_saida-posnr
AND aupos = itab_saida-aupos.
DELETE itab_saida.
ENDLOOP.
ENDFORM. " trata_ordem_venda
*&---------------------------------------------------------------------*
*& Form check_minimum_selection *
*&---------------------------------------------------------------------*
FORM check_minimum_selection CHANGING p_erro.
IF nrseqexp[] IS INITIAL AND
vbeln_va[] IS INITIAL AND
aupos[] IS INITIAL AND
vbeln_vf[] IS INITIAL AND
posnr[] IS INITIAL AND
docnum[] IS INITIAL AND
vbeln_vl[] IS INITIAL AND
posnl[] IS INITIAL AND
eebeln[] IS INITIAL AND
eebelp[] IS INITIAL AND
matnr[] IS INITIAL.
p_erro = 'S'.
ENDIF.
ENDFORM. " check_minimum_selection
*&---------------------------------------------------------------------*
*& Form check_field_selection *
*&---------------------------------------------------------------------*
FORM check_field_selection.
DATA: v_vbeln_va LIKE vbak-vbeln ,
v_vbeln_vf LIKE vbrp-vbeln ,
v_vbeln_vl LIKE vbrp-vbeln ,
v_docnum LIKE /pws/zycet002-docnum ,
i_ebeln LIKE ekko-ebeln ,
v_nrseqdi LIKE /pws/zycie085-nrseqdi,
v_tpdi LIKE /pws/zycie085-tpdi .
CLEAR: v_campo, v_valor.
GET CURSOR FIELD v_campo VALUE v_valor.
CASE v_campo.
WHEN '/PWS/ZYCEE002-NRSEQ'.
* Visualiza o Embarque de exportação.
IF NOT v_valor IS INITIAL.
SET PARAMETER ID '/PWS/ZYCEP001' FIELD v_valor.
CALL TRANSACTION '/PWS/ZYCE003_E' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
WHEN '/PWS/ZYCEE002-VBELN_VA'.
* Visualiza a Ordem de Venda de exportação.
IF NOT v_valor IS INITIAL. " Seleção Ordem de Venda
v_vbeln_va = v_valor.
SET PARAMETER ID 'AUN' FIELD v_vbeln_va.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
WHEN '/PWS/ZYCEE002-VBELN_VF'.
* Visualiza Ordem de faturamento de exportação.
IF NOT v_valor IS INITIAL. " Seleção Ordem de Faturamento
v_vbeln_vf = v_valor.
SET PARAMETER ID 'VF' FIELD v_vbeln_vf.
CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.
ENDIF.
WHEN '/PWS/ZYCEE002-VBELN_VL'.
* Visualiza Ordem de Fornecimento de exportação.
IF NOT v_valor IS INITIAL. "Sel Fornecimento
v_vbeln_vl = v_valor.
SET PARAMETER ID 'VL' FIELD v_vbeln_vl.
CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
WHEN '/PWS/ZYCEE002-DOCNUM'.
* Visualiza o documento de venda.
IF NOT v_valor IS INITIAL. "Sel Doc. Venda
v_docnum = v_valor.
SET PARAMETER ID 'JEF' FIELD v_docnum.
CALL TRANSACTION 'J1B3' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
WHEN '/PWS/ZYCIE282-EBELN'.
* Visualiza o Doc. de Compra.
IF NOT v_valor IS INITIAL. "Sel Documento de Compra
SELECT SINGLE ebeln FROM ekko INTO ekko
WHERE ebeln = v_valor.
IF sy-subrc EQ 0.
i_ebeln = v_valor.
SET PARAMETER ID 'BES' FIELD i_ebeln.
CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.
ENDIF.
ENDIF.
WHEN '/PWS/ZYCIE282-NRSEQIMP'.
* Visualiza o Embarque Importação.
IF NOT v_valor IS INITIAL. "Sel Embarque Importação
SET PARAMETER ID '/PWS/ZYCIP001' FIELD v_valor.
CALL TRANSACTION '/PWS/ZYCI001_E' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
WHEN '/PWS/ZYCIE282-NRSEQD'.
* Visualiza o Ato Concessório.
IF NOT v_valor IS INITIAL.
SET PARAMETER ID '/PWS/ZYCIP435' FIELD v_valor.
CALL TRANSACTION '/PWS/ZYCI040_E' AND SKIP FIRST SCREEN.
CLEAR ok_code.
ENDIF.
ENDCASE.
ENDFORM. " check_field_selection
*&---------------------------------------------------------------------*
*& Form collect_materials *
*&---------------------------------------------------------------------*
FORM collect_materials TABLES it_stpox STRUCTURE it_stpox
it_stpox2 STRUCTURE it_stpox2
it_matcat STRUCTURE it_matcat.
DATA: v_qtd LIKE it_stpox-mngko.
SORT it_stpox BY ttidx ASCENDING.
SORT it_matcat BY index ASCENDING.
LOOP AT it_stpox2.
MOVE-CORRESPONDING it_stpox2 TO it_stpox.
APPEND it_stpox.
ENDLOOP.
LOOP AT it_matcat WHERE index = 1.
READ TABLE it_stpox WITH KEY idnrk = it_matcat-matnr.
IF sy-subrc EQ 0.
v_qtd = it_stpox-mngko.
LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.
CHECK it_stpox-mngko >= 0.
it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.
MODIFY it_stpox.
ENDLOOP.
ENDIF.
ENDLOOP.
LOOP AT it_matcat WHERE index > 1.
READ TABLE it_stpox WITH KEY idnrk = it_matcat-matnr.
IF sy-subrc EQ 0.
v_qtd = it_stpox-mngko.
LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.
CHECK it_stpox-mngko >= 0.
it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.
MODIFY it_stpox.
ENDLOOP.
IF sy-subrc EQ 0.
DELETE it_stpox WHERE idnrk EQ it_matcat-matnr.
ENDIF.
ENDIF.
ENDLOOP.
IF sy-subrc NE 0.
LOOP AT it_stpox.
MOVE it_stpox-mngko TO it_stpox-mngko2.
MODIFY it_stpox.
ENDLOOP.
ELSE.
LOOP AT it_matcat WHERE index = 1.
LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.
CHECK it_stpox-mngko >= 0.
it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.
MODIFY it_stpox.
ENDLOOP.
ENDLOOP.
ENDIF.
SORT it_stpox BY idnrk ASCENDING.
ENDFORM. " COLLECT_MATERIALS
*&---------------------------------------------------------------------*
*& Form converte_um_base
*&---------------------------------------------------------------------*
* Objetivo: Converte Unidade de Medida Base
*&---------------------------------------------------------------------*
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
*&---------------------------------------------------------------------*
* --> P_MATNR
* <-- P_MEINS
* <-- P_QTD
* <-> <nonon-nonon>
*&---------------------------------------------------------------------*
* Chamado Data Descrição
*&---------------------------------------------------------------------*
* 232196 16/05/2005 Alterado a variavel do select(INTO)
*&---------------------------------------------------------------------*
FORM converte_um_base USING p_matnr
CHANGING p_meins
p_qtd.
DATA: v_um_rez TYPE i,
v_meinsb LIKE marm-meinh,
v_um_rez1 LIKE marm-umrez,
v_um_ren1 LIKE marm-umren,
v_um_ren TYPE i.
DATA: v_conv1 TYPE /pws/zycit245-qtd_ncm,
v_conv2 TYPE /pws/zycit245-qtd_ncm.
SELECT SINGLE meins FROM mara INTO v_meinsb
WHERE matnr EQ p_matnr.
IF v_meinsb = p_meins.
EXIT.
ENDIF.
CLEAR: v_um_rez, v_um_ren.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = p_meins
unit_out = v_meinsb
IMPORTING
denominator = v_um_ren
numerator = v_um_rez
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10.
IF sy-subrc <> 0.
SELECT SINGLE umrez umren
FROM marm INTO (v_um_rez1, v_um_ren1)
WHERE matnr = p_matnr
AND meinh = p_meins.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-061 p_meins text-062 p_matnr.
CLEAR p_qtd.
EXIT.
ELSE.
v_um_rez = v_um_rez1.
v_um_ren = v_um_ren1.
ENDIF.
ENDIF.
IF v_um_rez IS INITIAL
OR v_um_ren IS INITIAL.
EXIT.
ENDIF.
p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.
p_meins = v_meinsb.
ENDFORM. " converte_um_base
*&---------------------------------------------------------------------*
*& Form cob_camb
*&---------------------------------------------------------------------*
FORM cob_camb.
LOOP AT it_apr_final WHERE nrseqexp EQ it_zycet002-nrseq
AND vbeln_va EQ it_zycet002-vbeln_va.
IF "v_ebelp ne it_apr_final-ebelp or
v_exp_camb NE it_apr_final-exp_c_cob_camb.
v_exp_camb = v_exp_camb + it_apr_final-exp_c_cob_camb.
ENDIF.
IF v_ebelp2 NE it_apr_final-ebelp OR
v_imp_camb NE it_apr_final-imp_s_cob_camb.
v_ebelp2 = it_apr_final-ebelp.
v_imp_camb = v_imp_camb + it_apr_final-imp_s_cob_camb.
ENDIF.
ENDLOOP.
ENDFORM. " cob_camb
*&---------------------------------------------------------------------*
*& Form valor_converte_imp
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_3587 text
* -->P_3588 text
* -->P_V_DATATX text
* <--P_ITAB_ZYCIT246_VLCIFN_ME text
*----------------------------------------------------------------------*
FORM valor_converte_imp USING p_waersde
p_waerspara
p_data
CHANGING p_valor.
* CLEAR: p_taxa, v_msgfre.
DATA: v_origem LIKE tcurc-/pws/codmo,
v_destino LIKE tcurc-/pws/codmo,
v_taxa LIKE /pws/zycit174-txconver,
v_taxa2 LIKE /pws/zycit174-txconver.
SELECT SINGLE /pws/codmo FROM tcurc INTO v_origem WHERE
waers = p_waersde.
IF sy-subrc EQ 0.
CLEAR v_taxa.
SELECT SINGLE txconver FROM /pws/zycit174 INTO v_taxa WHERE
codconver = v_origem AND
vigen_inicio <= p_data AND
vigen_fim >= p_data .
IF sy-subrc NE 0 AND p_waersde EQ 'BRL'.
v_taxa = 1.
ENDIF.
ENDIF.
SELECT SINGLE /pws/codmo FROM tcurc INTO v_destino WHERE
waers = p_waerspara.
IF sy-subrc EQ 0.
CLEAR v_taxa2.
SELECT SINGLE txconver FROM /pws/zycit174 INTO v_taxa2 WHERE
codconver = v_destino AND
vigen_inicio <= p_data AND
vigen_fim >= p_data.
ENDIF.
IF NOT v_taxa IS INITIAL AND NOT v_taxa2 IS INITIAL.
p_valor = ( p_valor * v_taxa ) / v_taxa2.
ENDIF.
ENDFORM. " valor_converte_imp
*&---------------------------------------------------------------------*
*& Form converte_um_ncm
*&---------------------------------------------------------------------*
* Objetivo: Converter quantidade do mateiral para a unidade de medida
* usada pelo siscomex.
* --------------------------------------------------------------------
* --> p_itab_zycit247_codmat - codigo do material
* <-> p_meins - unidade de medida
* <-> p_qtd - Quantidade a ser convertida
* --------------------------------------------------------------------
* Chamado Data Descrição
* --------------------------------------------------------------------
* 260597 29/09/05 Codificação inicial **
* --------------------------------------------------------------------
FORM converte_um_ncm USING p_matnr
CHANGING p_meins
p_werks
p_qtd.
*
DATA: v_cod_umncm LIKE /pws/zyglt204-zum , " Codigo da UM.Estat.
v_codpais LIKE /pws/zycev604-land1 , " Código do País
v_meinsb LIKE marm-meinh,
v_um_rez TYPE i,
v_um_ren TYPE i,
v_um_rez2 TYPE i,
v_um_ren2 TYPE i,
v_um_rez1 LIKE marm-umrez,
v_um_ren1 LIKE marm-umren,
v_j_1bnbm LIKE /pws/zycit247-j_1bnbm,
v_umncm LIKE /pws/zyglt204-msehi , " UM. Estatistica
v_qtd_ncm LIKE /pws/zycit247-qtd_ncm. " Total Qtd. NCM.
DATA: v_conv1 TYPE /pws/zycit245-qtd_ncm,
v_conv2 TYPE /pws/zycit245-qtd_ncm.
CLEAR: v_um_rez, v_um_ren, v_codpais, v_cod_umncm, v_umncm,
v_um_rez2, v_um_ren2.
IF p_werks IS INITIAL.
CLEAR p_qtd.
EXIT.
ENDIF.
* Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F
CLEAR v_cod_umncm.
SELECT SINGLE a~steuc INTO v_j_1bnbm
FROM ( marc AS a INNER JOIN t001w AS b ON
a~werks EQ b~werks )
WHERE a~matnr EQ p_matnr
AND a~steuc NE space
AND b~land1 EQ t001-land1.
IF sy-subrc EQ 0.
SELECT SINGLE land1 /pws/zum
FROM t604f INTO (v_codpais, v_cod_umncm)
WHERE steuc = v_j_1bnbm.
ENDIF.
IF NOT v_cod_umncm IS INITIAL.
* Seleciona a UM.Estatística
SELECT SINGLE msehi
FROM /pws/zyglt204 INTO (v_umncm)
WHERE zum = v_cod_umncm.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-072 text-073 v_j_1bnbm.
CLEAR p_qtd.
EXIT.
ENDIF.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = p_meins
unit_out = v_umncm
IMPORTING
denominator = v_um_ren
numerator = v_um_rez
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10.
IF sy-subrc = 0.
p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.
p_meins = v_umncm.
EXIT.
ENDIF.
ENDIF.
SELECT SINGLE meins FROM mara INTO v_meinsb
WHERE matnr EQ p_matnr.
IF v_meinsb NE p_meins.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = p_meins
unit_out = v_meinsb
IMPORTING
* ADD_CONST =
* DECIMALS =
denominator = v_um_ren
numerator = v_um_rez
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10
.
IF sy-subrc <> 0.
SELECT SINGLE umrez umren
FROM marm INTO (v_um_rez1, v_um_ren1)
WHERE matnr = p_matnr
AND meinh = p_meins.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-061 p_meins text-062 p_matnr.
CLEAR p_qtd.
EXIT.
ELSE.
v_um_rez = v_um_rez1.
v_um_ren = v_um_ren1.
ENDIF.
ENDIF.
IF v_um_rez IS INITIAL
OR v_um_ren IS INITIAL.
EXIT.
ENDIF.
* p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.
* CLEAR: v_um_rez, v_um_ren.
ELSE.
v_um_ren = 1.
v_um_rez = 1.
ENDIF.
* Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F
IF NOT v_cod_umncm IS INITIAL.
* Seleciona o contador para conversão de UM. Estatistica.
IF v_meinsb NE v_umncm.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = v_meinsb
unit_out = v_umncm
IMPORTING
* ADD_CONST =
* DECIMALS =
denominator = v_um_rez2
numerator = v_um_ren2
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10
.
IF sy-subrc <> 0.
SELECT SINGLE umrez umren
FROM marm INTO (v_um_rez1, v_um_ren1)
WHERE matnr = p_matnr
AND meinh = v_umncm.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-061 v_umncm text-062 p_matnr.
CLEAR p_qtd.
EXIT.
ELSE.
v_um_rez2 = v_um_rez1.
v_um_ren2 = v_um_ren1.
ENDIF.
ENDIF.
IF v_um_rez IS INITIAL
OR v_um_ren IS INITIAL.
EXIT.
ENDIF.
* p_qtd = ( p_qtd / v_um_rez ) * v_um_ren.
ELSE.
v_um_ren2 = 1.
v_um_rez2 = 1.
ENDIF.
p_qtd = p_qtd *
( ( v_um_rez / v_um_ren ) * ( v_um_ren2 / v_um_rez2 ) ).
p_meins = v_umncm.
ELSE.
IF v_j_1bnbm IS INITIAL.
MESSAGE i015 WITH text-074 p_matnr.
ELSE.
MESSAGE i015 WITH text-072 text-073 v_j_1bnbm.
ENDIF.
CLEAR p_qtd.
EXIT.
ENDIF.
ENDFORM. "
***********************************
*&---------------------------------------------------------------------*
*& Form converte_um_ncm
*&---------------------------------------------------------------------*
* Objetivo: Converter quantidade do mateiral para a unidade de medida
* usada pelo siscomex.
* --------------------------------------------------------------------
* --> p_itab_zycit247_codmat - codigo do material
* <-> p_meins - unidade de medida
* <-> p_qtd - Quantidade a ser convertida
* --------------------------------------------------------------------
* Chamado Data Descrição
* --------------------------------------------------------------------
* 260597 29/09/05 Codificação inicial **
* --------------------------------------------------------------------
FORM converte_unidade USING p_matnr
p_de
p_para
CHANGING p_qtd.
*
DATA: v_cod_umncm LIKE /pws/zyglt204-zum , " Codigo da UM.Estat.
v_codpais LIKE /pws/zycev604-land1 , " Código do País
v_meinsb LIKE marm-meinh,
v_um_rez TYPE i,
v_um_ren TYPE i,
v_um_rez2 TYPE i,
v_um_ren2 TYPE i,
v_um_rez1 LIKE marm-umrez,
v_um_ren1 LIKE marm-umren,
v_j_1bnbm LIKE /pws/zycit247-j_1bnbm,
v_umncm LIKE /pws/zyglt204-msehi , " UM. Estatistica
v_qtd_ncm LIKE /pws/zycit247-qtd_ncm. " Total Qtd. NCM.
DATA: v_conv1 TYPE /pws/zycit245-qtd_ncm,
v_conv2 TYPE /pws/zycit245-qtd_ncm.
CLEAR: v_um_rez, v_um_ren, v_codpais, v_cod_umncm, v_umncm,
v_um_rez2, v_um_ren2.
* Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F
CLEAR v_cod_umncm.
SELECT SINGLE a~steuc INTO v_j_1bnbm
FROM ( marc AS a INNER JOIN t001w AS b ON
a~werks EQ b~werks )
WHERE a~matnr EQ p_matnr
AND a~steuc NE space
AND b~land1 EQ t001-land1.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = p_de
unit_out = p_para
IMPORTING
denominator = v_um_ren
numerator = v_um_rez
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10.
IF sy-subrc = 0.
p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.
EXIT.
ENDIF.
SELECT SINGLE meins FROM mara INTO v_meinsb
WHERE matnr EQ p_matnr.
IF v_meinsb NE p_de.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = p_de
unit_out = v_meinsb
IMPORTING
* ADD_CONST =
* DECIMALS =
denominator = v_um_ren
numerator = v_um_rez
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10
.
IF sy-subrc <> 0.
SELECT SINGLE umrez umren
FROM marm INTO (v_um_rez1, v_um_ren1)
WHERE matnr = p_matnr
AND meinh = p_de.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-061 p_de text-062 p_matnr.
CLEAR p_qtd.
EXIT.
ELSE.
v_um_rez = v_um_rez1.
v_um_ren = v_um_ren1.
ENDIF.
ENDIF.
IF v_um_rez IS INITIAL
OR v_um_ren IS INITIAL.
EXIT.
ENDIF.
ELSE.
v_um_ren = 1.
v_um_rez = 1.
ENDIF.
* Seleciona o contador para conversão de UM. Estatistica.
IF v_meinsb NE p_para.
v_conv1 = 1.
CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'
EXPORTING
input = v_conv1
no_type_check = 'X'
round_sign = 'X'
unit_in = v_meinsb
unit_out = p_para
IMPORTING
* ADD_CONST =
* DECIMALS =
denominator = v_um_rez2
numerator = v_um_ren2
output = v_conv2
EXCEPTIONS
conversion_not_found = 1
division_by_zero = 2
input_invalid = 3
output_invalid = 4
overflow = 5
type_invalid = 6
units_missing = 7
unit_in_not_found = 8
unit_out_not_found = 9
OTHERS = 10
.
IF sy-subrc <> 0.
SELECT SINGLE umrez umren
FROM marm INTO (v_um_rez1, v_um_ren1)
WHERE matnr = p_matnr
AND meinh = p_para.
IF sy-subrc NE 0.
MESSAGE i015 WITH text-061 p_para text-062 p_matnr.
CLEAR p_qtd.
EXIT.
ELSE.
v_um_rez2 = v_um_rez1.
v_um_ren2 = v_um_ren1.
ENDIF.
ENDIF.
IF v_um_rez IS INITIAL
OR v_um_ren IS INITIAL.
EXIT.
ENDIF.
ELSE.
v_um_ren2 = 1.
v_um_rez2 = 1.
ENDIF.
p_qtd = p_qtd *
( ( v_um_rez / v_um_ren ) * ( v_um_ren2 / v_um_rez2 ) ).
ENDFORM. "
*&---------------------------------------------------------------------*
*& Form apr_tf
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM apr_tf.
DATA: v_menorpct TYPE p DECIMALS 5 ,
v_allcomp(1) TYPE c ,
v_totit TYPE i ,
v_totit_tmp TYPE i ,
v_qtdtmp LIKE /pws/zycet002-fkimg ,
v_qtdtmp2 LIKE /pws/zycet002-fkimg ,
v_bxreceb LIKE /pws/zycit279-slqtde ,
v_bxatoc LIKE /pws/zycit247-sdomat_e,
v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,
v_saldo_e LIKE /pws/zycit247-sdomat_e,
v_meins_e LIKE /pws/zycit247-meins ,
v_dtnf LIKE sy-datum ,
v_aprcomum ,
v_dttax LIKE sy-datum .
* Apura a quantidade a ser usada do Ato concessório para os cálculos.
LOOP AT itab_lista_aux.
CLEAR it_zycit279.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr_alt NE space.
REFRESH itab_zycit433.
SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433
WHERE matnr EQ itab_lista_aux-matnr.
itab_zycit433-matnr = itab_lista_aux-matnr.
itab_zycit433-matnr_alt = itab_lista_aux-matnr.
APPEND itab_zycit433.
LOOP AT itab_zycit433.
it_zycit279-matnr_alt = itab_zycit433-matnr.
MODIFY it_zycit279 TRANSPORTING matnr_alt
WHERE matnr EQ itab_zycit433-matnr_alt
AND nrseqd EQ it_zycit247f-nrseqd.
ENDLOOP.
LOOP AT it_zycit279 WHERE nrseqd = it_zycit247f-nrseqd
AND esgotado = space
AND matnr_alt EQ itab_lista_aux-matnr.
*****************************
CLEAR v_dias.
v_dias = v_dtforn - it_zycit279-dtnf.
IF it_zycit281-nrdprod > v_dias.
CONTINUE.
ENDIF.
CLEAR it_apr_final.
MOVE: it_zycet002-nrseq TO it_apr_final-nrseqexp ,
it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,
it_zycet002-aupos TO it_apr_final-aupos ,
it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,
it_zycet002-posnr TO it_apr_final-posnr ,
it_zycet002-docnum TO it_apr_final-docnum ,
it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,
it_zycet002-posnl TO it_apr_final-posnl ,
it_zycet002-ebeln TO it_apr_final-eebeln ,
it_zycet002-ebelp TO it_apr_final-eebelp ,
it_zycet002-steuc TO it_apr_final-j_1bnbmexp,
it_zycit279-nrseq TO it_apr_final-nrseqimp ,
it_zycit279-ebeln TO it_apr_final-ebeln ,
it_zycit279-ebelp TO it_apr_final-ebelp ,
it_zycit279-nrseqd TO it_apr_final-nrseqd ,
it_zycet002-matnr TO it_apr_final-matnr_exp ,
it_zycet002-vrkme TO it_apr_final-meins_e ,
it_zycet002-fkimg TO it_apr_final-qtd_eorg ,
itab_lista_aux-perc TO it_apr_final-perc ,
it_zycit247f-nritem TO it_apr_final-nritem ,
it_zycit279-matnr TO it_apr_final-matnr_imp ,
itab_lista-meins TO it_apr_final-un_ncm ,
it_zycit279-meins TO it_apr_final-meins_i .
it_apr_final-mengecom = it_zycit279-slqtde.
* Trata perda e Perda excedente
READ TABLE itab_zycit439 WITH KEY
insumo = it_apr_final-matnr_imp
matnr = it_zycet002-matnr.
IF sy-subrc EQ 0.
IF itab_zycit439-perda IS INITIAL.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
ENDIF.
ELSE.
it_apr_final-perda = itab_zycit439-perda.
ENDIF.
IF itab_zycit439-perda_e IS INITIAL.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda_e = it_zycit245-perda_e.
ENDIF.
ELSE.
it_apr_final-perda_e = itab_zycit439-perda_e.
ENDIF.
ELSE.
READ TABLE it_zycit245 WITH KEY
nrseqd = it_apr_final-nrseqd
j_1bnbm = it_zycit279-j_1bnbm.
IF sy-subrc EQ 0.
it_apr_final-perda = it_zycit245-perda.
it_apr_final-perda_e = it_zycit245-perda_e.
ENDIF.
ENDIF.
it_apr_final-qtd_iorg = itab_lista_aux-qtd.
************************* ajusta quantidade a apropriar .
itab_lista_aux-qtd = itab_lista_aux-qtd -
( itab_lista_aux-qtd * ( it_apr_final-perda_e / 100 ) ) .
*************************
IF it_zycit279-slqtde < itab_lista_aux-qtd.
it_apr_final-qtd_mimp = it_zycit279-slqtde.
ELSE.
it_apr_final-qtd_mimp = itab_lista_aux-qtd.
ENDIF.
v_bxatoc = it_apr_final-qtd_mimp / itab_lista-usagem .
MOVE: v_bxatoc TO it_apr_final-qtd_mexp ,
v_bxatoc TO it_apr_final-qtd_ncm ,
it_zycet002-vrkme TO it_apr_final-um_ncm .
PERFORM converte_um_ncm USING it_apr_final-matnr_exp
CHANGING it_apr_final-um_ncm
it_zycet002-werks
it_apr_final-qtd_ncm.
itab_lista_aux-qtd = it_apr_final-qtd_iorg .
it_apr_final-qtd_iorg = itab_lista_aux-qtd.
************************* calcula quantidade de perda excesiva.
it_apr_final-qtd_perda_e =
( it_apr_final-qtd_mimp * it_apr_final-perda_e )
/ ( 100 - it_apr_final-perda_e ) .
it_apr_final-qtd_iorg = it_apr_final-qtd_iorg -
( it_apr_final-qtd_iorg * ( it_apr_final-perda_e / 100 ) ).
v_qtdtmp2 = v_qtdtmp2 - it_apr_final-qtd_mimp -
it_apr_final-qtd_perda_e .
* Calcula perda
it_apr_final-qtd_perda =
( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )
* ( it_apr_final-perda / 100 ).
* Atualiza saldos
itab_lista_aux-qtd = itab_lista_aux-qtd -
it_apr_final-qtd_mimp - it_apr_final-qtd_perda_e.
it_apr_final-qtd_eq_mexp =
( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )
/ itab_lista_aux-usagem.
CLEAR it_apr_final_aux.
MOVE it_apr_final TO it_apr_final_aux.
APPEND it_apr_final_aux.
APPEND it_apr_final.
READ TABLE itab_fornec WITH KEY lifnr = it_zycit244-lifnr.
IF sy-subrc NE 0 .
itab_fornec-lifnr = it_zycit244-lifnr .
itab_fornec-nrseqd = it_zycit244-nrseqd.
APPEND itab_fornec.
ENDIF.
it_zycit279-slqtde = it_zycit279-slqtde -
it_apr_final-qtd_mimp.
IF it_zycit279-slqtde <= 0.
it_zycit279-esgotado = 'X'.
ENDIF.
itab_lista_aux-qtd =
itab_lista_aux-qtd - it_apr_final-qtd_mimp.
MODIFY itab_lista_aux.
MODIFY it_zycit279.
* Atualiza a tabela de importações realizadas e seus saldos.
READ TABLE it_zycit279_save WITH KEY
nrseq = it_zycit279-nrseq
ebeln = it_zycit279-ebeln
ebelp = it_zycit279-ebelp
nrseqd = it_zycit279-nrseqd
matnr = it_zycit279-matnr.
IF sy-subrc NE 0.
CLEAR it_zycit279_save.
MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.
APPEND it_zycit279_save.
ELSE.
it_zycit279_save-slqtde =
it_zycit279_save-slqtde - it_apr_final-qtd_mimp.
IF it_zycit279_save-slqtde <= 0.
it_zycit279_save-esgotado = 'X'.
ENDIF.
MODIFY it_zycit279_save TRANSPORTING slqtde esgotado
WHERE nrseq = it_zycit279-nrseq
AND ebeln = it_zycit279-ebeln
AND ebelp = it_zycit279-ebelp
AND nrseqd = it_zycit279-nrseqd
AND matnr = it_zycit279-matnr.
ENDIF.
*****************************
ENDLOOP.
ENDLOOP.
ENDFORM. " apr_tf
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PROG /PWS/ZYCIR254I01
*----------------------------------------------------------------------*
***INCLUDE /PWS/ZYCIR070I01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0001 INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0001 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
PERFORM EXECUTE_BACK_BUTTON. "Botão Voltar
WHEN 'MALL'.
PERFORM EXECUTE_MALL_BUTTON. "Botão Marcar Todos
WHEN 'DALL'.
PERFORM EXECUTE_DALL_BUTTON. "Botão Desmarcar Todos
WHEN 'APROP'.
PERFORM EXECUTE_APROP_BUTTON. "Botão Apropriar Exportações
WHEN 'P-'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP-TOP_LINE = NEXTLINE.
WHEN 'P--'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP-TOP_LINE = NEXTLINE.
WHEN 'P+'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP-TOP_LINE = NEXTLINE.
WHEN 'P++'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP-TOP_LINE = NEXTLINE.
WHEN 'SELE'.
PERFORM CHECK_FIELD_SELECTION.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE. " USER_COMMAND_0001 INPUT
*&---------------------------------------------------------------------*
*& Module fill_table_it_zycet002 INPUT
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_IT_ZYCET002 INPUT.
IT_ZYCET002-NRSEQ = /PWS/ZYCEE002-NRSEQ .
IT_ZYCET002-VBELN_VA = /PWS/ZYCEE002-VBELN_VA.
IT_ZYCET002-AUPOS = /PWS/ZYCEE002-AUPOS .
IT_ZYCET002-VBELN_VF = /PWS/ZYCEE002-VBELN_VF.
IT_ZYCET002-POSNR = /PWS/ZYCEE002-POSNR .
IT_ZYCET002-DOCNUM = /PWS/ZYCEE002-DOCNUM .
IT_ZYCET002-VBELN_VL = /PWS/ZYCEE002-VBELN_VL.
IT_ZYCET002-POSNL = /PWS/ZYCEE002-POSNL .
IT_ZYCET002-EBELN = /PWS/ZYCEE002-EBELN .
IT_ZYCET002-EBELP = /PWS/ZYCEE002-EBELP .
IT_ZYCET002-FKIMG = /PWS/ZYCEE002-FKIMG .
IT_ZYCET002-VRKME = /PWS/ZYCEE002-VRKME .
IT_ZYCET002-MATNR = /PWS/ZYCEE002-MATNR .
IT_ZYCET002-MEXP = MEXP .
MODIFY IT_ZYCET002 INDEX TC_EXP-CURRENT_LINE.
ENDMODULE. " fill_table_it_zycet002 INPUT
*&---------------------------------------------------------------------*
*& Module user_command_0001_exit INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0001_EXIT INPUT.
CASE OK_CODE.
WHEN 'ABORT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " user_command_0001_exit INPUT
*&---------------------------------------------------------------------*
*& Module user_command_0002 INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0002 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
PERFORM EXECUTE_BACK_BUTTON2.
WHEN 'FIRST'.
PERFORM EXECUTE_FIRST_BUTTON2.
WHEN 'PRIOR'.
PERFORM EXECUTE_PRIOR_BUTTON2.
WHEN 'NEXT'.
PERFORM EXECUTE_NEXT_BUTTON2.
WHEN 'LAST'.
PERFORM EXECUTE_LAST_BUTTON2.
WHEN 'SELE'.
PERFORM EXECUTE_SELE_BUTTON2.
PERFORM CHECK_FIELD_SELECTION.
WHEN 'APROV'.
PERFORM EXECUTE_APROV_BUTTON2.
WHEN 'LOGER'.
PERFORM EXECUTE_LOGER_BUTTON2.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE. " user_command_0002 INPUT
*&---------------------------------------------------------------------*
*& Module user_command_0002_exit INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0002_EXIT INPUT.
CASE OK_CODE.
WHEN 'ABORT'.
* Desbloqueia os registros de recebimento.
PERFORM UNLOCK_RECORD_RECEB.
* Desbloqueia os registros do ato concessório.
PERFORM UNLOCK_RECORD_ATO.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " user_command_0002_exit INPUT
*&---------------------------------------------------------------------*
*& Module fill_table_it_zycet002_exp INPUT
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_IT_ZYCET002_EXP INPUT.
IT_ZYCET002-NRSEQ = /PWS/ZYCEE002-NRSEQ .
IT_ZYCET002-VBELN_VA = /PWS/ZYCEE002-VBELN_VA.
IT_ZYCET002-AUPOS = /PWS/ZYCEE002-AUPOS .
IT_ZYCET002-VBELN_VF = /PWS/ZYCEE002-VBELN_VF.
IT_ZYCET002-POSNR = /PWS/ZYCEE002-POSNR .
IT_ZYCET002-DOCNUM = /PWS/ZYCEE002-DOCNUM .
IT_ZYCET002-VBELN_VL = /PWS/ZYCEE002-VBELN_VL.
IT_ZYCET002-POSNL = /PWS/ZYCEE002-POSNL .
IT_ZYCET002-EBELN = /PWS/ZYCEE002-EBELN .
IT_ZYCET002-EBELP = /PWS/ZYCEE002-EBELP .
IT_ZYCET002-FKIMG = /PWS/ZYCEE002-FKIMG .
IT_ZYCET002-VRKME = /PWS/ZYCEE002-VRKME .
IT_ZYCET002-MATNR = /PWS/ZYCEE002-MATNR .
IT_ZYCET002-QTDBX = V_QTDBX .
ENDMODULE. " fill_table_it_zycet002_exp INPUT
*&---------------------------------------------------------------------*
*& Module fill_table_it_apr INPUT
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_IT_APR INPUT.
IT_APR-NRSEQIMP = /PWS/ZYCIE282-NRSEQIMP .
IT_APR-EBELN = /PWS/ZYCIE282-EBELN .
IT_APR-EBELP = /PWS/ZYCIE282-EBELP .
IT_APR-NRSEQD = /PWS/ZYCIE282-NRSEQD .
IT_APR-MATNR_IMP = /PWS/ZYCIE282-MATNR_IMP.
IT_APR-MEINS_I = /PWS/ZYCIE282-MEINS_I .
IT_APR-QTD_IORG = /PWS/ZYCIE282-QTD_IORG .
IT_APR-QTD_MIMP = /PWS/ZYCIE282-QTD_MIMP .
ENDMODULE. " fill_table_it_apr INPUT
*&---------------------------------------------------------------------*
*& Module user_command_0003 INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0003 INPUT.
CASE OK_CODE.
WHEN 'CANCE'.
LEAVE TO SCREEN 0.
WHEN 'P-'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_LOG-TOP_LINE = NEXTLINE.
WHEN 'P--'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_LOG-TOP_LINE = NEXTLINE.
WHEN 'P+'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_LOG-TOP_LINE = NEXTLINE.
WHEN 'P++'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_LOG-TOP_LINE = NEXTLINE.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE. " user_command_0003 INPUT
*&---------------------------------------------------------------------*
*& Module modify_qtd_aprop INPUT
*&---------------------------------------------------------------------*
MODULE MODIFY_QTD_APROP INPUT.
DATA: V_PCTAPR TYPE P DECIMALS 5 ,
V_APMAT(1) TYPE C ,
V_QTDAPROP LIKE /PWS/ZYCET002-FKIMG ,
V_QTDBASE LIKE ITAB_STKO-BMENG,
V_ERROR(1) TYPE C .
CLEAR: V_CAMPO, V_VALOR, V_LINHA.
GET CURSOR FIELD V_CAMPO VALUE V_VALOR LINE V_LINHA.
IF V_LINHA > 0.
V_POS = TC_EXP_AP-TOP_LINE + V_LINHA - 1.
MOVE V_POS TO V_INDICATU.
LOOP AT IT_ZYCET002 WHERE MEXP EQ 'X'.
IT_ZYCET002-MEXP = ' '.
MODIFY IT_ZYCET002.
ENDLOOP.
READ TABLE IT_ZYCET002 INDEX V_INDICATU.
IF SY-SUBRC EQ 0.
IT_ZYCET002-MEXP = 'X'.
MODIFY IT_ZYCET002 INDEX V_INDICATU.
* Posiciona as importações de acordo com os registros de
* exportações.
PERFORM LOCATE_RECORD_APPROPRIATION.
ENDIF.
ENDIF.
READ TABLE IT_ZYCET002 INDEX V_POS.
IF SY-SUBRC EQ 0.
IF V_QTDBX > IT_ZYCET002-FKIMG.
MESSAGE W061 WITH TEXT-022.
EXIT.
ENDIF.
CLEAR V_QTDAPROP.
* Apura a porcentagem da quantidade modificada.
V_PCTAPR = ( 100 * V_QTDBX ) / IT_ZYCET002-FKIMG.
READ TABLE IT_ZYCIT281 WITH KEY MATNR = IT_ZYCET002-MATNR.
" werks = it_zycet002-werks.
IF SY-SUBRC EQ 0.
* Puxa lista técnica de materiais.
CLEAR: IT_STPOX, IT_STPOX2, IT_MATCAT.
REFRESH: IT_STPOX, IT_STPOX2, IT_MATCAT. V_ERROLT = 'N'.
PERFORM GET_BOM_OF_MATERIALS TABLES IT_STPOX2
IT_MATCAT
USING IT_ZYCIT281-MATNR
IT_ZYCIT281-CAPID
IT_ZYCIT281-WERKS
IT_ZYCIT281-STLAN
IT_ZYCIT281-STLNR
IT_ZYCIT281-STLAL
CHANGING V_ERROLT.
IF V_ERROLT EQ 'N'.
* Trata recursividade dos componentes.
PERFORM COLLECT_MATERIALS TABLES IT_STPOX IT_STPOX2 IT_MATCAT.
PERFORM REVERSE_APPROPRIATION_MOD.
* Apropria o material vigente.
V_APMAT = 'N'.
LOOP AT IT_ZYCIT247 WHERE CODMAT EQ IT_ZYCET002-MATNR
AND ESGOTADO EQ ' '.
READ TABLE ITAB_STKO WITH KEY STLNR = IT_ZYCIT247-STLNR
STLAL = IT_ZYCIT247-STLAL.
IF SY-SUBRC NE 0.
V_QTDBASE = 1.
ELSE.
V_QTDBASE = ITAB_STKO-BMENG.
ENDIF.
CLEAR IT_ZYCIT244.
READ TABLE IT_ZYCIT244 WITH KEY NRSEQD = IT_ZYCIT247-NRSEQD.
IF V_QTDAPROP >= V_QTDBX.
EXIT.
ENDIF.
V_APMAT = 'S'.
V_ERROR = 'N'.
* Se o tipo de ato concessório não for genérico, executa uma
* rotina de apropriação não genérica, senão, executa uma rotina
* específica para genérico.
IF IT_ZYCIT244-TIPO NE 'G'.
PERFORM APPROPRIATE_TNG_MOD CHANGING V_QTDAPROP
V_QTDBASE
V_ERROR
V_PCTAPR.
ELSE.
PERFORM APPROPRIATE_TG_MOD CHANGING V_QTDAPROP
V_QTDBASE
V_ERROR
V_PCTAPR.
ENDIF.
IF V_ERROR EQ 'S'.
CONTINUE.
ENDIF.
ENDLOOP.
* Atualiza Log de Erro (Não há Atos Concessórios com Saldo).
IF V_APMAT = 'N'.
CLEAR: V_ERROLOG, IT_LOG_ERRO.
CONCATENATE TEXT-021 IT_ZYCET002-MATNR
INTO V_ERROLOG SEPARATED BY SPACE.
MOVE V_ERROLOG TO IT_LOG_ERRO.
APPEND IT_LOG_ERRO.
ENDIF.
MOVE V_QTDAPROP TO IT_ZYCET002-QTDBX.
MODIFY IT_ZYCET002 INDEX V_POS.
ELSE.
* Trata log erro (Lista técnica materiais não processada).
CLEAR: V_ERROLOG, IT_LOG_ERRO.
CONCATENATE TEXT-015 IT_ZYCET002-MATNR
INTO V_ERROLOG SEPARATED BY SPACE.
MOVE V_ERROLOG TO IT_LOG_ERRO.
APPEND IT_LOG_ERRO.
ENDIF.
ELSE.
* Trata log erro (Não há lista técnica de mat. parametrizada).
CLEAR: V_ERROLOG, IT_LOG_ERRO.
CONCATENATE TEXT-016 IT_ZYCET002-MATNR
INTO V_ERROLOG SEPARATED BY SPACE.
MOVE V_ERROLOG TO IT_LOG_ERRO.
APPEND IT_LOG_ERRO.
ENDIF.
* Posiciona as importações de acordo com os registros de
* exportações.
PERFORM LOCATE_RECORD_APPROPRIATION.
ENDIF.
ENDMODULE. " modify_qtd_aprop INPUT
*&---------------------------------------------------------------------*
*& Module fill_table_it_zycet002_desa INPUT
*&---------------------------------------------------------------------*
MODULE FILL_TABLE_IT_ZYCET002_DESA INPUT.
* it_zycet002_desa-nrseq = /pws/zycee002-nrseq .
* it_zycet002_desa-vbeln_va = /pws/zycee002-vbeln_va.
* it_zycet002_desa-aupos = /pws/zycee002-aupos .
* it_zycet002_desa-vbeln_vf = /pws/zycee002-vbeln_vf.
* it_zycet002_desa-posnr = /pws/zycee002-posnr .
* it_zycet002_desa-docnum = /pws/zycee002-docnum .
* it_zycet002_desa-vbeln_vl = /pws/zycee002-vbeln_vl.
* it_zycet002_desa-posnl = /pws/zycee002-posnl .
* it_zycet002_desa-ebeln = /pws/zycee002-ebeln .
* it_zycet002_desa-ebelp = /pws/zycee002-ebelp .
* it_zycet002_desa-qtdapr = v_apr .
* it_zycet002_desa-fkimg = /pws/zycee002-fkimg .
* it_zycet002_desa-vrkme = /pws/zycee002-vrkme .
* it_zycet002_desa-matnr = /pws/zycee002-matnr .
READ TABLE IT_ZYCET002_DESA INDEX TC_EXP_DESA-CURRENT_LINE.
IT_ZYCET002_DESA-MEXP = MEXP .
MODIFY IT_ZYCET002_DESA INDEX TC_EXP_DESA-CURRENT_LINE.
ENDMODULE. " fill_table_it_zycet002_desa INPUT
*&---------------------------------------------------------------------*
*& Module user_command_0004 INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0004 INPUT.
CASE OK_CODE.
WHEN 'BACK'.
PERFORM EXECUTE_BACK_BUTTON. "Botão Voltar
WHEN 'MALL'.
PERFORM EXECUTE_MALL_BUTTON_0004. "Botão Marcar Todos
WHEN 'DALL'.
PERFORM EXECUTE_DALL_BUTTON_0004. "Botão Desmarcar Todos
WHEN 'DESAPR'.
PERFORM EXECUTE_DESAPROP_BUTTON_0004. "Botão Despropriar Export.
WHEN 'P-'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP_DESA-TOP_LINE = NEXTLINE.
WHEN 'P--'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP_DESA-TOP_LINE = NEXTLINE.
WHEN 'P+'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP_DESA-TOP_LINE = NEXTLINE.
WHEN 'P++'.
CLEAR NEXTLINE.
DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.
PERFORM BLAETTERN
USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE
CHANGING NEXTLINE.
TC_EXP_DESA-TOP_LINE = NEXTLINE.
WHEN 'SELE'.
PERFORM CHECK_FIELD_SELECTION.
ENDCASE.
CLEAR OK_CODE.
ENDMODULE. " user_command_0004 INPUT
*&---------------------------------------------------------------------*
*& Form execute_mall_button_0004
*&---------------------------------------------------------------------*
FORM EXECUTE_MALL_BUTTON_0004.
LOOP AT IT_ZYCET002_DESA.
IT_ZYCET002_DESA-MEXP = 'X'.
MODIFY IT_ZYCET002_DESA.
ENDLOOP.
ENDFORM. " execute_mall_button_0004
*&---------------------------------------------------------------------*
*& Form execute_dall_button_0004
*&---------------------------------------------------------------------*
FORM EXECUTE_DALL_BUTTON_0004.
LOOP AT IT_ZYCET002_DESA.
IT_ZYCET002_DESA-MEXP = ' '.
MODIFY IT_ZYCET002_DESA.
ENDLOOP.
ENDFORM. " execute_dall_button_0004
*&---------------------------------------------------------------------*
*& Module user_command_0004_exit INPUT
*&---------------------------------------------------------------------*
MODULE USER_COMMAND_0004_EXIT INPUT.
CASE OK_CODE.
WHEN 'ABORT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " user_command_0004_exit INPUT
----------------------------------------------------------------------------------------------------
Modificações efetuadas em PROG /PWS/ZYCIR254O01
*----------------------------------------------------------------------*
***INCLUDE /PWS/ZYCIR070O01 .
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Module STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0001 OUTPUT.
PERFORM check_buttons_screen.
SET PF-STATUS 'ST0001' EXCLUDING it_buttons.
SET TITLEBAR '0001' WITH text-004.
ENDMODULE. " STATUS_0001 OUTPUT
*&---------------------------------------------------------------------*
*& Module fill_screen_0001 OUTPUT
*&---------------------------------------------------------------------*
MODULE fill_screen_0001 OUTPUT.
/pws/zycee002-nrseq = it_zycet002-nrseq.
/pws/zycee002-vbeln_va = it_zycet002-vbeln_va.
/pws/zycee002-aupos = it_zycet002-aupos.
/pws/zycee002-vbeln_vf = it_zycet002-vbeln_vf.
/pws/zycee002-posnr = it_zycet002-posnr.
/pws/zycee002-docnum = it_zycet002-docnum.
/pws/zycee002-vbeln_vl = it_zycet002-vbeln_vl.
/pws/zycee002-posnl = it_zycet002-posnl.
/pws/zycee002-ebeln = it_zycet002-ebeln.
/pws/zycee002-ebelp = it_zycet002-ebelp.
/pws/zycee002-fkimg = it_zycet002-fkimg.
/pws/zycee002-vrkme = it_zycet002-vrkme.
/pws/zycee002-matnr = it_zycet002-matnr.
mexp = it_zycet002-mexp.
ENDMODULE. " fill_screen_0001 OUTPUT
*&---------------------------------------------------------------------*
*& Module set_screen OUTPUT
*&---------------------------------------------------------------------*
MODULE set_screen OUTPUT.
DESCRIBE TABLE it_zycet002 LINES v_ilinhas.
tc_exp-lines = v_ilinhas.
ENDMODULE. " set_screen OUTPUT
*&---------------------------------------------------------------------*
*& Module select_text_material OUTPUT
*&---------------------------------------------------------------------*
MODULE select_text_material OUTPUT.
* Seleciona a Descrição do material.
SELECT maktx UP TO 1 ROWS FROM makt INTO v_mtxt1_0001
WHERE matnr = /pws/zycee002-matnr
AND spras = sy-langu.
ENDSELECT.
ENDMODULE. " select_text_material OUTPUT
*&---------------------------------------------------------------------*
*& Module status_0002 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0002 OUTPUT.
PERFORM check_buttons_screen.
SET PF-STATUS 'ST0001' EXCLUDING it_buttons.
SET TITLEBAR '0001' WITH text-005.
ENDMODULE. " status_0002 OUTPUT
*&---------------------------------------------------------------------*
*& Module fill_screen_0002_exp OUTPUT
*&---------------------------------------------------------------------*
MODULE fill_screen_0002_exp OUTPUT.
/pws/zycee002-nrseq = it_zycet002-nrseq.
/pws/zycee002-vbeln_va = it_zycet002-vbeln_va.
/pws/zycee002-aupos = it_zycet002-aupos.
/pws/zycee002-vbeln_vf = it_zycet002-vbeln_vf.
/pws/zycee002-posnr = it_zycet002-posnr.
/pws/zycee002-docnum = it_zycet002-docnum.
/pws/zycee002-vbeln_vl = it_zycet002-vbeln_vl.
/pws/zycee002-posnl = it_zycet002-posnl.
/pws/zycee002-ebeln = it_zycet002-ebeln.
/pws/zycee002-ebelp = it_zycet002-ebelp.
/pws/zycee002-fkimg = it_zycet002-fkimg.
/pws/zycee002-vrkme = it_zycet002-vrkme.
/pws/zycee002-matnr = it_zycet002-matnr.
v_qtdbx = it_zycet002-qtdbx.
v_saldo_mat = it_zycet002-fkimg - v_qtdbx.
PERFORM cob_camb.
ENDMODULE. " fill_screen_0002_exp OUTPUT
*&---------------------------------------------------------------------*
*& Module select_text_material2_exp OUTPUT
*&---------------------------------------------------------------------*
MODULE select_text_material2_exp OUTPUT.
* Seleciona a Descrição do material.
SELECT maktx UP TO 1 ROWS FROM makt INTO v_mtxt1_0002
WHERE matnr = /pws/zycee002-matnr
AND spras = sy-langu.
ENDSELECT.
* Carrega Ícone de indicação de Posicionamento de registro.
IF it_zycet002-mexp EQ 'X'.
v_indic1 = '@9T@'.
ELSE.
v_indic1 = '@5F@'.
ENDIF.
IF NOT it_zycet002 IS INITIAL.
READ TABLE it_apr_final WITH KEY nrseqexp = it_zycet002-nrseq
vbeln_va = it_zycet002-vbeln_va
aupos = it_zycet002-aupos
vbeln_vf = it_zycet002-vbeln_vf
posnr = it_zycet002-posnr
docnum = it_zycet002-docnum
vbeln_vl = it_zycet002-vbeln_vl
posnl = it_zycet002-posnl
eebeln = it_zycet002-ebeln
eebelp = it_zycet002-ebelp.
IF sy-subrc EQ 0.
IF v_saldo_mat = 0.
v_indic2 = '@5B@'. "Verde
ELSE.
v_indic2 = '@5D@'. "Amarelo
ENDIF.
* UPDATE /pws/zycet002 SET staprop = 'A'
* WHERE nrseq = it_zycet002-nrseq
* AND ebeln = it_zycet002-ebeln
* AND ebelp = it_zycet002-ebelp.
ELSE.
v_indic2 = '@5C@'. "Vermelho
* UPDATE /pws/zycet002 SET staprop = 'E'
* WHERE nrseq = it_zycet002-nrseq
* AND ebeln = it_zycet002-ebeln
* AND ebelp = it_zycet002-ebelp.
ENDIF.
IF v_tptrans EQ 'M'.
LOOP AT SCREEN.
CASE screen-name.
WHEN 'V_QTDBX'.
screen-input = 1.
ENDCASE.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDIF.
ENDMODULE. " select_text_material2_exp OUTPUT
*&---------------------------------------------------------------------*
*& Module fill_screen_0002_imp OUTPUT
*&---------------------------------------------------------------------*
* Chamado Data Descrição
* ----------------------------------------------------------------------
* 220218 09/05/05 Ajustado calculo do saldo restante da DI*
* ----------------------------------------------------------------------
MODULE fill_screen_0002_imp OUTPUT.
DATA: v_p_perda2(8).
CLEAR v_qtd_apropriada.
/pws/zycie282-nrseqimp = it_apr-nrseqimp .
/pws/zycie282-ebeln = it_apr-ebeln .
/pws/zycie282-ebelp = it_apr-ebelp .
/pws/zycie282-nrseqd = it_apr-nrseqd .
/pws/zycie282-matnr_imp = it_apr-matnr_imp .
/pws/zycie282-meins_i = it_apr-meins_i .
/pws/zycie282-qtd_iorg = it_apr-qtd_iorg .
/pws/zycie282-qtd_mimp = it_apr-qtd_mimp .
/pws/zycie282-nrdi = it_apr-nrdi .
/pws/zycie282-dtreg = it_apr-dtreg .
/pws/zycie282-mengecom = it_apr-mengecom .
/pws/zycie282-qtd_eq_mexp = it_apr-qtd_eq_mexp .
v_un_ncm = it_apr-un_ncm .
v_perc = it_apr-perc .
*PWS245742 -Início -----------------------------------------------------
/pws/zycie282-perda = it_apr-perda .
/pws/zycie282-qtd_perda = it_apr-qtd_perda .
/pws/zycie282-perda_e = it_apr-perda_e .
/pws/zycie282-qtd_perda_e = it_apr-qtd_perda_e .
*PWS245742 -Fim --------------------------------------------------------
v_perc_di = ( /pws/zycie282-mengecom / /pws/zycie282-qtd_iorg )
* 100.
IF v_perc_di > 100.
v_perc_di = 100.
ENDIF.
v_saldo_di = /pws/zycie282-mengecom - /pws/zycie282-qtd_mimp .
IF v_saldo_di < 0.
v_saldo_di = 0.
ENDIF.
*
ENDMODULE. " fill_screen_0002_imp OUTPUT
*&---------------------------------------------------------------------*
*& Module select_text_material2_imp OUTPUT
*&---------------------------------------------------------------------*
MODULE select_text_material2_imp OUTPUT.
* Seleciona a Descrição do material.
SELECT maktx UP TO 1 ROWS FROM makt INTO v_ctxt1_0002
WHERE matnr = /pws/zycie282-matnr_imp
AND spras = sy-langu.
ENDSELECT.
ENDMODULE. " select_text_material2_imp OUTPUT
*&---------------------------------------------------------------------*
*& Module set_screen2 OUTPUT
*&---------------------------------------------------------------------*
MODULE set_screen2 OUTPUT.
* Fixa número de linhas para table control de exportação
DESCRIBE TABLE it_zycet002 LINES v_ilinhas.
tc_exp_ap-lines = v_ilinhas.
* Fixa número de linhas para table control de importação
DESCRIBE TABLE it_apr LINES v_ilinhas.
tc_imp_ap-lines = v_ilinhas.
ENDMODULE. " set_screen2 OUTPUT
*&---------------------------------------------------------------------*
*& Module status_0003 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0003 OUTPUT.
SET PF-STATUS '0003'.
SET TITLEBAR '0001' WITH text-014.
ENDMODULE. " status_0003 OUTPUT
*&---------------------------------------------------------------------*
*& Module fill_screen_0004 OUTPUT
*&---------------------------------------------------------------------*
MODULE fill_screen_0004 OUTPUT.
/pws/zycee002-nrseq = it_zycet002_desa-nrseq.
/pws/zycee002-vbeln_va = it_zycet002_desa-vbeln_va.
/pws/zycee002-aupos = it_zycet002_desa-aupos.
/pws/zycee002-vbeln_vf = it_zycet002_desa-vbeln_vf.
/pws/zycee002-posnr = it_zycet002_desa-posnr.
/pws/zycee002-docnum = it_zycet002_desa-docnum.
/pws/zycee002-vbeln_vl = it_zycet002_desa-vbeln_vl.
/pws/zycee002-posnl = it_zycet002_desa-posnl.
/pws/zycee002-ebeln = it_zycet002_desa-ebeln.
/pws/zycee002-ebelp = it_zycet002_desa-ebelp.
/pws/zycee002-fkimg = it_zycet002_desa-fkimg.
/pws/zycee002-vrkme = it_zycet002_desa-vrkme.
/pws/zycee002-matnr = it_zycet002_desa-matnr.
v_apr = it_zycet002_desa-qtdapr.
mexp = it_zycet002_desa-mexp.
ENDMODULE. " fill_screen_0004 OUTPUT
*&---------------------------------------------------------------------*
*& Module status_0004 OUTPUT
*&---------------------------------------------------------------------*
MODULE status_0004 OUTPUT.
SET PF-STATUS 'ST0004'.
SET TITLEBAR '0001' WITH text-023.
ENDMODULE. " status_0004 OUTPUT
*&---------------------------------------------------------------------*
*& Module set_screen_0004 OUTPUT
*&---------------------------------------------------------------------*
MODULE set_screen_0004 OUTPUT.
* Fixa número de linhas para table control de importação
DESCRIBE TABLE it_zycet002_desa LINES v_ilinhas.
tc_exp_desa-lines = v_ilinhas.
ENDMODULE. " set_screen_0004 OUTPUT
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0001
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
V_QUAD1_0001
Quadr 1 2 119 119 1 CHAR
+ TC_EXP
Tabel 2 3 116 116 25
Seleção linha=Múltipla, Seleção coluna=Nenh.
TabEntr., Com título, Configurável, Coluna marc., LnhSep.vert.
- /PWS/ZYCEE002-NRSEQ
Texto 1 1 17 17 1 CHAR X 2
/PWS/ZYCEP001
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VA
Texto 1 2 10 10 1 CHAR X F
AUN
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-AUPOS
Texto 1 3 15 15 1 CHAR X 2
APO
Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VL
Texto 1 4 15 12 1 CHAR X 2
VL
Título de coluna TC
- /PWS/ZYCEE002-POSNL
Texto 1 5 15 15 1 CHAR X 2
Título de coluna TC
- /PWS/ZYCEE002-VBELN_VF
Texto 1 6 13 12 1 CHAR X F
VF
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-POSNR
Texto 1 7 15 15 1 CHAR X 2
Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-DOCNUM
Texto 1 8 15 15 1 CHAR X F
JEF
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-VRKME
Texto 1 9 15 15 1 CHAR X 2
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-FKIMG
Texto 1 10 13 15 1 CHAR X F
Título de coluna TC
- /PWS/ZYCEE002-MATNR
Texto 1 11 15 15 1 CHAR X 2
MAT
Chave externa, Título de coluna TC
- V_MTXT1_0001
Texto 1 12 18 30 1 CHAR
Título de coluna TC
- MEXP
Check 1 0 1 1 1 CHAR Ent Off
Coluna marc.TC
- /PWS/ZYCEE002-NRSEQ
I/O 1 1 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCEP001
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VA
I/O 1 2 10 10 1 CHAR X Off
SPA GPA AUN
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-AUPOS
I/O 1 3 6 6 1 NUMC X Off
NEX SPA GPA APO
Elem.TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VL
I/O 1 4 10 12 1 CHAR X Off
SPA GPA VL
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNL
I/O 1 5 6 6 1 NUMC X Off
Elem.TC
- /PWS/ZYCEE002-VBELN_VF
I/O 1 6 10 12 1 CHAR X Off
SPA GPA VF
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNR
I/O 1 7 6 6 1 NUMC X Off
Elem.TC
- /PWS/ZYCEE002-DOCNUM
I/O 1 8 10 10 1 NUMC X Off
SPA GPA JEF
Dest, Elem.TC
- /PWS/ZYCEE002-VRKME
I/O 1 9 3 3 1 UNIT X Off
Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCEE002-FKIMG
I/O 1 10 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCEE002-MATNR
I/O 1 11 18 18 1 CHAR X Off
SPA GPA MAT
Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=MATN1
- V_MTXT1_0001
I/O 1 12 40 30 1 CHAR Off
PossRol, Elem.TC
OK_CODE
OK
*LOGICA DE PROCESSAMENTO:
PROCESS BEFORE OUTPUT.
MODULE: status_0001,
set_screen .
LOOP AT it_zycet002 WITH CONTROL tc_exp CURSOR tc_exp-current_line.
MODULE: fill_screen_0001 ,
select_text_material.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT it_zycet002.
MODULE fill_table_it_zycet002.
ENDLOOP.
MODULE: user_command_0001 ,
user_command_0001_exit AT EXIT-COMMAND.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0002
*CAMPOS:
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
V_QUAD1_0002
Quadr 1 2 119 119 1 CHAR
V_QUAD2_0002
Quadr 2 3 117 117 1 CHAR
+ TC_EXP_AP
Tabel 3 4 115 115 10
Seleção linha=Simples, Seleção coluna=Nenh.
TabEntr., Com título, Configurável, LnhSep.vert.
- V_INDIC2
Texto 1 2 4 3 1 CHAR
Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-NRSEQ
Texto 1 3 14 12 1 CHAR X F
/PWS/ZYCEP001
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-MATNR
Texto 1 4 15 15 1 CHAR X 2
MAT
Chave externa, Título de coluna TC
- V_MTXT1_0002
Texto 1 5 18 30 1 CHAR
Título de coluna TC
- /PWS/ZYCEE002-VBELN_VA
Texto 1 6 9 10 1 CHAR X F
AUN
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VL
Texto 1 7 15 12 1 CHAR X 2
VL
Título de coluna TC
- /PWS/ZYCEE002-POSNL
Texto 1 8 15 5 1 CHAR X 2
Título de coluna TC
- /PWS/ZYCEE002-VBELN_VF
Texto 1 9 10 10 1 CHAR X F
VF
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-POSNR
Texto 1 10 15 15 1 CHAR X 2
Título de coluna TC
- /PWS/ZYCEE002-DOCNUM
Texto 1 11 10 12 1 CHAR X F
JEF
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-VRKME
Texto 1 12 3 5 1 CHAR X F
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-FKIMG
Texto 1 13 16 15 1 CHAR X F
Título de coluna TC
- V_QTDBX
Texto 1 14 17 17 1 CHAR
Título de coluna TC
- V_TXT_SALDO
Texto 1 15 14 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-EXP_C_COB_CAMB
Texto 1 16 22 18 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-IMP_S_COB_CAMB
Texto 1 17 22 18 1 CHAR X F
Título de coluna TC
- V_INDIC1
I/O 1 1 33 3 1 CHAR Off
Bidimens, PossRol, Elem.TC, Col.fixa TC
C/ícone
- V_INDIC2
I/O 1 2 33 3 1 CHAR Off
Bidimens, PossRol, Elem.TC, Col.fixa TC
C/ícone
- /PWS/ZYCEE002-NRSEQ
I/O 1 3 10 12 1 CHAR X Off
NEX SPA GPA /PWS/ZYCEP001
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
- /PWS/ZYCEE002-MATNR
I/O 1 4 18 18 1 CHAR X Off
NEX SPA GPA MAT
Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
Saída de conversão=MATN1
- V_MTXT1_0002
I/O 1 5 40 30 1 CHAR Off
PossRol, Elem.TC
- /PWS/ZYCEE002-VBELN_VA
I/O 1 6 10 10 1 CHAR X Off
NEX SPA GPA AUN
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-VBELN_VL
I/O 1 7 10 12 1 CHAR X Off
NEX SPA GPA VL
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNL
I/O 1 8 6 5 1 NUMC X Off
NEX
PossRol, Elem.TC
- /PWS/ZYCEE002-VBELN_VF
I/O 1 9 10 10 1 CHAR X Off
NEX SPA GPA VF
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNR
I/O 1 10 6 6 1 NUMC X Off
NEX
Elem.TC
- /PWS/ZYCEE002-DOCNUM
I/O 1 11 10 12 1 NUMC X Off
NEX SPA GPA JEF
Dest, Elem.TC
- /PWS/ZYCEE002-VRKME
I/O 1 12 3 5 1 UNIT X Off
NEX
Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCEE002-FKIMG
I/O 1 13 17 17 1 QUAN X Off
NEX
Alinh.à dir., Elem.TC
- V_QTDBX
I/O 1 14 17 17 1 DEC Off
Alinh.à dir., Elem.TC
- V_SALDO_MAT
I/O 1 15 19 17 1 DEC Off
Alinh.à dir., Elem.TC
- V_EXP_CAMB
I/O 1 16 18 18 1 CURR Off
Alinh.à dir., Elem.TC
Código da moeda=/PWS/ZYCIT247-WAERS
- V_IMP_CAMB
I/O 1 17 18 18 1 CURR Off
Alinh.à dir., Elem.TC
Código da moeda=/PWS/ZYCIT247-WAERS
V_QUAD3_0002
Quadr 14 3 117 117 1 CHAR
+ TC_IMP_AP
Tabel 15 4 114 114 11
Seleção linha=Nenh., Seleção coluna=Nenh.
TabEntr., Com título, Configurável, LnhSep.vert.
- /PWS/ZYCIE282-NRSEQD
Texto 1 1 15 10 1 CHAR X F
/PWS/ZYCIP435
Título de coluna TC
- /PWS/ZYCIE282-MATNR_IMP
Texto 1 2 6 18 1 CHAR X F
MAT
Título de coluna TC
- V_PERC
Texto 1 3 19 12 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-NRSEQIMP
Texto 1 4 14 10 1 CHAR X F
/PWS/ZYCIP001
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELN
Texto 1 5 15 10 1 CHAR X 2
BES
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELP
Texto 1 6 15 5 1 CHAR X 2
BSP
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-NRDI
Texto 1 7 5 11 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-DTREG
Texto 1 8 12 10 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MEINS_I
Texto 1 9 6 6 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_IORG
Texto 1 10 23 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MENGECOM
Texto 1 11 15 17 1 CHAR X F
Título de coluna TC
- V_PERC_DI
Texto 1 12 18 12 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-QTD_MIMP
Texto 1 13 15 17 1 CHAR X F
Título de coluna TC
- V_TXT_SLDI
Texto 1 14 25 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-PERDA
Texto 1 15 7 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA
Texto 1 16 20 16 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-PERDA_E
Texto 1 17 12 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA_E
Texto 1 18 20 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
Texto 1 19 19 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-NRSEQD
I/O 1 1 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP435
Dest, Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-MATNR_IMP
I/O 1 2 18 18 1 CHAR X Off
SPA GPA MAT
Elem.TC, Col.fixa TC
Saída de conversão=MATN1
- V_PERC
I/O 1 3 10 12 1 CHAR Off
Alinh.à dir., Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-NRSEQIMP
I/O 1 4 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP001
Dest, Elem.TC
- /PWS/ZYCIE282-EBELN
I/O 1 5 10 10 1 CHAR X Off
SPA GPA BES
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCIE282-EBELP
I/O 1 6 5 5 1 NUMC X Off
SPA GPA BSP
Elem.TC
- /PWS/ZYCIE282-NRDI
I/O 1 7 11 11 1 CHAR X Off
Elem.TC
- /PWS/ZYCIE282-DTREG
I/O 1 8 10 10 1 DATE X Off
Botão EntrsPoss.stand., Elem.TC
- /PWS/ZYCIE282-MEINS_I
I/O 1 9 3 6 1 UNIT X Off
Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCIE282-QTD_IORG
I/O 1 10 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-MENGECOM
I/O 1 11 17 17 1 QUAN X X Off
Alinh.à dir., Elem.TC
- V_PERC_DI
I/O 1 12 17 12 1 DEC Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_MIMP
I/O 1 13 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- V_SALDO_DI
I/O 1 14 17 17 1 DEC Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA
I/O 1 15 7 8 1 DEC X X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA
I/O 1 16 16 16 1 QUAN X X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA_E
I/O 1 17 8 8 1 DEC X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA_E
I/O 1 18 33 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
I/O 1 19 17 17 1 QUAN X X Off
Dest, Alinh.à dir., Elem.TC
OK_CODE
OK
*LOGICA DE PROCESSAMENTO:
PROCESS BEFORE OUTPUT.
MODULE: status_0002,
set_screen2.
* Controla table control com as exportações apropriadas.
LOOP AT it_zycet002 WITH CONTROL tc_exp_ap
CURSOR tc_exp_ap-current_line
MODULE: fill_screen_0002_exp ,
select_text_material2_exp.
ENDLOOP.
* Controla table control com as importações apropriadas.
LOOP AT it_apr WITH CONTROL tc_imp_ap CURSOR tc_imp_ap-current_line.
MODULE: fill_screen_0002_imp ,
select_text_material2_imp.
ENDLOOP.
PROCESS AFTER INPUT.
* Controla tabela interna de exportações apropriadas.
LOOP AT it_zycet002.
CHAIN.
FIELD v_qtdbx MODULE modify_qtd_aprop ON CHAIN-REQUEST.
ENDCHAIN.
MODULE fill_table_it_zycet002_exp.
ENDLOOP.
* Controla tabela interna de importações apropriadas.
LOOP AT it_apr.
MODULE fill_table_it_apr.
ENDLOOP.
MODULE: user_command_0002 ,
user_command_0002_exit AT EXIT-COMMAND.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0003
*CAMPOS:
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
+ TC_LOG
Tabel 1 1 113 113 7
Seleção linha=Nenh., Seleção coluna=Nenh.
TabEntr., Com título, Configurável
- IT_LOG_ERRO-LTEXT
I/O 1 1 113 113 1 CHAR Off S.Sd
Dest, Elem.TC, Col.fixa TC
OK_CODE
OK
*LOGICA DE PROCESSAMENTO:
process before output.
module status_0003.
loop at it_log_erro with control tc_log cursor tc_log-current_line.
endloop.
process after input.
loop at it_log_erro.
endloop.
module user_command_0003.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0004
*CAMPOS:
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
V_QUAD1_0004
Quadr 1 2 88 88 1 CHAR
+ TC_EXP_DESA
Tabel 3 3 86 86 12
Seleção linha=Múltipla, Seleção coluna=Nenh.
TabEntr., Com título, Configurável, Coluna marc., LnhSep.vert.
- /PWS/002-NRSEQ
Texto 1 1 17 10 1 CHAR
Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VA
Texto 1 2 15 15 1 CHAR X 2
AUN
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VF
Texto 1 3 15 15 1 CHAR X 2
VF
Chave externa, Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-POSNR
Texto 1 4 15 15 1 CHAR X 2
Título de coluna TC, Col.fixa TC
- /PWS/ZYCEE002-DOCNUM
Texto 1 5 15 15 1 CHAR X 2
JEF
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-VBELN_VL
Texto 1 6 15 15 1 CHAR X 2
VL
Título de coluna TC
- /PWS/ZYCEE002-POSNL
Texto 1 7 15 15 1 CHAR X 2
Título de coluna TC
- /PWS/ZYCEE002-EBELN
Texto 1 8 15 15 1 CHAR X 2
BES
Título de coluna TC
- /PWS/ZYCEE002-EBELP
Texto 1 9 15 15 1 CHAR X 2
Título de coluna TC
- /PWS/ZYCEE002-VRKME
Texto 1 10 15 15 1 CHAR X 2
Chave externa, Título de coluna TC
- /PWS/ZYCEE002-FKIMG
Texto 1 11 15 15 1 CHAR X 2
Título de coluna TC
- V_APR
Texto 1 12 14 17 1 CHAR
Título de coluna TC
- /PWS/ZYCEE002-MATNR
Texto 1 13 15 15 1 CHAR X 2
MAT
Chave externa, Título de coluna TC
- V_MTXT1_0001
Texto 1 14 18 30 1 CHAR
Título de coluna TC
- MEXP
Check 1 0 1 1 1 CHAR Ent Off
Coluna marc.TC
- /PWS/ZYCEE002-NRSEQ
I/O 1 1 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCEP001
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
- /PWS/ZYCEE002-VBELN_VA
I/O 1 2 10 10 1 CHAR X Off
SPA GPA AUN
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-VBELN_VF
I/O 1 3 10 10 1 CHAR X Off
SPA GPA VF
Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNR
I/O 1 4 6 6 1 NUMC X Off
Elem.TC, Col.fixa TC
- /PWS/ZYCEE002-DOCNUM
I/O 1 5 10 10 1 NUMC X Off
SPA GPA JEF
Dest, Botão EntrsPoss.stand., Elem.TC
- /PWS/ZYCEE002-VBELN_VL
I/O 1 6 10 10 1 CHAR X Off
SPA GPA VL
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-POSNL
I/O 1 7 6 6 1 NUMC X Off
Elem.TC
- /PWS/ZYCEE002-EBELN
I/O 1 8 10 10 1 CHAR X Off
SPA GPA BES
Botão EntrsPoss.stand., Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCEE002-EBELP
I/O 1 9 5 5 1 NUMC X Off
SPA GPA
Elem.TC
- /PWS/ZYCEE002-VRKME
I/O 1 10 3 3 1 UNIT X Off
Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCEE002-FKIMG
I/O 1 11 17 17 1 QUAN X Off
Elem.TC
- V_APR
I/O 1 12 17 17 1 DEC Off
NEX
Alinh.à dir., Elem.TC
- /PWS/ZYCEE002-MATNR
I/O 1 13 18 18 1 CHAR X Off
SPA GPA MAT
Chave externa, Botão EntrsPoss.stand., Elem.TC
Saída de conversão=MATN1
- V_MTXT1_0001
I/O 1 14 40 30 1 CHAR Off
PossRol, Elem.TC
OK_CODE
OK
*LOGICA DE PROCESSAMENTO:
PROCESS BEFORE OUTPUT.
MODULE: status_0004 ,
set_screen_0004.
LOOP AT it_zycet002_desa WITH CONTROL tc_exp_desa
CURSOR tc_exp_desa-current_line.
MODULE: fill_screen_0004 ,
select_text_material.
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT it_zycet002_desa.
MODULE fill_table_it_zycet002_desa.
ENDLOOP.
MODULE: user_command_0004 ,
user_command_0004_exit AT EXIT-COMMAND.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0005
*CAMPOS:
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
V_QUAD2_0001
Quadr 1 1 134 134 1 CHAR
+ TC_IMP_AP
Tabel 2 2 132 132 16
Seleção linha=Nenh., Seleção coluna=Nenh.
TabEntr., Com título, Configurável, RedimVertic., RedimHoriz., LnhSep.vert.
- /PWS/ZYCIE282-NRSEQD
Texto 1 1 15 10 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MATNR_IMP
Texto 1 2 6 18 1 CHAR X F
Título de coluna TC
- V_PERC
Texto 1 3 19 12 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-NRSEQIMP
Texto 1 4 14 10 1 CHAR X F
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELN
Texto 1 5 6 10 1 CHAR X F
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELP
Texto 1 6 15 5 1 CHAR X 2
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-NRDI
Texto 1 7 5 11 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-DTREG
Texto 1 8 12 10 1 CHAR X F
Título de coluna TC
- V_LOTE_I
Texto 1 9 4 15 1 CHAR
LOT
Título de coluna TC
- /PWS/ZYCIE282-MEINS_I
Texto 1 10 6 6 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_IORG
Texto 1 11 23 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MENGECOM
Texto 1 12 15 17 1 CHAR X F
Título de coluna TC
- V_PERC_DI
Texto 1 13 18 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-QTD_MIMP
Texto 1 14 15 17 1 CHAR X F
Título de coluna TC
- V_TXT_SLDI
Texto 1 15 25 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-PERDA
Texto 1 16 7 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA
Texto 1 17 20 16 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-PERDA_E
Texto 1 18 12 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA_E
Texto 1 19 20 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
Texto 1 20 19 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-NRSEQD
I/O 1 1 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP435
Dest, Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-MATNR_IMP
I/O 1 2 18 18 1 CHAR X Off
SPA GPA MAT
Elem.TC, Col.fixa TC
Saída de conversão=MATN1
- V_PERC
I/O 1 3 10 12 1 CHAR Off
Alinh.à dir., Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-NRSEQIMP
I/O 1 4 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP001
Dest, Elem.TC
- /PWS/ZYCIE282-EBELN
I/O 1 5 10 10 1 CHAR X Off
SPA GPA BES
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCIE282-EBELP
I/O 1 6 5 5 1 NUMC X Off
SPA GPA BSP
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-NRDI
I/O 1 7 11 11 1 CHAR X Off
Elem.TC
- /PWS/ZYCIE282-DTREG
I/O 1 8 10 10 1 DATS X Off
Botão EntrsPoss.stand., Elem.TC
- V_LOTE_I
I/O 1 9 15 15 1 CHAR Off
LOT
Elem.TC
- /PWS/ZYCIE282-MEINS_I
I/O 1 10 3 6 1 UNIT X Off
Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCIE282-QTD_IORG
I/O 1 11 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-MENGECOM
I/O 1 12 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- V_PERC_DI
I/O 1 13 10 17 1 CHAR Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_MIMP
I/O 1 14 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- V_SALDO_DI
I/O 1 15 17 17 1 QUAN Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA
I/O 1 16 7 8 1 DEC X X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA
I/O 1 17 16 16 1 QUAN X X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA_E
I/O 1 18 8 8 1 DEC X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA_E
I/O 1 19 33 17 1 QUAN X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
I/O 1 20 17 17 1 QUAN X X Off
LOT
Dest, Alinh.à dir., Elem.TC
OK
*LOGICA DE PROCESSAMENTO:
PROCESS BEFORE OUTPUT.
MODULE STATUS_0005.
*
* Controla table control com as importações apropriadas.
LOOP AT it_apr
WITH CONTROL tc_imp_ap CURSOR tc_imp_ap-current_line.
MODULE: fill_screen_0002_imp ,
select_text_material2_imp.
ENDLOOP.
PROCESS AFTER INPUT.
* Controla tabela interna de importações apropriadas.
LOOP AT it_apr.
MODULE fill_table_it_apr.
ENDLOOP.
* MODULE USER_COMMAND_0005.
----------------------------------------------------------------------------------------------------
Modificações efetuadas em DYNP /PWS/ZYCIR254 0006
*CAMPOS:
Nome
Ctg. Linha Coluna CmprDf CmVis Altura Format Dict Modif At.Des.Só At
Gr1 Gr2 Gr3 Gr4 SPA GPA ID parâm Cód.F TCmp TpoLoopExbLoop
Outros atributos
V_QUAD2_0001
Quadr 1 1 134 134 1 CHAR
+ TC_IMP_AP2
Tabel 2 2 132 132 7
Seleção linha=Nenh., Seleção coluna=Nenh.
TabEntr., Com título, Configurável, RedimVertic., RedimHoriz., LnhSep.vert.
- /PWS/ZYCIE282-NRSEQD
Texto 1 1 15 10 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MATNR_IMP
Texto 1 2 6 18 1 CHAR X F
Título de coluna TC
- V_PERC
Texto 1 3 19 12 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-NRSEQIMP
Texto 1 4 14 10 1 CHAR X F
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELN
Texto 1 5 6 10 1 CHAR X F
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-EBELP
Texto 1 6 15 5 1 CHAR X 2
Título de coluna TC, Col.fixa TC
- /PWS/ZYCIE282-NRDI
Texto 1 7 5 11 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-DTREG
Texto 1 8 12 10 1 CHAR X F
Título de coluna TC
- V_LOTE_I
Texto 1 9 4 15 1 CHAR
LOT
Título de coluna TC
- /PWS/ZYCIE282-MEINS_I
Texto 1 10 6 6 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_IORG
Texto 1 11 23 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-MENGECOM
Texto 1 12 15 17 1 CHAR X F
Título de coluna TC
- V_PERC_DI
Texto 1 13 18 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-QTD_MIMP
Texto 1 14 15 17 1 CHAR X F
Título de coluna TC
- V_TXT_SLDI
Texto 1 15 25 17 1 CHAR
Título de coluna TC
- /PWS/ZYCIE282-PERDA
Texto 1 16 7 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA
Texto 1 17 20 16 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-PERDA_E
Texto 1 18 12 8 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_PERDA_E
Texto 1 19 20 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
Texto 1 20 19 17 1 CHAR X F
Título de coluna TC
- /PWS/ZYCIE282-NRSEQD
I/O 1 1 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP435
Dest, Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-MATNR_IMP
I/O 1 2 18 18 1 CHAR X Off
SPA GPA MAT
Elem.TC, Col.fixa TC
Saída de conversão=MATN1
- V_PERC
I/O 1 3 10 12 1 CHAR Off
Alinh.à dir., Elem.TC, Col.fixa TC
- /PWS/ZYCIE282-NRSEQIMP
I/O 1 4 10 10 1 CHAR X Off
SPA GPA /PWS/ZYCIP001
Dest, Elem.TC
- /PWS/ZYCIE282-EBELN
I/O 1 5 10 10 1 CHAR X Off
SPA GPA BES
Dest, Elem.TC
Saída de conversão=ALPHA
- /PWS/ZYCIE282-EBELP
I/O 1 6 5 5 1 NUMC X Off
SPA GPA BSP
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-NRDI
I/O 1 7 11 11 1 CHAR X Off
Elem.TC
- /PWS/ZYCIE282-DTREG
I/O 1 8 10 10 1 DATS X Off
Botão EntrsPoss.stand., Elem.TC
- V_LOTE_I
I/O 1 9 15 15 1 CHAR Off
LOT
Elem.TC
- /PWS/ZYCIE282-MEINS_I
I/O 1 10 3 6 1 UNIT X Off
Elem.TC
Saída de conversão=CUNIT
- /PWS/ZYCIE282-QTD_IORG
I/O 1 11 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-MENGECOM
I/O 1 12 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- V_PERC_DI
I/O 1 13 10 17 1 CHAR Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_MIMP
I/O 1 14 17 17 1 QUAN X Off
Alinh.à dir., Elem.TC
- V_SALDO_DI
I/O 1 15 17 17 1 QUAN Off
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA
I/O 1 16 7 8 1 DEC X X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA
I/O 1 17 16 16 1 QUAN X X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-PERDA_E
I/O 1 18 8 8 1 DEC X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_PERDA_E
I/O 1 19 33 17 1 QUAN X Off
LOT
Alinh.à dir., Elem.TC
- /PWS/ZYCIE282-QTD_EQ_MEXP
I/O 1 20 17 17 1 QUAN X X Off
LOT
Dest, Alinh.à dir., Elem.TC
BOX03
Quadr 10 1 134 134 1 CHAR
+ TC_MER_AP
Tabel 11 2 132 132 7
Seleção linha=Simples, Seleção coluna=Simples
TabEntr., Com título, Configurável, RedimVertic., RedimHoriz., LnhSep.vert.
- WA_REAL_MERC-NRSEQD
Texto 1 1 15 10 1 CHAR
Título de coluna TC
- WA_REAL_MERC-MATNR
Texto 1 2 6 18 1 CHAR
Título de coluna TC
- WA_REAL_MERC-DISP
Texto 1 3 19 10 1 CHAR
Título de coluna TC
- WA_REAL_MERC-FORNEC
Texto 1 4 10 25 1 CHAR
Título de coluna TC
- WA_REAL_MERC-DOCNUM
Texto 1 5 18 10 1 CHAR
Título de coluna TC
- WA_REAL_MERC-EBELN
Texto 1 6 6 10 1 CHAR
Título de coluna TC
- WA_REAL_MERC-EBELP
Texto 1 7 4 5 1 CHAR
Título de coluna TC
- WA_REAL_MERC-NFNUM
Texto 1 8 18 8 1 CHAR
Título de coluna TC
- WA_REAL_MERC-SERIE
Texto 1 9 5 3 1 CHAR
Título de coluna TC
- WA_REAL_MERC-DTNF
Texto 1 10 7 10 1 CHAR
Título de coluna TC
- WA_REAL_MERC-LOTE
Texto 1 11 4 15 1 CHAR
Título de coluna TC
- WA_REAL_MERC-MEINS_I
Texto 1 12 6 6 1 CHAR
Título de coluna TC
- WA_REAL_MERC-QTD_IORG
Texto 1 13 23 17 1 CHAR
Título de coluna TC
- WA_REAL_MERC-SALDO
Texto 1 14 15 17 1 CHAR
Título de coluna TC
- WA_REAL_MERC-DISPNF
Texto 1 15 18 17 1 CHAR
Título de coluna TC
- WA_REAL_MERC-QTD_MIMP
Texto 1 16 15 17 1 CHAR
Título de coluna TC
- WA_REAL_MERC-SALDOR
Texto 1 17 25 17 1 CHAR
Título de coluna TC
- WA_REAL_MERC-NRSEQD
I/O 1 1 10 10 1 CHAR Off
Dest, Alinh.à dir., Elem.TC, Col.fixa TC
- WA_REAL_MERC-MATNR
I/O 1 2 18 18 1 CHAR Off
Alinh.à dir., Elem.TC, Col.fixa TC
- WA_REAL_MERC-DISP
I/O 1 3 10 12 1 CHAR Off
Alinh.à dir., Elem.TC, Col.fixa TC
- WA_REAL_MERC-FORNEC
I/O 1 4 35 25 1 CHAR Off
PossRol, Elem.TC
- WA_REAL_MERC-DOCNUM
I/O 1 5 10 10 1 NUMC Off
Dest, Alinh.à dir., Elem.TC
- WA_REAL_MERC-EBELN
I/O 1 6 10 10 1 CHAR Off
Dest, Alinh.à dir., Elem.TC
- WA_REAL_MERC-EBELP
I/O 1 7 5 5 1 NUMC Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-NFNUM
I/O 1 8 6 8 1 NUMC Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-SERIE
I/O 1 9 3 3 1 CHAR Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-DTNF
I/O 1 10 10 10 1 DATS Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-LOTE
I/O 1 11 15 15 1 CHAR Off
LOT
Alinh.à dir., Elem.TC
- WA_REAL_MERC-MEINS_I
I/O 1 12 3 6 1 CHAR Off
Elem.TC
- WA_REAL_MERC-QTD_IORG
I/O 1 13 33 17 1 QUAN Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-SALDO
I/O 1 14 33 17 1 QUAN Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-DISPNF
I/O 1 15 10 17 1 CHAR Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-QTD_MIMP
I/O 1 16 33 17 1 QUAN Off
Alinh.à dir., Elem.TC
- WA_REAL_MERC-SALDOR
I/O 1 17 33 17 1 QUAN Off
Alinh.à dir., Elem.TC
OK
*LOGICA DE PROCESSAMENTO:
PROCESS BEFORE OUTPUT.
MODULE status_0006.
*
LOOP AT it_apr
WITH CONTROL tc_imp_ap2 CURSOR tc_imp_ap2-current_line.
MODULE: fill_screen_0002_imp ,
select_text_material2_imp.
ENDLOOP.
LOOP AT it_apr_m
WITH CONTROL tc_mer_ap CURSOR tc_mer_ap-current_line.
MODULE: fill_screen_0002_mer .
ENDLOOP.
PROCESS AFTER INPUT.
LOOP AT it_apr.
MODULE fill_table_it_apr.
ENDLOOP.
LOOP AT it_apr_m.
MODULE fill_table_it_apr.
ENDLOOP.
* MODULE USER_COMMAND_0006.
----------------------------------------------------------------------------------------------------
*Elementos de texto ABAP programa /PWS/ZYCIR254
Símbolos de texto
ID Chave Compr Texto
I 000 19 Critério de Seleção
I 001 48 Não há dados para critério de seleção informado.
I 002 31 Nenhuma exportação foi marcada.
I 003 26 Apropriação não permitida.
I 004 31 Apropriação Exportação/DrawBack
I 005 24 Apropriações Processadas
I 006 11 Confirmação
I 007 36 Aprovar as apropriações realizadas ?
I 008 3 Sim
I 009 3 Não
I 010 29 Apropriação já foi aprovada !
I 011 34 Apropriação aprovada com sucesso !
I 012 39 Não foi processada nenhuma apropriação.
I 013 25 Aprovação não permitida !
I 014 20 Log de Processamento
I 015 52 Lista técnica materiais não processada para material
I 016 47 Não há lista técnica de mat. parametrizada para
I 017 9 Material:
I 018 36 não possui insumos para apropriação.
I 019 4 Ato:
I 020 34 Não há recebim. p/ todos os comps.
I 021 82 Não foram encontrados Atos Concessórios com Saldo disponível p/ o
Material/Centro:
I 022 20 Quantidade inválida!
I 023 34 Desapropriação Exportação/DrawBack
I 024 29 Desapropriação não permitida.
I 025 58 Deseja realmente desapropriar as exportações selecionadas?
I 026 40 Exportações desapropriadas com sucesso !
I 027 6 Pedido
I 028 4 Item
I 029 39 está sendo utilizado por outro usuário.
I 030 55 Problemas de bloqueio. Avisar administrador do sistema.
I 031 3 Ato
I 032 8 Material
I 033 36 É necessário um preenchimento mínimo
I 034 27 dos parâmetros de seleção !
I 035 75 "Função de explosão não é adequada a configuração de "Lista Técnica SAP" ".
I 036 48 Desapropriação não permitida, o Ato Concessório
I 037 43 referente a este Embarque está Encerrado.
I 038 10 Grupo/NCM:
I 039 39 não possui Lista Técnica parametrizada.
I 040 25 Apropriação já executada,
I 041 38 não existem itens a serem apropriados.
I 052 43 Funcionalidade p/ Explosão de Lista Técnica
I 053 50 não parametrizada. Verificar tabela /PWS/ZYCET079.
I 056 44 Este programa esta sendo executado por outro
I 057 41 usuário! Favor aguardar o encerramento da
I 058 32 transação para nova apropriação.
I 059 28 Tipo de documento de venda "
I 060 49 " não esta parametrizado nas tabelas de drawback.
I 061 7 Unidade
I 062 38 não está parametrizado para o material
I 063 3 RE:
I 064 39 está registrada. Não pode ser alterada.
I 065 50 Não foram encontrados itens para a desapropriação!
I 066 15 São necessários
I 067 42 dias para o processo produtivo do material
I 068 47 Tipo de AC diferente do tipo da Desapropriação.
I 072 48 Unidade de medida Siscomex não esta corretamente
I 073 24 parametrizada para o NCM
I 074 44 Código NCM não parametrizado para o material
I 075 8 Embarque
I 076 52 não possui a data de vencimento vingente preenchida.
I 077 40 não possui data de previsão de embarque.
I 100 132
I 289 28 Sem permissão para o Centro:
I 290 31 Sem permissão para a Transação:
I 291 29 Sem permissão para a Empresa:
*Elementos de texto ABAP programa /PWS/ZYCIR254
Opções de seleção/parâmetros
ID Chave Compr DDIC Texto
S AUPOS 31 Item Documento de Venda
S DOCNUM 20 Nº Documento
S EEBELN 30 Nº Documento de Compra
S EEBELP 35 Item do Documento de Compra
S MATNR 16 Material
S NRSEQEXP 34 Número Sequencial Embarque
S POSNL 23 Item de Remessa
S POSNR 34 Item Documento Faturamento
S VBELN_VA 26 Documento de Venda
S VBELN_VF 32 Documento de Faturamento
S VBELN_VL 20 Fornecimento
* Transações:
Criar e incluir no menu as transações (transações de Report):
/PWS/ZYCIR254 - Apropriação Drawback Suspensão
/PWS/ZYCIR254_D - Desapropriação Drawback Suspensão