CE PLUS - Nota 002251

Módulo: DRAWBACK

Funcionalidade: Composição

Data/Hora da Publicação: 11/10/2006 00:00:00

Data/Hora Última Alteração: 17/02/2011 14:01:26

Descrição da Nota: COMPOSIÇÃO ISENÇÃO(EXPORTAÇÃO, TRADING COMPANY, COMERCIAL EXPORTADORA)

Sintoma

Ajustes no programa de composição para buscar Exportações, notas de Trading Company e Comercial

Exportadora para criar a composição de isenção e ajustado programa para tratamento de itens

genéricos.

 

 

Solução

Ajustes no programa de composição para buscar Exportações, notas de Trading Company e Comercial

Exportadora para criar a composição de isenção e ajustado programa para tratamento de itens

genéricos.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

AJUSTE PARA TRATAMENTO DO CENTRO EXPORTADOR/IMPORTADOR NA COMPOSIÇÃO

PADRONIZAÇÃO DOS CAMPOS NA COMPOSICAO DE ISENÇÃO

TRATAMENTO DE DATAS E EXCLUSÃO DOS TRATAMENTOS DE INSUMOS_ALTERNATIVOS

PREENCHIMENTO DOS VALORES DE IMPORTAÇÃO

Informações Complementares

----------------------------------------------------------------------------------------------------

Nota Número 02251 Data: 11/10/2006 Hora: 10:59:30

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 02251

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00025

Agrupamento              : 00135

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote - Descrição Breve

 

01029  - 00001 - 6.0    - 00022  - PREENCHIMENTO DOS VALORES DE IMPORTAÇÃO

01758  - 00002 - 6.0    - 00024  - AJUSTE PARA TRATAMENTO DO CENTRO EXPORTADOR/IMPORTADOR NA COMPOSI

02070  - 00003 - 6.0    - 00024  - PADRONIZAÇÃO DOS CAMPOS NA COMPOSICAO DE ISENÇÃO

02190  - 00004 - 6.0    - 00025  - TRATAMENTO DE DATAS E EXCLUSÃO DOS TRATAMENTOS DE INSUMOS_ALTERNA

----------------------------------------------------------------------------------------------------

COMPOSIÇÃO ISENÇÃO(EXPORTAÇÃO, TRADING COMPANY, COMERCIAL EXPORTADORA)

----------------------------------------------------------------------------------------------------

Palavras Chave:

EXPORTAÇÃO - TRADING - COMPANY - COMERCIAL - EXPORTADORA

COMPOSIÇÃO - ISENÇÃO - /PWS/SAPMZYCI064

----------------------------------------------------------------------------------------------------

Objetos da nota:

CUAD /PWS/SAPMZYCI064

DTEL /PWS/ZYCIL843

DYNP /PWS/SAPMZYCI064                        0301

DYNP /PWS/SAPMZYCI064                        0303

DYNP /PWS/SAPMZYCI064                        0304

DYNP /PWS/SAPMZYCI064                        0305

DYNP /PWS/SAPMZYCI064                        0307

DYNP /PWS/SAPMZYCI064                        0308

DYNP /PWS/SAPMZYCI064                        0309

DYNP /PWS/SAPMZYCI064                        0310

DYNP /PWS/SAPMZYCI064                        0321

FUGR /PWS/ZYCIGF1

RELE F6DK937689 20061010 105425 PWSCI

REPS /PWS/MZYCI064F03

REPS /PWS/MZYCI064I01

REPS /PWS/MZYCI064O01

REPS /PWS/MZYCI064TOP2

REPS /PWS/MZYCI064TOP3

REPS /PWS/MZYCI064X01

REPT /PWS/SAPMZYCI064

TABD /PWS/ZYCIE258

TABD /PWS/ZYCIE259

TABD /PWS/ZYCIE259C

TABD /PWS/ZYCIE259D

TABD /PWS/ZYCIE260

TABD /PWS/ZYCIE260C

TABD /PWS/ZYCIE260D

TABD /PWS/ZYCIE261

TABD /PWS/ZYCIE261C

TABD /PWS/ZYCIT258

TABD /PWS/ZYCIT259

TABD /PWS/ZYCIT260

TABD /PWS/ZYCIT261

TABD /PWS/ZYCIT321

TABL /PWS/ZYCIT472

TABL /PWS/ZYCIT473

TOBJ /PWS/ZYCIT321S

TOBJ /PWS/ZYCIT472S

TOBJ /PWS/ZYCIT473S

TRAN /PWS/ZYCIT472

TRAN /PWS/ZYCIT473

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em CUAD /PWS/SAPMZYCI064

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DTEL /PWS/ZYCIL843

 

------------------------------------------------------------------------

Elemento de dados incluído: /PWS/ZYCIL843

Classe de desenvolvimento: /PWS/ZYGL

Idioma original: PT

Descrição breve incluída: (45 caracteres), idioma: PT

"'GL - Utiliza Codigo Genérico para o material"

Categoria de dados: Domínio

Domínio: XFIELD

ID parâmetro:

Nome componente default:

Documentar modificações: NÃO

Nome da ajuda de pesquisa:

Parâmetro da ajuda de pesquisa:

Comprimento máximo do denominador breve: 10

Denominador breve incluído (10 caracteres), idioma: PT

"Cod.G.Mat."

Comprimento máximo do denominador médio: 18

Denominador médio incluído (18 caracteres), idioma: PT

"Cod. Genérico Mat."

Comprimento máximo do denominador longo: 31

Denominador longo incluído (31 caracteres), idioma: PT

"Codigo Genérico para o material"

Comprimento máximo do título: 44

Título incluído (44 caracteres), idioma: PT

"GL - Utiliza Codigo Genérico para o material"

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0301

 

   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

* Campos modificados. Status Novo - Inicio

   V_CENT_EI

      Texto      7        5      16      16       1     CHAR

 

   V_CENT_EI

      I/O        7       22       4       4       1     CHAR                   Off

      NEX

   BT_302_02

      Push       7       27       4       2       1     CHAR

                                                    EXBCE

      Ícn.=ICON_ENTER_MORE

   V_TXTCENT_EI

      I/O        7       33      32      32       1     CHAR                   Off S.Sd

      Dest, PossRol

   V_QUAD4_0301

      Quadr      8       68      46      46       1     CHAR

 

   /PWS/ZYCIE258-CODAGRUP

      Texto      9        5      15      15       1     CHAR      X    F

      Chave externa

   /PWS/ZYCIE258-CODAGRUP

      I/O        9       22       4       4       1     CHAR   X     X     Ent Off

      Chave externa, Botão EntrsPoss.stand.

   V_NDIVISAO3

      I/O        9       33      35      32       1     CHAR                   Off S.Sd

      Dest, PossRol

   /PWS/ZYCIE258-ATOCON

      Texto     10       73      23      23       1     CHAR      X    F

                               /PWS/ZYCIP435

      Chave externa

   /PWS/ZYCIE258-ATOCON

      I/O       10       97      10      10       1     CHAR   X               Off

      NEX                      /PWS/ZYCIP435

      Dest, Chave externa, Botão EntrsPoss.stand.

   /PWS/ZYCIE258-DATA_AC

      Texto     11       73      23      23       1     CHAR      X    F

 

   /PWS/ZYCIE258-DATA_AC

      I/O       11       97      10      10       1     DATE   X               Off

      NEX

      Dest, Botão EntrsPoss.stand.

 

* Campos modificados. Status Novo - Fim

* Campos Inseridos - Inicio

 

   BOX04

      Quadr      8       68      46      46       1     CHAR

 

   /PWS/ZYCIE258-DTPR

      Texto     10       73      14      14       1     CHAR      X    F

 

   /PWS/ZYCIE258-DTPR

      I/O       10       92      10      10       1     DATE   X           Ent Off

      Entr.obrig., Botão EntrsPoss.stand.

 

* Campos Inseridos - Fim

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0303

 

 

   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_RESUMO3

      Tabel      2        1     112     112      15

      Seleção linha=Simples, Seleção coluna=Nenh.

      TabEntr., Com título, Configurável, Coluna marc., RedimVertic., RedimHoriz., LnhSep.vert.

* Campos Inseridos - Inicio

 - /PWS/ZYCIE259-MEINS

      Texto      1        7       3       3       1     CHAR      X    F

      Chave externa, Título de coluna TC

 

 - /PWS/ZYCIE259-WAERSFOB

      Texto      1        9       5       5       1     CHAR      X    F

                               FWS

      Chave externa, Título de coluna TC

 - /PWS/ZYCIE259-MEINS

      I/O        1        7       3       3       1     UNIT   X               Off

      NEX

      Chave externa, Botão EntrsPoss.stand., Elem.TC

      Saída de conversão=CUNIT

 - /PWS/ZYCIE259-WAERSFOB

      I/O        1        9       5       5       1     CUKY   X               Off

      NEX                      FWS

      Chave externa, Botão EntrsPoss.stand., Elem.TC

 

* Campos Inseridos - Fim

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0304

 

 

   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

* Campos Inseridos - Inicio

   /PWS/ZYCIE259D-MEINS

      I/O        2       34       3       3       1     UNIT   X               Off

      NEX

      Dest, Chave externa, Botão EntrsPoss.stand.

      Saída de conversão=CUNIT

   /PWS/ZYCIE259D-WAERSFOB

      I/O        2       77       5       5       1     CUKY   X               Off

      NEX                      FWS

      Dest, Chave externa, Botão EntrsPoss.stand.

 - V_ICO_T

      I/O        1        2       4       3       1     CHAR                   Off

      NEX

      PossRol, Elem.TC, Col.fixa TC

   TEXT_304_001

      Texto     17        1      22      20       1     CHAR

      Ícn.=ICON_UNSPECIFIED_ONE

   TEXT_304_002

      Texto     17       46      20      18       1     CHAR

      Ícn.=ICON_UNSPECIFIED_TWO

   TEXT_304_003

      Texto     17       89      26      24       1     CHAR

      Ícn.=ICON_UNSPECIFIED_THREE

* Campos Inseridos - Fim

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0305

 

   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

* Campos Inseridos - Inicio

   /PWS/ZYCIE259D-NFNUM

      Texto      2        1      13      13       1     CHAR      X    F

                  VEX

   /PWS/ZYCIE259D-NFNUM

      I/O        2       15       6       6       1     NUMC   X               Off

      NEX         NF

   /PWS/ZYCIE259D-SERIE

      I/O        2       24       3       3       1     CHAR   X               Off

      NEX         NF

   /PWS/ZYCIE259D-DTNF

      I/O        2       31      10      10       1     DATE   X               Off

      NEX         NF

      Botão EntrsPoss.stand.

   /PWS/ZYCIE259D-NRRE

      Texto      3        1      11      11       1     CHAR      X    F

                  RE

   /PWS/ZYCIE259D-NRRE

      I/O        3       15      14      14       1     CHAR   X               Off

      NEX         RE

      Saída de conversão=NRRE

 

* Campos Inseridos - Fim

* Campos Excluidos - Inicio

   /PWS/ZYCIE259D-MEINS

      Texto      2       83       2       2       1     CHAR      X    F

      Chave externa

   /PWS/ZYCIE259D-NRSEQRE

      Texto      3        1      13      13       1     CHAR      X    F

                               /PWS/ZYCEP013

   /PWS/ZYCIE259D-NRSEQRE

      I/O        3       15      10      10       1     CHAR   X               Off

      NEX              SPA GPA /PWS/ZYCEP013

      Dest

 

* Campos Excluidos - Fim

 

 

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0307

 

   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

* Campos Inseridos - Inicio

 - /PWS/ZYCIE260-GRUPO

      Texto      1        2      18      18       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE260-DESC_G

      Texto      1        4      23      30       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE260-WAERS

      Texto      1        9      15       5       1     CHAR      X    2

                               FWS

      Chave externa, Título de coluna TC

 - V_ICO_DET3

      I/O        1        1       4       4       1     CHAR                   Off

      NEX

      Elem.TC, Col.fixa TC

 - /PWS/ZYCIE260-GRUPO

      I/O        1        2       4      18       1     CHAR   X               Off

      NEX         GR

      Elem.TC, Col.fixa TC

 - /PWS/ZYCIE260-DESC_G

      I/O        1        4      40      30       1     CHAR   X               Off

      NEX         GR

      PossRol, Elem.TC

 - /PWS/ZYCIE260-MEINS

      I/O        1        6       3       3       1     UNIT   X               Off

      NEX

      Chave externa, Botão EntrsPoss.stand., Elem.TC

      Saída de conversão=CUNIT

 - /PWS/ZYCIE260-WAERS

      I/O        1        9       5       5       1     CUKY   X               Off

      NEX                      FWS

      Chave externa, Botão EntrsPoss.stand., Elem.TC

 

* Campos Inseridos - Fim

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0308

 

   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

* Campos Inseridos - Inicio

   /PWS/ZYCIE260-GRUPO

      Texto      1        1      17      17       1     CHAR      X    F

                  GR

   /PWS/ZYCIE260-GRUPO

      I/O        1       19      18      18       1     CHAR   X     X         Off

      NEX         GR

      Dest

   /PWS/ZYCIE260-DESC_G

      Texto      1       56      10      10       1     CHAR      X    F

                  GR

   /PWS/ZYCIE260-DESC_G

      I/O        1       67      38      38       1     CHAR   X     X         Off

      NEX         GR

      Dest

   /PWS/ZYCIE260-MEINS

      I/O        3       38       3       3       1     UNIT   X               Off

      NEX

      Dest, Chave externa, Botão EntrsPoss.stand.

      Saída de conversão=CUNIT

   /PWS/ZYCIE260-WAERS

      I/O        3       85       5       5       1     CUKY   X               Off

      NEX                      FWS

      Dest, Chave externa, Botão EntrsPoss.stand.

 - /PWS/ZYCIE260C-CODCOMP

      Texto      1        8      15      18       1     CHAR      X    2

                               MAT

      Título de coluna TC

 - /PWS/ZYCIE260C-CODCOMP

      I/O        1        8      18      18       1     CHAR   X               Off

      NEX         GR           MAT

      Elem.TC

      Saída de conversão=MATN1

 

* Campos Inseridos - Fim

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0309

 

   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

* Campos Inseridos - Inicio

 - /PWS/ZYCIE261-GRUPO

      Texto      1        4      18      18       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE261-DESC_G

      Texto      1        5      15      21       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCIE261-GRUPO

      I/O        1        4       4      18       1     CHAR   X               Off

      NEX         GR

      Elem.TC

 - /PWS/ZYCIE261-DESC_G

      I/O        1        5      40      21       1     CHAR   X               Off

      NEX         GR

      PossRol, Elem.TC

 

* Campos Inseridos - Fim

 

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0310

 

   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

* Campos Inseridos - Inicio

 - /PWS/ZYCIE260C-CODCOMP

      Texto      1        2      15      18       1     CHAR      X    2

                               MAT

      Título de coluna TC

 - /PWS/ZYCIE260C-WAERS

      Texto      1        8       8       6       1     CHAR      X    F

                               FWS

      Chave externa, Título de coluna TC

 - /PWS/ZYCIE260C-NETPR

      Texto      1        9      13      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE260C-CODCOMP

      I/O        1        2      18      18       1     CHAR   X               Off

      NEX                      MAT

      Elem.TC, Col.fixa TC

      Saída de conversão=MATN1

 - /PWS/ZYCIE260C-WAERS

      I/O        1        8       5       6       1     CUKY   X               Off

      NEX                      FWS

      Alinh.à dir., Chave externa, Botão EntrsPoss.stand., Elem.TC

 - /PWS/ZYCIE260C-NETPR

      I/O        1        9      31      17       1     CURR   X               Off

      NEX

      Alinh.à dir., Elem.TC

      Código da moeda=/PWS/ZYCIE260C-WAERS

 

* Campos Inseridos - Fim

 

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em DYNP /PWS/SAPMZYCI064                        0321

*Criar tela

 

Descrição breve:        SS - Beneficio Importação 2

Idioma original:        P

Gravação tela:          05.10.2006  15:34:17

 

Tipo tela:              Tela include (subtela)

 

Tela seguin:            0321

Manter dados:           Desativado

Fonte equidistante:     Desativado

Compressão tmp.exec.:   Ativado

Tela-modelo:            Desativado

Manter posição de rola: Desativado

Posição cursor:

Grp.telas:

 

Linhas/colunas  Ocupds  16 / 85

                Atual.  27 /120

 

 

*Layout:

 

 

 Total Item Genérico                       Total Geral

 

  Código:    ______>

  Descrição: _________________________>

 

  II                   _______________>     II                   ________________

  IPI                  _______________>     IPI                  ________________

  AFRMM                ________________     AFRMM                ________________

  PIS                  ________________     PIS                  ________________

  COFINS               ________________     COFINS               ________________

 

  Total                ________________     Total                ________________

 

  Variação Cambial     ________________     Variação Cambial     ________________

 

 

 

   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

* Campos Inseridos - Inicio

   V_QUAD1_0311

      Quadr      2        1      41      41       1     CHAR

 

   V_QUAD2_0311

      Quadr      2       43      41      41       1     CHAR

 

   V_DETCOMP1

      Texto      4        3      10      10       1     CHAR

      Fonte equidistante

   V_DETCOMP1

      I/O        4       14      26       7       1     CHAR                   Off

      NEX                      MAT

      Alinh.à dir., PossRol

      Saída de conversão=MATN1

   V_DETCOMP2

      Texto      5        3      10      10       1     CHAR

      Fonte equidistante

   V_DETCOMP2

      I/O        5       14      40      26       1     CHAR                   Off

      NEX

      PossRol

   /PWS/ZYCIE260D-I_VLII

      Texto      7        3      20      20       1     CHAR      X    F

 

   /PWS/ZYCIE260D-I_VLII

      I/O        7       24      31      16       1     CURR   X               Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_II

      Texto      7       45      20      20       1     CHAR

 

   TT_II

      I/O        7       66      16      16       1     CURR                   Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   /PWS/ZYCIE260D-I_VLIPI

      Texto      8        3      20      20       1     CHAR      X    F

 

   /PWS/ZYCIE260D-I_VLIPI

      I/O        8       24      31      16       1     CURR   X               Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_IPI

      Texto      8       45      20      20       1     CHAR

 

   TT_IPI

      I/O        8       66      16      16       1     CURR                   Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   /PWS/ZYCIE260D-VLAFRMM

      Texto      9        3       5       5       1     CHAR      X    F

 

   /PWS/ZYCIE260D-VLAFRMM

      I/O        9       24      16      16       1     CURR   X     X         Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_AFRMM

      Texto      9       45       5       5       1     CHAR

 

   TT_AFRMM

      I/O        9       66      16      16       1     CURR                   Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   /PWS/ZYCIE260D-VLPIS

      Texto     10        3       3       3       1     CHAR      X    F

 

   /PWS/ZYCIE260D-VLPIS

      I/O       10       24      16      16       1     CURR   X     X         Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_PIS

      Texto     10       45       3       3       1     CHAR

 

   TT_PIS

      I/O       10       66      16      16       1     CURR                   Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   /PWS/ZYCIE260D-VLCOFINS

      Texto     11        3       6       6       1     CHAR      X    F

 

   /PWS/ZYCIE260D-VLCOFINS

      I/O       11       24      16      16       1     CURR   X     X         Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_COFINS

      Texto     11       45       6       6       1     CHAR

 

   TT_COFINS

      I/O       11       66      16      16       1     CURR                   Off

      NEX

      Dest, Alinh.à dir.

      Código da moeda=/PWS/ZYCIE260D-WAERSIMP

   TT_COMP3

      Texto     13        3       5       5       1     CHAR

 

   TT_COMP3

      I/O       13       24      16      16       1     DEC                    Off

      NEX

      Dest, Alinh.à dir.

   TT_GERAL3

      Texto     13       45       5       5       1     CHAR

 

   TT_GERAL3

      I/O       13       66      16      16       1     DEC                    Off

      NEX

      Dest, Alinh.à dir.

   V_VAR_CAMB3

      Texto     15        3      16      16       1     CHAR

 

   V_VAR_CAMB3

      I/O       15       24      16      16       1     CHAR                   Off

      Dest, Alinh.à dir.

   V_VAR_CAMBT3

      Texto     15       45      16      16       1     CHAR

 

   V_VAR_CAMBT3

      I/O       15       66      16      16       1     CHAR                   Off

      Dest, Alinh.à dir.

 

* Campos Inseridos - Fim

 

*Codigo fonte:

PROCESS BEFORE OUTPUT.

  module set_screen3.

*

PROCESS AFTER INPUT.

* MODULE USER_COMMAND_0321.

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064F03

 

...

        CLEAR itab_botoes3.

        itab_botoes3-bname = 'LOGER'.

        APPEND itab_botoes3.

      ENDIF.

    ENDIF.

* >> Início da inclusão: FORM TRATA_BOTOES3

    IF  pressed_tab_3c  NE 'FS_IMPORT3'

     OR pressed_tab_3c_3 NE 'FS_RES_IMP3'.

      itab_botoes3-bname = 'TRANSP'.

      APPEND itab_botoes3.

    ENDIF.

* << Fim da inclusão

    IF pressed_tab_3c NE 'FS_EXPORT3' AND

       pressed_tab_3c NE 'FS_IMPORT3'.

      itab_botoes3-bname = 'FIRST'.

      APPEND itab_botoes3.

      itab_botoes3-bname = 'PRIOR'.

...

 

...

    ELSEIF pressed_tab_3c_4 EQ 'FS_VCP3'.

      itab_botoes3-bname = 'ATUALIZ'.

      APPEND itab_botoes3.

    ENDIF.

  ELSEIF v_tcode3 EQ '/PWS/ZYCI040_L'.

* >> Início da inclusão: FORM TRATA_BOTOES3

    itab_botoes3-bname = 'TRANSP'.

    APPEND itab_botoes3.

* << Fim da inclusão

    itab_botoes3-bname = 'SELEXP'.

    APPEND itab_botoes3.

    itab_botoes3-bname = 'LOGER'.

    APPEND itab_botoes3.

    itab_botoes3-bname = 'APROV'.

...

 

...

        EXIT.

      ENDIF.

    ENDIF.

  ENDIF.

  IF e_subrc = 0.

* >> Início da exclusão: FORM SELECIONAR_EXPORTACOES3

    v_dtini = sy-datum - 728.

    v_dtfim = sy-datum.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONAR_EXPORTACOES3

    v_dtini = /pws/zycie258-dtpr - 728.

    v_dtfim = /pws/zycie258-dtpr.

* << Fim da inclusão

    IF p_dtexp1 IS INITIAL AND

       p_dtexp2 IS INITIAL.

      p_dtexp1 = v_dtini. p_dtexp2 = v_dtfim.

    ELSEIF NOT p_dtexp1 IS INITIAL AND

           p_dtexp2 IS INITIAL.

...

 

...

          MODIFY itab_msg_erro INDEX v_index.

        ENDIF.

      ENDLOOP.

      CALL SCREEN 0600 STARTING  AT 5 5.

    ENDIF.

* >> Início da inclusão: FORM SELECIONAR_EXPORTACOES3

    PERFORM equip_exp.

    PERFORM comerc_exp.

* << Fim da inclusão

    PERFORM carrega_resumo_exportacao3.

  ENDIF.

  if itab_det_exp_final[] is initial.

    message s015 with text-267 text-268.

  endif.

...

 

...

      MOVE: sy-tabix TO v_indicatu4.

      MOVE: itab_resumo-codmat   TO /pws/zycie259d-codmat  ,

            /pws/zycie258-werks       TO /pws/zycie259d-werks   ,

            itab_resumo-qtd_iten TO /pws/zycie259d-qtd_iten,

            itab_resumo-vlfob    TO /pws/zycie259d-vlfob   .

* >> Início da inclusão: FORM TRATA_TAB_DETALHE3

      /pws/zycie259d-waersfob = itab_resumo-waersfob.

      /pws/zycie259d-meins    = itab_resumo-meins   .

* << Fim da inclusão

      CLEAR: itab_det_exp. REFRESH: itab_det_exp.

      LOOP AT itab_det_exp_final.

        CHECK itab_det_exp_final-codmat EQ /pws/zycie259d-codmat.

        MOVE-CORRESPONDING itab_det_exp_final TO itab_det_exp.

        APPEND itab_det_exp.

...

 

...

  MOVE: sy-tabix TO v_indicatu5.

  MOVE: itab_det_exp-codmat   TO /pws/zycie259d-codmat  ,

        itab_det_exp-meins    TO /pws/zycie259d-meins   ,

        itab_det_exp-qtd_iten TO v_qtd_0305        ,

        itab_det_exp-nrseqre  TO /pws/zycie259d-nrseqre ,

* >> Início da inclusão: FORM TRATA_TAB_VINC3

        itab_det_exp-nrre     TO /pws/zycie259d-nrre    ,

        itab_det_exp-nfnum    TO /pws/zycie259d-nfnum   ,

        itab_det_exp-serie    TO /pws/zycie259d-serie   ,

        itab_det_exp-nrseqc   TO /pws/zycie259d-nrseqc  ,

        itab_det_exp-dtnf     TO /pws/zycie259d-dtnf    ,

* << Fim da inclusão

        itab_det_exp-dtre     TO /pws/zycie259d-dtre    ,

        itab_det_exp-lote     TO /pws/zycie259d-lote    ,

        itab_det_exp-nrseq    TO /pws/zycie259d-nrseq   ,

        itab_det_exp-dtemb    TO /pws/zycie259d-dtemb   ,

        itab_det_exp-vbeln_va TO /pws/zycie259d-vbeln_va,

...

 

...

    EXIT.

  ENDIF.

  MOVE: sy-tabix TO v_indicatu7.

  MOVE: itab_res_imp-codcomp  TO /pws/zycie260-codcomp,

        itab_res_imp-qtd_vinc   TO /pws/zycie260-qtd_di ,

* >> Início da inclusão: FORM TRATA_TAB_DETALHE_IMP3

        itab_res_imp-grupo     TO /pws/zycie260-grupo ,

        itab_res_imp-meins     TO /pws/zycie260-meins ,

        itab_res_imp-waers     TO /pws/zycie260-waers ,

        itab_res_imp-desc_g   TO /pws/zycie260-desc_g ,

* << Fim da inclusão

        itab_res_imp-vlfob    TO /pws/zycie260-vlfob_t.

  CLEAR: itab_det_imp. REFRESH: itab_det_imp.

  LOOP AT itab_det_imp_final.

* >> Início da inclusão: FORM TRATA_TAB_DETALHE_IMP3

    IF /pws/zycit321-it_ge EQ 'X'.

      CHECK itab_det_imp_final-grupo EQ itab_res_imp-grupo.

    ELSE.

* << Fim da inclusão

    CHECK itab_det_imp_final-codcomp EQ itab_res_imp-codcomp.

* >> Início da inclusão: FORM TRATA_TAB_DETALHE_IMP3

    ENDIF.

* << Fim da inclusão

    MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

...

 

...

  ENDIF.

  MOVE: sy-tabix TO v_indicatu6.

  CLEAR: itab_di. REFRESH: itab_di.

  LOOP AT itab_di_final WHERE

                        codmat   EQ itab_comp_vinc-codmat   AND

* >> Início da exclusão: FORM TRATA_TAB_VDI3

                        codcomp  EQ itab_comp_vinc-codcomp  AND

* << Fim da exclusão

                        nrseqre  EQ itab_comp_vinc-nrseqre  AND

                        nrseq    EQ itab_comp_vinc-nrseq    AND

                        vbeln_va EQ itab_comp_vinc-vbeln_va AND

                        vbeln_vf EQ itab_comp_vinc-vbeln_vf AND

                        posnr    EQ itab_comp_vinc-posnr.

* >> Início da inclusão: FORM TRATA_TAB_VDI3

    IF /pws/zycit321-it_ge EQ 'X'.

      CHECK itab_di_final-grupo  EQ itab_comp_vinc-grupo.

    ELSE.

      CHECK itab_di_final-codcomp  EQ itab_comp_vinc-codcomp.

    ENDIF.

* << Fim da inclusão

    IF itab_di_final-sdo_qtd > 0

      OR itab_di_final-qtd_vinc > 0 .

      MOVE-CORRESPONDING itab_di_final TO itab_di.

      APPEND itab_di.

    ENDIF.

...

 

...

    MODIFY itab_resumo INDEX v_indicatu4.

    MOVE: itab_resumo-codmat   TO /pws/zycie259d-codmat  ,

          /pws/zycie258-werks       TO /pws/zycie259d-werks   ,

          itab_resumo-qtd_iten TO /pws/zycie259d-qtd_iten,

          itab_resumo-vlfob    TO /pws/zycie259d-vlfob   .

* >> Início da inclusão: FORM TRATA_BUTTON_FIRST_0304

    /pws/zycie259d-waersfob = itab_resumo-waersfob.

    /pws/zycie259d-meins    = itab_resumo-meins   .

* << Fim da inclusão

    CLEAR: itab_det_exp. REFRESH: itab_det_exp.

    LOOP AT itab_det_exp_final.

      CHECK itab_det_exp_final-codmat EQ /pws/zycie259d-codmat.

      MOVE-CORRESPONDING itab_det_exp_final TO itab_det_exp.

      APPEND itab_det_exp.

...

 

...

    MODIFY itab_resumo INDEX v_indicatu4.

    MOVE: itab_resumo-codmat   TO /pws/zycie259d-codmat  ,

          /pws/zycie258-werks       TO /pws/zycie259d-werks   ,

          itab_resumo-qtd_iten TO /pws/zycie259d-qtd_iten,

          itab_resumo-vlfob    TO /pws/zycie259d-vlfob   .

* >> Início da inclusão: FORM TRATA_BUTTON_PRIOR_0304

    /pws/zycie259d-waersfob = itab_resumo-waersfob.

    /pws/zycie259d-meins    = itab_resumo-meins   .

* << Fim da inclusão

    CLEAR: itab_det_exp. REFRESH: itab_det_exp.

    LOOP AT itab_det_exp_final.

      CHECK itab_det_exp_final-codmat EQ /pws/zycie259d-codmat.

      MOVE-CORRESPONDING itab_det_exp_final TO itab_det_exp.

      APPEND itab_det_exp.

...

 

...

    MODIFY itab_resumo INDEX v_indicatu4.

    MOVE: itab_resumo-codmat   TO /pws/zycie259d-codmat  ,

          /pws/zycie258-werks       TO /pws/zycie259d-werks   ,

          itab_resumo-qtd_iten TO /pws/zycie259d-qtd_iten,

          itab_resumo-vlfob    TO /pws/zycie259d-vlfob   .

* >> Início da inclusão: FORM TRATA_BUTTON_NEXT_0304

    /pws/zycie259d-waersfob = itab_resumo-waersfob.

    /pws/zycie259d-meins    = itab_resumo-meins   .

* << Fim da inclusão

    CLEAR: itab_det_exp. REFRESH: itab_det_exp.

    LOOP AT itab_det_exp_final.

      CHECK itab_det_exp_final-codmat EQ /pws/zycie259d-codmat.

      MOVE-CORRESPONDING itab_det_exp_final TO itab_det_exp.

      APPEND itab_det_exp.

...

 

...

    MODIFY itab_resumo INDEX v_indicatu4.

    MOVE: itab_resumo-codmat   TO /pws/zycie259d-codmat  ,

          /pws/zycie258-werks       TO /pws/zycie259d-werks   ,

          itab_resumo-qtd_iten TO /pws/zycie259d-qtd_iten,

          itab_resumo-vlfob    TO /pws/zycie259d-vlfob   .

* >> Início da inclusão: FORM TRATA_BUTTON_LAST_0304

    /pws/zycie259d-waersfob = itab_resumo-waersfob.

    /pws/zycie259d-meins    = itab_resumo-meins   .

* << Fim da inclusão

    CLEAR: itab_det_exp. REFRESH: itab_det_exp.

    LOOP AT itab_det_exp_final.

      CHECK itab_det_exp_final-codmat EQ /pws/zycie259d-codmat.

      MOVE-CORRESPONDING itab_det_exp_final TO itab_det_exp.

      APPEND itab_det_exp.

...

 

...

    MODIFY itab_det_exp INDEX v_indicatu5.

    MOVE: itab_det_exp-codmat   TO /pws/zycie259d-codmat  ,

          itab_det_exp-meins    TO /pws/zycie259d-meins   ,

          itab_det_exp-qtd_iten TO v_qtd_0305        ,

          itab_det_exp-nrseqre  TO /pws/zycie259d-nrseqre ,

* >> Início da inclusão: FORM TRATA_BUTTON_FIRST_0305

        itab_det_exp-nrre     TO /pws/zycie259d-nrre    ,

        itab_det_exp-nfnum    TO /pws/zycie259d-nfnum   ,

        itab_det_exp-serie    TO /pws/zycie259d-serie   ,

        itab_det_exp-nrseqc   TO /pws/zycie259d-nrseqc  ,

        itab_det_exp-dtnf     TO /pws/zycie259d-dtnf    ,

* << Fim da inclusão

          itab_det_exp-dtre     TO /pws/zycie259d-dtre    ,

          itab_det_exp-nrseq    TO /pws/zycie259d-nrseq   ,

          itab_det_exp-dtemb    TO /pws/zycie259d-dtemb   ,

          itab_det_exp-vbeln_va TO /pws/zycie259d-vbeln_va,

          itab_det_exp-vbeln_vf TO /pws/zycie259d-vbeln_vf,

...

 

...

    MODIFY itab_det_exp INDEX v_indicatu5.

    MOVE: itab_det_exp-codmat   TO /pws/zycie259d-codmat  ,

          itab_det_exp-meins    TO /pws/zycie259d-meins   ,

          itab_det_exp-qtd_iten TO v_qtd_0305        ,

          itab_det_exp-nrseqre  TO /pws/zycie259d-nrseqre ,

* >> Início da inclusão: FORM TRATA_BUTTON_PRIOR_0305

        itab_det_exp-nrre     TO /pws/zycie259d-nrre    ,

        itab_det_exp-nfnum    TO /pws/zycie259d-nfnum   ,

        itab_det_exp-serie    TO /pws/zycie259d-serie   ,

        itab_det_exp-nrseqc   TO /pws/zycie259d-nrseqc  ,

        itab_det_exp-dtnf     TO /pws/zycie259d-dtnf    ,

* << Fim da inclusão

          itab_det_exp-dtre     TO /pws/zycie259d-dtre    ,

          itab_det_exp-nrseq    TO /pws/zycie259d-nrseq   ,

          itab_det_exp-dtemb    TO /pws/zycie259d-dtemb   ,

          itab_det_exp-vbeln_va TO /pws/zycie259d-vbeln_va,

          itab_det_exp-vbeln_vf TO /pws/zycie259d-vbeln_vf,

...

 

...

          itab_det_exp-meins    TO /pws/zycie259d-meins   ,

          itab_det_exp-qtd_iten TO v_qtd_0305        ,

          itab_det_exp-nrseqre  TO /pws/zycie259d-nrseqre ,

          itab_det_exp-dtre     TO /pws/zycie259d-dtre    ,

          itab_det_exp-nrseq    TO /pws/zycie259d-nrseq   ,

* >> Início da inclusão: FORM TRATA_BUTTON_NEXT_0305

        itab_det_exp-nrre     TO /pws/zycie259d-nrre    ,

        itab_det_exp-nfnum    TO /pws/zycie259d-nfnum   ,

        itab_det_exp-serie    TO /pws/zycie259d-serie   ,

        itab_det_exp-nrseqc   TO /pws/zycie259d-nrseqc  ,

        itab_det_exp-dtnf     TO /pws/zycie259d-dtnf    ,

* << Fim da inclusão

          itab_det_exp-dtemb    TO /pws/zycie259d-dtemb   ,

          itab_det_exp-vbeln_va TO /pws/zycie259d-vbeln_va,

          itab_det_exp-vbeln_vf TO /pws/zycie259d-vbeln_vf,

          itab_det_exp-posnr    TO /pws/zycie259d-posnr   ,

          itab_det_exp-stlal    TO /pws/zycie259d-stlal   ,

...

 

...

    MOVE: itab_det_exp-codmat   TO /pws/zycie259d-codmat  ,

          itab_det_exp-meins    TO /pws/zycie259d-meins   ,

          itab_det_exp-qtd_iten TO v_qtd_0305        ,

          itab_det_exp-nrseqre  TO /pws/zycie259d-nrseqre ,

          itab_det_exp-dtre     TO /pws/zycie259d-dtre    ,

* >> Início da inclusão: FORM TRATA_BUTTON_LAST_0305

        itab_det_exp-nrre     TO /pws/zycie259d-nrre    ,

        itab_det_exp-nfnum    TO /pws/zycie259d-nfnum   ,

        itab_det_exp-serie    TO /pws/zycie259d-serie   ,

        itab_det_exp-nrseqc   TO /pws/zycie259d-nrseqc  ,

        itab_det_exp-dtnf     TO /pws/zycie259d-dtnf    ,

* << Fim da inclusão

          itab_det_exp-nrseq    TO /pws/zycie259d-nrseq   ,

          itab_det_exp-dtemb    TO /pws/zycie259d-dtemb   ,

          itab_det_exp-vbeln_va TO /pws/zycie259d-vbeln_va,

          itab_det_exp-vbeln_vf TO /pws/zycie259d-vbeln_vf,

          itab_det_exp-posnr    TO /pws/zycie259d-posnr   ,

...

 

...

      IF e_subrc EQ '8'.

        EXIT.

      ENDIF.

    ENDIF.

  ENDIF.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

  REFRESH: itab_insumo_di.

* << Fim da inclusão

  IF /pws/zycit321-lote IS INITIAL.

    LOOP AT itab_det_exp.

      CLEAR: it_stpox, it_stpox2. REFRESH: it_stpox, it_stpox2.

     READ TABLE itab_comp_vinc WITH KEY nrseqre  = itab_det_exp-nrseqre

                                          nrseq    = itab_det_exp-nrseq

...

 

...

                                       vbeln_vf = itab_det_exp-vbeln_vf

                                          posnr    = itab_det_exp-posnr.

      IF sy-subrc EQ 0.

        CONTINUE.

      ENDIF.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

      v_verif_v = 'X'.

* << Fim da inclusão

      CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

           EXPORTING

                capid                 = 'PP01'

                datuv                 = itab_det_exp-dtre

                mktls                 = 'X'

...

 

...

                                 nrseq    = itab_det_exp-nrseq

                                 vbeln_va = itab_det_exp-vbeln_va

                                 vbeln_vf = itab_det_exp-vbeln_vf

                                 posnr    = itab_det_exp-posnr.

        IF sy-subrc NE 0.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

          IF itab_zycit433[] IS INITIAL.

            SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433.

          ENDIF.

* << Fim da inclusão

          LOOP AT i_final.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

            CLEAR: itab_zycit433.

            READ TABLE itab_zycit433 WITH KEY matnr = i_final-insumo.

            IF /pws/zycit321-it_ge EQ 'X' AND

               sy-subrc NE 0.

              READ TABLE itab_insumo_di WITH KEY

                          matnr = i_final-insumo.

              IF sy-subrc NE 0.

                itab_insumo_di-matnr = i_final-insumo.

                APPEND itab_insumo_di.

                MESSAGE i015 WITH text-178 i_final-insumo text-294.

                DELETE i_final WHERE insumo EQ i_final-insumo.

                CONTINUE.

              ENDIF.

            ENDIF.

* << Fim da inclusão

            READ TABLE itab_mbew WITH KEY matnr = i_final-insumo.

            CLEAR itab_comp_vinc_final.

            MOVE:

* >> Início da exclusão: FORM VERIFICA_COMPONENTES3

             /pws/zycie258-nrseqd   TO itab_comp_vinc_final-nrseqd ,

              itab_det_exp-codmat   TO itab_comp_vinc_final-codmat ,

              itab_det_exp-nrseqre  TO itab_comp_vinc_final-nrseqre,

              itab_det_exp-nrseq    TO itab_comp_vinc_final-nrseq  ,

              itab_det_exp-vbeln_va

                                    TO itab_comp_vinc_final-vbeln_va,

              itab_det_exp-vbeln_vf

                                    TO itab_comp_vinc_final-vbeln_vf,

* << Fim da exclusão

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

             /pws/zycie258-nrseqd   TO itab_comp_vinc_final-nrseqd  ,

              itab_det_exp-codmat   TO itab_comp_vinc_final-codmat  ,

              itab_det_exp-nrseqre  TO itab_comp_vinc_final-nrseqre ,

              itab_det_exp-nrseq    TO itab_comp_vinc_final-nrseq   ,

              itab_det_exp-vbeln_va TO itab_comp_vinc_final-vbeln_va,

              itab_det_exp-vbeln_vf TO itab_comp_vinc_final-vbeln_vf,

              itab_zycit433-grupo   TO itab_comp_vinc_final-grupo   ,

              itab_zycit433-desc_g  TO itab_comp_vinc_final-desc_g  ,

* << Fim da inclusão

              itab_det_exp-posnr    TO itab_comp_vinc_final-posnr   ,

              i_final-insumo        TO itab_comp_vinc_final-codcomp .

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

            itab_comp_vinc_final-grupo = itab_zycit433-grupo.

* << Fim da inclusão

            itab_comp_vinc_final-qtd_iten = i_final-qtunit.

            PERFORM converte_um_base USING i_final-insumo

                                  CHANGING i_final-meins

                                      itab_comp_vinc_final-qtd_iten.

            MOVE : i_final-meins TO itab_comp_vinc_final-meins.

            itab_comp_vinc_final-qtd_total =

              itab_comp_vinc_final-qtd_iten * itab_det_exp-qtd_iten.

            itab_comp_vinc_final-qtd_stotal =

                                     itab_comp_vinc_final-qtd_total.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

            IF /pws/zycit321-it_ge EQ 'X'.

              CLEAR: itab_comp_vinc_final-codcomp.

            ENDIF.

* << Fim da inclusão

            COLLECT itab_comp_vinc_final.

          ENDLOOP.

        ENDIF.

* >> Início da inclusão: FORM VERIFICA_COMPONENTES3

      ENDIF.

    ENDLOOP.

* << Fim da inclusão

     SORT itab_comp_vinc_final BY nrseqre nrseq vbeln_va vbeln_vf posnr

                                                         codmat codcomp.

* >> Início da exclusão: FORM VERIFICA_COMPONENTES3

      ENDIF.

    ENDLOOP.

* << Fim da exclusão

    IF /pws/zycie258-tipo EQ 'C'.

      IF /pws/zycit321-ut_imp EQ 'X'.

        PERFORM seleciona_di3.

      ELSE.

        PERFORM seleciona_di.

...

 

...

    ENDIF.

    IF screen-group1 NE 'NEX' AND

       screen-name   NE 'MARC_CP'.

      screen-input = v_status3.

      MODIFY SCREEN.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0309

    ENDIF.

  ENDLOOP.

  LOOP AT tc_vcp3-cols INTO wa_cols3.

    IF /pws/zycit321-it_ge EQ 'X'.

      IF   wa_cols3-screen-group4 EQ 'MAT'.

        wa_cols3-invisible = 1.

        MODIFY tc_vcp3-cols FROM wa_cols3.

      ENDIF.

    ELSE.

      IF   wa_cols3-screen-group4 EQ 'GR'.

        wa_cols3-invisible = 1.

        MODIFY tc_vcp3-cols FROM wa_cols3.

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  DESCRIBE TABLE itab_comp_vinc LINES v_ilinhas2.

  tc_vcp3-lines = v_ilinhas2.

ENDFORM.

...

 

...

    ENDIF.

    IF /pws/zycie258-tipo EQ 'F'

    AND screen-name EQ 'FS_VDI3'.

      screen-invisible = 1 .

      MODIFY SCREEN.

* >> Início da inclusão: FORM CGECK_FIELDS_SCREEN_0305

    ENDIF.

    IF NOT /pws/zycie259d-nrseqc IS INITIAL.

      IF ( screen-group4 EQ 'EMB' OR

            screen-group4 EQ 'NF' ).

        screen-invisible = 1.

        MODIFY SCREEN.

      ENDIF.

    ELSEIF NOT /pws/zycie259d-nrseq IS INITIAL.

      IF screen-group4 EQ 'NF'.

        screen-invisible = 1.

        MODIFY SCREEN.

      ENDIF.

    ELSE.

      IF screen-group4 EQ 'EMB' OR

         screen-group4 EQ 'RE'.

        screen-invisible = 1.

        MODIFY SCREEN.

* << Fim da inclusão

    ENDIF.

* >> Início da inclusão: FORM CGECK_FIELDS_SCREEN_0305

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

...

 

...

       AND spras = sy-langu.

    ENDSELECT.

  ENDIF.

ENDFORM.

FORM seleciona_di3.

* >> Início da exclusão: FORM SELECIONA_DI3

  DATA: v_found(1) TYPE c,

        v_vlreali LIKE /pws/zycit100-vlfob,

        v_fator_conv LIKE /pws/zycit100-vlfob.

  DATA: BEGIN OF itab_insumo_di OCCURS 0.

  DATA: matnr LIKE  mara-matnr.

  DATA: END OF itab_insumo_di.

  DATA: itab_zycit003_t2 TYPE /pws/zycit003 OCCURS 0 WITH HEADER LINE,

        itab_zycit244 TYPE /pws/zycit244 OCCURS 0 WITH HEADER LINE.

  IF /pws/zycie258-tipo NE 'I'.

  ENDIF.

  DATA: itab_ekpo_sort     LIKE ekpo          OCCURS 0 WITH HEADER LINE.

  DATA: itab_comp_sort3 LIKE itab_comp_vinc_final

                                      OCCURS 0 WITH HEADER LINE.

  DATA BEGIN OF itab_zycit100_sort OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit100.

  DATA: matnr LIKE /pws/zycit003-matnr.

  DATA: END OF itab_zycit100_sort.

  DATA: v_xa   LIKE /pws/zycie085-vlfob,

        v_xb   LIKE /pws/zycie085-vlfob,

        v_xc   LIKE /pws/zycie085-vlfob,

        v_fatx TYPE p DECIMALS 8,

        v_faty TYPE p DECIMALS 8,

        v_tot_real LIKE /pws/zycie003-vlreal,

        v_fatpc   LIKE /pws/zycie085-vlfob,

        v_advii   LIKE /pws/zycie085-vlfob,

        v_advipi  LIKE /pws/zycie085-vlfob,

        v_advicms LIKE /pws/zycie085-vlfob,

        v_advpis  LIKE /pws/zycie085-vlfob,

        v_advcof  LIKE /pws/zycie085-vlfob,

        v_divisor LIKE /pws/zycie085-vlfob.

* << Fim da exclusão

  CLEAR: itab_zycit085,

         itab_zycit100,

         itab_zycit260,

         itab_zycit003,

         itab_ekpo    ,

...

 

...

           itab_zycit044,

           itab_zycit042,

           itab_zycit041,

           itab_zycit043,

           itab_insumo_di.

* >> Início da inclusão: FORM SELECIONA_DI3

  DATA: BEGIN OF itab_sel_di OCCURS 0 .

  DATA: nrseqdi TYPE /pws/zycit100-nrseqdi,

        nrseq   TYPE /pws/zycit100-nrseq,

        ebeln   TYPE /pws/zycit100-ebeln,

        ebelp   TYPE /pws/zycit100-ebelp.

  DATA: END OF itab_sel_di.

* << Fim da inclusão

  LOOP AT itab_comp_vinc_final.

* >> Início da inclusão: FORM SELECIONA_DI3

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_zycit433 WHERE

                            grupo EQ itab_comp_vinc_final-grupo.

        READ TABLE itab_insumo_di WITH KEY

                    matnr = itab_zycit433-matnr.

        IF sy-subrc NE 0.

          itab_insumo_di-matnr = itab_zycit433-matnr.

          APPEND itab_insumo_di.

        ENDIF.

      ENDLOOP.

    ELSE.

* << Fim da inclusão

    READ TABLE itab_insumo_di WITH KEY

                      matnr = itab_comp_vinc_final-codcomp.

    IF sy-subrc NE 0.

      itab_insumo_di-matnr = itab_comp_vinc_final-codcomp.

      APPEND itab_insumo_di.

    ENDIF.

* >> Início da inclusão: FORM SELECIONA_DI3

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

* >> Início da inclusão: FORM SELECIONA_DI3

  SORT itab_det_exp BY dtnf dtre.

  READ TABLE itab_det_exp INDEX 1.

  IF itab_det_exp-dtre IS INITIAL.

    itab_det_exp-dtre = itab_det_exp-dtnf.

  ENDIF.

  itab_det_exp-dtre = itab_det_exp-dtre - 728.

  IF NOT itab_insumo_di[] IS INITIAL.

    REFRESH itab_sel_di.

    SELECT c~nrseqdi b~nrseq b~ebeln b~ebelp

        FROM ( ( /pws/zycit003 AS a INNER JOIN /pws/zycit100 AS b

               ON  a~nrseq EQ b~nrseq

               AND a~ebeln EQ b~ebeln

               AND a~ebelp EQ b~ebelp )

               INNER JOIN /pws/zycit085 AS c

               ON b~nrseqdi EQ c~nrseqdi )

            INTO TABLE itab_sel_di

            FOR ALL ENTRIES IN itab_insumo_di

            WHERE a~matnr EQ itab_insumo_di-matnr

              AND c~dtuserc >= itab_det_exp-dtre.

  ENDIF.

  IF NOT itab_insumo_di[] IS INITIAL.

* << Fim da inclusão

  SELECT * FROM /pws/zycit003 INTO TABLE itab_zycit003

      FOR ALL ENTRIES IN itab_insumo_di

         WHERE

               matnr      EQ itab_insumo_di-matnr.

* >> Início da inclusão: FORM SELECIONA_DI3

  ENDIF.

* << Fim da inclusão

  IF NOT itab_zycit003[] IS INITIAL.

    itab_zycit003_t2[] = itab_zycit003[].

    DELETE itab_zycit003_t2 WHERE nrseqd EQ space.

    SORT itab_zycit003_t2 BY nrseqd.

    DELETE ADJACENT DUPLICATES FROM itab_zycit003_t2 COMPARING nrseqd.

...

 

...

        itab_ekpo_sort = itab_ekpo.

        APPEND itab_ekpo_sort.

      ENDIF.

      itab_zycit100_sort = itab_zycit100.

      itab_zycit100_sort-matnr = itab_ekpo-matnr.

* >> Início da inclusão: FORM SELECIONA_DI3

      CLEAR itab_zycit433.

      READ TABLE itab_zycit433 WITH KEY matnr = itab_ekpo-matnr.

      itab_zycit100_sort-grupo = itab_zycit433-grupo.

* << Fim da inclusão

      APPEND itab_zycit100_sort.

    ENDLOOP.

  ENDLOOP.

  REFRESH: itab_ekpo.

  itab_ekpo[] = itab_ekpo_sort[] .

...

 

...

      APPEND itab_comp_sort3.

    ENDLOOP.

  ENDLOOP.

  REFRESH itab_comp_vinc_final.

  itab_comp_vinc_final[] = itab_comp_sort3[].

* >> Início da inclusão: FORM SELECIONA_DI3

  IF /pws/zycit321-it_ge EQ 'X'.

  ELSE.

  ENDIF.

* << Fim da inclusão

  LOOP AT itab_comp_vinc_final.

* >> Início da exclusão: FORM SELECIONA_DI3

    LOOP AT itab_zycit100_sort

                          WHERE matnr EQ itab_comp_vinc_final-codcomp.

      REFRESH   itab_di_final_aux.

      itab_di_final_aux[] = itab_di_final[].

      READ TABLE itab_ekpo WITH KEY

                                  ebeln = itab_zycit100_sort-ebeln

                                  ebelp = itab_zycit100_sort-ebelp.

      READ TABLE itab_zycit100 WITH KEY

                                  nrseq = itab_zycit100_sort-nrseq

                                  ebeln = itab_zycit100_sort-ebeln

                                  ebelp = itab_zycit100_sort-ebelp.

* << Fim da exclusão

      READ TABLE itab_det_exp WITH KEY

                           codmat   = itab_comp_vinc_final-codmat

                           nrseqre  = itab_comp_vinc_final-nrseqre

                           nrseq    = itab_comp_vinc_final-nrseq

                           vbeln_va = itab_comp_vinc_final-vbeln_va

                           vbeln_vf = itab_comp_vinc_final-vbeln_vf

                           posnr    = itab_comp_vinc_final-posnr.

* >> Início da inclusão: FORM SELECIONA_DI3

    IF NOT itab_det_exp-dtre IS INITIAL.

* << Fim da inclusão

      v_dtini = itab_det_exp-dtre - 728.

      v_dtfim = itab_det_exp-dtre.

* >> Início da exclusão: FORM SELECIONA_DI3

      CLEAR itab_zycit085.

      READ TABLE itab_zycit085 WITH KEY

                                      nrseqdi = itab_zycit100-nrseqdi.

      CHECK sy-subrc EQ 0 AND

            itab_zycit085-dtuserc >= v_dtini AND

            itab_zycit085-dtuserc <= v_dtfim.

      SELECT SINGLE * FROM /pws/zycbt007

        WHERE bukrs EQ itab_zycit085-bukrs.

      CLEAR itab_zycit001.

      READ TABLE itab_zycit001 WITH KEY nrseq = itab_zycit100-nrseq.

      IF sy-subrc EQ 0.

        CLEAR itab_zycit003.

        READ TABLE itab_zycit003 WITH KEY nrseq = itab_zycit100-nrseq

                                          ebeln = itab_zycit100-ebeln

                                          ebelp = itab_zycit100-ebelp.

        IF sy-subrc NE 0.

          CONTINUE.

        ENDIF.

* << Fim da exclusão

      ELSE.

* >> Início da exclusão: FORM SELECIONA_DI3

        CONTINUE.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI3

      v_dtini = itab_det_exp-dtnf - 728.

      v_dtfim = itab_det_exp-dtnf.

* << Fim da inclusão

      ENDIF.

* >> Início da inclusão: FORM SELECIONA_DI3

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_zycit100_sort

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI3

      v_vlreali = itab_zycit003-qtd_iten.

      READ TABLE itab_mess_un WITH KEY meins =

                                         itab_zycit003-meins

                                matnr = itab_zycit003-matnr.

      IF sy-subrc EQ 0.

        CONTINUE.

      ENDIF.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI3

                            WHERE grupo EQ itab_comp_vinc_final-grupo.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI3

      PERFORM converte_um_base USING itab_zycit003-matnr

                            CHANGING itab_zycit003-meins

                                     itab_zycit003-qtd_iten.

      IF itab_zycit003-qtd_iten <= 0.

        itab_mess_un-meins = itab_det_exp_final-meins.

        itab_mess_un-matnr = itab_det_exp_final-codmat.

        APPEND itab_mess_un.

        CONTINUE.

      ENDIF.

      MOVE: itab_zycit003-meins           TO itab_di_final-meins       ,

            itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      .

      PERFORM converte_um_ncm  USING itab_zycit003-matnr

                            CHANGING itab_di_final-meins

                                     /pws/zycie258-werks

                                     itab_di_final-qtd_di.

      IF itab_di_final-qtd_di IS INITIAL.

        EXIT.

      ENDIF.

      v_fator_conv = v_vlreali / itab_zycit003-qtd_iten.

    CLEAR: v_advii, v_advicms, v_advipi, v_advpis, v_advcof, v_xa, v_xb,

                                                         v_fatx, v_faty.

      v_advii   = ( itab_zycit003-advalii / 100 ).

      v_advipi  = ( itab_zycit003-advalipi / 100 ).

      IF NOT itab_zycit003-basred IS INITIAL.

        v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

         ( itab_zycit003-basred / 100 ) ) .

      ELSE.

        v_advicms = ( itab_zycit003-advalicms / 100 ).

      ENDIF.

      v_advpis  = ( itab_zycit100-advalpis / 100 ).

      v_advcof  = ( itab_zycit100-advalcofins / 100 ).

      v_xb = ( 1 - v_advpis - v_advcof - v_advicms ) .

     v_xa =  1 + v_advicms *  ( v_advii + v_advipi * ( 1 + v_advii ) ) .

      v_fatx = v_xa / v_xb.

      v_faty = v_advicms / v_xb.

      CLEAR itab_di_final_aux.

      READ TABLE itab_di_final_aux WITH KEY

                  nrseqre  = itab_comp_vinc_final-nrseqre

                  nrseq    = itab_comp_vinc_final-nrseq

                  codmat   = itab_comp_vinc_final-codmat

                  vbeln_va = itab_comp_vinc_final-vbeln_va

                  vbeln_vf = itab_comp_vinc_final-vbeln_vf

                  posnr    = itab_comp_vinc_final-posnr

                  codcomp  = itab_comp_vinc_final-codcomp

                  nrdi     = itab_zycit085-nrseqdi

                  nrseqemb = itab_zycit100-nrseq

                  ebeln    = itab_ekpo-ebeln

                  ebelp    = itab_ekpo-ebelp.

      IF sy-subrc               NE 0 AND

         itab_zycit003-qtd_iten >  0.

        READ TABLE itab_di_final_aux WITH KEY

                              codcomp  = itab_comp_vinc_final-codcomp

                               nrdi     = itab_zycit085-nrseqdi

                               nrseqemb = itab_zycit100-nrseq

                               ebeln    = itab_ekpo-ebeln

                               ebelp    = itab_ekpo-ebelp.

        IF sy-subrc NE 0.

          CLEAR itab_di_final.

          MOVE:

          /pws/zycie258-nrseqd               TO itab_di_final-nrseqd ,

          itab_comp_vinc_final-codcomp  TO itab_di_final-codcomp     ,

          itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

          itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

          itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

          itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

          itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

          itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

          itab_zycit085-nrseqdi         TO itab_di_final-nrdi        ,

          itab_zycit085-nrdi            TO itab_di_final-reg_di      ,

          itab_zycit085-dtuserc         TO itab_di_final-dtdi        ,

          itab_zycit100-nrseq           TO itab_di_final-nrseqemb    ,

          itab_zycit100-adicao          TO itab_di_final-adicao      ,

          itab_ekpo-ebeln               TO itab_di_final-ebeln       ,

          itab_ekpo-ebelp               TO itab_di_final-ebelp       ,

          itab_zycit003-meins           TO itab_di_final-meins       ,

          itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      ,

          itab_zycit003-qtd_iten        TO itab_di_final-sdo_qtd     ,

          itab_zycit003-j_1bnbm         TO itab_di_final-j_1bnbm     ,

          itab_zycit085-dtdesemb        TO itab_di_final-dtdesemb    ,

          itab_zycit003-gewei           TO itab_di_final-gewei       ,

          itab_zycit003-werks           TO itab_di_final-werks       ,

          itab_zycit003-ntgew           TO itab_di_final-ntgew       ,

          itab_zycit003-waers           TO itab_di_final-waers       ,

          itab_zycit003-netpr           TO itab_di_final-netpr       ,

          itab_zycit003-advalii         TO itab_di_final-i_txii      ,

          itab_zycit100-advalpis        TO itab_di_final-pis         ,

          itab_zycit100-advalcofins     TO itab_di_final-cofins      ,

          itab_zycit003-advalipi        TO itab_di_final-i_txipi     ,

          itab_zycit003-advalicms       TO itab_di_final-i_txicms    ,

          itab_zycit003-waers_real      TO itab_di_final-i_waerscifme,

          itab_zycit100-dttaxbem        TO itab_di_final-i_txmoeda   ,

          itab_zycit100-waersreal       TO itab_di_final-i_waerscifmi,

          itab_zycit100-waersreal       TO itab_di_final-waersimp    ,

          itab_zycit003-vlreal          TO itab_di_final-vlreal      ,

          itab_zycit100-vlfre           TO itab_di_final-vlfrete     ,

          itab_zycit100-vlseg           TO itab_di_final-vlseg       .

          SELECT SINGLE *

            FROM mara INTO mara

            WHERE matnr = itab_di_final-codmat.

          itab_di_final-gewei = mara-gewei.

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

          IF itab_zycit001-inco1 EQ 'FOB'.

            itab_di_final-valor_u = itab_zycit003-vlreal.

          ELSEIF itab_zycit001-inco1 EQ 'CFR'.

            itab_di_final-valor_u = ( itab_zycit003-vlreal +

                     itab_zycit003-vlfre_fat ) - itab_zycit100-vlfre.

          ELSEIF itab_zycit001-inco1 EQ 'CIF'.

            itab_di_final-valor_u = ( ( itab_zycit003-vlreal +

                itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ) -

                         itab_zycit100-vlfre ) - itab_zycit100-vlseg.

          ELSE.

            itab_di_final-valor_u = itab_zycit003-vlreal.

          ENDIF.

          itab_di_final-valor_u = itab_di_final-valor_u * v_fator_conv.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlfrete.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlseg.

          itab_di_final-vlfrete = itab_di_final-vlfrete /

                                  itab_zycit003-qtd_iten.

          itab_di_final-vlseg   = itab_di_final-vlseg /

                                  itab_zycit003-qtd_iten.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI3

        PERFORM monta_dis3.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI3

          CHECK itab_di_final-valor_u > 0.

          itab_di_final-i_vlcif_me = itab_di_final-valor_u.

          itab_di_final-i_vlcif_mi =

                 itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

          LOOP AT itab_zycit260

                        WHERE codcomp  = itab_comp_vinc_final-codcomp

                          AND nrdi      = itab_zycit085-nrseqdi

                          AND nrseqemb  = itab_zycit100-nrseq

                          AND ebeln     = itab_ekpo-ebeln

                          AND ebelp     = itab_ekpo-ebelp.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_zycit260-qtd_vinc.

* << Fim da exclusão

          ENDLOOP.

* >> Início da exclusão: FORM SELECIONA_DI3

          IF itab_di_final-sdo_qtd <= 0.

            CLEAR itab_di_final.

            CONTINUE.

          ENDIF.

          CLEAR wa_itab_di_final.

          IF itab_comp_vinc_final-qtd_stotal > 0 AND

             itab_di_final-sdo_qtd > 0.

            IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

              IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                         itab_di_final-sdo_qtd - itab_di_final-qtd_di.

                itab_di_final-qtd_vinc =

                        itab_di_final-qtd_vinc + itab_di_final-qtd_di.

* << Fim da exclusão

              ELSE.

* >> Início da exclusão: FORM SELECIONA_DI3

                itab_di_final-qtd_vinc =

                       itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                        itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

              ENDIF.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI3

      LOOP AT itab_zycit100_sort

                          WHERE matnr EQ itab_comp_vinc_final-codcomp.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI3

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

               ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc * itab_zycit100-vlpis.

              itab_di_final-vlcofins =

                      v_perc_vinc * itab_zycit100-vlcofins.

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc * itab_zycit100-vlii.

              itab_di_final-i_vlipi =

                      v_perc_vinc * itab_zycit100-vlipi.

              itab_di_final-i_vlicms =

                      v_perc_vinc * itab_zycit100-vlicms.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-vlpis.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-vlcofins.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlii.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlipi.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-i_vlicms.

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ELSE.

              IF itab_comp_vinc_final-qtd_stotal <

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                      itab_comp_vinc_final-qtd_stotal.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                      itab_comp_vinc_final-qtd_stotal.

              ELSE.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                       itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

              ENDIF.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc * itab_zycit100-vlpis.

              itab_di_final-vlcofins =

                      v_perc_vinc * itab_zycit100-vlcofins.

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc * itab_zycit100-vlii.

              itab_di_final-i_vlipi =

                      v_perc_vinc * itab_zycit100-vlipi.

              itab_di_final-i_vlicms =

                      v_perc_vinc * itab_zycit100-vlicms.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-vlpis.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-vlcofins.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlii.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlipi.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-i_vlicms.

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ENDIF.

          ENDIF.

          CLEAR v_found.

          LOOP AT itab_zycit044 WHERE nrseq = itab_zycit001-nrseq

                                  AND ebeln = itab_ekpo-ebeln

                                  AND ebelp = itab_ekpo-ebelp.

            CLEAR itab_zycit043.

            READ TABLE itab_zycit043 WITH KEY

                                  nrseq     = itab_zycit044-nrseqnf

                                  nfglobal  = itab_zycit044-nfglobal

                                  nfremessa = itab_zycit044-nfremessa.

            IF sy-subrc EQ 0.

              MOVE: itab_zycit043-nfnum  TO itab_di_final-nfnum,

                    itab_zycit043-series TO itab_di_final-serie,

                    itab_zycit043-dtincl TO itab_di_final-dtnf .

              v_found = 'S'.

              EXIT.

            ENDIF.

          ENDLOOP.

          IF v_found NE 'S'.

            LOOP AT itab_zycit042 WHERE nrseq = itab_zycit001-nrseq

                                    AND ebeln = itab_ekpo-ebeln

                                    AND ebelp = itab_ekpo-ebelp.

              CLEAR itab_zycit041.

              READ TABLE itab_zycit041 WITH KEY

                                    nrseq    = itab_zycit042-nrseqnf

                                    nfglobal = itab_zycit042-nfglobal.

              IF sy-subrc EQ 0.

                MOVE: itab_zycit041-nfnum  TO itab_di_final-nfnum,

                      itab_zycit041-series TO itab_di_final-serie,

                      itab_zycit041-dtincl TO itab_di_final-dtnf .

                EXIT.

              ENDIF.

            ENDLOOP.

          ENDIF.

          APPEND itab_di_final.

          IF NOT wa_itab_di_final IS INITIAL.

            LOOP AT itab_di_final.

              IF

             ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre      OR

               itab_di_final-vbeln_va NE itab_det_exp-vbeln_va     OR

               itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf     OR

               itab_di_final-posnr    NE itab_det_exp-posnr        OR

               itab_di_final-nrseq    NE itab_det_exp-nrseq        OR

               itab_di_final-codmat   NE itab_det_exp-codmat )    AND

             ( itab_di_final-codcomp  EQ

                                     itab_comp_vinc_final-codcomp AND

              itab_di_final-nrdi     EQ wa_itab_di_final-nrdi     AND

              itab_di_final-ebeln    EQ wa_itab_di_final-ebeln    AND

              itab_di_final-ebelp    EQ wa_itab_di_final-ebelp    AND

              itab_di_final-nrseqemb EQ wa_itab_di_final-nrseqemb ).

                itab_di_final-sdo_qtd  =

                    itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

                MODIFY itab_di_final.

              ENDIF.

            ENDLOOP.

          ENDIF.

        ELSE.

          CLEAR itab_di_final.

          MOVE:

          /pws/zycie258-nrseqd           TO itab_di_final-nrseqd     ,

          itab_comp_vinc_final-codcomp  TO itab_di_final-codcomp     ,

          itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

          itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

          itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

          itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

          itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

          itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

          itab_zycit085-nrseqdi         TO itab_di_final-nrdi        ,

          itab_zycit085-nrdi            TO itab_di_final-reg_di      ,

          itab_zycit085-dtuserc         TO itab_di_final-dtdi        ,

          itab_zycit100-nrseq           TO itab_di_final-nrseqemb    ,

          itab_zycit100-adicao          TO itab_di_final-adicao      ,

          itab_ekpo-ebeln               TO itab_di_final-ebeln       ,

          itab_ekpo-ebelp               TO itab_di_final-ebelp       ,

          itab_zycit003-meins           TO itab_di_final-meins       ,

          itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      ,

          itab_di_final_aux-sdo_qtd     TO itab_di_final-sdo_qtd     ,

          itab_zycit003-j_1bnbm         TO itab_di_final-j_1bnbm     ,

          itab_zycit085-dtdesemb        TO itab_di_final-dtdesemb    ,

          itab_zycit003-gewei           TO itab_di_final-gewei       ,

          itab_zycit003-ntgew           TO itab_di_final-ntgew       ,

          itab_zycit003-werks           TO itab_di_final-werks       ,

          itab_zycit003-waers           TO itab_di_final-waers       ,

          itab_zycit003-netpr           TO itab_di_final-netpr       ,

          itab_zycit100-advalpis        TO itab_di_final-pis         ,

          itab_zycit100-advalcofins     TO itab_di_final-cofins      ,

          itab_zycit003-advalii         TO itab_di_final-i_txii      ,

          itab_zycit003-advalipi        TO itab_di_final-i_txipi     ,

          itab_zycit003-advalicms       TO itab_di_final-i_txicms    ,

          itab_zycit003-waers_real      TO itab_di_final-i_waerscifme,

          itab_zycit100-dttaxbem        TO itab_di_final-i_txmoeda   ,

          itab_zycit100-waersreal       TO itab_di_final-i_waerscifmi,

          itab_zycit100-waersreal       TO itab_di_final-waersimp    ,

          itab_zycit003-vlreal          TO itab_di_final-vlreal      ,

          itab_zycit100-vlfre           TO itab_di_final-vlfrete     ,

          itab_zycit100-vlseg           TO itab_di_final-vlseg       .

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          IF itab_zycit001-inco1 EQ 'FOB'.

            itab_di_final-valor_u = itab_zycit003-vlreal.

          ELSEIF itab_zycit001-inco1 EQ 'CFR'.

            itab_di_final-valor_u = ( itab_zycit003-vlreal +

                     itab_zycit003-vlfre_fat ) - itab_zycit100-vlfre.

          ELSEIF itab_zycit001-inco1 EQ 'CIF'.

            itab_di_final-valor_u = ( ( itab_zycit003-vlreal +

                itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ) -

                         itab_zycit100-vlfre ) - itab_zycit100-vlseg.

          ELSE.

            itab_di_final-valor_u = itab_zycit003-vlreal.

          ENDIF.

          itab_di_final-valor_u = itab_di_final-valor_u * v_fator_conv.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlfrete.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlseg.

          itab_di_final-vlfrete = itab_di_final-vlfrete /

                                  itab_zycit003-qtd_iten.

          itab_di_final-vlseg   = itab_di_final-vlseg /

                                  itab_zycit003-qtd_iten.

          CHECK itab_di_final-valor_u > 0.

          itab_di_final-i_vlcif_me = itab_di_final-valor_u.

          itab_di_final-i_vlcif_mi =

                 itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

          CLEAR wa_itab_di_final.

          IF itab_comp_vinc_final-qtd_stotal > 0 AND

                                            itab_di_final-sdo_qtd > 0.

            IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

              IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                         itab_di_final-sdo_qtd - itab_di_final-qtd_di.

                itab_di_final-qtd_vinc =

                        itab_di_final-qtd_vinc + itab_di_final-qtd_di.

              ELSE.

                itab_di_final-qtd_vinc =

                       itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                        itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

              ENDIF.

              SELECT SINGLE *

               FROM mara INTO mara

                WHERE matnr = itab_di_final-codmat.

              itab_di_final-gewei = mara-gewei.

              itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

              itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc * itab_zycit100-vlpis.

              itab_di_final-vlcofins =

                      v_perc_vinc * itab_zycit100-vlcofins.

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc * itab_zycit100-vlii.

              itab_di_final-i_vlipi =

                      v_perc_vinc * itab_zycit100-vlipi.

              itab_di_final-i_vlicms =

                      v_perc_vinc * itab_zycit100-vlicms.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-vlpis.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-vlcofins.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlii.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlipi.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-i_vlicms.

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ELSE.

              IF itab_comp_vinc_final-qtd_stotal <

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                      itab_comp_vinc_final-qtd_stotal.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                      itab_comp_vinc_final-qtd_stotal.

              ELSE.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                       itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

              ENDIF.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc * itab_zycit100-vlpis.

              itab_di_final-vlcofins =

                      v_perc_vinc * itab_zycit100-vlcofins.

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc * itab_zycit100-vlii.

              itab_di_final-i_vlipi =

                      v_perc_vinc * itab_zycit100-vlipi.

              itab_di_final-i_vlicms =

                      v_perc_vinc * itab_zycit100-vlicms.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-vlpis.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-vlcofins.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlii.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                      CHANGING itab_di_final-i_vlipi.

              PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                                 'USD'

                                                 itab_zycit085-dttax

                                     CHANGING itab_di_final-i_vlicms.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI3

        PERFORM monta_dis3.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI3

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ENDIF.

          ENDIF.

          CLEAR v_found.

          LOOP AT itab_zycit044 WHERE nrseq = itab_zycit001-nrseq

                                  AND ebeln = itab_ekpo-ebeln

                                  AND ebelp = itab_ekpo-ebelp.

            CLEAR itab_zycit043.

            READ TABLE itab_zycit043 WITH KEY

                                    nrseq     = itab_zycit044-nrseqnf

                                   nfglobal  = itab_zycit044-nfglobal

                                  nfremessa = itab_zycit044-nfremessa.

            IF sy-subrc EQ 0.

              MOVE: itab_zycit043-nfnum  TO itab_di_final-nfnum,

                    itab_zycit043-series TO itab_di_final-serie,

                    itab_zycit043-dtincl TO itab_di_final-dtnf .

              v_found = 'S'.

              EXIT.

            ENDIF.

          ENDLOOP.

          IF v_found NE 'S'.

            LOOP AT itab_zycit042 WHERE nrseq = itab_zycit001-nrseq

                                    AND ebeln = itab_ekpo-ebeln

                                    AND ebelp = itab_ekpo-ebelp.

              CLEAR itab_zycit041.

              READ TABLE itab_zycit041 WITH KEY

                                     nrseq    = itab_zycit042-nrseqnf

                                    nfglobal = itab_zycit042-nfglobal.

              IF sy-subrc EQ 0.

                MOVE: itab_zycit041-nfnum  TO itab_di_final-nfnum,

                      itab_zycit041-series TO itab_di_final-serie,

                      itab_zycit041-dtincl TO itab_di_final-dtnf .

                EXIT.

              ENDIF.

            ENDLOOP.

          ENDIF.

          APPEND itab_di_final.

          IF NOT wa_itab_di_final IS INITIAL.

            LOOP AT itab_di_final.

              IF

             ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre      OR

               itab_di_final-vbeln_va NE itab_det_exp-vbeln_va     OR

               itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf     OR

               itab_di_final-posnr    NE itab_det_exp-posnr        OR

               itab_di_final-nrseq    NE itab_det_exp-nrseq        OR

              itab_di_final-codmat   NE itab_det_exp-codmat )     AND

             ( itab_di_final-codcomp  EQ

                                     itab_comp_vinc_final-codcomp AND

              itab_di_final-nrdi     EQ wa_itab_di_final-nrdi     AND

              itab_di_final-ebeln    EQ wa_itab_di_final-ebeln    AND

              itab_di_final-ebelp    EQ wa_itab_di_final-ebelp    AND

               itab_di_final-nrseqemb EQ wa_itab_di_final-nrseqemb ).

                itab_di_final-sdo_qtd  =

                    itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

                MODIFY itab_di_final.

              ENDIF.

* << Fim da exclusão

            ENDLOOP.

* >> Início da exclusão: FORM SELECIONA_DI3

          ENDIF.

* << Fim da exclusão

        ENDIF.

* >> Início da exclusão: FORM SELECIONA_DI3

      ENDIF.

    ENDLOOP.

* << Fim da exclusão

  ENDLOOP.

  LOOP AT itab_di_final.

    v_tabix = sy-tabix.

    CLEAR mara.

    SELECT SINGLE ntgew brgew

...

 

...

    LOOP AT itab_det_exp_final.

      CLEAR itab_resumo.

      MOVE: itab_det_exp_final-codmat   TO itab_resumo-codmat  ,

            itab_det_exp_final-werks    TO itab_resumo-werks   ,

            itab_det_exp_final-qtd_iten TO itab_resumo-qtd_iten,

* >> Início da inclusão: FORM CARREGA_RESUMO_EXPORTACAO3

            itab_det_exp_final-meins    TO itab_resumo-meins   ,

            itab_det_exp_final-waersfob TO itab_resumo-waersfob,

* << Fim da inclusão

            itab_det_exp_final-vlfob    TO itab_resumo-vlfob   .

      COLLECT itab_resumo.

    ENDLOOP.

    SORT itab_det_exp_final BY dtre ASCENDING.

    SORT itab_resumo        BY codmat.

...

 

...

ENDFORM.

FORM check_fields_screen_0308.

  LOOP AT tc_det_imp3-cols INTO wa_cols3.

    IF wa_cols3-screen-group1 NE 'NEX'.

      wa_cols3-screen-input = v_status3.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0308

      MODIFY tc_det_imp3-cols FROM wa_cols3.

    ENDIF.

    IF /pws/zycit321-it_ge NE 'X'.

      IF wa_cols3-screen-group4 NE 'GR'.

        wa_cols3-invisible = '1'.

* << Fim da inclusão

      MODIFY tc_det_imp3-cols FROM wa_cols3.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0308

      ENDIF.

    ENDIF.

  ENDLOOP.

  LOOP AT SCREEN.

    IF /pws/zycit321-it_ge EQ 'X'.

      IF screen-group4 EQ 'MAT'.

        screen-invisible = 1.

        MODIFY SCREEN.

      ENDIF.

    ELSE.

      IF screen-group4 EQ 'GR'.

        screen-invisible = 1.

        MODIFY SCREEN.

* << Fim da inclusão

    ENDIF.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0308

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

...

 

...

  tc_det_imp3-lines = v_ilinhas2.

ENDFORM.

FORM carrega_det_imp3.

  CLEAR itab_det_imp_final. REFRESH itab_det_imp_final.

  CLEAR: tt_ii, tt_ipi, tt_icms, tt_benef, tt_afrmm, tt_pis, tt_cofins.

* >> Início da inclusão: FORM CARREGA_DET_IMP3

  REFRESH itab_res_imp.

* << Fim da inclusão

  LOOP AT itab_di_final.

    CHECK itab_di_final-v_sel EQ 'X'.

    SELECT SINGLE * FROM /pws/zycit085

    INTO /pws/zycit085

     WHERE nrseqdi EQ itab_di_final-nrdi.

...

 

...

    tt_icms   = tt_icms   + itab_di_final-i_vlicms.

    tt_afrmm  = tt_afrmm  + itab_di_final-vlafrmm.

    tt_pis    = tt_pis    + itab_di_final-vlpis.

    tt_cofins = tt_cofins + itab_di_final-vlcofins.

    COLLECT itab_det_imp_final.

* >> Início da inclusão: FORM CARREGA_DET_IMP3

    IF /pws/zycit321-it_ge EQ 'X'.

      itab_res_imp-grupo = itab_di_final-grupo.

    ELSE.

      itab_res_imp-codcomp = itab_di_final-codcomp.

    ENDIF.

    COLLECT itab_res_imp.

* << Fim da inclusão

  ENDLOOP.

* >> Início da inclusão: FORM CARREGA_DET_IMP3

  IF v_verif_v EQ 'X'.

    CLEAR: /pws/zycie260d, v_verif_v.

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_res_imp.

        CLEAR: /pws/zycie260d-i_vlii.

        LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

          /pws/zycie260d-i_vlii =

           itab_det_imp_final-i_vlii + itab_det_imp_final-i_vlipi

            + itab_det_imp_final-i_vlicms + itab_det_imp_final-vlafrmm

            + itab_det_imp_final-vlpis + itab_det_imp_final-vlcofins.

        ENDLOOP.

        IF /pws/zycie260d-i_vlii >= /pws/zycit321-viabilidade.

          itab_di_final-transp = 'X'.

        ELSE.

          CLEAR: itab_di_final-transp.

        ENDIF.

        MODIFY itab_di_final TRANSPORTING transp

                    WHERE grupo EQ itab_res_imp-grupo.

      ENDLOOP.

    ELSE.

      LOOP AT itab_res_imp.

        CLEAR: /pws/zycie260d-i_vlii.

       LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

          /pws/zycie260d-i_vlii =

           itab_det_imp_final-i_vlii + itab_det_imp_final-i_vlipi

            + itab_det_imp_final-i_vlicms + itab_det_imp_final-vlafrmm

            + itab_det_imp_final-vlpis + itab_det_imp_final-vlcofins.

        ENDLOOP.

        IF /pws/zycie260d-i_vlii >= /pws/zycit321-viabilidade.

          itab_di_final-transp = 'X'.

        ELSE.

          CLEAR: itab_di_final-transp.

        ENDIF.

        MODIFY itab_di_final TRANSPORTING transp

                    WHERE codcomp EQ itab_res_imp-codcomp.

      ENDLOOP.

    ENDIF.

  ENDIF.

* << Fim da inclusão

  tt_benef = tt_benef + tt_ii + tt_ipi.

  SORT itab_det_imp_final BY dtdi nrdi ebeln ebelp adicao.

* >> Início da inclusão: FORM CARREGA_DET_IMP3

  REFRESH itab_res_imp.

* << Fim da inclusão

  PERFORM carrega_resumo_importacao3.

ENDFORM.

FORM carrega_resumo_importacao3.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

  DATA: v_moeda TYPE c.

* << Fim da inclusão

  DATA: BEGIN OF itab_det_imp_aux OCCURS 0.

* >> Início da exclusão: FORM CARREGA_RESUMO_IMPORTACAO3

  DATA: nrdi    LIKE /pws/zycit085-nrseqdi,

        codcomp LIKE /pws/zycit245-codcomp.

* << Fim da exclusão

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

  DATA: nrdi    TYPE /pws/zycit085-nrseqdi,

        codcomp TYPE /pws/zycit245-codcomp,

        grupo   TYPE /pws/zycit433-grupo.

* << Fim da inclusão

  DATA: END OF itab_det_imp_aux.

  CLEAR itab_res_imp. REFRESH itab_res_imp.

  CLEAR itab_det_imp_aux. REFRESH itab_det_imp_aux.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

  REFRESH itab_det_imp.

  itab_det_imp[] = itab_det_imp_final[].

* << Fim da inclusão

  LOOP AT itab_det_imp_final.

    CLEAR itab_res_imp.

* >> Início da exclusão: FORM CARREGA_RESUMO_IMPORTACAO3

    READ TABLE itab_det_imp_aux WITH KEY nrdi = itab_det_imp_final-nrdi

* << Fim da exclusão

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

    IF /pws/zycit321-it_ge NE 'X'.

      READ TABLE itab_det_imp_aux WITH KEY

                                   nrdi = itab_det_imp_final-nrdi

* << Fim da inclusão

                                   codcomp = itab_det_imp_final-codcomp.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

      CLEAR: v_moeda.

      LOOP AT itab_det_imp WHERE codcomp EQ itab_det_imp_final-codcomp

                             AND waers   NE itab_det_imp_final-waers.

        v_moeda = 'X'.

        EXIT.

      ENDLOOP.

    ELSE.

      READ TABLE itab_det_imp_aux WITH KEY

                                  nrdi  = itab_det_imp_final-nrdi

                                  grupo = itab_det_imp_final-grupo.

      CLEAR: v_moeda.

      LOOP AT itab_det_imp WHERE grupo EQ itab_det_imp_final-grupo

                             AND waers NE  itab_det_imp_final-waers.

        v_moeda = 'X'.

        EXIT.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

    IF sy-subrc NE 0.

      MOVE: itab_det_imp_final-qtd_di   TO itab_res_imp-qtd_di,

            itab_det_imp_final-codcomp  TO itab_det_imp_aux-codcomp.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

      IF /pws/zycit321-it_ge EQ 'X'.

        CLEAR itab_det_imp_aux-codcomp.

        itab_det_imp_aux-grupo = itab_det_imp_final-grupo.

      ENDIF.

* << Fim da inclusão

      itab_det_imp_aux-nrdi = itab_det_imp_final-nrdi.

      APPEND itab_det_imp_aux.

    ENDIF.

    MOVE: itab_det_imp_final-codcomp  TO itab_res_imp-codcomp ,

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

          itab_det_imp_final-waers    TO itab_res_imp-waers   ,

* << Fim da inclusão

          itab_det_imp_final-qtd_vinc TO itab_res_imp-qtd_vinc.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

    IF /pws/zycit321-it_ge EQ 'X'.

      CLEAR: itab_res_imp-codcomp .

      itab_res_imp-grupo = itab_det_imp_final-grupo.

      itab_res_imp-desc_g = itab_det_imp_final-desc_g.

    ENDIF.

    IF v_moeda EQ 'X'.

* << Fim da inclusão

    itab_res_imp-vlfob = itab_res_imp-qtd_vinc *

                         itab_det_imp_final-valor_u.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

      itab_res_imp-waers = 'USD'.

    ELSE.

      itab_res_imp-vlfob = itab_det_imp_final-netpr.

      itab_res_imp-waers = itab_det_imp_final-waers.

      itab_res_imp-meins = itab_det_imp_final-meins.

    ENDIF.

* << Fim da inclusão

    COLLECT itab_res_imp.

  ENDLOOP.

  SORT itab_det_imp_final BY dtdi ASCENDING.

  SORT itab_res_imp       BY codcomp.

  CLEAR: v_dtini, v_dtfim, v_idxtmp.

  LOOP AT itab_res_imp.

    v_idxtmp = sy-tabix.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_det_imp_final WHERE grupo = itab_res_imp-grupo.

        IF v_dtini IS INITIAL.

          v_dtini = itab_det_imp_final-dtdi.

        ENDIF.

        IF v_dtfim IS INITIAL.

          v_dtfim = itab_det_imp_final-dtdi.

        ENDIF.

        IF itab_det_imp_final-dtdi < v_dtini AND

           NOT v_dtini IS INITIAL.

          v_dtini = itab_det_imp_final-dtdi.

        ELSE.

          IF itab_det_imp_final-dtdi > v_dtfim AND

             NOT v_dtfim IS INITIAL.

            v_dtfim = itab_det_imp_final-dtdi.

          ENDIF.

        ENDIF.

      ENDLOOP.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_det_imp_final WHERE codcomp = itab_res_imp-codcomp.

      IF v_dtini IS INITIAL.

        v_dtini = itab_det_imp_final-dtdi.

      ENDIF.

      IF v_dtfim IS INITIAL.

...

 

...

           NOT v_dtfim IS INITIAL.

          v_dtfim = itab_det_imp_final-dtdi.

        ENDIF.

      ENDIF.

    ENDLOOP.

* >> Início da inclusão: FORM CARREGA_RESUMO_IMPORTACAO3

    ENDIF.

* << Fim da inclusão

    MOVE: v_dtini TO itab_res_imp-dtpdi,

          v_dtfim TO itab_res_imp-dtudi.

    CLEAR: v_dtini, v_dtfim.

    MODIFY itab_res_imp INDEX v_idxtmp.

  ENDLOOP.

...

 

...

ENDFORM.

FORM check_fields_screen_0307.

  LOOP AT tc_res_imp3-cols INTO wa_cols3.

    IF wa_cols3-screen-group1 NE 'NEX'.

      wa_cols3-screen-input = v_status3.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0307

      MODIFY tc_res_imp3-cols FROM wa_cols3.

    ENDIF.

    IF /pws/zycit321-it_ge EQ 'X'.

      IF wa_cols3-screen-group4 EQ 'MAT'.

        wa_cols3-invisible = 1.

        MODIFY tc_res_imp3-cols FROM wa_cols3.

      ENDIF.

    ELSE.

      IF wa_cols3-screen-group4 EQ 'GR'.

        wa_cols3-invisible = 1.

* << Fim da inclusão

      MODIFY tc_res_imp3-cols FROM wa_cols3.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0307

      ENDIF.

* << Fim da inclusão

    ENDIF.

...

 

...

    MESSAGE s015 WITH text-102.

    EXIT.

  ENDIF.

  MOVE: sy-tabix TO v_indicatu7.

  CLEAR: itab_det_imp, /pws/zycie260d. REFRESH: itab_det_imp.

* >> Início da exclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

* << Fim da exclusão

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  IF /pws/zycit321-it_ge EQ 'X'.

    LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

* << Fim da inclusão

    MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

    APPEND itab_det_imp.

    /pws/zycie260d-i_vlii =

    /pws/zycie260d-i_vlii + itab_det_imp_final-i_vlii.

    /pws/zycie260d-i_vlipi =

...

 

...

    /pws/zycie260d-vlafrmm + itab_det_imp_final-vlafrmm.

    /pws/zycie260d-vlpis =

    /pws/zycie260d-vlpis + itab_det_imp_final-vlpis.

    /pws/zycie260d-vlcofins =

    /pws/zycie260d-vlcofins + itab_det_imp_final-vlcofins.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

    ENDLOOP.

    CLEAR: v_var_camb3, v_var_cambt3, v_cifimp3, v_fobexp3.

    LOOP AT itab_di_final WHERE grupo EQ itab_res_imp-grupo.

      v_cifimp3 = v_cifimp3 +

            ( itab_di_final-vlfob + itab_di_final-vlfrete_t

                                  + itab_di_final-vlseg_t ).

* << Fim da inclusão

  ENDLOOP.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  ELSE.

    LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

      MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

      APPEND itab_det_imp.

      /pws/zycie260d-i_vlii =

      /pws/zycie260d-i_vlii + itab_det_imp_final-i_vlii.

      /pws/zycie260d-i_vlipi =

      /pws/zycie260d-i_vlipi + itab_det_imp_final-i_vlipi.

      /pws/zycie260d-i_vlicms =

      /pws/zycie260d-i_vlicms + itab_det_imp_final-i_vlicms.

      /pws/zycie260d-vlafrmm =

      /pws/zycie260d-vlafrmm + itab_det_imp_final-vlafrmm.

      /pws/zycie260d-vlpis =

      /pws/zycie260d-vlpis + itab_det_imp_final-vlpis.

      /pws/zycie260d-vlcofins =

      /pws/zycie260d-vlcofins + itab_det_imp_final-vlcofins.

    ENDLOOP.

* << Fim da inclusão

  CLEAR: v_var_camb3, v_var_cambt3, v_cifimp3, v_fobexp3.

  LOOP AT itab_di_final WHERE codcomp EQ itab_res_imp-codcomp.

    v_cifimp3 = v_cifimp3 +

          ( itab_di_final-vlfob + itab_di_final-vlfrete_t

                                + itab_di_final-vlseg_t ).

  ENDLOOP.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  ENDIF.

* << Fim da inclusão

  LOOP AT itab_det_exp_final.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

    IF /pws/zycit321-it_ge EQ 'X'.

      READ TABLE itab_di_final

                    WITH KEY nrseqre   = itab_di_final-nrseqre

                             nrseq     = itab_di_final-nrseq

                             codmat    = itab_di_final-codmat

                             vbeln_va  = itab_di_final-vbeln_va

                             vbeln_vf  = itab_di_final-vbeln_vf

                             posnr     = itab_di_final-posnr

                             grupo     = itab_res_imp-grupo.

    ELSE.

* << Fim da inclusão

    READ TABLE itab_di_final

                  WITH KEY nrseqre   = itab_di_final-nrseqre

                           nrseq     = itab_di_final-nrseq

                           codmat    = itab_di_final-codmat

                           vbeln_va  = itab_di_final-vbeln_va

                           vbeln_vf  = itab_di_final-vbeln_vf

                           posnr     = itab_di_final-posnr

                           codcomp   = itab_res_imp-codcomp.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

    ENDIF.

* << Fim da inclusão

    IF sy-subrc NE 0.

      CONTINUE.

    ENDIF.

    v_fobexp3 = v_fobexp3 +

            ( itab_det_exp_final-vlfob - itab_det_exp_final-vlcomis ).

...

 

...

    SHIFT v_var_cambt3 LEFT DELETING LEADING space.

    CONCATENATE v_var_cambt3 '%' INTO v_var_cambt3.

  ENDIF.

  /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

                           /pws/zycie260d-i_vlipi.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  pressed_tab_3c_3 = ok_code3.

  IF /pws/zycit321-it_ge EQ 'X'.

    dynpronr3c_3     = '0321'.

    MOVE: itab_res_imp-grupo  TO v_detcomp1,

          itab_res_imp-desc_g TO v_detcomp2.

  ELSE.

* << Fim da inclusão

  MOVE itab_res_imp-codcomp TO v_detcomp1.

* >> Início da exclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  pressed_tab_3c_3 = ok_code3.

* << Fim da exclusão

  dynpronr3c_3     = '0311'.

* >> Início da inclusão: FORM TRATA_TAB_BENEFICIOS_IMP3

  ENDIF.

* << Fim da inclusão

ENDFORM.

FORM trata_button_first_0306.

  MOVE: 1 TO v_indicatu7.

  LOOP AT itab_res_imp WHERE marc_l = 'X'.

    itab_res_imp-marc_l = ' '.

...

 

...

  IF sy-subrc EQ 0.

    itab_res_imp-marc_l = 'X'.

    MODIFY itab_res_imp INDEX v_indicatu7.

    MOVE: itab_res_imp-codcomp  TO /pws/zycie260-codcomp,

          itab_res_imp-qtd_vinc   TO /pws/zycie260-qtd_di ,

* >> Início da inclusão: FORM TRATA_BUTTON_FIRST_0306

        itab_res_imp-meins     TO /pws/zycie260-meins ,

        itab_res_imp-waers     TO /pws/zycie260-waers ,

* << Fim da inclusão

          itab_res_imp-vlfob    TO /pws/zycie260-vlfob_t.

    CLEAR: itab_det_imp, /pws/zycie260d. REFRESH: itab_det_imp.

* >> Início da inclusão: FORM TRATA_BUTTON_FIRST_0306

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

        MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

        APPEND itab_det_imp.

        /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

           itab_det_imp_final-i_vlii.

        /pws/zycie260d-i_vlipi =

                          /pws/zycie260d-i_vlipi +

                           itab_det_imp_final-i_vlipi.

        /pws/zycie260d-i_vlicms =

                        /pws/zycie260d-i_vlicms +

                           itab_det_imp_final-i_vlicms.

      ENDLOOP.

      /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

                               /pws/zycie260d-i_vlipi.

      MOVE: itab_res_imp-grupo  TO v_detcomp1,

            itab_res_imp-desc_g TO v_detcomp2.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

      MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

      APPEND itab_det_imp.

      /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

 itab_det_imp_final-i_vlii.

...

 

...

 itab_det_imp_final-i_vlicms.

    ENDLOOP.

    /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

 /pws/zycie260d-i_vlipi.

    MOVE itab_res_imp-codcomp TO v_detcomp1.

* >> Início da inclusão: FORM TRATA_BUTTON_FIRST_0306

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM trata_button_prior_0306.

  IF v_indicatu7 > 1.

    v_indicatu7 = v_indicatu7 - 1.

...

 

...

  IF sy-subrc EQ 0.

    itab_res_imp-marc_l = 'X'.

    MODIFY itab_res_imp INDEX v_indicatu7.

    MOVE: itab_res_imp-codcomp  TO /pws/zycie260-codcomp,

          itab_res_imp-qtd_vinc   TO /pws/zycie260-qtd_di ,

* >> Início da inclusão: FORM TRATA_BUTTON_PRIOR_0306

        itab_res_imp-meins     TO /pws/zycie260-meins ,

        itab_res_imp-waers     TO /pws/zycie260-waers ,

* << Fim da inclusão

          itab_res_imp-vlfob    TO /pws/zycie260-vlfob_t.

    CLEAR: itab_det_imp, /pws/zycie260d. REFRESH: itab_det_imp.

* >> Início da inclusão: FORM TRATA_BUTTON_PRIOR_0306

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

        MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

        APPEND itab_det_imp.

        /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

           itab_det_imp_final-i_vlii.

        /pws/zycie260d-i_vlipi =

                          /pws/zycie260d-i_vlipi +

                           itab_det_imp_final-i_vlipi.

        /pws/zycie260d-i_vlicms =

                        /pws/zycie260d-i_vlicms +

                           itab_det_imp_final-i_vlicms.

      ENDLOOP.

      /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

                               /pws/zycie260d-i_vlipi.

      MOVE: itab_res_imp-grupo  TO v_detcomp1,

            itab_res_imp-desc_g TO v_detcomp2.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

      MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

      APPEND itab_det_imp.

      /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

 itab_det_imp_final-i_vlii.

...

 

...

    ENDLOOP.

    /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

 /pws/zycie260d-i_vlipi.

    MOVE itab_res_imp-codcomp TO v_detcomp1.

  ENDIF.

* >> Início da inclusão: FORM TRATA_BUTTON_PRIOR_0306

  ENDIF.

* << Fim da inclusão

ENDFORM.

FORM trata_button_next_0306.

  DESCRIBE TABLE itab_res_imp LINES v_ilinhas2.

  IF v_indicatu7 < v_ilinhas2.

    v_indicatu7 = v_indicatu7 + 1.

...

 

...

  IF sy-subrc EQ 0.

    itab_res_imp-marc_l = 'X'.

    MODIFY itab_res_imp INDEX v_indicatu7.

    MOVE: itab_res_imp-codcomp  TO /pws/zycie260-codcomp,

          itab_res_imp-qtd_vinc   TO /pws/zycie260-qtd_di ,

* >> Início da inclusão: FORM TRATA_BUTTON_NEXT_0306

        itab_res_imp-meins     TO /pws/zycie260-meins ,

        itab_res_imp-waers     TO /pws/zycie260-waers ,

* << Fim da inclusão

          itab_res_imp-vlfob    TO /pws/zycie260-vlfob_t.

    CLEAR: itab_det_imp, /pws/zycie260d. REFRESH: itab_det_imp.

* >> Início da inclusão: FORM TRATA_BUTTON_NEXT_0306

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

        MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

        APPEND itab_det_imp.

        /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

           itab_det_imp_final-i_vlii.

        /pws/zycie260d-i_vlipi =

                          /pws/zycie260d-i_vlipi +

                           itab_det_imp_final-i_vlipi.

        /pws/zycie260d-i_vlicms =

                        /pws/zycie260d-i_vlicms +

                           itab_det_imp_final-i_vlicms.

      ENDLOOP.

      /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

                               /pws/zycie260d-i_vlipi.

      MOVE: itab_res_imp-grupo  TO v_detcomp1,

            itab_res_imp-desc_g TO v_detcomp2.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

      MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

      APPEND itab_det_imp.

      /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

 itab_det_imp_final-i_vlii.

...

 

...

 itab_det_imp_final-i_vlicms.

    ENDLOOP.

    /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

 /pws/zycie260d-i_vlipi.

    MOVE itab_res_imp-codcomp TO v_detcomp1.

* >> Início da inclusão: FORM TRATA_BUTTON_NEXT_0306

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM trata_button_last_0306.

  DESCRIBE TABLE itab_res_imp LINES v_ilinhas2.

  v_indicatu7 = v_ilinhas2.

...

 

...

  IF sy-subrc EQ 0.

    itab_res_imp-marc_l = 'X'.

    MODIFY itab_res_imp INDEX v_indicatu7.

    MOVE: itab_res_imp-codcomp  TO /pws/zycie260-codcomp,

          itab_res_imp-qtd_vinc  TO /pws/zycie260-qtd_di ,

* >> Início da inclusão: FORM TRATA_BUTTON_LAST_0306

        itab_res_imp-meins     TO /pws/zycie260-meins ,

        itab_res_imp-waers     TO /pws/zycie260-waers ,

* << Fim da inclusão

          itab_res_imp-vlfob    TO /pws/zycie260-vlfob_t.

    CLEAR: itab_det_imp, /pws/zycie260d. REFRESH: itab_det_imp.

* >> Início da inclusão: FORM TRATA_BUTTON_LAST_0306

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_det_imp_final WHERE grupo EQ itab_res_imp-grupo.

        MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

        APPEND itab_det_imp.

        /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

           itab_det_imp_final-i_vlii.

        /pws/zycie260d-i_vlipi =

                          /pws/zycie260d-i_vlipi +

                           itab_det_imp_final-i_vlipi.

        /pws/zycie260d-i_vlicms =

                        /pws/zycie260d-i_vlicms +

                           itab_det_imp_final-i_vlicms.

      ENDLOOP.

      /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

                               /pws/zycie260d-i_vlipi.

      MOVE: itab_res_imp-grupo  TO v_detcomp1,

            itab_res_imp-desc_g TO v_detcomp2.

    ELSE.

* << Fim da inclusão

    LOOP AT itab_det_imp_final WHERE codcomp EQ itab_res_imp-codcomp.

      MOVE-CORRESPONDING itab_det_imp_final TO itab_det_imp.

      APPEND itab_det_imp.

      /pws/zycie260d-i_vlii = /pws/zycie260d-i_vlii +

 itab_det_imp_final-i_vlii.

...

 

...

 itab_det_imp_final-i_vlicms.

    ENDLOOP.

    /pws/zycie260d-t_benef = /pws/zycie260d-i_vlii +

 /pws/zycie260d-i_vlipi.

    MOVE itab_res_imp-codcomp TO v_detcomp1.

* >> Início da inclusão: FORM TRATA_BUTTON_LAST_0306

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFORM.

FORM trata_button_atualiz3.

  PERFORM seleciona_di3.

ENDFORM.

FORM check_fields_screen_0311.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0311

  IF /pws/zycit321-it_ge NE 'X'.

* << Fim da inclusão

  SELECT maktx UP TO 1 ROWS FROM makt INTO v_detcomp2

         WHERE matnr = v_detcomp1

           AND spras = sy-langu.

  ENDSELECT.

* >> Início da inclusão: FORM CHECK_FIELDS_SCREEN_0311

  ENDIF.

* << Fim da inclusão

  tt_geral3 = tt_ii + tt_ipi + tt_afrmm

              + tt_pis + tt_cofins.

  tt_comp3 = /pws/zycie260d-i_vlii + /pws/zycie260d-i_vlipi +

              /pws/zycie260d-vlafrmm

              + /pws/zycie260d-vlpis + /pws/zycie260d-vlcofins.

...

 

...

  IMPORT i_final FROM MEMORY ID idmemory2.

  IF sy-subrc NE 0 OR i_final[] IS INITIAL.

  ENDIF.

ENDFORM.

FORM seleciona_nf3.

* >> Início da exclusão: FORM SELECIONA_NF3

  DATA: itab_rseg LIKE rseg OCCURS 0 WITH HEADER LINE.

  DATA: wa_di LIKE itab_di_final.

  DATA: BEGIN OF itab_insumo_nf OCCURS 0.

  DATA: matnr LIKE /pws/zycit003-matnr.

  DATA: END OF itab_insumo_nf.

  DATA: BEGIN OF itab_sel_doc OCCURS 0.

  DATA: belnr  LIKE rseg-belnr ,

        gjahr  LIKE rseg-gjahr ,

        buzei  LIKE rseg-buzei ,

        docnum LIKE j_1bnflin-docnum,

        itmnum LIKE j_1bnflin-itmnum.

  DATA: END OF itab_sel_doc.

  DATA: itab_comp_sort3 LIKE itab_comp_vinc_final

                                      OCCURS 0 WITH HEADER LINE.

  DATA: itab_j_1bnflin_sort LIKE j_1bnflin

                                      OCCURS 0 WITH HEADER LINE.

* << Fim da exclusão

  REFRESH: itab_j_1bnflin,

           itab_j_1bnfdoc,

           itab_insumo_nf,

           itab_sel_doc  ,

           itab_di_final_aux ,

           itab_zycit260 .

  LOOP AT itab_comp_vinc_final.

* >> Início da inclusão: FORM SELECIONA_NF3

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_zycit433 WHERE

                            grupo EQ itab_comp_vinc_final-grupo.

        READ TABLE itab_insumo_nf WITH KEY

                    matnr = itab_zycit433-matnr.

        IF sy-subrc NE 0.

          itab_insumo_nf-matnr = itab_zycit433-matnr.

          APPEND itab_insumo_nf.

        ENDIF.

      ENDLOOP.

    ELSE.

      READ TABLE itab_insumo_nf WITH KEY

                        matnr = itab_comp_vinc_final-codcomp.

      IF sy-subrc NE 0.

* << Fim da inclusão

    itab_insumo_nf-matnr = itab_comp_vinc_final-codcomp.

* >> Início da exclusão: FORM SELECIONA_NF3

    COLLECT itab_insumo_nf.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_NF3

        APPEND itab_insumo_nf.

      ENDIF.

    ENDIF.

* << Fim da inclusão

  ENDLOOP.

  IF NOT itab_insumo_nf[] IS INITIAL.

    SELECT * FROM j_1bnflin INTO TABLE itab_j_1bnflin

        FOR ALL ENTRIES IN itab_insumo_nf

        WHERE matnr EQ itab_insumo_nf-matnr.

...

 

...

      itab_sel_doc-gjahr = itab_j_1bnflin-refkey+10(4).

      itab_sel_doc-buzei = itab_j_1bnflin-refitm.

      itab_sel_doc-docnum = itab_j_1bnflin-docnum.

      itab_sel_doc-itmnum = itab_j_1bnflin-itmnum.

      APPEND itab_sel_doc.

* >> Início da inclusão: FORM SELECIONA_NF3

      CLEAR: itab_zycit433.

      READ TABLE itab_zycit433 WITH KEY matnr = itab_j_1bnflin-matnr.

      itab_j_1bnflin-grupo  = itab_zycit433-grupo.

      itab_j_1bnflin-desc_g = itab_zycit433-desc_g.

      MODIFY itab_j_1bnflin.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  IF NOT itab_j_1bnflin[] IS INITIAL.

    SELECT * FROM j_1bnfdoc INTO TABLE itab_j_1bnfdoc

        FOR ALL ENTRIES IN itab_j_1bnflin

...

 

...

  ENDLOOP.

  REFRESH: itab_comp_vinc_final.

  itab_comp_vinc_final[] = itab_comp_sort3[].

  itab_di_final_aux[] = itab_di_final[].

  LOOP AT itab_comp_vinc_final.

* >> Início da exclusão: FORM SELECIONA_NF3

    LOOP AT itab_j_1bnflin WHERE matnr EQ itab_comp_vinc_final-codcomp.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_NF3

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_j_1bnflin WHERE grupo EQ itab_comp_vinc_final-grupo.

        PERFORM monta_nf.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_NF3

      READ TABLE itab_di_final_aux WITH KEY

                  nrseqre  = itab_comp_vinc_final-nrseqre

                  nrseq    = itab_comp_vinc_final-nrseq

                  codmat   = itab_comp_vinc_final-codmat

                  vbeln_va = itab_comp_vinc_final-vbeln_va

                  vbeln_vf = itab_comp_vinc_final-vbeln_vf

                  posnr    = itab_comp_vinc_final-posnr

                  codcomp  = itab_comp_vinc_final-codcomp

                  docnum   = itab_j_1bnflin-docnum

                  itmnum   = itab_j_1bnflin-itmnum.

      IF sy-subrc EQ 0.

        CONTINUE.

      ENDIF.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_NF3

      ENDLOOP.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_NF3

      READ TABLE itab_zycit260 WITH KEY

                                  docnum = itab_j_1bnflin-docnum

                                  itmnum = itab_j_1bnflin-itmnum.

      IF sy-subrc NE 0.

        READ TABLE itab_j_1bnfdoc WITH KEY

                                  docnum = itab_j_1bnflin-docnum.

        IF sy-subrc NE 0.

          CONTINUE.

        ENDIF.

        READ TABLE itab_sel_doc WITH KEY

                                  docnum = itab_j_1bnflin-docnum

                                  itmnum = itab_j_1bnflin-itmnum.

        READ TABLE itab_rseg WITH KEY

                                  belnr = itab_sel_doc-belnr

                                  gjahr = itab_sel_doc-gjahr

                                  buzei = itab_sel_doc-buzei.

        IF sy-subrc NE 0.

          CONTINUE.

        ENDIF.

        PERFORM converte_um_base USING itab_j_1bnflin-matnr

                              CHANGING itab_j_1bnflin-meins

                                       itab_j_1bnflin-menge.

        IF itab_j_1bnflin-menge IS INITIAL.

          DELETE itab_j_1bnflin WHERE

                                meins EQ itab_j_1bnflin-meins.

          CONTINUE.

        ENDIF.

        CLEAR wa_di.

        MOVE:

        /pws/zycie258-nrseqd          TO wa_di-nrseqd      ,

        itab_comp_vinc_final-codcomp  TO wa_di-codcomp     ,

        itab_comp_vinc_final-codmat   TO wa_di-codmat      ,

        itab_comp_vinc_final-nrseqre  TO wa_di-nrseqre     ,

        itab_comp_vinc_final-nrseq    TO wa_di-nrseq       ,

        itab_comp_vinc_final-vbeln_va TO wa_di-vbeln_va    ,

        itab_comp_vinc_final-vbeln_vf TO wa_di-vbeln_vf    ,

        itab_comp_vinc_final-posnr    TO wa_di-posnr       ,

        itab_rseg-ebeln               TO wa_di-ebeln       ,

        itab_rseg-ebelp               TO wa_di-ebelp       ,

        itab_j_1bnfdoc-nfnum          TO wa_di-nfnum       ,

        itab_j_1bnfdoc-series         TO wa_di-serie       ,

        itab_j_1bnfdoc-docdat         TO wa_di-dtnf        ,

        itab_j_1bnflin-docnum         TO wa_di-docnum      ,

        itab_j_1bnflin-itmnum         TO wa_di-itmnum      ,

        itab_j_1bnflin-nbm            TO wa_di-j_1bnbm     ,

        itab_j_1bnflin-meins          TO wa_di-meins       ,

        itab_j_1bnflin-menge          TO wa_di-qtd_di      ,

        itab_j_1bnflin-menge          TO wa_di-sdo_qtd     .

* << Fim da exclusão

      ELSE.

* >> Início da exclusão: FORM SELECIONA_NF3

        wa_di = itab_zycit260.

        wa_di-sdo_qtd = wa_di-qtd_di.

        LOOP AT itab_zycit260 WHERE docnum = itab_j_1bnflin-docnum

                                AND itmnum = itab_j_1bnflin-itmnum.

          wa_di-sdo_qtd = wa_di-sdo_qtd - itab_zycit260-qtd_vinc.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_NF3

     LOOP AT itab_j_1bnflin WHERE matnr EQ itab_comp_vinc_final-codcomp.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_NF3

        ENDLOOP.

        IF wa_di-sdo_qtd <= 0.

          CONTINUE.

        ENDIF.

      ENDIF.

      LOOP AT itab_di_final WHERE docnum = itab_j_1bnflin-docnum

                              AND itmnum = itab_j_1bnflin-itmnum

                              AND qtd_vinc > 0.

        wa_di-sdo_qtd = wa_di-sdo_qtd - itab_di_final-qtd_vinc.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_NF3

        PERFORM monta_nf.

* << Fim da inclusão

      ENDLOOP.

* >> Início da exclusão: FORM SELECIONA_NF3

      IF wa_di-sdo_qtd > 0.

        IF itab_comp_vinc_final-qtd_stotal > 0 .

          IF itab_comp_vinc_final-qtd_stotal <= wa_di-sdo_qtd .

            wa_di-qtd_vinc = itab_comp_vinc_final-qtd_stotal.

            wa_di-sdo_qtd = wa_di-sdo_qtd -

                            itab_comp_vinc_final-qtd_stotal.

            itab_comp_vinc_final-qtd_stotal = 0.

          ELSE.

            itab_comp_vinc_final-qtd_stotal =

              itab_comp_vinc_final-qtd_stotal - wa_di-sdo_qtd.

            wa_di-qtd_vinc = wa_di-sdo_qtd.

            wa_di-sdo_qtd = 0.

          ENDIF.

          wa_di-v_sel = 'X'.

        ENDIF.

      ENDIF.

      itab_di_final = wa_di.

      APPEND itab_di_final.

      IF itab_di_final-sdo_qtd <> itab_di_final-qtd_di.

        MODIFY itab_di_final TRANSPORTING sdo_qtd

                              WHERE docnum = itab_j_1bnflin-docnum

                                AND itmnum = itab_j_1bnflin-itmnum.

* << Fim da exclusão

      ENDIF.

* >> Início da exclusão: FORM SELECIONA_NF3

    ENDLOOP.

* << Fim da exclusão

    MODIFY itab_comp_vinc_final.

...

 

...

      APPEND itab_det_nf.

    ENDIF.

  ENDLOOP.

ENDFORM.

FORM seleciona_di.

* >> Início da exclusão: FORM SELECIONA_DI

  DATA: itab_zycit244 LIKE /pws/zycit244 OCCURS 0 WITH HEADER LINE.

  DATA: v_found(1) TYPE c,

        v_vlreali LIKE /pws/zycit100-vlfob,

        v_fator_conv LIKE /pws/zycit100-vlfob.

  DATA: BEGIN OF itab_insumo_di OCCURS 0.

  DATA: matnr LIKE  mara-matnr.

  DATA: END OF itab_insumo_di.

* << Fim da exclusão

  IF /pws/zycie258-tipo NE 'I'.

  ENDIF.

* >> Início da exclusão: FORM SELECIONA_DI

  DATA: itab_ekpo_sort     LIKE ekpo          OCCURS 0 WITH HEADER LINE.

  DATA: itab_comp_sort3 LIKE itab_comp_vinc_final

                                      OCCURS 0 WITH HEADER LINE.

  DATA: v_xa   LIKE /pws/zycie085-vlfob,

        v_xb   LIKE /pws/zycie085-vlfob,

        v_xc   LIKE /pws/zycie085-vlfob,

        v_fatx TYPE p DECIMALS 8,

        v_faty TYPE p DECIMALS 8,

        v_tot_real LIKE /pws/zycie003-vlreal,

        v_fatpc   LIKE /pws/zycie085-vlfob,

        v_advii   LIKE /pws/zycie085-vlfob,

        v_advipi  LIKE /pws/zycie085-vlfob,

        v_advicms LIKE /pws/zycie085-vlfob,

        v_advpis  LIKE /pws/zycie085-vlfob,

        v_advcof  LIKE /pws/zycie085-vlfob,

        v_divisor LIKE /pws/zycie085-vlfob.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

  REFRESH: itab_insumo_di,

           itab_zycit279,

           itab_zycit244.

* << Fim da inclusão

  LOOP AT itab_comp_vinc_final.

* >> Início da inclusão: FORM SELECIONA_DI

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_zycit433 WHERE

                            grupo EQ itab_comp_vinc_final-grupo.

        READ TABLE itab_insumo_di WITH KEY

                    matnr = itab_zycit433-matnr.

        IF sy-subrc NE 0.

          itab_insumo_di-matnr = itab_zycit433-matnr.

          APPEND itab_insumo_di.

        ENDIF.

      ENDLOOP.

    ELSE.

* << Fim da inclusão

    READ TABLE itab_insumo_di WITH KEY

                      matnr = itab_comp_vinc_final-codcomp.

    IF sy-subrc NE 0.

      itab_insumo_di-matnr = itab_comp_vinc_final-codcomp.

      APPEND itab_insumo_di.

* >> Início da inclusão: FORM SELECIONA_DI

      ENDIF.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

  REFRESH: itab_zycit279, itab_zycit244.

* >> Início da inclusão: FORM SELECIONA_DI

  SORT itab_det_exp BY dtnf dtre.

  READ TABLE itab_det_exp INDEX 1.

  IF itab_det_exp-dtre IS INITIAL.

    itab_det_exp-dtre = itab_det_exp-dtnf.

  ENDIF.

  itab_det_exp-dtre = itab_det_exp-dtre - 728.

* << Fim da inclusão

  SELECT * FROM /pws/zycit279 INTO TABLE itab_zycit279

        FOR ALL ENTRIES IN itab_insumo_di

        WHERE matnr EQ itab_insumo_di-matnr

* >> Início da exclusão: FORM SELECIONA_DI

          AND esgotado NE 'X'.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

          AND esgotado NE 'X'

          AND dtdi >= itab_det_exp-dtre.

* << Fim da inclusão

  IF NOT itab_zycit279[] IS INITIAL.

    SELECT * FROM /pws/zycit244 INTO TABLE itab_zycit244

        FOR ALL ENTRIES IN itab_zycit279

        WHERE nrseqd EQ itab_zycit279-nrseqd

          AND tipo EQ 'I'.

  ENDIF.

* >> Início da inclusão: FORM SELECIONA_DI

  LOOP AT itab_zycit279 WHERE grupo EQ space.

    READ TABLE itab_zycit433 WITH KEY matnr = itab_zycit279-matnr.

    itab_zycit279-grupo = itab_zycit433-grupo.

    MODIFY itab_zycit279 TRANSPORTING grupo

              WHERE matnr EQ itab_zycit279-matnr.

  ENDLOOP.

* << Fim da inclusão

  IF NOT itab_zycit244[] IS INITIAL.

    LOOP AT itab_zycit279 WHERE nrseqd NE space.

      READ TABLE itab_zycit244 WITH KEY nrseqd = itab_zycit279-nrseqd.

      IF sy-subrc NE 0.

        DELETE itab_zycit279 WHERE nrseqd EQ itab_zycit279-nrseqd.

...

 

...

    ENDLOOP.

  ENDLOOP.

  REFRESH itab_comp_vinc_final.

  itab_comp_vinc_final[] = itab_comp_sort3[].

  LOOP AT itab_comp_vinc_final.

* >> Início da exclusão: FORM SELECIONA_DI

    LOOP AT itab_zycit279

                          WHERE matnr EQ itab_comp_vinc_final-codcomp.

      IF NOT itab_zycit279-nrseqd IS INITIAL.

        READ TABLE itab_zycit244 WITH KEY

                                  nrseqd = itab_zycit279-nrseqd.

        IF sy-subrc NE 0.

          CONTINUE.

        ENDIF.

      ENDIF.

      REFRESH   itab_di_final_aux.

      itab_di_final_aux[] = itab_di_final[].

* << Fim da exclusão

      READ TABLE itab_det_exp WITH KEY

                           codmat   = itab_comp_vinc_final-codmat

                           nrseqre  = itab_comp_vinc_final-nrseqre

                           nrseq    = itab_comp_vinc_final-nrseq

                           vbeln_va = itab_comp_vinc_final-vbeln_va

                           vbeln_vf = itab_comp_vinc_final-vbeln_vf

                           posnr    = itab_comp_vinc_final-posnr.

* >> Início da inclusão: FORM SELECIONA_DI

    IF NOT itab_det_exp-dtre IS INITIAL.

* << Fim da inclusão

      v_dtini = itab_det_exp-dtre - 728.

      v_dtfim = itab_det_exp-dtre.

* >> Início da exclusão: FORM SELECIONA_DI

      CHECK itab_zycit279-dtdi >= v_dtini AND

            itab_zycit279-dtdi <= v_dtfim.

      MOVE: itab_zycit279-meins        TO itab_di_final-meins       ,

            itab_zycit279-menge        TO itab_di_final-qtd_di      .

      IF itab_di_final-qtd_di IS INITIAL.

        EXIT.

      ENDIF.

      CLEAR itab_di_final_aux.

      READ TABLE itab_di_final_aux WITH KEY

                  nrseqre  = itab_comp_vinc_final-nrseqre

                  nrseq    = itab_comp_vinc_final-nrseq

                  codmat   = itab_comp_vinc_final-codmat

                  vbeln_va = itab_comp_vinc_final-vbeln_va

                  vbeln_vf = itab_comp_vinc_final-vbeln_vf

                  posnr    = itab_comp_vinc_final-posnr

                  codcomp  = itab_comp_vinc_final-codcomp

                  docnum   = itab_zycit279-docnum

                  ebeln    = itab_zycit279-ebeln

                  ebelp    = itab_zycit279-ebelp.

      IF sy-subrc               NE 0 AND

         itab_zycit279-menge >  0.

        READ TABLE itab_di_final_aux WITH KEY

                               codcomp  = itab_comp_vinc_final-codcomp

                               docnum   = itab_zycit279-docnum

                               ebeln    = itab_zycit279-ebeln

                               ebelp    = itab_zycit279-ebelp.

        IF sy-subrc NE 0.

          CLEAR itab_di_final.

          MOVE:

          /pws/zycie258-nrseqd               TO itab_di_final-nrseqd ,

          itab_comp_vinc_final-codcomp  TO itab_di_final-codcomp     ,

          itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

          itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

          itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

          itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

          itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

          itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

          itab_zycit279-nrseqdi         TO itab_di_final-nrdi        ,

          itab_zycit279-nrdi            TO itab_di_final-reg_di      ,

          itab_zycit279-dtdi            TO itab_di_final-dtdi        ,

          itab_zycit279-nrseq           TO itab_di_final-nrseqemb    ,

          itab_zycit279-adicao          TO itab_di_final-adicao      ,

          itab_zycit279-docnum          TO itab_di_final-docnum      ,

          itab_zycit279-ebeln           TO itab_di_final-ebeln       ,

          itab_zycit279-ebelp           TO itab_di_final-ebelp       ,

          itab_zycit279-meins           TO itab_di_final-meins       ,

          itab_zycit279-menge           TO itab_di_final-qtd_di      ,

          itab_zycit279-nfnum           TO itab_di_final-nfnum       ,

          itab_zycit279-serie           TO itab_di_final-serie       ,

          itab_zycit279-dtnf            TO itab_di_final-dtnf       ,

          itab_zycit279-menge           TO itab_di_final-sdo_qtd     ,

          itab_zycit279-j_1bnbm         TO itab_di_final-j_1bnbm     ,

          itab_zycit279-dtdesemb        TO itab_di_final-dtdesemb    ,

          itab_zycit279-gewei           TO itab_di_final-gewei       ,

          itab_zycit279-ntgew           TO itab_di_final-ntgew       ,

          itab_zycit279-waers           TO itab_di_final-waers       ,

          itab_zycit279-netpr           TO itab_di_final-netpr       ,

          itab_zycit279-i_txii          TO itab_di_final-i_txii      ,

          itab_zycit279-pis             TO itab_di_final-pis         ,

          itab_zycit279-cofins          TO itab_di_final-cofins      ,

          itab_zycit279-i_txipi         TO itab_di_final-i_txipi     ,

          itab_zycit279-i_txicms        TO itab_di_final-i_txicms    ,

          itab_zycit279-waers           TO itab_di_final-i_waerscifme,

          itab_zycit279-i_txmoeda       TO itab_di_final-i_txmoeda   ,

          itab_zycit279-waers           TO itab_di_final-i_waerscifmi,

          itab_zycit279-waers           TO itab_di_final-waersimp    ,

          itab_zycit279-vltot           TO itab_di_final-vlreal      ,

          itab_zycit279-vlfrete         TO itab_di_final-vlfrete     ,

          itab_zycit279-vlseg           TO itab_di_final-vlseg       .

          SELECT SINGLE *

            FROM mara INTO mara

            WHERE matnr = itab_di_final-codmat.

          itab_di_final-gewei = mara-gewei.

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

          itab_di_final-valor_u = itab_zycit279-vltot /

                                  itab_zycit279-qtd_ncm.

          itab_di_final-vlfrete = itab_di_final-vlfrete /

                                  itab_zycit279-qtd_ncm.

          itab_di_final-vlseg   = itab_di_final-vlseg /

                                  itab_zycit279-qtd_ncm.

          CHECK itab_di_final-valor_u > 0.

          itab_di_final-i_vlcif_me = itab_di_final-valor_u.

          itab_di_final-i_vlcif_mi =

                 itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

          LOOP AT itab_zycit260

                         WHERE codcomp  = itab_comp_vinc_final-codcomp

                          AND docnum    = itab_zycit279-docnum

                          AND ebeln     = itab_zycit279-ebeln

                          AND ebelp     = itab_zycit279-ebelp.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_zycit260-qtd_vinc.

          ENDLOOP.

          IF itab_di_final-sdo_qtd <= 0.

            CLEAR itab_di_final.

            CONTINUE.

          ENDIF.

          CLEAR wa_itab_di_final.

          IF itab_comp_vinc_final-qtd_stotal > 0 AND

             itab_di_final-sdo_qtd > 0.

            IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

              IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                         itab_di_final-sdo_qtd - itab_di_final-qtd_di.

                itab_di_final-qtd_vinc =

                        itab_di_final-qtd_vinc + itab_di_final-qtd_di.

* << Fim da exclusão

              ELSE.

* >> Início da exclusão: FORM SELECIONA_DI

                itab_di_final-qtd_vinc =

                       itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                        itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

      v_dtini = itab_det_exp-dtnf - 728.

      v_dtfim = itab_det_exp-dtnf.

* << Fim da inclusão

              ENDIF.

* >> Início da inclusão: FORM SELECIONA_DI

    IF /pws/zycit321-it_ge EQ 'X'.

      LOOP AT itab_zycit279

                 WHERE grupo EQ itab_comp_vinc_final-grupo.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              itab_di_final-i_vlcifn_mi =

               ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc *

                ( itab_zycit279-basepis *

                    ( itab_zycit279-pis / 100 ) ).

              itab_di_final-vlcofins =

                      v_perc_vinc *

                ( itab_zycit279-basecofins *

                    ( itab_zycit279-cofins / 100 ) ).

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc *

                ( itab_zycit279-baseii *

                    ( itab_zycit279-i_txii / 100 ) ).

              itab_di_final-i_vlipi =

                      v_perc_vinc *

                ( itab_zycit279-baseipi *

                    ( itab_zycit279-i_txipi / 100 ) ).

              itab_di_final-i_vlicms =

                      v_perc_vinc *

                ( itab_zycit279-baseicms *

                    ( itab_zycit279-i_txicms / 100 ) ).

              itab_di_final-vlpis =

                  itab_di_final-vlpis / itab_di_final-i_txmoeda.

              itab_di_final-i_vlii =

                  itab_di_final-i_vlii / itab_di_final-i_txmoeda.

              itab_di_final-i_vlipi =

                  itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

              itab_di_final-vlcofins =

                  itab_di_final-vlcofins / itab_di_final-i_txmoeda.

              itab_di_final-i_vlicms =

                  itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

              itab_di_final-vlafrmm =

                  itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ELSE.

              IF itab_comp_vinc_final-qtd_stotal <

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                      itab_comp_vinc_final-qtd_stotal.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                      itab_comp_vinc_final-qtd_stotal.

              ELSE.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                       itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

              ENDIF.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc *

                ( itab_zycit279-basepis *

                    ( itab_zycit279-pis / 100 ) ).

              itab_di_final-vlcofins =

                      v_perc_vinc *

                ( itab_zycit279-basecofins *

                    ( itab_zycit279-cofins / 100 ) ).

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc *

                ( itab_zycit279-baseii *

                    ( itab_zycit279-i_txii / 100 ) ).

              itab_di_final-i_vlipi =

                      v_perc_vinc *

                ( itab_zycit279-baseipi *

                    ( itab_zycit279-i_txipi / 100 ) ).

              itab_di_final-i_vlicms =

                      v_perc_vinc *

                ( itab_zycit279-baseicms *

                    ( itab_zycit279-i_txicms / 100 ) ).

              itab_di_final-vlpis =

                  itab_di_final-vlpis / itab_di_final-i_txmoeda.

              itab_di_final-i_vlii =

                  itab_di_final-i_vlii / itab_di_final-i_txmoeda.

              itab_di_final-i_vlipi =

                  itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

              itab_di_final-vlcofins =

                  itab_di_final-vlcofins / itab_di_final-i_txmoeda.

              itab_di_final-i_vlicms =

                  itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

              itab_di_final-vlafrmm =

                  itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ENDIF.

          ENDIF.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

        PERFORM monta_di.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI

          APPEND itab_di_final.

          IF NOT wa_itab_di_final IS INITIAL.

            LOOP AT itab_di_final.

              IF

             ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre      OR

               itab_di_final-vbeln_va NE itab_det_exp-vbeln_va     OR

               itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf     OR

               itab_di_final-posnr    NE itab_det_exp-posnr        OR

               itab_di_final-nrseq    NE itab_det_exp-nrseq        OR

               itab_di_final-codmat   NE itab_det_exp-codmat )    AND

             ( itab_di_final-codcomp  EQ

                                     itab_comp_vinc_final-codcomp AND

              itab_di_final-docnum   EQ wa_itab_di_final-docnum   AND

              itab_di_final-ebeln    EQ wa_itab_di_final-ebeln    AND

              itab_di_final-ebelp    EQ wa_itab_di_final-ebelp     ).

                itab_di_final-sdo_qtd  =

                    itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

                MODIFY itab_di_final.

              ENDIF.

* << Fim da exclusão

            ENDLOOP.

* >> Início da exclusão: FORM SELECIONA_DI

          ENDIF.

* << Fim da exclusão

        ELSE.

* >> Início da exclusão: FORM SELECIONA_DI

          CLEAR itab_di_final.

          MOVE:

          /pws/zycie258-nrseqd           TO itab_di_final-nrseqd     ,

          itab_comp_vinc_final-codcomp  TO itab_di_final-codcomp     ,

          itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

          itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

          itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

          itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

          itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

          itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

          itab_zycit279-nrseqdi         TO itab_di_final-nrdi        ,

          itab_zycit279-nrdi            TO itab_di_final-reg_di      ,

          itab_zycit279-dtdi            TO itab_di_final-dtdi        ,

          itab_zycit279-nrseq           TO itab_di_final-nrseqemb    ,

          itab_zycit279-adicao          TO itab_di_final-adicao      ,

          itab_zycit279-docnum          TO itab_di_final-docnum      ,

          itab_zycit279-ebeln           TO itab_di_final-ebeln       ,

          itab_zycit279-ebelp           TO itab_di_final-ebelp       ,

          itab_zycit279-meins           TO itab_di_final-meins       ,

          itab_zycit279-menge           TO itab_di_final-qtd_di      ,

          itab_di_final_aux-sdo_qtd     TO itab_di_final-sdo_qtd     ,

          itab_zycit279-j_1bnbm         TO itab_di_final-j_1bnbm     ,

          itab_zycit279-dtdesemb        TO itab_di_final-dtdesemb    ,

          itab_zycit279-gewei           TO itab_di_final-gewei       ,

          itab_zycit279-ntgew           TO itab_di_final-ntgew       ,

          itab_zycit279-waers           TO itab_di_final-waers       ,

          itab_zycit279-netpr           TO itab_di_final-netpr       ,

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

      LOOP AT itab_zycit279

                 WHERE matnr EQ itab_comp_vinc_final-codcomp.

* << Fim da inclusão

* >> Início da exclusão: FORM SELECIONA_DI

          itab_zycit279-nfnum           TO itab_di_final-nfnum       ,

          itab_zycit279-serie           TO itab_di_final-serie       ,

          itab_zycit279-dtnf            TO itab_di_final-dtnf       ,

          itab_zycit279-i_txii          TO itab_di_final-i_txii      ,

          itab_zycit279-pis             TO itab_di_final-pis         ,

          itab_zycit279-cofins          TO itab_di_final-cofins      ,

          itab_zycit279-i_txipi         TO itab_di_final-i_txipi     ,

          itab_zycit279-i_txicms        TO itab_di_final-i_txicms    ,

          itab_zycit279-waers           TO itab_di_final-i_waerscifme,

          itab_zycit279-i_txmoeda       TO itab_di_final-i_txmoeda   ,

          itab_zycit279-waers           TO itab_di_final-i_waerscifmi,

          itab_zycit279-waers           TO itab_di_final-waersimp    ,

          itab_zycit279-vltot           TO itab_di_final-vlreal      ,

          itab_zycit279-vlfrete         TO itab_di_final-vlfrete     ,

          itab_zycit279-vlseg           TO itab_di_final-vlseg       .

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          itab_di_final-valor_u = itab_zycit279-vltot /

                                  itab_zycit279-qtd_ncm.

          itab_di_final-vlfrete = itab_di_final-vlfrete /

                                  itab_zycit279-menge.

          itab_di_final-vlseg   = itab_di_final-vlseg /

                                  itab_zycit279-menge.

          CHECK itab_di_final-valor_u > 0.

          itab_di_final-i_vlcif_me = itab_di_final-valor_u.

          itab_di_final-i_vlcif_mi =

                 itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

          CLEAR wa_itab_di_final.

          IF itab_comp_vinc_final-qtd_stotal > 0 AND

                                            itab_di_final-sdo_qtd > 0.

            IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

              IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                         itab_di_final-sdo_qtd - itab_di_final-qtd_di.

                itab_di_final-qtd_vinc =

                        itab_di_final-qtd_vinc + itab_di_final-qtd_di.

              ELSE.

                itab_di_final-qtd_vinc =

                       itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                        itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

              ENDIF.

              SELECT SINGLE *

               FROM mara INTO mara

                WHERE matnr = itab_di_final-codmat.

              itab_di_final-gewei = mara-gewei.

              itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

              itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc *

                ( itab_zycit279-basepis *

                    ( itab_zycit279-pis / 100 ) ).

              itab_di_final-vlcofins =

                      v_perc_vinc *

                ( itab_zycit279-basecofins *

                    ( itab_zycit279-cofins / 100 ) ).

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc *

                ( itab_zycit279-baseii *

                    ( itab_zycit279-i_txii / 100 ) ).

              itab_di_final-i_vlipi =

                      v_perc_vinc *

                ( itab_zycit279-baseipi *

                    ( itab_zycit279-i_txipi / 100 ) ).

              itab_di_final-i_vlicms =

                      v_perc_vinc *

                ( itab_zycit279-baseicms *

                    ( itab_zycit279-i_txicms / 100 ) ).

              itab_di_final-vlpis =

                  itab_di_final-vlpis / itab_di_final-i_txmoeda.

              itab_di_final-i_vlii =

                  itab_di_final-i_vlii / itab_di_final-i_txmoeda.

              itab_di_final-i_vlipi =

                  itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

              itab_di_final-vlcofins =

                  itab_di_final-vlcofins / itab_di_final-i_txmoeda.

              itab_di_final-i_vlicms =

                  itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

              itab_di_final-vlafrmm =

                  itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

              .

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ELSE.

              IF itab_comp_vinc_final-qtd_stotal <

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                      itab_comp_vinc_final-qtd_stotal.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                      itab_comp_vinc_final-qtd_stotal.

              ELSE.

                itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                                itab_di_final-sdo_qtd.

                itab_di_final-sdo_qtd =

                       itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

              ENDIF.

              itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                               itab_di_final-qtd_vinc.

              itab_di_final-vlfob_t = itab_di_final-valor_u *

                                              itab_di_final-qtd_vinc.

              itab_di_final-vlfob = itab_di_final-vlfob_t.

              PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                                 'USD'

                                                 itab_zycit085-dttax

                                        CHANGING itab_di_final-vlfob.

              itab_di_final-i_vlcifn_mi =

                  ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

              v_perc_vinc =

                        itab_di_final-qtd_vinc / itab_di_final-qtd_di.

              itab_di_final-vlpis =

                      v_perc_vinc *

                ( itab_zycit279-basepis *

                    ( itab_zycit279-pis / 100 ) ).

              itab_di_final-vlcofins =

                      v_perc_vinc *

                ( itab_zycit279-basecofins *

                    ( itab_zycit279-cofins / 100 ) ).

              itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                        ( 25 / 100 ).

              itab_di_final-afrmm = '25'.

              itab_di_final-i_vlii =

                      v_perc_vinc *

                ( itab_zycit279-baseii *

                    ( itab_zycit279-i_txii / 100 ) ).

              itab_di_final-i_vlipi =

                      v_perc_vinc *

                ( itab_zycit279-baseipi *

                    ( itab_zycit279-i_txipi / 100 ) ).

              itab_di_final-i_vlicms =

                      v_perc_vinc *

                ( itab_zycit279-baseicms *

                    ( itab_zycit279-i_txicms / 100 ) ).

              itab_di_final-vlpis =

                  itab_di_final-vlpis / itab_di_final-i_txmoeda.

              itab_di_final-i_vlii =

                  itab_di_final-i_vlii / itab_di_final-i_txmoeda.

              itab_di_final-i_vlipi =

                  itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

              itab_di_final-vlcofins =

                  itab_di_final-vlcofins / itab_di_final-i_txmoeda.

              itab_di_final-i_vlicms =

                  itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

              itab_di_final-vlafrmm =

                  itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

              .

              itab_di_final-t_benef =

                         itab_di_final-i_vlii + itab_di_final-i_vlipi.

              itab_comp_vinc_final-qtd_stotal =

                                    itab_comp_vinc_final-qtd_stotal -

                                               itab_di_final-qtd_vinc.

              MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                     WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                       AND nrseq    = itab_comp_vinc_final-nrseq

                       AND codmat   = itab_comp_vinc_final-codmat

                       AND vbeln_va = itab_comp_vinc_final-vbeln_va

                       AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                       AND posnr    = itab_comp_vinc_final-posnr

                       AND codcomp  = itab_comp_vinc_final-codcomp.

              itab_di_final-v_sel = 'X'.

              MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

            ENDIF.

          ENDIF.

          APPEND itab_di_final.

          IF NOT wa_itab_di_final IS INITIAL.

            LOOP AT itab_di_final.

              IF

             ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre      OR

               itab_di_final-vbeln_va NE itab_det_exp-vbeln_va     OR

               itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf     OR

               itab_di_final-posnr    NE itab_det_exp-posnr        OR

               itab_di_final-nrseq    NE itab_det_exp-nrseq        OR

               itab_di_final-codmat   NE itab_det_exp-codmat )     AND

             ( itab_di_final-codcomp  EQ

                                      itab_comp_vinc_final-codcomp AND

               itab_di_final-nrdi     EQ wa_itab_di_final-nrdi     AND

               itab_di_final-ebeln    EQ wa_itab_di_final-ebeln    AND

               itab_di_final-ebelp    EQ wa_itab_di_final-ebelp    AND

               itab_di_final-nrseqemb EQ wa_itab_di_final-nrseqemb ).

                itab_di_final-sdo_qtd  =

                    itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

                MODIFY itab_di_final.

              ENDIF.

* << Fim da exclusão

* >> Início da inclusão: FORM SELECIONA_DI

        PERFORM monta_di.

* << Fim da inclusão

            ENDLOOP.

* >> Início da exclusão: FORM SELECIONA_DI

          ENDIF.

* << Fim da exclusão

        ENDIF.

* >> Início da exclusão: FORM SELECIONA_DI

      ENDIF.

    ENDLOOP.

* << Fim da exclusão

  ENDLOOP.

ENDFORM.

FORM verifica_exit USING    p_modulo

                            p_func

                            p_exit.

...

 

...

                                      OCCURS 0 WITH HEADER LINE.

  DATA BEGIN OF itab_zycit100_sort OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit100.

  DATA: matnr LIKE /pws/zycit003-matnr.

  DATA: END OF itab_zycit100_sort.

* >> Início da exclusão: FORM SELECIONA_DI3_L

  DATA: v_xa   LIKE /pws/zycie085-vlfob,

        v_xb   LIKE /pws/zycie085-vlfob,

        v_xc   LIKE /pws/zycie085-vlfob,

        v_fatx TYPE p DECIMALS 8,

        v_faty TYPE p DECIMALS 8,

        v_tot_real LIKE /pws/zycie003-vlreal,

        v_fatpc   LIKE /pws/zycie085-vlfob,

        v_advii   LIKE /pws/zycie085-vlfob,

        v_advipi  LIKE /pws/zycie085-vlfob,

        v_advicms LIKE /pws/zycie085-vlfob,

        v_advpis  LIKE /pws/zycie085-vlfob,

        v_advcof  LIKE /pws/zycie085-vlfob,

        v_divisor LIKE /pws/zycie085-vlfob.

* << Fim da exclusão

  CLEAR: itab_zycit085,

         itab_zycit100,

         itab_zycit260,

         itab_zycit003,

         itab_ekpo    ,

...

 

...

  ENDLOOP.

  delete itab_cent_ei where werks eq space.

  sort itab_cent_ei by werks.

  CALL SCREEN '0320' STARTING AT 30 4.

ENDFORM.

* >> Início da inclusão:

FORM comerc_exp.

  DATA: itab_vbfa_aux   LIKE itab_vbfa     OCCURS 0 WITH HEADER LINE,

        itab_zycit259_d TYPE /pws/zycit259 OCCURS 0 WITH HEADER LINE.

  IF itab_zycit472[] IS INITIAL.

    SELECT * FROM /pws/zycit472 INTO TABLE itab_zycit472.

    SELECT * FROM /pws/zycit473 INTO TABLE itab_zycit473.

  ENDIF.

  REFRESH itab_nota_c.

  IF NOT itab_zycit281[] IS INITIAL.

    SELECT a~docnum a~docdat a~parid a~nfnum a~series b~refkey

           b~refitm b~menge  b~meins b~netpr b~netwr

           b~werks  b~cfop   b~nbm b~matnr b~itmnum

           b~netfre b~netins a~waerk

           FROM ( j_1bnfdoc AS a INNER JOIN j_1bnflin AS b ON

                  a~docnum EQ b~docnum )

           INTO TABLE itab_nota_c

           FOR ALL ENTRIES IN itab_zycit281

           WHERE a~docdat >= p_dtexp1

             AND a~docdat <= p_dtexp2

             AND a~bukrs  EQ /pws/zycie258-bukrs

             AND b~matnr  EQ itab_zycit281-matnr.

  ENDIF.

  REFRESH: itab_sel_vbfa, itab_vbfa.

  LOOP AT itab_nota_c.

    READ TABLE itab_zycit473 WITH KEY kunnr = itab_nota_c-parid.

    IF sy-subrc NE 0.

      DELETE itab_nota_c WHERE parid EQ itab_nota_c-parid.

      CONTINUE.

    ENDIF.

    READ TABLE itab_zycit472 WITH KEY cfop = itab_nota_c-cfop.

    IF sy-subrc NE 0.

      DELETE itab_nota_c WHERE cfop EQ itab_nota_c-cfop.

      CONTINUE.

    ENDIF.

    MOVE: itab_nota_c-refkey TO itab_sel_vbfa-vbeln,

          itab_nota_c-refitm TO itab_sel_vbfa-posnn.

    APPEND itab_sel_vbfa.

  ENDLOOP.

  REFRESH: itab_vbfa, itab_vbfa_aux.

  IF NOT itab_sel_vbfa[] IS INITIAL.

    SELECT vbelv vbeln posnn posnv vbtyp_v vbtyp_n

    ntgew brgew gewei

       FROM vbfa INTO TABLE itab_vbfa_1

       FOR ALL ENTRIES IN itab_sel_vbfa

         WHERE vbeln EQ itab_sel_vbfa-vbeln

         AND   posnn EQ itab_sel_vbfa-posnn

         AND   ( vbtyp_v EQ 'C' OR   vbtyp_v EQ 'J' )

         AND   vbtyp_n EQ 'M'.

  ENDIF.

  itab_vbfa_aux[] = itab_vbfa_1[].

  DELETE itab_vbfa_aux WHERE vbtyp_v EQ 'C'.

  REFRESH itab_zycit259_d.

  IF NOT itab_vbfa_aux[] IS INITIAL.

    SELECT * FROM /pws/zycit259 INTO TABLE itab_zycit259_d

        FOR ALL ENTRIES IN itab_vbfa_aux

        WHERE nrseqd NE /pws/zycie258-nrseqd

          AND vbeln_vf EQ itab_vbfa_aux-vbeln

          AND posnr    EQ itab_vbfa_aux-posnn.

  ENDIF.

  LOOP AT itab_zycit259_d.

    DELETE itab_nota_c WHERE refkey EQ itab_zycit259_d-vbeln_vf

                         AND refitm EQ itab_zycit259_d-posnr.

  ENDLOOP.

  LOOP AT itab_nota_c.

    READ TABLE itab_det_exp_final WITH KEY

                              vbeln_vf = itab_nota_c-refkey

                              posnr    = itab_nota_c-refitm.

    IF sy-subrc EQ 0.

      CONTINUE.

    ENDIF.

    CLEAR: itab_det_exp_final.

    READ TABLE itab_zycit281 WITH KEY matnr = itab_nota_c-matnr

                                    werks = itab_nota_c-werks.

    IF sy-subrc NE 0.

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

      WHERE b~matnr EQ itab_nota_c-matnr

        AND b~werks EQ itab_nota_c-werks

        AND a~beskz EQ 'F'.

      IF sy-subrc EQ 0.

        READ TABLE itab_zycit281 WITH KEY

                                  matnr = itab_nota_c-matnr

                                  werks = itab_nota_c-werks.

        IF sy-subrc EQ 0.

          MODIFY itab_nota_c TRANSPORTING werks

                WHERE matnr EQ itab_nota_c-matnr.

        ENDIF.

      ENDIF.

    ENDIF.

    CLEAR: itab_det_exp_final.

    READ TABLE itab_vbfa_1 WITH KEY vbeln = itab_nota_c-refkey

                                  posnn = itab_nota_c-refitm

                                                  vbtyp_v = 'C'.

    IF sy-subrc EQ 0.

      MOVE: itab_vbfa_1-vbelv TO itab_det_exp_final-vbeln_va,

            itab_vbfa_1-posnv TO itab_det_exp_final-posnr   .

    ELSE.

      CONTINUE.

    ENDIF.

    READ TABLE itab_vbfa_1 WITH KEY vbeln = itab_nota_c-refkey

                                    posnn = itab_nota_c-refitm

                                                  vbtyp_v = 'J'.

    IF sy-subrc EQ 0.

      MOVE: itab_vbfa_1-vbelv TO itab_det_exp_final-vbeln_vl,

            itab_vbfa_1-posnv TO itab_det_exp_final-posnl,

            itab_vbfa_1-vbelv TO itab_det_exp_final-fornec    ,

            itab_vbfa_1-posnv TO itab_det_exp_final-it_fornec ,

            itab_vbfa_1-gewei TO itab_det_exp_final-gewei   ,

            itab_vbfa_1-ntgew TO itab_det_exp_final-ntgew   ,

            itab_vbfa_1-brgew TO itab_det_exp_final-brgew   .

    ELSE.

      CONTINUE.

    ENDIF.

    MOVE:

        /pws/zycie258-nrseqd    TO itab_det_exp_final-nrseqd  ,

        /pws/zycie258-lifnr     TO itab_det_exp_final-lifnr   ,

        itab_zycit281-werks     TO itab_det_exp_final-werks   ,

        itab_zycit281-stlnr     TO itab_det_exp_final-stlnr   ,

        itab_zycit281-stlal     TO itab_det_exp_final-stlal   ,

        itab_zycit281-stlan     TO itab_det_exp_final-stlan   ,

        itab_nota_c-matnr       TO itab_det_exp_final-codmat  ,

        itab_nota_c-refkey      TO itab_det_exp_final-vbeln_vf,

        itab_nota_c-werks       TO itab_det_exp_final-werks_e ,

        itab_nota_c-nbm         TO itab_det_exp_final-j_1bnbm ,

        itab_nota_c-nfnum       TO itab_det_exp_final-nfnum   ,

        itab_nota_c-series      TO itab_det_exp_final-serie   ,

        itab_nota_c-docdat      TO itab_det_exp_final-dtnf    ,

        itab_nota_c-netfre      TO itab_det_exp_final-vlfre   ,

        itab_nota_c-meins       TO itab_det_exp_final-meins   ,

        itab_nota_c-menge       TO itab_det_exp_final-qtd_iten,

        itab_nota_c-waers       TO itab_det_exp_final-waersfob,

        itab_nota_c-netwr       TO itab_det_exp_final-vlfob   .

    PERFORM converte_um_base USING itab_det_exp_final-codmat

                           CHANGING itab_det_exp_final-meins

                                 itab_det_exp_final-qtd_iten.

    itab_det_exp_final-qtd_ncm = itab_det_exp_final-qtd_iten.

    itab_det_exp_final-meins_ncm = itab_det_exp_final-meins.

    PERFORM converte_um_ncm USING itab_det_exp_final-codmat

                  CHANGING itab_det_exp_final-meins_ncm

                           itab_det_exp_final-werks

                           itab_det_exp_final-qtd_ncm.

    PERFORM converter_moeda_exp USING

                                 itab_det_exp_final-vlfob

                                 itab_det_exp_final-waersfob

                                 'USD'

                                 itab_det_exp_final-dtnf

                             CHANGING

                                 itab_det_exp_final-vlfob.

    itab_det_exp_final-waersfob =

    itab_det_exp_final-waerscif =

    itab_det_exp_final-waersemb = 'USD'.

    itab_det_exp_final-vlcif = itab_nota_c-netwr +

                        itab_nota_c-netfre + itab_nota_c-netins.

    APPEND itab_det_exp_final.

  ENDLOOP.

ENDFORM.

FORM equip_exp.

  DATA: itab_zycit371 TYPE /pws/zycit371 OCCURS 0 WITH HEADER LINE,

        itab_zycit373 TYPE /pws/zycit373 OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF itab_zycit259_dl OCCURS 0.

  DATA: nrseqc    TYPE /pws/zycit259-nrseqc,

        vbeln_vf  TYPE /pws/zycit259-vbeln_vf,

        posnr     TYPE /pws/zycit259-posnr.

  DATA: END OF itab_zycit259_dl.

  REFRESH itab_zycit281.

  SELECT * FROM /pws/zycit281 INTO TABLE itab_zycit281

         WHERE matnr IN p_matnr.

  IF NOT itab_zycit281[] IS INITIAL.

    SELECT * FROM /pws/zycit373 INTO TABLE itab_zycit373

      FOR ALL ENTRIES IN itab_zycit281

      WHERE dtnf >= p_dtexp1

        AND dtnf <= p_dtexp2

        AND matnr EQ itab_zycit281-matnr.

  ELSE.

    EXIT.

  ENDIF.

  REFRESH itab_zycit259_dl.

  IF NOT itab_zycit373[] IS INITIAL.

    SELECT nrseqc vbeln_vf posnr  FROM /pws/zycit259

      INTO TABLE itab_zycit259_dl

        FOR ALL ENTRIES IN itab_zycit373

        WHERE nrseqc   EQ itab_zycit373-nrseq

          AND vbeln_vf EQ itab_zycit373-doc_fat

          AND posnr    EQ itab_zycit373-it_docfat.

    LOOP AT itab_zycit259_dl.

      DELETE itab_zycit373

          WHERE nrseq     EQ itab_zycit259_dl-nrseqc

            AND doc_fat   EQ itab_zycit259_dl-vbeln_vf

            AND it_docfat EQ itab_zycit259_dl-posnr.

    ENDLOOP.

  ENDIF.

  IF NOT itab_zycit373[] IS INITIAL.

    SELECT * FROM /pws/zycit371 INTO TABLE itab_zycit371

          FOR ALL ENTRIES IN itab_zycit373

          WHERE nrseqd  EQ itab_zycit373-nrseq

            AND r_venda EQ 'X'.

    SELECT a~docnum a~docdat a~parid a~nfnum a~series b~refkey

           b~refitm b~menge  b~meins b~netpr b~netwr

           b~werks  b~cfop   b~nbm b~matnr b~itmnum

           b~netfre b~netins a~waerk

           FROM ( j_1bnfdoc AS a INNER JOIN j_1bnflin AS b ON

                  a~docnum EQ b~docnum )

           INTO TABLE itab_nota_c

           FOR ALL ENTRIES IN itab_zycit373

           WHERE a~docnum = itab_zycit373-docnum

             AND b~itmnum <= itab_zycit373-itmnum.

    SELECT * FROM mara INTO TABLE itab_mara

        FOR ALL ENTRIES IN itab_zycit373

        WHERE matnr EQ itab_zycit373-matnr.

  ENDIF.

  LOOP AT itab_zycit373.

    CLEAR: itab_zycit371, itab_nota_c, itab_mara.

    READ TABLE itab_zycit371 WITH KEY nrseqd = itab_zycit373-nrseq.

    IF sy-subrc NE 0.

      CONTINUE.

    ENDIF.

    READ TABLE itab_nota_c WITH KEY docnum = itab_zycit373-docnum

                                    itmnum = itab_zycit373-itmnum.

    READ TABLE itab_mara WITH KEY matnr = itab_zycit373-matnr.

    CLEAR: itab_det_exp_final.

    MOVE: itab_zycit373-nrseq     TO itab_det_exp_final-nrseqc    ,

          itab_zycit371-nrre      TO itab_det_exp_final-nrre      ,

          itab_zycit373-doc_ven   TO itab_det_exp_final-vbeln_va  ,

          itab_zycit373-it_docven TO itab_det_exp_final-posnr     ,

          itab_zycit373-fornec    TO itab_det_exp_final-vbeln_vl  ,

          itab_zycit373-it_fornec TO itab_det_exp_final-posnl     ,

          itab_zycit373-fornec    TO itab_det_exp_final-fornec    ,

          itab_zycit373-it_fornec TO itab_det_exp_final-it_fornec ,

          itab_mara-gewei         TO itab_det_exp_final-gewei     ,

          /pws/zycie258-nrseqd    TO itab_det_exp_final-nrseqd    ,

          /pws/zycie258-lifnr     TO itab_det_exp_final-lifnr     ,

          itab_zycit281-werks     TO itab_det_exp_final-werks     ,

          itab_zycit281-stlnr     TO itab_det_exp_final-stlnr     ,

          itab_zycit281-stlal     TO itab_det_exp_final-stlal     ,

          itab_zycit281-stlan     TO itab_det_exp_final-stlan     ,

          itab_nota_c-matnr       TO itab_det_exp_final-codmat    ,

          itab_zycit373-doc_fat   TO itab_det_exp_final-vbeln_vf  ,

          itab_nota_c-werks       TO itab_det_exp_final-werks_e   ,

          itab_nota_c-nbm         TO itab_det_exp_final-j_1bnbm   ,

          itab_nota_c-nfnum       TO itab_det_exp_final-nfnum     ,

          itab_nota_c-series      TO itab_det_exp_final-serie     ,

          itab_nota_c-docdat      TO itab_det_exp_final-dtnf      ,

          itab_nota_c-meins       TO itab_det_exp_final-meins     ,

          itab_zycit373-qtd_apro  TO itab_det_exp_final-qtd_iten  ,

          itab_nota_c-waers       TO itab_det_exp_final-waersfob  ,

          itab_nota_c-waers       TO itab_det_exp_final-waerscif  ,

          itab_nota_c-waers       TO itab_det_exp_final-waersemb  .

    itab_det_exp_final-vlfob =

      ( itab_zycit373-qtd_apro / itab_zycit373-qtd_iten )

                                          * itab_nota_c-netwr .

    itab_det_exp_final-vlfre =

      ( itab_zycit373-qtd_apro / itab_zycit373-qtd_iten )

                                         * itab_nota_c-netfre .

    PERFORM converter_moeda_exp USING

                                 itab_det_exp_final-vlfob

                                 itab_det_exp_final-waersfob

                                 'USD'

                                 itab_det_exp_final-dtnf

                             CHANGING

                                 itab_det_exp_final-vlfob.

    itab_det_exp_final-waersfob =

    itab_det_exp_final-waerscif =

    itab_det_exp_final-waersemb = 'USD'.

    PERFORM converte_um_base USING itab_det_exp_final-codmat

                           CHANGING itab_det_exp_final-meins

                                 itab_det_exp_final-qtd_iten.

    itab_det_exp_final-qtd_ncm = itab_det_exp_final-qtd_iten.

    itab_det_exp_final-meins_ncm = itab_det_exp_final-meins.

    PERFORM converte_um_ncm USING itab_det_exp_final-codmat

                  CHANGING itab_det_exp_final-meins_ncm

                           itab_det_exp_final-werks

                           itab_det_exp_final-qtd_ncm.

    itab_det_exp_final-ntgew = itab_det_exp_final-qtd_iten

                                        * itab_mara-ntgew.

    itab_det_exp_final-brgew = itab_det_exp_final-qtd_iten

                                        * itab_mara-brgew.

    itab_det_exp_final-vlcif = ( itab_nota_c-netwr +

            itab_nota_c-netfre + itab_nota_c-netins )

            * ( itab_zycit373-qtd_apro / itab_zycit373-qtd_iten ).

    APPEND itab_det_exp_final.

  ENDLOOP.

ENDFORM.

FORM monta_dis3.

  REFRESH   itab_di_final_aux.

  itab_di_final_aux[] = itab_di_final[].

  CLEAR itab_zycit085.

  READ TABLE itab_zycit085 WITH KEY

                             nrseqdi = itab_zycit100_sort-nrseqdi.

  CHECK sy-subrc EQ 0 AND

        itab_zycit085-dtuserc >= v_dtini AND

        itab_zycit085-dtuserc <= v_dtfim.

  IF  /pws/zycbt007-bukrs NE itab_zycit085-bukrs.

    SELECT SINGLE * FROM /pws/zycbt007

      WHERE bukrs EQ itab_zycit085-bukrs.

  ENDIF.

  READ TABLE itab_ekpo WITH KEY

                              ebeln = itab_zycit100_sort-ebeln

                              ebelp = itab_zycit100_sort-ebelp.

  READ TABLE itab_zycit100 WITH KEY

                              nrseq = itab_zycit100_sort-nrseq

                              ebeln = itab_zycit100_sort-ebeln

                              ebelp = itab_zycit100_sort-ebelp.

  CLEAR itab_zycit001.

  READ TABLE itab_zycit001 WITH KEY nrseq = itab_zycit100-nrseq.

  IF sy-subrc EQ 0.

    CLEAR itab_zycit003.

    READ TABLE itab_zycit003 WITH KEY nrseq = itab_zycit100-nrseq

                                      ebeln = itab_zycit100-ebeln

                                      ebelp = itab_zycit100-ebelp.

    IF sy-subrc NE 0.

      EXIT.

    ENDIF.

  ELSE.

    EXIT.

  ENDIF.

  v_vlreali = itab_zycit003-qtd_iten.

  READ TABLE itab_mess_un WITH KEY meins =

                                     itab_zycit003-meins

                            matnr = itab_zycit003-matnr.

  IF sy-subrc EQ 0.

    EXIT.

  ENDIF.

  PERFORM converte_um_base USING itab_zycit003-matnr

                        CHANGING itab_zycit003-meins

                                 itab_zycit003-qtd_iten.

  IF itab_zycit003-qtd_iten <= 0.

    itab_mess_un-meins = itab_det_exp_final-meins.

    itab_mess_un-matnr = itab_det_exp_final-codmat.

    APPEND itab_mess_un.

    EXIT.

  ENDIF.

  MOVE: itab_zycit003-meins           TO itab_di_final-meins       ,

        itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      .

  PERFORM converte_um_ncm  USING itab_zycit003-matnr

                        CHANGING itab_di_final-meins

                                 /pws/zycie258-werks

                                 itab_di_final-qtd_di.

  IF itab_di_final-qtd_di IS INITIAL.

    EXIT.

  ENDIF.

  v_fator_conv = v_vlreali / itab_zycit003-qtd_iten.

  CLEAR: v_advii, v_advicms, v_advipi, v_advpis, v_advcof, v_xa, v_xb,

                                                       v_fatx, v_faty.

  v_advii   = ( itab_zycit003-advalii / 100 ).

  v_advipi  = ( itab_zycit003-advalipi / 100 ).

  IF NOT itab_zycit003-basred IS INITIAL.

    v_advicms = ( ( itab_zycit003-advalicms / 100 ) *

     ( itab_zycit003-basred / 100 ) ) .

  ELSE.

    v_advicms = ( itab_zycit003-advalicms / 100 ).

  ENDIF.

  v_advpis  = ( itab_zycit100-advalpis / 100 ).

  v_advcof  = ( itab_zycit100-advalcofins / 100 ).

  v_xb = ( 1 - v_advpis - v_advcof - v_advicms ) .

  v_xa =  1 + v_advicms *  ( v_advii + v_advipi * ( 1 + v_advii ) ) .

  v_fatx = v_xa / v_xb.

  v_faty = v_advicms / v_xb.

  READ TABLE itab_zycit433 WITH KEY matnr = itab_zycit100_sort-matnr.

  CLEAR itab_di_final_aux.

  READ TABLE itab_di_final_aux WITH KEY

              nrseqre  = itab_comp_vinc_final-nrseqre

              nrseq    = itab_comp_vinc_final-nrseq

              codmat   = itab_comp_vinc_final-codmat

              vbeln_va = itab_comp_vinc_final-vbeln_va

              vbeln_vf = itab_comp_vinc_final-vbeln_vf

              posnr    = itab_comp_vinc_final-posnr

              nrdi     = itab_zycit085-nrseqdi

              nrseqemb = itab_zycit100-nrseq

              ebeln    = itab_ekpo-ebeln

              ebelp    = itab_ekpo-ebelp.

  IF sy-subrc               NE 0 AND

     itab_zycit003-qtd_iten >  0.

    READ TABLE itab_di_final_aux WITH KEY

                           nrdi     = itab_zycit085-nrseqdi

                           nrseqemb = itab_zycit100-nrseq

                           ebeln    = itab_ekpo-ebeln

                           ebelp    = itab_ekpo-ebelp.

    IF sy-subrc NE 0.

      CLEAR itab_di_final.

      MOVE:

      /pws/zycie258-nrseqd          TO itab_di_final-nrseqd      ,

      itab_zycit100_sort-matnr      TO itab_di_final-codcomp     ,

      itab_zycit100_sort-grupo      TO itab_di_final-grupo       ,

      itab_zycit433-desc_g          TO itab_di_final-desc_g      ,

      itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

      itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

      itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

      itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

      itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

      itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

      itab_zycit085-nrseqdi         TO itab_di_final-nrdi        ,

      itab_zycit085-nrdi            TO itab_di_final-reg_di      ,

      itab_zycit085-dtuserc         TO itab_di_final-dtdi        ,

      itab_zycit100-nrseq           TO itab_di_final-nrseqemb    ,

      itab_zycit100-adicao          TO itab_di_final-adicao      ,

      itab_ekpo-ebeln               TO itab_di_final-ebeln       ,

      itab_ekpo-ebelp               TO itab_di_final-ebelp       ,

      itab_zycit003-meins           TO itab_di_final-meins       ,

      itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      ,

      itab_zycit003-qtd_iten        TO itab_di_final-sdo_qtd     ,

      itab_zycit003-j_1bnbm         TO itab_di_final-j_1bnbm     ,

      itab_zycit085-dtdesemb        TO itab_di_final-dtdesemb    ,

      itab_zycit003-gewei           TO itab_di_final-gewei       ,

      itab_zycit003-werks           TO itab_di_final-werks       ,

      itab_zycit003-ntgew           TO itab_di_final-ntgew       ,

      itab_zycit003-waers           TO itab_di_final-waers       ,

      itab_zycit003-netpr           TO itab_di_final-netpr       ,

      itab_zycit003-advalii         TO itab_di_final-i_txii      ,

      itab_zycit100-advalpis        TO itab_di_final-pis         ,

      itab_zycit100-advalcofins     TO itab_di_final-cofins      ,

      itab_zycit003-advalipi        TO itab_di_final-i_txipi     ,

      itab_zycit003-advalicms       TO itab_di_final-i_txicms    ,

      itab_zycit003-waers_real      TO itab_di_final-i_waerscifme,

      itab_zycit100-dttaxbem        TO itab_di_final-i_txmoeda   ,

      itab_zycit100-waersreal       TO itab_di_final-i_waerscifmi,

      itab_zycit100-waersreal       TO itab_di_final-waersimp    ,

      itab_zycit003-vlreal          TO itab_di_final-vlreal      ,

      itab_zycit100-vlfre           TO itab_di_final-vlfrete     ,

      itab_zycit100-vlseg           TO itab_di_final-vlseg       .

      SELECT SINGLE *

        FROM mara INTO mara

        WHERE matnr = itab_di_final-codmat.

      itab_di_final-gewei = mara-gewei.

      itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

      itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

      IF itab_zycit001-inco1 EQ 'FOB'.

        itab_di_final-valor_u = itab_zycit003-vlreal.

      ELSEIF itab_zycit001-inco1 EQ 'CFR'.

        itab_di_final-valor_u = ( itab_zycit003-vlreal +

                 itab_zycit003-vlfre_fat ) - itab_zycit100-vlfre.

      ELSEIF itab_zycit001-inco1 EQ 'CIF'.

        itab_di_final-valor_u = ( ( itab_zycit003-vlreal +

            itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ) -

                     itab_zycit100-vlfre ) - itab_zycit100-vlseg.

      ELSE.

        itab_di_final-valor_u = itab_zycit003-vlreal.

      ENDIF.

      itab_di_final-valor_u = itab_di_final-valor_u * v_fator_conv.

      PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                         'USD'

                                         itab_zycit085-dttax

                              CHANGING itab_di_final-vlfrete.

      PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                         'USD'

                                         itab_zycit085-dttax

                                CHANGING itab_di_final-vlseg.

      itab_di_final-vlfrete = itab_di_final-vlfrete /

                              itab_zycit003-qtd_iten.

      itab_di_final-vlseg   = itab_di_final-vlseg /

                              itab_zycit003-qtd_iten.

      CHECK itab_di_final-valor_u > 0.

      itab_di_final-i_vlcif_me = itab_di_final-valor_u.

      itab_di_final-i_vlcif_mi =

             itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

      LOOP AT itab_zycit260

                    WHERE

                          nrdi      = itab_zycit085-nrseqdi

                      AND nrseqemb  = itab_zycit100-nrseq

                      AND ebeln     = itab_ekpo-ebeln

                      AND ebelp     = itab_ekpo-ebelp.

        itab_di_final-sdo_qtd =

                itab_di_final-sdo_qtd - itab_zycit260-qtd_vinc.

      ENDLOOP.

      IF itab_di_final-sdo_qtd <= 0.

        CLEAR itab_di_final.

        EXIT.

      ENDIF.

      CLEAR wa_itab_di_final.

      IF itab_comp_vinc_final-qtd_stotal > 0 AND

         itab_di_final-sdo_qtd > 0.

        IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

          IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                     itab_di_final-sdo_qtd - itab_di_final-qtd_di.

            itab_di_final-qtd_vinc =

                    itab_di_final-qtd_vinc + itab_di_final-qtd_di.

          ELSE.

            itab_di_final-qtd_vinc =

                   itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

           ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc * itab_zycit100-vlpis.

          itab_di_final-vlcofins =

                  v_perc_vinc * itab_zycit100-vlcofins.

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc * itab_zycit100-vlii.

          itab_di_final-i_vlipi =

                  v_perc_vinc * itab_zycit100-vlipi.

          itab_di_final-i_vlicms =

                  v_perc_vinc * itab_zycit100-vlicms.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlpis.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-vlcofins.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlii.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlipi.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-i_vlicms.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ELSE.

          IF itab_comp_vinc_final-qtd_stotal <

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                  itab_comp_vinc_final-qtd_stotal.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                  itab_comp_vinc_final-qtd_stotal.

          ELSE.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                   itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc * itab_zycit100-vlpis.

          itab_di_final-vlcofins =

                  v_perc_vinc * itab_zycit100-vlcofins.

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc * itab_zycit100-vlii.

          itab_di_final-i_vlipi =

                  v_perc_vinc * itab_zycit100-vlipi.

          itab_di_final-i_vlicms =

                  v_perc_vinc * itab_zycit100-vlicms.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlpis.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-vlcofins.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlii.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlipi.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-i_vlicms.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo .

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ENDIF.

      ENDIF.

      CLEAR v_found.

      LOOP AT itab_zycit044 WHERE nrseq = itab_zycit001-nrseq

                              AND ebeln = itab_ekpo-ebeln

                              AND ebelp = itab_ekpo-ebelp.

        CLEAR itab_zycit043.

        READ TABLE itab_zycit043 WITH KEY

                              nrseq     = itab_zycit044-nrseqnf

                              nfglobal  = itab_zycit044-nfglobal

                              nfremessa = itab_zycit044-nfremessa.

        IF sy-subrc EQ 0.

          MOVE: itab_zycit043-nfnum  TO itab_di_final-nfnum,

                itab_zycit043-series TO itab_di_final-serie,

                itab_zycit043-dtincl TO itab_di_final-dtnf .

          v_found = 'S'.

          EXIT.

        ENDIF.

      ENDLOOP.

      IF v_found NE 'S'.

        LOOP AT itab_zycit042 WHERE nrseq = itab_zycit001-nrseq

                                AND ebeln = itab_ekpo-ebeln

                                AND ebelp = itab_ekpo-ebelp.

          CLEAR itab_zycit041.

          READ TABLE itab_zycit041 WITH KEY

                                nrseq    = itab_zycit042-nrseqnf

                                nfglobal = itab_zycit042-nfglobal.

          IF sy-subrc EQ 0.

            MOVE: itab_zycit041-nfnum  TO itab_di_final-nfnum,

                  itab_zycit041-series TO itab_di_final-serie,

                  itab_zycit041-dtincl TO itab_di_final-dtnf .

            EXIT.

          ENDIF.

        ENDLOOP.

      ENDIF.

      APPEND itab_di_final.

      IF NOT wa_itab_di_final IS INITIAL.

        LOOP AT itab_di_final WHERE

         ( nrseqre  NE itab_det_exp-nrseqre      OR

           vbeln_va NE itab_det_exp-vbeln_va     OR

           vbeln_vf NE itab_det_exp-vbeln_vf     OR

           posnr    NE itab_det_exp-posnr        OR

           nrseq    NE itab_det_exp-nrseq        OR

           codmat   NE itab_det_exp-codmat )    AND

          nrdi      EQ wa_itab_di_final-nrdi    AND

          ebeln     EQ wa_itab_di_final-ebeln   AND

          ebelp     EQ wa_itab_di_final-ebelp   AND

          nrseqemb  EQ wa_itab_di_final-nrseqemb .

          itab_di_final-sdo_qtd  =

              itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

          MODIFY itab_di_final.

        ENDLOOP.

      ENDIF.

    ELSE.

      CLEAR itab_di_final.

      MOVE:

      /pws/zycie258-nrseqd           TO itab_di_final-nrseqd     ,

      itab_zycit100_sort-matnr      TO itab_di_final-codcomp     ,

      itab_zycit100_sort-grupo      TO itab_di_final-grupo       ,

      itab_zycit433-desc_g          TO itab_di_final-desc_g      ,

      itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

      itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

      itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

      itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

      itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

      itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

      itab_zycit085-nrseqdi         TO itab_di_final-nrdi        ,

      itab_zycit085-nrdi            TO itab_di_final-reg_di      ,

      itab_zycit085-dtuserc         TO itab_di_final-dtdi        ,

      itab_zycit100-nrseq           TO itab_di_final-nrseqemb    ,

      itab_zycit100-adicao          TO itab_di_final-adicao      ,

      itab_ekpo-ebeln               TO itab_di_final-ebeln       ,

      itab_ekpo-ebelp               TO itab_di_final-ebelp       ,

      itab_zycit003-meins           TO itab_di_final-meins       ,

      itab_zycit003-qtd_iten        TO itab_di_final-qtd_di      ,

      itab_di_final_aux-sdo_qtd     TO itab_di_final-sdo_qtd     ,

      itab_zycit003-j_1bnbm         TO itab_di_final-j_1bnbm     ,

      itab_zycit085-dtdesemb        TO itab_di_final-dtdesemb    ,

      itab_zycit003-gewei           TO itab_di_final-gewei       ,

      itab_zycit003-ntgew           TO itab_di_final-ntgew       ,

      itab_zycit003-werks           TO itab_di_final-werks       ,

      itab_zycit003-waers           TO itab_di_final-waers       ,

      itab_zycit003-netpr           TO itab_di_final-netpr       ,

      itab_zycit100-advalpis        TO itab_di_final-pis         ,

      itab_zycit100-advalcofins     TO itab_di_final-cofins      ,

      itab_zycit003-advalii         TO itab_di_final-i_txii      ,

      itab_zycit003-advalipi        TO itab_di_final-i_txipi     ,

      itab_zycit003-advalicms       TO itab_di_final-i_txicms    ,

      itab_zycit003-waers_real      TO itab_di_final-i_waerscifme,

      itab_zycit100-dttaxbem        TO itab_di_final-i_txmoeda   ,

      itab_zycit100-waersreal       TO itab_di_final-i_waerscifmi,

      itab_zycit100-waersreal       TO itab_di_final-waersimp    ,

      itab_zycit003-vlreal          TO itab_di_final-vlreal      ,

      itab_zycit100-vlfre           TO itab_di_final-vlfrete     ,

      itab_zycit100-vlseg           TO itab_di_final-vlseg       .

      itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

      IF itab_zycit001-inco1 EQ 'FOB'.

        itab_di_final-valor_u = itab_zycit003-vlreal.

      ELSEIF itab_zycit001-inco1 EQ 'CFR'.

        itab_di_final-valor_u = ( itab_zycit003-vlreal +

                 itab_zycit003-vlfre_fat ) - itab_zycit100-vlfre.

      ELSEIF itab_zycit001-inco1 EQ 'CIF'.

        itab_di_final-valor_u = ( ( itab_zycit003-vlreal +

            itab_zycit003-vlfre_fat + itab_zycit003-vlseg_fat ) -

                     itab_zycit100-vlfre ) - itab_zycit100-vlseg.

      ELSE.

        itab_di_final-valor_u = itab_zycit003-vlreal.

      ENDIF.

      itab_di_final-valor_u = itab_di_final-valor_u * v_fator_conv.

      PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                         'USD'

                                         itab_zycit085-dttax

                              CHANGING itab_di_final-vlfrete.

      PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                         'USD'

                                         itab_zycit085-dttax

                                CHANGING itab_di_final-vlseg.

      itab_di_final-vlfrete = itab_di_final-vlfrete /

                              itab_zycit003-qtd_iten.

      itab_di_final-vlseg   = itab_di_final-vlseg /

                              itab_zycit003-qtd_iten.

      CHECK itab_di_final-valor_u > 0.

      itab_di_final-i_vlcif_me = itab_di_final-valor_u.

      itab_di_final-i_vlcif_mi =

             itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

      CLEAR wa_itab_di_final.

      IF itab_comp_vinc_final-qtd_stotal > 0 AND

                                        itab_di_final-sdo_qtd > 0.

        IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

          IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                     itab_di_final-sdo_qtd - itab_di_final-qtd_di.

            itab_di_final-qtd_vinc =

                    itab_di_final-qtd_vinc + itab_di_final-qtd_di.

          ELSE.

            itab_di_final-qtd_vinc =

                   itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

          ENDIF.

          SELECT SINGLE *

           FROM mara INTO mara

            WHERE matnr = itab_di_final-codmat.

          itab_di_final-gewei = mara-gewei.

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc * itab_zycit100-vlpis.

          itab_di_final-vlcofins =

                  v_perc_vinc * itab_zycit100-vlcofins.

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc * itab_zycit100-vlii.

          itab_di_final-i_vlipi =

                  v_perc_vinc * itab_zycit100-vlipi.

          itab_di_final-i_vlicms =

                  v_perc_vinc * itab_zycit100-vlicms.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlpis.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-vlcofins.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlii.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlipi.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-i_vlicms.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ELSE.

          IF itab_comp_vinc_final-qtd_stotal <

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                  itab_comp_vinc_final-qtd_stotal.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                  itab_comp_vinc_final-qtd_stotal.

          ELSE.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                   itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc * itab_zycit100-vlpis.

          itab_di_final-vlcofins =

                  v_perc_vinc * itab_zycit100-vlcofins.

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc * itab_zycit100-vlii.

          itab_di_final-i_vlipi =

                  v_perc_vinc * itab_zycit100-vlipi.

          itab_di_final-i_vlicms =

                  v_perc_vinc * itab_zycit100-vlicms.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-vlpis.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-vlcofins.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlii.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                  CHANGING itab_di_final-i_vlipi.

          PERFORM valor_converte_imp USING   /pws/zycbt007-waersb

                                             'USD'

                                             itab_zycit085-dttax

                                 CHANGING itab_di_final-i_vlicms.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ENDIF.

      ENDIF.

      CLEAR v_found.

      LOOP AT itab_zycit044 WHERE nrseq = itab_zycit001-nrseq

                              AND ebeln = itab_ekpo-ebeln

                              AND ebelp = itab_ekpo-ebelp.

        CLEAR itab_zycit043.

        READ TABLE itab_zycit043 WITH KEY

                                nrseq     = itab_zycit044-nrseqnf

                               nfglobal  = itab_zycit044-nfglobal

                              nfremessa = itab_zycit044-nfremessa.

        IF sy-subrc EQ 0.

          MOVE: itab_zycit043-nfnum  TO itab_di_final-nfnum,

                itab_zycit043-series TO itab_di_final-serie,

                itab_zycit043-dtincl TO itab_di_final-dtnf .

          v_found = 'S'.

          EXIT.

        ENDIF.

      ENDLOOP.

      IF v_found NE 'S'.

        LOOP AT itab_zycit042 WHERE nrseq = itab_zycit001-nrseq

                                AND ebeln = itab_ekpo-ebeln

                                AND ebelp = itab_ekpo-ebelp.

          CLEAR itab_zycit041.

          READ TABLE itab_zycit041 WITH KEY

                                 nrseq    = itab_zycit042-nrseqnf

                                nfglobal = itab_zycit042-nfglobal.

          IF sy-subrc EQ 0.

            MOVE: itab_zycit041-nfnum  TO itab_di_final-nfnum,

                  itab_zycit041-series TO itab_di_final-serie,

                  itab_zycit041-dtincl TO itab_di_final-dtnf .

            EXIT.

          ENDIF.

        ENDLOOP.

      ENDIF.

      APPEND itab_di_final.

      IF NOT wa_itab_di_final IS INITIAL.

        LOOP AT itab_di_final WHERE

             ( nrseqre  NE itab_det_exp-nrseqre      OR

               vbeln_va NE itab_det_exp-vbeln_va     OR

               vbeln_vf NE itab_det_exp-vbeln_vf     OR

               posnr    NE itab_det_exp-posnr        OR

               nrseq    NE itab_det_exp-nrseq        OR

               codmat   NE itab_det_exp-codmat )     AND

               nrdi     EQ wa_itab_di_final-nrdi     AND

               ebeln    EQ wa_itab_di_final-ebeln    AND

               ebelp    EQ wa_itab_di_final-ebelp    AND

               nrseqemb EQ wa_itab_di_final-nrseqemb .

          itab_di_final-sdo_qtd  =

              itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

          MODIFY itab_di_final.

        ENDLOOP.

      ENDIF.

    ENDIF.

  ENDIF.

ENDFORM.

FORM monta_di.

  IF NOT itab_zycit279-nrseqd IS INITIAL.

    READ TABLE itab_zycit244 WITH KEY

                              nrseqd = itab_zycit279-nrseqd.

    IF sy-subrc NE 0.

      EXIT.

    ENDIF.

  ENDIF.

  REFRESH   itab_di_final_aux.

  itab_di_final_aux[] = itab_di_final[].

  CHECK itab_zycit279-dtdi >= v_dtini AND

        itab_zycit279-dtdi <= v_dtfim.

  MOVE: itab_zycit279-meins        TO itab_di_final-meins       ,

        itab_zycit279-menge        TO itab_di_final-qtd_di      .

  IF itab_di_final-qtd_di IS INITIAL.

    EXIT.

  ENDIF.

  READ TABLE itab_zycit433 WITH KEY matnr = itab_zycit279-matnr.

  CLEAR itab_di_final_aux.

  READ TABLE itab_di_final_aux WITH KEY

              nrseqre  = itab_comp_vinc_final-nrseqre

              nrseq    = itab_comp_vinc_final-nrseq

              codmat   = itab_comp_vinc_final-codmat

              vbeln_va = itab_comp_vinc_final-vbeln_va

              vbeln_vf = itab_comp_vinc_final-vbeln_vf

              posnr    = itab_comp_vinc_final-posnr

              docnum   = itab_zycit279-docnum

              ebeln    = itab_zycit279-ebeln

              ebelp    = itab_zycit279-ebelp.

  IF sy-subrc               NE 0 AND

     itab_zycit279-menge >  0.

    READ TABLE itab_di_final_aux WITH KEY

                           docnum   = itab_zycit279-docnum

                           ebeln    = itab_zycit279-ebeln

                           ebelp    = itab_zycit279-ebelp.

    IF sy-subrc NE 0.

      CLEAR itab_di_final.

      MOVE:

      /pws/zycie258-nrseqd               TO itab_di_final-nrseqd ,

      itab_zycit279-matnr           TO itab_di_final-codcomp     ,

      itab_zycit279-grupo           TO itab_di_final-grupo       ,

      itab_zycit433-desc_g          TO itab_di_final-desc_g      ,

      itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

      itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

      itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

      itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

      itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

      itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

      itab_zycit279-nrseqdi         TO itab_di_final-nrdi        ,

      itab_zycit279-nrdi            TO itab_di_final-reg_di      ,

      itab_zycit279-dtdi            TO itab_di_final-dtdi        ,

      itab_zycit279-nrseq           TO itab_di_final-nrseqemb    ,

      itab_zycit279-adicao          TO itab_di_final-adicao      ,

      itab_zycit279-docnum          TO itab_di_final-docnum      ,

      itab_zycit279-ebeln           TO itab_di_final-ebeln       ,

      itab_zycit279-ebelp           TO itab_di_final-ebelp       ,

      itab_zycit279-meins           TO itab_di_final-meins       ,

      itab_zycit279-menge           TO itab_di_final-qtd_di      ,

      itab_zycit279-nfnum           TO itab_di_final-nfnum       ,

      itab_zycit279-serie           TO itab_di_final-serie       ,

      itab_zycit279-dtnf            TO itab_di_final-dtnf       ,

      itab_zycit279-menge           TO itab_di_final-sdo_qtd     ,

      itab_zycit279-j_1bnbm         TO itab_di_final-j_1bnbm     ,

      itab_zycit279-dtdesemb        TO itab_di_final-dtdesemb    ,

      itab_zycit279-gewei           TO itab_di_final-gewei       ,

      itab_zycit279-ntgew           TO itab_di_final-ntgew       ,

      itab_zycit279-waers           TO itab_di_final-waers       ,

      itab_zycit279-netpr           TO itab_di_final-netpr       ,

      itab_zycit279-i_txii          TO itab_di_final-i_txii      ,

      itab_zycit279-pis             TO itab_di_final-pis         ,

      itab_zycit279-cofins          TO itab_di_final-cofins      ,

      itab_zycit279-i_txipi         TO itab_di_final-i_txipi     ,

      itab_zycit279-i_txicms        TO itab_di_final-i_txicms    ,

      itab_zycit279-waers           TO itab_di_final-i_waerscifme,

      itab_zycit279-i_txmoeda       TO itab_di_final-i_txmoeda   ,

      itab_zycit279-waers           TO itab_di_final-i_waerscifmi,

      itab_zycit279-waers           TO itab_di_final-waersimp    ,

      itab_zycit279-vltot           TO itab_di_final-vlreal      ,

      itab_zycit279-vlfrete         TO itab_di_final-vlfrete     ,

      itab_zycit279-vlseg           TO itab_di_final-vlseg       .

      SELECT SINGLE *

        FROM mara INTO mara

        WHERE matnr = itab_di_final-codmat.

      itab_di_final-gewei = mara-gewei.

      itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

      itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

      itab_di_final-valor_u = itab_zycit279-vltot /

                              itab_zycit279-qtd_ncm.

      itab_di_final-vlfrete = itab_di_final-vlfrete /

                              itab_zycit279-qtd_ncm.

      itab_di_final-vlseg   = itab_di_final-vlseg /

                              itab_zycit279-qtd_ncm.

      CHECK itab_di_final-valor_u > 0.

      itab_di_final-i_vlcif_me = itab_di_final-valor_u.

      itab_di_final-i_vlcif_mi =

             itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

      LOOP AT itab_zycit260

                     WHERE

                          docnum    = itab_zycit279-docnum

                      AND ebeln     = itab_zycit279-ebeln

                      AND ebelp     = itab_zycit279-ebelp.

        itab_di_final-sdo_qtd =

                itab_di_final-sdo_qtd - itab_zycit260-qtd_vinc.

      ENDLOOP.

      IF itab_di_final-sdo_qtd <= 0.

        CLEAR itab_di_final.

        EXIT.

      ENDIF.

      CLEAR wa_itab_di_final.

      IF itab_comp_vinc_final-qtd_stotal > 0 AND

         itab_di_final-sdo_qtd > 0.

        IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

          IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                     itab_di_final-sdo_qtd - itab_di_final-qtd_di.

            itab_di_final-qtd_vinc =

                    itab_di_final-qtd_vinc + itab_di_final-qtd_di.

          ELSE.

            itab_di_final-qtd_vinc =

                   itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          itab_di_final-i_vlcifn_mi =

           ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc *

            ( itab_zycit279-basepis *

                ( itab_zycit279-pis / 100 ) ).

          itab_di_final-vlcofins =

                  v_perc_vinc *

            ( itab_zycit279-basecofins *

                ( itab_zycit279-cofins / 100 ) ).

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc *

            ( itab_zycit279-baseii *

                ( itab_zycit279-i_txii / 100 ) ).

          itab_di_final-i_vlipi =

                  v_perc_vinc *

            ( itab_zycit279-baseipi *

                ( itab_zycit279-i_txipi / 100 ) ).

          itab_di_final-i_vlicms =

                  v_perc_vinc *

            ( itab_zycit279-baseicms *

                ( itab_zycit279-i_txicms / 100 ) ).

          itab_di_final-vlpis =

              itab_di_final-vlpis / itab_di_final-i_txmoeda.

          itab_di_final-i_vlii =

              itab_di_final-i_vlii / itab_di_final-i_txmoeda.

          itab_di_final-i_vlipi =

              itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

          itab_di_final-vlcofins =

              itab_di_final-vlcofins / itab_di_final-i_txmoeda.

          itab_di_final-i_vlicms =

              itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

          itab_di_final-vlafrmm =

              itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ELSE.

          IF itab_comp_vinc_final-qtd_stotal <

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                  itab_comp_vinc_final-qtd_stotal.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                  itab_comp_vinc_final-qtd_stotal.

          ELSE.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                   itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc *

            ( itab_zycit279-basepis *

                ( itab_zycit279-pis / 100 ) ).

          itab_di_final-vlcofins =

                  v_perc_vinc *

            ( itab_zycit279-basecofins *

                ( itab_zycit279-cofins / 100 ) ).

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc *

            ( itab_zycit279-baseii *

                ( itab_zycit279-i_txii / 100 ) ).

          itab_di_final-i_vlipi =

                  v_perc_vinc *

            ( itab_zycit279-baseipi *

                ( itab_zycit279-i_txipi / 100 ) ).

          itab_di_final-i_vlicms =

                  v_perc_vinc *

            ( itab_zycit279-baseicms *

                ( itab_zycit279-i_txicms / 100 ) ).

          itab_di_final-vlpis =

              itab_di_final-vlpis / itab_di_final-i_txmoeda.

          itab_di_final-i_vlii =

              itab_di_final-i_vlii / itab_di_final-i_txmoeda.

          itab_di_final-i_vlipi =

              itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

          itab_di_final-vlcofins =

              itab_di_final-vlcofins / itab_di_final-i_txmoeda.

          itab_di_final-i_vlicms =

              itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

          itab_di_final-vlafrmm =

              itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ENDIF.

      ENDIF.

      APPEND itab_di_final.

      IF NOT wa_itab_di_final IS INITIAL.

        LOOP AT itab_di_final WHERE

         ( nrseqre  NE itab_det_exp-nrseqre      OR

           vbeln_va NE itab_det_exp-vbeln_va     OR

           vbeln_vf NE itab_det_exp-vbeln_vf     OR

           posnr    NE itab_det_exp-posnr        OR

           nrseq    NE itab_det_exp-nrseq        OR

           codmat   NE itab_det_exp-codmat )     AND

           docnum   EQ wa_itab_di_final-docnum   AND

           ebeln    EQ wa_itab_di_final-ebeln    AND

           ebelp    EQ wa_itab_di_final-ebelp     .

          itab_di_final-sdo_qtd  =

              itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

          MODIFY itab_di_final.

        ENDLOOP.

      ENDIF.

    ELSE.

      CLEAR itab_di_final.

      MOVE:

      /pws/zycie258-nrseqd          TO itab_di_final-nrseqd     ,

      itab_zycit279-matnr           TO itab_di_final-codcomp     ,

      itab_zycit279-grupo           TO itab_di_final-grupo       ,

      itab_zycit433-desc_g          TO itab_di_final-desc_g      ,

      itab_comp_vinc_final-codmat   TO itab_di_final-codmat      ,

      itab_comp_vinc_final-nrseqre  TO itab_di_final-nrseqre     ,

      itab_comp_vinc_final-nrseq    TO itab_di_final-nrseq       ,

      itab_comp_vinc_final-vbeln_va TO itab_di_final-vbeln_va    ,

      itab_comp_vinc_final-vbeln_vf TO itab_di_final-vbeln_vf    ,

      itab_comp_vinc_final-posnr    TO itab_di_final-posnr       ,

      itab_zycit279-nrseqdi         TO itab_di_final-nrdi        ,

      itab_zycit279-nrdi            TO itab_di_final-reg_di      ,

      itab_zycit279-dtdi            TO itab_di_final-dtdi        ,

      itab_zycit279-nrseq           TO itab_di_final-nrseqemb    ,

      itab_zycit279-adicao          TO itab_di_final-adicao      ,

      itab_zycit279-docnum          TO itab_di_final-docnum      ,

      itab_zycit279-ebeln           TO itab_di_final-ebeln       ,

      itab_zycit279-ebelp           TO itab_di_final-ebelp       ,

      itab_zycit279-meins           TO itab_di_final-meins       ,

      itab_zycit279-menge           TO itab_di_final-qtd_di      ,

      itab_di_final_aux-sdo_qtd     TO itab_di_final-sdo_qtd     ,

      itab_zycit279-j_1bnbm         TO itab_di_final-j_1bnbm     ,

      itab_zycit279-dtdesemb        TO itab_di_final-dtdesemb    ,

      itab_zycit279-gewei           TO itab_di_final-gewei       ,

      itab_zycit279-ntgew           TO itab_di_final-ntgew       ,

      itab_zycit279-waers           TO itab_di_final-waers       ,

      itab_zycit279-netpr           TO itab_di_final-netpr       ,

      itab_zycit279-nfnum           TO itab_di_final-nfnum       ,

      itab_zycit279-serie           TO itab_di_final-serie       ,

      itab_zycit279-dtnf            TO itab_di_final-dtnf       ,

      itab_zycit279-i_txii          TO itab_di_final-i_txii      ,

      itab_zycit279-pis             TO itab_di_final-pis         ,

      itab_zycit279-cofins          TO itab_di_final-cofins      ,

      itab_zycit279-i_txipi         TO itab_di_final-i_txipi     ,

      itab_zycit279-i_txicms        TO itab_di_final-i_txicms    ,

      itab_zycit279-waers           TO itab_di_final-i_waerscifme,

      itab_zycit279-i_txmoeda       TO itab_di_final-i_txmoeda   ,

      itab_zycit279-waers           TO itab_di_final-i_waerscifmi,

      itab_zycit279-waers           TO itab_di_final-waersimp    ,

      itab_zycit279-vltot           TO itab_di_final-vlreal      ,

      itab_zycit279-vlfrete         TO itab_di_final-vlfrete     ,

      itab_zycit279-vlseg           TO itab_di_final-vlseg       .

      itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

      itab_di_final-valor_u = itab_zycit279-vltot /

                              itab_zycit279-qtd_ncm.

      itab_di_final-vlfrete = itab_di_final-vlfrete /

                              itab_zycit279-menge.

      itab_di_final-vlseg   = itab_di_final-vlseg /

                              itab_zycit279-menge.

      CHECK itab_di_final-valor_u > 0.

      itab_di_final-i_vlcif_me = itab_di_final-valor_u.

      itab_di_final-i_vlcif_mi =

             itab_di_final-i_vlcif_me * itab_di_final-i_txmoeda.

      CLEAR wa_itab_di_final.

      IF itab_comp_vinc_final-qtd_stotal > 0 AND

                                        itab_di_final-sdo_qtd > 0.

        IF itab_di_final-qtd_di <= itab_comp_vinc_final-qtd_stotal.

          IF itab_di_final-qtd_di = itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                     itab_di_final-sdo_qtd - itab_di_final-qtd_di.

            itab_di_final-qtd_vinc =

                    itab_di_final-qtd_vinc + itab_di_final-qtd_di.

          ELSE.

            itab_di_final-qtd_vinc =

                   itab_di_final-qtd_vinc + itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                    itab_di_final-sdo_qtd - itab_di_final-sdo_qtd.

          ENDIF.

          SELECT SINGLE *

           FROM mara INTO mara

            WHERE matnr = itab_di_final-codmat.

          itab_di_final-gewei = mara-gewei.

          itab_di_final-ntgew = itab_di_final-ntgew * v_fator_conv.

          itab_di_final-brgew = itab_di_final-brgew * v_fator_conv.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc *

            ( itab_zycit279-basepis *

                ( itab_zycit279-pis / 100 ) ).

          itab_di_final-vlcofins =

                  v_perc_vinc *

            ( itab_zycit279-basecofins *

                ( itab_zycit279-cofins / 100 ) ).

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc *

            ( itab_zycit279-baseii *

                ( itab_zycit279-i_txii / 100 ) ).

          itab_di_final-i_vlipi =

                  v_perc_vinc *

            ( itab_zycit279-baseipi *

                ( itab_zycit279-i_txipi / 100 ) ).

          itab_di_final-i_vlicms =

                  v_perc_vinc *

            ( itab_zycit279-baseicms *

                ( itab_zycit279-i_txicms / 100 ) ).

          itab_di_final-vlpis =

              itab_di_final-vlpis / itab_di_final-i_txmoeda.

          itab_di_final-i_vlii =

              itab_di_final-i_vlii / itab_di_final-i_txmoeda.

          itab_di_final-i_vlipi =

              itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

          itab_di_final-vlcofins =

              itab_di_final-vlcofins / itab_di_final-i_txmoeda.

          itab_di_final-i_vlicms =

              itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

          itab_di_final-vlafrmm =

              itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

          .

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ELSE.

          IF itab_comp_vinc_final-qtd_stotal <

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd = itab_di_final-sdo_qtd -

                                  itab_comp_vinc_final-qtd_stotal.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                  itab_comp_vinc_final-qtd_stotal.

          ELSE.

            itab_di_final-qtd_vinc = itab_di_final-qtd_vinc +

                                            itab_di_final-sdo_qtd.

            itab_di_final-sdo_qtd =

                   itab_di_final-sdo_qtd - itab_di_final-qtd_vinc.

          ENDIF.

          itab_di_final-vlfrete_t = itab_di_final-vlfrete *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlseg_t   = itab_di_final-vlseg *

                                           itab_di_final-qtd_vinc.

          itab_di_final-vlfob_t = itab_di_final-valor_u *

                                          itab_di_final-qtd_vinc.

          itab_di_final-vlfob = itab_di_final-vlfob_t.

          PERFORM valor_converte_imp USING itab_zycit085-waersfob

                                             'USD'

                                             itab_zycit085-dttax

                                    CHANGING itab_di_final-vlfob.

          itab_di_final-i_vlcifn_mi =

              ( itab_di_final-vlfob_t * itab_di_final-i_txmoeda ).

          v_perc_vinc =

                    itab_di_final-qtd_vinc / itab_di_final-qtd_di.

          itab_di_final-vlpis =

                  v_perc_vinc *

            ( itab_zycit279-basepis *

                ( itab_zycit279-pis / 100 ) ).

          itab_di_final-vlcofins =

                  v_perc_vinc *

            ( itab_zycit279-basecofins *

                ( itab_zycit279-cofins / 100 ) ).

          itab_di_final-vlafrmm = itab_di_final-vlfrete_t *

                                                    ( 25 / 100 ).

          itab_di_final-afrmm = '25'.

          itab_di_final-i_vlii =

                  v_perc_vinc *

            ( itab_zycit279-baseii *

                ( itab_zycit279-i_txii / 100 ) ).

          itab_di_final-i_vlipi =

                  v_perc_vinc *

            ( itab_zycit279-baseipi *

                ( itab_zycit279-i_txipi / 100 ) ).

          itab_di_final-i_vlicms =

                  v_perc_vinc *

            ( itab_zycit279-baseicms *

                ( itab_zycit279-i_txicms / 100 ) ).

          itab_di_final-vlpis =

              itab_di_final-vlpis / itab_di_final-i_txmoeda.

          itab_di_final-i_vlii =

              itab_di_final-i_vlii / itab_di_final-i_txmoeda.

          itab_di_final-i_vlipi =

              itab_di_final-i_vlipi / itab_di_final-i_txmoeda.

          itab_di_final-vlcofins =

              itab_di_final-vlcofins / itab_di_final-i_txmoeda.

          itab_di_final-i_vlicms =

              itab_di_final-i_vlicms / itab_di_final-i_txmoeda.

          itab_di_final-vlafrmm =

              itab_di_final-vlafrmm / itab_di_final-i_txmoeda.

          .

          itab_di_final-t_benef =

                     itab_di_final-i_vlii + itab_di_final-i_vlipi.

          itab_comp_vinc_final-qtd_stotal =

                                itab_comp_vinc_final-qtd_stotal -

                                           itab_di_final-qtd_vinc.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc_final-nrseqre

                   AND nrseq    = itab_comp_vinc_final-nrseq

                   AND codmat   = itab_comp_vinc_final-codmat

                   AND vbeln_va = itab_comp_vinc_final-vbeln_va

                   AND vbeln_vf = itab_comp_vinc_final-vbeln_vf

                   AND posnr    = itab_comp_vinc_final-posnr

                   AND codcomp  = itab_comp_vinc_final-codcomp

                   AND grupo    = itab_comp_vinc_final-grupo.

          itab_di_final-v_sel = 'X'.

          MOVE-CORRESPONDING itab_di_final TO wa_itab_di_final.

        ENDIF.

      ENDIF.

      APPEND itab_di_final.

      IF NOT wa_itab_di_final IS INITIAL.

        LOOP AT itab_di_final WHERE

         ( nrseqre  NE itab_det_exp-nrseqre      OR

           vbeln_va NE itab_det_exp-vbeln_va     OR

           vbeln_vf NE itab_det_exp-vbeln_vf     OR

           posnr    NE itab_det_exp-posnr        OR

           nrseq    NE itab_det_exp-nrseq        OR

           codmat   NE itab_det_exp-codmat )     AND

           docnum   EQ wa_itab_di_final-docnum   AND

           ebeln    EQ wa_itab_di_final-ebeln    AND

           ebelp    EQ wa_itab_di_final-ebelp     .

          itab_di_final-sdo_qtd  =

              itab_di_final-sdo_qtd - wa_itab_di_final-qtd_vinc.

          MODIFY itab_di_final.

        ENDLOOP.

      ENDIF.

    ENDIF.

  ENDIF.

ENDFORM.

FORM monta_nf.

  READ TABLE itab_di_final_aux WITH KEY

              nrseqre  = itab_comp_vinc_final-nrseqre

              nrseq    = itab_comp_vinc_final-nrseq

              codmat   = itab_comp_vinc_final-codmat

              vbeln_va = itab_comp_vinc_final-vbeln_va

              vbeln_vf = itab_comp_vinc_final-vbeln_vf

              posnr    = itab_comp_vinc_final-posnr

              docnum   = itab_j_1bnflin-docnum

              itmnum   = itab_j_1bnflin-itmnum.

  IF sy-subrc EQ 0.

    EXIT.

  ENDIF.

  READ TABLE itab_zycit260 WITH KEY

                              docnum = itab_j_1bnflin-docnum

                              itmnum = itab_j_1bnflin-itmnum.

  IF sy-subrc NE 0.

    READ TABLE itab_j_1bnfdoc WITH KEY

                              docnum = itab_j_1bnflin-docnum.

    IF sy-subrc NE 0.

      EXIT.

    ENDIF.

    READ TABLE itab_sel_doc WITH KEY

                              docnum = itab_j_1bnflin-docnum

                              itmnum = itab_j_1bnflin-itmnum.

    READ TABLE itab_rseg WITH KEY

                              belnr = itab_sel_doc-belnr

                              gjahr = itab_sel_doc-gjahr

                              buzei = itab_sel_doc-buzei.

    IF sy-subrc NE 0.

      EXIT.

    ENDIF.

    PERFORM converte_um_base USING itab_j_1bnflin-matnr

                          CHANGING itab_j_1bnflin-meins

                                   itab_j_1bnflin-menge.

    IF itab_j_1bnflin-menge IS INITIAL.

      DELETE itab_j_1bnflin WHERE

                            meins EQ itab_j_1bnflin-meins.

      EXIT.

    ENDIF.

    CLEAR wa_di.

    MOVE:

    /pws/zycie258-nrseqd          TO wa_di-nrseqd      ,

    itab_comp_vinc_final-codcomp  TO wa_di-codcomp     ,

    itab_comp_vinc_final-codmat   TO wa_di-codmat      ,

    itab_comp_vinc_final-nrseqre  TO wa_di-nrseqre     ,

    itab_comp_vinc_final-nrseq    TO wa_di-nrseq       ,

    itab_comp_vinc_final-vbeln_va TO wa_di-vbeln_va    ,

    itab_comp_vinc_final-vbeln_vf TO wa_di-vbeln_vf    ,

    itab_comp_vinc_final-posnr    TO wa_di-posnr       ,

    itab_rseg-ebeln               TO wa_di-ebeln       ,

    itab_rseg-ebelp               TO wa_di-ebelp       ,

    itab_j_1bnfdoc-nfnum          TO wa_di-nfnum       ,

    itab_j_1bnfdoc-series         TO wa_di-serie       ,

    itab_j_1bnfdoc-docdat         TO wa_di-dtnf        ,

    itab_j_1bnflin-docnum         TO wa_di-docnum      ,

    itab_j_1bnflin-grupo          TO wa_di-grupo       ,

    itab_j_1bnflin-desc_g         TO wa_di-desc_g      ,

    itab_j_1bnflin-itmnum         TO wa_di-itmnum      ,

    itab_j_1bnflin-nbm            TO wa_di-j_1bnbm     ,

    itab_j_1bnflin-meins          TO wa_di-meins       ,

    itab_j_1bnflin-menge          TO wa_di-qtd_di      ,

    itab_j_1bnflin-menge          TO wa_di-sdo_qtd     .

  ELSE.

    wa_di = itab_zycit260.

    wa_di-sdo_qtd = wa_di-qtd_di.

    LOOP AT itab_zycit260 WHERE docnum = itab_j_1bnflin-docnum

                            AND itmnum = itab_j_1bnflin-itmnum.

      wa_di-sdo_qtd = wa_di-sdo_qtd - itab_zycit260-qtd_vinc.

    ENDLOOP.

    IF wa_di-sdo_qtd <= 0.

      EXIT.

    ENDIF.

  ENDIF.

  LOOP AT itab_di_final WHERE docnum = itab_j_1bnflin-docnum

                          AND itmnum = itab_j_1bnflin-itmnum

                          AND qtd_vinc > 0.

    wa_di-sdo_qtd = wa_di-sdo_qtd - itab_di_final-qtd_vinc.

  ENDLOOP.

  IF wa_di-sdo_qtd > 0.

    IF itab_comp_vinc_final-qtd_stotal > 0 .

      IF itab_comp_vinc_final-qtd_stotal <= wa_di-sdo_qtd .

        wa_di-qtd_vinc = itab_comp_vinc_final-qtd_stotal.

        wa_di-sdo_qtd = wa_di-sdo_qtd -

                        itab_comp_vinc_final-qtd_stotal.

        itab_comp_vinc_final-qtd_stotal = 0.

      ELSE.

        itab_comp_vinc_final-qtd_stotal =

          itab_comp_vinc_final-qtd_stotal - wa_di-sdo_qtd.

        wa_di-qtd_vinc = wa_di-sdo_qtd.

        wa_di-sdo_qtd = 0.

      ENDIF.

      wa_di-v_sel = 'X'.

    ENDIF.

  ENDIF.

  itab_di_final = wa_di.

  APPEND itab_di_final.

  IF itab_di_final-sdo_qtd <> itab_di_final-qtd_di.

    MODIFY itab_di_final TRANSPORTING sdo_qtd

                          WHERE docnum = itab_j_1bnflin-docnum

                            AND itmnum = itab_j_1bnflin-itmnum.

  ENDIF.

ENDFORM.

FORM alt_transp.

  READ TABLE itab_res_imp WITH KEY marc_l = 'X'.

  IF sy-subrc EQ 0.

    IF /pws/zycit321-it_ge EQ 'X'.

      READ TABLE itab_di_final WITH KEY grupo = itab_res_imp-grupo.

    ELSE.

      READ TABLE itab_di_final WITH KEY codcomp = itab_res_imp-codcomp.

    ENDIF.

    IF itab_di_final-transp EQ 'X'.

      CLEAR itab_di_final-transp.

    ELSE.

      itab_di_final-transp = 'X'.

    ENDIF.

    IF /pws/zycit321-it_ge EQ 'X'.

      MODIFY itab_di_final TRANSPORTING transp

              WHERE grupo = itab_res_imp-grupo.

    ELSE.

      MODIFY itab_di_final TRANSPORTING transp

              WHERE codcomp = itab_res_imp-codcomp.

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064I01

 

...

                   AND nrseq    = itab_comp_vinc-nrseq

                   AND codmat   = itab_comp_vinc-codmat

                   AND vbeln_va = itab_comp_vinc-vbeln_va

                   AND vbeln_vf = itab_comp_vinc-vbeln_vf

                   AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp

                   and grupo    = itab_comp_vinc-grupo.

* << Fim da inclusão

          itab_comp_vinc_final-qtd_stotal = itab_comp_vinc-qtd_stotal.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc-nrseqre

                   AND nrseq    = itab_comp_vinc-nrseq

                   AND codmat   = itab_comp_vinc-codmat

                   AND vbeln_va = itab_comp_vinc-vbeln_va

                   AND vbeln_vf = itab_comp_vinc-vbeln_vf

                   AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp

                   and grupo    = itab_comp_vinc-grupo.

* << Fim da inclusão

          itab_di-v_sel = v_vsel.

          MODIFY itab_di INDEX tc_di3-current_line.

* >> Início da exclusão: MODULE TRATA_SELECAO

          LOOP AT itab_di_final.

            IF ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre  OR

                 itab_di_final-vbeln_va NE itab_det_exp-vbeln_va OR

                 itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf OR

                 itab_di_final-posnr    NE itab_det_exp-posnr    OR

                 itab_di_final-nrseq    NE itab_det_exp-nrseq    OR

                 itab_di_final-codmat   NE itab_det_exp-codmat )  AND

               ( itab_di_final-codcomp  EQ itab_comp_vinc-codcomp AND

                 itab_di_final-nrdi     EQ itab_di-nrdi           AND

                 itab_di_final-ebeln    EQ itab_di-ebeln          AND

                 itab_di_final-ebelp    EQ itab_di-ebelp          AND

                 itab_di_final-nrseqemb EQ itab_di-nrseqemb ).

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

          LOOP AT itab_di_final where

               ( nrseqre  NE itab_det_exp-nrseqre  OR

                 vbeln_va NE itab_det_exp-vbeln_va OR

                 vbeln_vf NE itab_det_exp-vbeln_vf OR

                 posnr    NE itab_det_exp-posnr    OR

                 nrseq    NE itab_det_exp-nrseq    OR

                 codmat   NE itab_det_exp-codmat ) AND

                 nrdi     EQ itab_di-nrdi          AND

                 ebeln    EQ itab_di-ebeln         AND

                 ebelp    EQ itab_di-ebelp         AND

                 nrseqemb EQ itab_di-nrseqemb .

* << Fim da inclusão

              itab_di_final-sdo_qtd  =

                               itab_di_final-sdo_qtd - itab_di-qtd_vinc.

              MODIFY itab_di_final.

* >> Início da exclusão: MODULE TRATA_SELECAO

            ENDIF.

* << Fim da exclusão

          ENDLOOP.

        ELSE.

          IF itab_comp_vinc-qtd_stotal < itab_di-sdo_qtd.

            itab_di-sdo_qtd =

                           itab_di-sdo_qtd - itab_comp_vinc-qtd_stotal.

...

 

...

                   AND nrseq    = itab_comp_vinc-nrseq

                   AND codmat   = itab_comp_vinc-codmat

                   AND vbeln_va = itab_comp_vinc-vbeln_va

                   AND vbeln_vf = itab_comp_vinc-vbeln_vf

                   AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp

                   and grupo    = itab_comp_vinc-grupo.

* << Fim da inclusão

          itab_comp_vinc_final-qtd_stotal = itab_comp_vinc-qtd_stotal.

          MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

                 WHERE nrseqre  = itab_comp_vinc-nrseqre

                   AND nrseq    = itab_comp_vinc-nrseq

                   AND codmat   = itab_comp_vinc-codmat

                   AND vbeln_va = itab_comp_vinc-vbeln_va

                   AND vbeln_vf = itab_comp_vinc-vbeln_vf

                   AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                   AND codcomp  = itab_comp_vinc-codcomp

                   and grupo    = itab_comp_vinc-grupo.

* << Fim da inclusão

          itab_di-v_sel = v_vsel.

          MODIFY itab_di INDEX tc_di3-current_line.

* >> Início da exclusão: MODULE TRATA_SELECAO

          LOOP AT itab_di_final.

            IF ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre  OR

                 itab_di_final-vbeln_va NE itab_det_exp-vbeln_va OR

                 itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf OR

                 itab_di_final-posnr    NE itab_det_exp-posnr    OR

                 itab_di_final-nrseq    NE itab_det_exp-nrseq    OR

                 itab_di_final-codmat   NE itab_det_exp-codmat )  AND

               ( itab_di_final-codcomp  EQ itab_comp_vinc-codcomp AND

                 itab_di_final-nrdi     EQ itab_di-nrdi           AND

                 itab_di_final-ebeln    EQ itab_di-ebeln          AND

                 itab_di_final-ebelp    EQ itab_di-ebelp          AND

                 itab_di_final-nrseqemb EQ itab_di-nrseqemb ).

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

          LOOP AT itab_di_final where

               ( nrseqre  NE itab_det_exp-nrseqre  OR

                 vbeln_va NE itab_det_exp-vbeln_va OR

                 vbeln_vf NE itab_det_exp-vbeln_vf OR

                 posnr    NE itab_det_exp-posnr    OR

                 nrseq    NE itab_det_exp-nrseq    OR

                 codmat   NE itab_det_exp-codmat ) AND

                 nrdi     EQ itab_di-nrdi          AND

                 ebeln    EQ itab_di-ebeln         AND

                 ebelp    EQ itab_di-ebelp         AND

                 nrseqemb EQ itab_di-nrseqemb .

* << Fim da inclusão

              itab_di_final-sdo_qtd  =

                               itab_di_final-sdo_qtd - itab_di-qtd_vinc.

              MODIFY itab_di_final.

* >> Início da exclusão: MODULE TRATA_SELECAO

            ENDIF.

* << Fim da exclusão

          ENDLOOP.

        ENDIF.

      ENDIF.

      IF v_vsel         EQ ' '             AND

         NOT itab_di-qtd_vinc IS INITIAL.

...

 

...

                 AND nrseq    = itab_comp_vinc-nrseq

                 AND codmat   = itab_comp_vinc-codmat

                 AND vbeln_va = itab_comp_vinc-vbeln_va

                 AND vbeln_vf = itab_comp_vinc-vbeln_vf

                 AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                 AND codcomp  = itab_comp_vinc-codcomp.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                 AND codcomp  = itab_comp_vinc-codcomp

                 and grupo    = itab_comp_vinc-grupo.

* << Fim da inclusão

        itab_comp_vinc_final-qtd_stotal = itab_comp_vinc-qtd_stotal.

        MODIFY itab_comp_vinc_final TRANSPORTING qtd_stotal

               WHERE nrseqre  = itab_comp_vinc-nrseqre

                 AND nrseq    = itab_comp_vinc-nrseq

                 AND codmat   = itab_comp_vinc-codmat

                 AND vbeln_va = itab_comp_vinc-vbeln_va

                 AND vbeln_vf = itab_comp_vinc-vbeln_vf

                 AND posnr    = itab_comp_vinc-posnr

* >> Início da exclusão: MODULE TRATA_SELECAO

                 AND codcomp  = itab_comp_vinc-codcomp.

        LOOP AT itab_di_final.

          IF ( itab_di_final-nrseqre  NE itab_det_exp-nrseqre  OR

               itab_di_final-vbeln_va NE itab_det_exp-vbeln_va OR

               itab_di_final-vbeln_vf NE itab_det_exp-vbeln_vf OR

               itab_di_final-posnr    NE itab_det_exp-posnr    OR

               itab_di_final-nrseq    NE itab_det_exp-nrseq    OR

               itab_di_final-codmat   NE itab_det_exp-codmat )  AND

             ( itab_di_final-codcomp  EQ itab_comp_vinc-codcomp AND

               itab_di_final-nrdi     EQ itab_di-nrdi           AND

               itab_di_final-ebeln    EQ itab_di-ebeln          AND

               itab_di_final-ebelp    EQ itab_di-ebelp          AND

               itab_di_final-nrseqemb EQ itab_di-nrseqemb ).

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

                 AND codcomp  = itab_comp_vinc-codcomp

                 and grupo    = itab_comp_vinc-grupo.

          LOOP AT itab_di_final where

               ( nrseqre  NE itab_det_exp-nrseqre  OR

                 vbeln_va NE itab_det_exp-vbeln_va OR

                 vbeln_vf NE itab_det_exp-vbeln_vf OR

                 posnr    NE itab_det_exp-posnr    OR

                 nrseq    NE itab_det_exp-nrseq    OR

                 codmat   NE itab_det_exp-codmat ) AND

                 nrdi     EQ itab_di-nrdi          AND

                 ebeln    EQ itab_di-ebeln         AND

                 ebelp    EQ itab_di-ebelp         AND

                 nrseqemb EQ itab_di-nrseqemb .

* << Fim da inclusão

            itab_di_final-sdo_qtd  =

                             itab_di_final-sdo_qtd + itab_di-qtd_vinc.

            MODIFY itab_di_final.

* >> Início da exclusão: MODULE TRATA_SELECAO

          ENDIF.

* << Fim da exclusão

        ENDLOOP.

        itab_di-sdo_qtd = itab_di-sdo_qtd + itab_di-qtd_vinc.

        itab_di-qtd_vinc = itab_di-qtd_vinc - itab_di-qtd_vinc.

        itab_di-vlfrete_t = itab_di-vlfrete * itab_di-qtd_vinc.

        itab_di-vlseg_t = itab_di-vlseg * itab_di-qtd_vinc.

...

 

...

                               CHANGING itab_di-i_vlicms.

        itab_di-t_benef = itab_di-i_vlii + itab_di-i_vlipi.

        itab_di-v_sel = v_vsel.

        MODIFY itab_di INDEX tc_di3-current_line.

      ENDIF.

* >> Início da exclusão: MODULE TRATA_SELECAO

      LOOP AT itab_di_final.

        IF itab_di_final-nrseqre  = itab_det_exp-nrseqre   AND

           itab_di_final-vbeln_va = itab_det_exp-vbeln_va  AND

           itab_di_final-vbeln_vf = itab_det_exp-vbeln_vf  AND

           itab_di_final-posnr    = itab_det_exp-posnr     AND

           itab_di_final-nrseq    = itab_det_exp-nrseq     AND

           itab_di_final-codmat   = itab_det_exp-codmat    AND

           itab_di_final-codcomp  = itab_comp_vinc-codcomp AND

           itab_di_final-nrdi     = itab_di-nrdi           AND

           itab_di_final-ebeln    = itab_di-ebeln          AND

           itab_di_final-ebelp    = itab_di-ebelp          AND

           itab_di_final-nrseqemb = itab_di-nrseqemb.

* << Fim da exclusão

* >> Início da inclusão: MODULE TRATA_SELECAO

      LOOP AT itab_di_final where

                nrseqre  = itab_det_exp-nrseqre   AND

                vbeln_va = itab_det_exp-vbeln_va  AND

                vbeln_vf = itab_det_exp-vbeln_vf  AND

                posnr    = itab_det_exp-posnr     AND

                nrseq    = itab_det_exp-nrseq     AND

                codmat   = itab_det_exp-codmat    AND

                nrdi     = itab_di-nrdi           AND

                ebeln    = itab_di-ebeln          AND

                ebelp    = itab_di-ebelp          AND

                nrseqemb = itab_di-nrseqemb.

* << Fim da inclusão

          itab_di_final-v_sel       = itab_di-v_sel  .

          itab_di_final-sdo_qtd     = itab_di-sdo_qtd .

          itab_di_final-qtd_vinc    = itab_di-qtd_vinc.

          itab_di_final-vlseg_t     = itab_di-vlseg_t.

          itab_di_final-vlfrete_t   = itab_di-vlfrete_t.

...

 

...

          itab_di_final-i_vlii      = itab_di-i_vlii.

          itab_di_final-i_vlipi     = itab_di-i_vlipi.

          itab_di_final-i_vlicms    = itab_di-i_vlicms.

          itab_di_final-t_benef     = itab_di-t_benef.

          MODIFY itab_di_final.

* >> Início da exclusão: MODULE TRATA_SELECAO

        ENDIF.

* << Fim da exclusão

      ENDLOOP.

    ENDIF.

  ENDIF.

  LOOP AT itab_di_final.

    v_tabix = sy-tabix.

...

 

...

      DESCRIBE TABLE itab_res_imp LINES v_ilinhas.

      PERFORM blaettern

              USING tc_res_imp3-current_line 11 v_ilinhas ok_code3

              CHANGING nextline.

      tc_res_imp3-top_line = nextline.

* >> Início da inclusão: MODULE USER_COMMAND_0307

    WHEN 'TRANSP'.

      perform alt_transp.

* << Fim da inclusão

  ENDCASE.

ENDMODULE.

MODULE user_command_0308 INPUT.

  CASE ok_code3.

    WHEN 'P-'.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064O01

 

...

      PERFORM check_fields_screen_0308.

    WHEN '0309'.

      PERFORM check_fields_screen_0309.

    WHEN '0310'.

      PERFORM check_fields_screen_0310.

* >> Início da exclusão: MODULE SET_SCREEN3

    WHEN '0311'.

* << Fim da exclusão

* >> Início da inclusão: MODULE SET_SCREEN3

    WHEN '0311' OR '0321'.

* << Fim da inclusão

      PERFORM check_fields_screen_0311.

    WHEN '0316'.

      PERFORM check_fields_screen_0316.

  ENDCASE.

ENDMODULE.

...

 

...

  /pws/zycie259-stlan    = itab_resumo-stlan   .

  /pws/zycie259-stlnr    = itab_resumo-stlnr   .

  /pws/zycie259-stlal    = itab_resumo-stlal   .

  /pws/zycie259-qtd_iten = itab_resumo-qtd_iten.

  /pws/zycie259-vlfob    = itab_resumo-vlfob   .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0303

  /pws/zycie259-waersfob = itab_resumo-waersfob.

  /pws/zycie259-meins    = itab_resumo-meins   .

* << Fim da inclusão

  v_dtpre           = itab_resumo-dtpre   .

  v_dture           = itab_resumo-dture   .

  marc_l            = itab_resumo-marc_l  .

ENDMODULE.

MODULE trata_screen_0303 OUTPUT.

...

 

...

  ts_vcomp3-activetab = pressed_tab_3c_4.

ENDMODULE.

MODULE preenche_estrutura_0309 OUTPUT.

  /pws/zycie261-codcomp   = itab_comp_vinc-codcomp  .

  /pws/zycie261-qtd_iten  = itab_comp_vinc-qtd_iten .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0309

  /pws/zycie261-grupo   = itab_comp_vinc-grupo  .

  /pws/zycie261-desc_g  = itab_comp_vinc-desc_g .

* << Fim da inclusão

  /pws/zycie261-qtd_total = itab_comp_vinc-qtd_total -

                            itab_comp_vinc-qtd_stotal.

  /pws/zycie261-meins = itab_comp_vinc-meins.

  v_qtd_orig3    =  itab_comp_vinc-qtd_orig.

  marc_cp            = itab_comp_vinc-marc_cp  .

...

 

...

MODULE preenche_estrutura_0310 OUTPUT.

  /pws/zycie260c-nrdi     = itab_di-nrdi    .

  /pws/zycie260c-dtdi     = itab_di-dtdi    .

  /pws/zycie260c-ebeln    = itab_di-ebeln   .

  /pws/zycie260c-ebelp    = itab_di-ebelp   .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0310

  /pws/zycie260c-codcomp  = itab_di-codcomp .

  /pws/zycie260c-waers    = itab_di-waers   .

  /pws/zycie260c-netpr    = itab_di-netpr   .

* << Fim da inclusão

  /pws/zycie260c-adicao   = itab_di-adicao  .

  /pws/zycie260c-meins    = itab_di-meins   .

  /pws/zycie260c-qtd_di   = itab_di-qtd_di  .

  /pws/zycie260c-sdo_qtd  = itab_di-sdo_qtd .

  /pws/zycie260c-qtd_vinc = itab_di-qtd_vinc.

...

 

...

                                 AND nrseq    = itab_det_exp-nrseq

                                 AND vbeln_va = itab_det_exp-vbeln_va

                                 AND vbeln_vf = itab_det_exp-vbeln_vf

                                 AND posnr    = itab_det_exp-posnr

                                 AND codmat   = itab_det_exp-codmat.

* >> Início da inclusão: MODULE TRATA_SCREEN_0304

    ENDIF.

* << Fim da inclusão

    ENDIF.

* >> Início da inclusão: MODULE TRATA_SCREEN_0304

  IF NOT itab_det_exp-nrseqc IS INITIAL.

    v_ico_t = '@KY@'.

  ELSEIF NOT itab_det_exp-nrseq IS INITIAL.

    v_ico_t = '@KW@'.

  ELSE.

    v_ico_t = '@KX@'.

* << Fim da inclusão

  ENDIF.

  IF NOT itab_det_exp[] IS INITIAL AND

     v_vtc = 'P'.

    v_ico_det3 = '@5D@'.

  ELSE.

...

 

...

  /pws/zycie260c-nrdi         = itab_det_imp-nrdi        .

  /pws/zycie260c-reg_di       = itab_det_imp-reg_di      .

  /pws/zycie260c-ebeln        = itab_det_imp-ebeln       .

  /pws/zycie260c-ebelp        = itab_det_imp-ebelp       .

  /pws/zycie260c-adicao       = itab_det_imp-adicao      .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0308

  /pws/zycie260c-codcomp      = itab_det_imp-codcomp     .

* << Fim da inclusão

  /pws/zycie260c-j_1bnbm      = itab_det_imp-j_1bnbm     .

  /pws/zycie260c-nfnum        = itab_det_imp-nfnum       .

  /pws/zycie260c-serie        = itab_det_imp-serie       .

  /pws/zycie260c-werks        = itab_det_imp-werks       .

  /pws/zycie260c-dtnf         = itab_det_imp-dtnf        .

...

 

...

ENDMODULE.

MODULE preenche_estrutura_0307 OUTPUT.

  /pws/zycie260-codcomp  = itab_res_imp-codcomp .

  /pws/zycie260-qtd_di   = itab_res_imp-qtd_di  .

  /pws/zycie260-qtd_vinc = itab_res_imp-qtd_vinc.

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0307

  /pws/zycie260-meins    = itab_res_imp-meins.

* << Fim da inclusão

  /pws/zycie260-vlfob_t  = itab_res_imp-vlfob   .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0307

  /pws/zycie260-waers  = itab_res_imp-waers   .

* << Fim da inclusão

  v_dtpdi           = itab_res_imp-dtpdi   .

  v_dtudi           = itab_res_imp-dtudi   .

  marci_l           = itab_res_imp-marc_l  .

* >> Início da inclusão: MODULE PREENCHE_ESTRUTURA_0307

  /pws/zycie260-grupo    = itab_res_imp-grupo   .

  /pws/zycie260-desc_g   = itab_res_imp-desc_g  .

  /pws/zycie260-waers    = itab_res_imp-waers   .

  IF /pws/zycit321-it_ge EQ 'X'.

    READ TABLE itab_di_final WITH KEY

                             grupo = itab_res_imp-grupo.

  ELSE.

    READ TABLE itab_di_final WITH KEY

                             codcomp = itab_res_imp-codcomp.

  ENDIF.

  IF itab_di_final-transp EQ 'X'.

    v_ico_det3 = '@5B@'.

  ELSE.

    v_ico_det3 = '@5C@'.

  ENDIF.

* << Fim da inclusão

ENDMODULE.

MODULE trata_screen_0307 OUTPUT.

  SELECT maktx UP TO 1 ROWS FROM makt INTO v_descr1_0307

         WHERE matnr = /pws/zycie260-codcomp

           AND spras = sy-langu.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064TOP2

 

...

DATA: BEGIN OF itab_ekpo OCCURS 0.

        INCLUDE STRUCTURE ekpo     .

DATA: END OF itab_ekpo           .

DATA: BEGIN OF itab_zycit279 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit279.

* >> Início da inclusão:

data: grupo type /pws/zycit433-grupo.

* << Fim da inclusão

DATA: END OF itab_zycit279.

DATA: BEGIN OF itab_zycit329 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit329.

DATA: END OF itab_zycit329.

DATA: BEGIN OF itab_zycit330 OCCURS 0.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064TOP3

 

...

      v_tbenef_0303     LIKE /pws/zycie260d-t_benef           ,

      v_errolog3(135)   TYPE c                                ,

      v_tabix           LIKE sy-tabix                         ,

      v_cent_ei         TYPE /pws/zycit260-werks              ,

      V_DESC_AGR(35)    TYPE c                                ,

* >> Início da exclusão:

      V_NCENT(35)       TYPE c                                .

* << Fim da exclusão

* >> Início da inclusão:

      v_ncent(35)       TYPE c                                ,

      v_verif_v         TYPE c,

      v_ico_t           TYPE icon-id                     .

* << Fim da inclusão

DATA: BEGIN OF itab_cent_ei OCCURS 0.

DATA: werks TYPE /pws/zycit260-werks.

DATA: END OF itab_cent_ei .

DATA: BEGIN OF itab_botoes3 OCCURS 0.

DATA: bname(20) TYPE c        .

DATA: END OF itab_botoes3           .

DATA: BEGIN OF itab_res_imp OCCURS 0,

* >> Início da exclusão:

        codcomp   LIKE /pws/zycie260-codcomp ,

        qtd_di    LIKE /pws/zycie260-qtd_di  ,

        qtd_vinc  LIKE /pws/zycie260-qtd_vinc,

        vlfob     LIKE /pws/zycie260-vlfob_t ,

        dtpdi     LIKE /pws/zycie260-dtdi    ,

        dtudi     LIKE /pws/zycie260-dtdi    ,

* << Fim da exclusão

* >> Início da inclusão:

        codcomp   TYPE /pws/zycie260-codcomp ,

        qtd_di    TYPE /pws/zycie260-qtd_di  ,

        qtd_vinc  TYPE /pws/zycie260-qtd_vinc,

        vlfob     TYPE /pws/zycie260-vlfob_t ,

        dtpdi     TYPE /pws/zycie260-dtdi    ,

        dtudi     TYPE /pws/zycie260-dtdi    ,

        grupo     TYPE /pws/zycit433-grupo   ,

        desc_g    TYPE /pws/zycit433-desc_g  ,

        waers     TYPE /pws/zycit260-waers   ,

        meins     TYPE /pws/zycit260-meins   ,

* << Fim da inclusão

        marc_l(1) TYPE c                ,

      END OF itab_res_imp.

DATA: BEGIN OF itab_det_imp OCCURS 0.

        INCLUDE STRUCTURE /pws/zycie260.

DATA: um_ncm  LIKE /pws/zycit245-meins,

...

 

...

      centro  LIKE stpox-werks,

      ncm     LIKE marc-steuc,

      qtunit  TYPE p DECIMALS 5,

      meins   LIKE stpox-meins.

DATA: END OF i_final.

* >> Início da inclusão:

DATA: itab_zycit472 TYPE /pws/zycit472 OCCURS 0 WITH HEADER LINE,

      itab_zycit473 TYPE /pws/zycit473 OCCURS 0 WITH HEADER LINE.

DATA: BEGIN OF itab_sel_vbfa OCCURS 0.

DATA: vbeln TYPE vbfa-vbeln,

      posnn TYPE vbfa-posnn.

DATA: END OF itab_sel_vbfa.

DATA : BEGIN OF itab_nota_c OCCURS 0  .

DATA : docnum     TYPE  j_1bnfdoc-docnum  ,

       docdat     TYPE   j_1bnfdoc-docdat ,

       parid      TYPE   j_1bnfdoc-parid  ,

       nfnum      TYPE   j_1bnfdoc-nfnum  ,

       series     TYPE   j_1bnfdoc-series ,

       refkey     TYPE   j_1bnflin-refkey ,

       refitm     TYPE   j_1bnflin-refitm ,

       menge      TYPE   j_1bnflin-menge  ,

       meins      TYPE   j_1bnflin-meins  ,

       netpr      TYPE   j_1bnflin-netpr  ,

       netwr      TYPE   j_1bnflin-netwr  ,

       werks      TYPE   j_1bnflin-werks  ,

       cfop       TYPE   j_1bnflin-cfop   ,

       nbm        TYPE   j_1bnflin-nbm    ,

       matnr      TYPE   j_1bnflin-matnr  ,

       itmnum     TYPE   j_1bnflin-itmnum ,

       netfre     TYPE   j_1bnflin-netfre ,

       netins     TYPE   j_1bnflin-netins ,

       waers      TYPE   j_1bnfdoc-waerk  .

DATA : END OF itab_nota_c   .

DATA: BEGIN OF itab_vbfa_1 OCCURS 0.

        INCLUDE STRUCTURE itab_vbfa.

DATA: ntgew TYPE vbfa-ntgew,

      brgew TYPE vbfa-brgew,

      gewei TYPE vbfa-gewei.

DATA: END OF itab_vbfa_1.

DATA: itab_zycit433 TYPE /pws/zycit433  OCCURS 0 WITH HEADER LINE.

DATA: v_found(1) TYPE c,

      v_vlreali LIKE /pws/zycit100-vlfob,

      v_fator_conv LIKE /pws/zycit100-vlfob.

DATA: BEGIN OF itab_insumo_di OCCURS 0.

DATA: matnr LIKE  mara-matnr.

DATA: END OF itab_insumo_di.

DATA: itab_zycit003_t2 TYPE /pws/zycit003 OCCURS 0 WITH HEADER LINE,

      itab_zycit244 TYPE /pws/zycit244 OCCURS 0 WITH HEADER LINE.

DATA: itab_ekpo_sort     LIKE ekpo          OCCURS 0 WITH HEADER LINE.

DATA: itab_comp_sort3 LIKE itab_comp_vinc_final

                                    OCCURS 0 WITH HEADER LINE.

DATA BEGIN OF itab_zycit100_sort OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit100.

DATA: matnr LIKE /pws/zycit003-matnr,

      grupo TYPE /pws/zycit433-grupo.

DATA: END OF itab_zycit100_sort.

DATA: itab_rseg LIKE rseg OCCURS 0 WITH HEADER LINE.

DATA: wa_di LIKE itab_di_final.

DATA: BEGIN OF itab_insumo_nf OCCURS 0.

DATA: matnr LIKE /pws/zycit003-matnr.

DATA: END OF itab_insumo_nf.

DATA: BEGIN OF itab_sel_doc OCCURS 0.

DATA: belnr  LIKE rseg-belnr ,

      gjahr  LIKE rseg-gjahr ,

      buzei  LIKE rseg-buzei ,

      docnum LIKE j_1bnflin-docnum,

      itmnum LIKE j_1bnflin-itmnum.

DATA: END OF itab_sel_doc.

DATA: itab_j_1bnflin_sort LIKE j_1bnflin

                                    OCCURS 0 WITH HEADER LINE.

* << Fim da inclusão

DATA: wa_zycit258      LIKE /pws/zycie258     ,

      wa_itab_det_exp  LIKE itab_det_exp ,

      wa_cols3         TYPE cxtab_column ,

      wa_itab_di_final LIKE itab_di_final.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI064X01

 

...

        dture     LIKE /pws/zycie259-dtre    ,

        werks     LIKE /pws/zycie259-werks   ,

        stlan     LIKE /pws/zycie259-stlan   ,

        stlnr     LIKE /pws/zycie259-stlnr   ,

        stlal     LIKE /pws/zycie259-stlal   ,

* >> Início da inclusão:

        waersfob  type /pws/zycie259-waersfob,

        meins     type /pws/zycie259-meins   ,

* << Fim da inclusão

        marc_l(1) TYPE c                ,

      END OF itab_resumo.

DATA: BEGIN OF itab_re_final OCCURS 0.

DATA: nrseqre     LIKE /pws/zycet116-nrseqre ,

      nrre        LIKE /pws/zycet116-nrre    ,

...

 

...

      vtweg       type mvke-vtweg            .

      .

DATA: END OF itab_re_final.

DATA: BEGIN OF itab_j_1bnflin OCCURS 0.

        INCLUDE STRUCTURE j_1bnflin     .

* >> Início da inclusão:

data: grupo type /pws/zycit433-grupo    ,

      desc_g type /pws/zycit433-desc_g.

* << Fim da inclusão

DATA: END OF itab_j_1bnflin           .

DATA: BEGIN OF itab_j_1bnfdoc OCCURS 0.

        INCLUDE STRUCTURE j_1bnfdoc     .

DATA: END OF itab_j_1bnfdoc           .

DATA: BEGIN OF itab_zycet001 OCCURS 0.

...

 

...

DATA: meins LIKE /pws/zycit245-meins,

      matnr LIKE /pws/zycit003-matnr.

DATA: END OF itab_mess_un.

  DATA: END OF COMMON PART.

SELECTION-SCREEN BEGIN OF SCREEN 0312 AS WINDOW TITLE text-098.

* >> Início da exclusão:

SELECT-OPTIONS p_matnr FOR mara-matnr.

* << Fim da exclusão

* >> Início da inclusão:

SELECT-OPTIONS p_matnr FOR mara-matnr obligatory.

* << Fim da inclusão

PARAMETERS: p_dtexp1 LIKE /pws/zycee116-dtincl,

            p_dtexp2 LIKE /pws/zycee116-dtincl.

SELECTION-SCREEN END OF SCREEN 0312.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPT /PWS/SAPMZYCI064

 

------------------------------------------------------------------------

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 294

 

Texto: (48 caracteres)

"não esta cadastrado na tabela de itens genéricos"

 

Comprimento máximo: 48

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE258

 

Nome campo Elem.dados    Tab.verif.    N CtDt Comp. Grupo

...

LIFNR      ELIFN         LFA1            CHAR    10

CODAGRUP   /PWS/ZYCIL613 /PWS/ZYCIT395   CHAR     3

*Inicio da Inclusão:

DTPR       DATUM                         DATS     8

*Fim da Inclusão.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE259

 

Nome campo Elem.dados     Tab.verif. N CtDt Comp. Grupo

 

...

VBELN_VF   VBELN_VF                    CHAR    10

POSNR      POSNR                       NUMC     6

*Inicio da Inclusão:

NRSEQC     /PWS/ZYCIL230               CHAR    10

*Fim da Inclusão:

J_1BNBM    J_1BNBMCO1     T604F        CHAR    16

NFNUM      J_1BNFNUMB                  NUMC     6

...

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE259C

 

Nome campo Elem.dados     Tab.verif. N CtDt Comp. Grupo

...

VBELN_VF   VBELN_VF                    CHAR    10

POSNR      POSNR                       NUMC     6

*Inicio da Inclusão:

NRSEQC     /PWS/ZYCIL230               CHAR    10

*Fim da Inclusão:

J_1BNBM    J_1BNBMCO1     T604F        CHAR    16

NFNUM      J_1BNFNUMB                  NUMC     6

...

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE259D

 

Nome campo Elem.dados     Tab.verif. N CtDt Comp. Grupo

...

VBELN_VF   VBELN_VF                    CHAR    10

POSNR      POSNR                       NUMC     6

*Inicio da Inclusão:

NRSEQC     /PWS/ZYCIL230               CHAR    10

*Fim da Inclusão:

J_1BNBM    J_1BNBMCO1     T604F        CHAR    16

NFNUM      J_1BNFNUMB                  NUMC     6

...

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE260

 

Nome campo   Elem.dados    Tab.verif. N CtDt Comp. Grupo

...

ITMNUM       J_1BITMNUM                 NUMC     6

LOTE         LICHN                      CHAR    15

*Inicio da Inclusão:

NRSEQC       /PWS/ZYCIL230              CHAR    10

*Fim da Inclusão:

REG_DI       /PWS/ZYCIL299              CHAR    11

ADICAO       /PWS/ZYCIL267              NUMC     3

...

VALOR_U      /PWS/ZYCIL128              DEC     20

WERKS        WERKS_D                    CHAR     4

*Inicio da Inclusão:

GRUPO        CHAR4                      CHAR     4

DESC_G       MAKTX                      CHAR    40

TRANSP       CHAR1                      CHAR     1

*Fim da Inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE260C

 

Nome campo   Elem.dados    Tab.verif. N CtDt Comp. Grupo

...

ITMNUM       J_1BITMNUM                 NUMC     6

LOTE         LICHN                      CHAR    15

*Inicio da Inclusão:

NRSEQC       /PWS/ZYCIL230              CHAR    10

*Fim da Inclusão:

REG_DI       /PWS/ZYCIL299              CHAR    11

ADICAO       /PWS/ZYCIL267              NUMC     3

...

VALOR_U      /PWS/ZYCIL128              DEC     20

WERKS        WERKS_D                    CHAR     4

*Inicio da Inclusão:

GRUPO        CHAR4                      CHAR     4

DESC_G       MAKTX                      CHAR    40

TRANSP       CHAR1                      CHAR     1

*Fim da Inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE260D

 

Nome campo   Elem.dados    Tab.verif. N CtDt Comp. Grupo

...

ITMNUM       J_1BITMNUM                 NUMC     6

LOTE         LICHN                      CHAR    15

*Inicio da Inclusão:

NRSEQC       /PWS/ZYCIL230              CHAR    10

*Fim da Inclusão:

REG_DI       /PWS/ZYCIL299              CHAR    11

ADICAO       /PWS/ZYCIL267              NUMC     3

...

VALOR_U      /PWS/ZYCIL128              DEC     20

WERKS        WERKS_D                    CHAR     4

*Inicio da Inclusão:

GRUPO        CHAR4                      CHAR     4

DESC_G       MAKTX                      CHAR    40

TRANSP       CHAR1                      CHAR     1

*Fim da Inclusão

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE261

 

Nome campo Elem.dados    Tab.verif. N CtDt Comp. Grupo

...

VBELN_VL   VBELN_VL                   CHAR    10

POSNL      POSNR_VL                   NUMC     6

*Inicio da Inclusão:

NRSEQC     /PWS/ZYCIL230              CHAR    10

GRUPO      CHAR4                      CHAR     4

*Fim da Inclusão.

MEINS      BSTME         T006         UNIT     3

QTD_ITEN   /PWS/ZYCIL473              QUAN    23

QTD_TOTAL  /PWS/ZYCIL473              QUAN    23

QTD_STOTAL /PWS/ZYCIL473              QUAN    23

*Inicio da Inclusão:

DESC_G     MAKTX                      CHAR    40

*Fim da Inclusão.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIE261C

 

Nome campo Elem.dados    Tab.verif. N CtDt Comp. Grupo

...

VBELN_VL   VBELN_VL                   CHAR    10

POSNL      POSNR_VL                   NUMC     6

*Inicio da Inclusão:

NRSEQC     /PWS/ZYCIL230              CHAR    10

GRUPO      CHAR4                      CHAR     4

*Fim da Inclusão.

MEINS      BSTME         T006         UNIT     3

QTD_ITEN   /PWS/ZYCIL473              QUAN    23

QTD_TOTAL  /PWS/ZYCIL473              QUAN    23

QTD_STOTAL /PWS/ZYCIL473              QUAN    23

*Inicio da Inclusão:

DESC_G     MAKTX                      CHAR    40

*Fim da Inclusão.

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT258

 

Nome campo Chv Elem.dados    Tab.verif. N CtDt Comp. Grupo

 

...

LIFNR          ELIFN                      CHAR    10

CODAGRUP       /PWS/ZYCIL613              CHAR     3

*Inicio da Inclusão:

DTPR           DATUM                      DATS     8

*Fim da Inclusão:

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT259

 

Nome campo Chv Elem.dados     Tab.verif. N CtDt Comp. Grupo

 

...

VBELN_VF   X   VBELN_VF                  X CHAR    10

POSNR      X   POSNR                     X NUMC     6

*Inicio da Inclusão:

NRSEQC     X   /PWS/ZYCIL230             X CHAR    10

*Fim da Inclusão:

J_1BNBM        J_1BNBMCO1                  CHAR    16

NFNUM          J_1BNFNUMB                  NUMC     6

 

 

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT260

 

Nome campo   Chv Elem.dados    Tab.verif. N CtDt Comp. Grupo

 

...

ITMNUM       X   J_1BITMNUM               X NUMC     6

LOTE         X   LICHN                    X CHAR    15

*Inicio da Inclusão:

NRSEQC       X   /PWS/ZYCIL230            X CHAR    10

*Fim da Inclusão:

REG_DI           /PWS/ZYCIL299              CHAR    11

ADICAO           /PWS/ZYCIL267              NUMC     3

...

VALOR_U          /PWS/ZYCIL128              DEC     20

WERKS            WERKS_D                    CHAR     4

*Inicio da Inclusão:

GRUPO            CHAR4                      CHAR     4

DESC_G           MAKTX                      CHAR    40

TRANSP           CHAR1                      CHAR     1

*Fim da Inclusão:

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT261

 

Nome campo Chv Elem.dados    Tab.verif. N CtDt Comp. Grupo

 

...

VBELN_VL   X   VBELN_VL                 X CHAR    10

POSNL      X   POSNR_VL                 X NUMC     6

*Inicio da Inclusão:

NRSEQC     X   /PWS/ZYCIL230            X CHAR    10

GRUPO      X   CHAR4                    X CHAR     4

*Fim da Inclusão:

MEINS          BSTME                      UNIT     3

QTD_ITEN       /PWS/ZYCIL473              QUAN    23

QTD_TOTAL      /PWS/ZYCIL473              QUAN    23

QTD_STOTAL     /PWS/ZYCIL473              QUAN    23

*Inicio da Inclusão:

DESC_G         MAKTX                      CHAR    40

*Fim da Inclusão:

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABD /PWS/ZYCIT321

 

Nome campo  Chv Elem.dados     Tab.verif. N CtDt Comp. Grupo

 

...

C_COMUM         /PWS/ZYCIL839               CHAR     1

LOTE            /PWS/ZYCIL840               CHAR     1

*Inicio da Inclusão:

IT_GE           /PWS/ZYCIL843               CHAR     1

*Fim da Inclusão:

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABL /PWS/ZYCIT472

*Criar Tabela:

*Características gerais:

 

Nome da tabela:     /PWS/ZYCIT472

Descrição breve:    CI - CFOP para Vendas para Trading Company

Ctg.tabela:         Tabela transparente

Arm.bff.permitido:

AtualTab.permitida: X

Classe de entrega:  A

 

 

*Campos:

 

Nome campo Chv Elem.dados Tab.verif. N CtDt Comp. Grupo

 

MANDT      X   MANDT                 X CLNT     3

CFOP       X   J_1BCFOP   J_1BAG     X CHAR     7

DESCR          TEXT45                  CHAR    45

 

 

*Chave externa

 

Nome de campo:      CFOP

Tabela verificação: J_1BAG

Grau dependência:

Cardinalidade:

Sem verificação:

Descrição breve:

Área funcional:

Mensagem:

 

     Tabela chave externa Cpo.chave externa Tab.verif. Nome de campo

 

     /PWS/ZYCIT472        MANDT             J_1BAG     MANDT

     /PWS/ZYCIT472        CFOP              J_1BAG     CFOP

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em TABL /PWS/ZYCIT473

 

*Características gerais:

 

Nome da tabela:     /PWS/ZYCIT473

Descrição breve:    CI - Clientes(Vendas Tading Compani)

Ctg.tabela:         Tabela transparente

Arm.bff.permitido:

AtualTab.permitida: X

Classe de entrega:  A

 

 

 

*Campos:

 

Nome campo Chv Elem.dados Tab.verif. N CtDt Comp. Grupo

 

MANDT      X   MANDT                 X CLNT     3

KUNNR      X   KUNNR                 X CHAR    10