CE PLUS - Nota 001373

Módulo: DRAWBACK

Funcionalidade: Apropriação

Data/Hora da Publicação: 19/05/2006 00:00:00

Data/Hora Última Alteração: 17/02/2011 13:48:56

Descrição da Nota: DESENVOLVIMENTO DA APROPRIAÇÃO/DESAP. COMUM/INTERMEDIARIO POR NCM

Sintoma

Desenvolvimento do programa de apropriação/desapropriação Comum/Intermediario por ncm

 

 

Solução

Desenvolvimento do programa de apropriação/desapropriação Comum/Intermediario por ncm

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 01373 Data: 19/05/2006 Hora: 08:32:11

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

 

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

Nota Número              : 01373

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00023

Agrupamento              : 00114

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

DESENVOLVIMENTO DA APROPRIAÇÃO/DESAP. COMUM/INTERMEDIARIO POR NCM

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

Palavras Chave:

APROPRIAÇÃO - DESAPROPRIAÇÃO - COMUM - INTERMEDIARIO

/PWS/ZYCIR254

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

Objetos da nota:

DOMD /PWS/ZYCID170

DTED /PWS/ZYCIL817

PROG /PWS/ZYCIR254

PROG /PWS/ZYCIR254F01

PROG /PWS/ZYCIR254I01

PROG /PWS/ZYCIR254O01

REPS /PWS/ZYCIR254

REPS /PWS/ZYCIR254F01

 

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

Modificações efetuadas em DOMD /PWS/ZYCID170

 

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

Domínio modificado: /PWS/ZYCID170

-Valores individuais

Modificado valor fixo "G"

Texto modificado, idioma: PT (38 caracteres):

"Base dos saldos dos insumos importados"

 

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

Modificações efetuadas em DTED /PWS/ZYCIL817

 

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

Elemento de dados modificado: /PWS/ZYCIL817

Descrição breve modificada (49 caracteres), idioma: PT

"GL - Método de Apropriação insumos intermediarios"

Denominador breve modificado (10 caracteres), idioma: PT

"Apr interm"

Denominador médio modificado (14 caracteres), idioma: PT

"Método Apr int"

Denominador longo modificado (28 caracteres), idioma: PT

"Método Apropr. Intermediario"

Título modificado (28 caracteres), idioma: PT

"Método Apropr. Intermediario"

 

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

Modificações efetuadas em PROG /PWS/ZYCIR254

 

****************************Status GUI: 0003

*Definição das teclas de funções:

Código de função        CANCE

Categoria de função        Função de aplicação

Texto de função      Cancelar

Nome de ícone        ICON_CANCEL

 

 

 

****************************Status GUI: ST0001

*Teclas de função:

F2                             SELE       Selecionar

F5                             APROP      Apropriar

F6                             MALL       Marcar

F7                             DALL       Desmarcar

F8                             APROV      Aprovar

Shift-F1                       LOGER      Log

Ctrl-F1                        FIRST      First

Ctrl-F2                        PRIOR      Prior

Ctrl-F3                        NEXT       Next

Ctrl-F4                        LAST       Last

*Definição das teclas de funções:

 

Código de função        ENTE

Categoria de função        Função de aplicação

Texto de função      ENTE

 

Código de função        BACK

Categoria de função        Função de aplicação

Texto de função      Voltar

 

Código de função        ABORT

Categoria de função     E  Comando exit

Texto de função      Encerrar

 

Código de função        P--

Categoria de função        Função de aplicação

Texto de função      1ª página

Nome de ícone        ICON_FIRST_PAGE

 

Código de função        P-

Categoria de função        Função de aplicação

Texto de função      Página anterior

Nome de ícone        ICON_PREVIOUS_PAGE

 

Código de função        P+

Categoria de função        Função de aplicação

Texto de função      Página seguinte

Nome de ícone        ICON_NEXT_PAGE

 

Código de função        P++

Categoria de função        Função de aplicação

Texto de função      Última página

Nome de ícone        ICON_LAST_PAGE

 

Código de função        SELE

Categoria de função        Função de aplicação

Texto de função      Selecionar

Nome de ícone        ICON_SELECT_DETAIL

 

Código de função        APROP

Categoria de função        Função de aplicação

Texto de função      Apropriar

Nome de ícone        ICON_TREE

Texto informativo    Apropriar Exportaçõe

 

 

Código de função        MALL

Categoria de função        Função de aplicação

Texto de função      Marcar

Nome de ícone        ICON_SELECT_ALL

Texto informativo    Marcar Todos

 

 

Código de função        DALL

Categoria de função        Função de aplicação

Texto de função      Desmarcar

Nome de ícone        ICON_DESELECT_ALL

Texto informativo    Desmarcar Todos

 

Código de função        APROV

Categoria de função        Função de aplicação

Texto de função      Aprovar

Nome de ícone        ICON_ALLOW

Texto de ícones      Aprovar

Texto informativo    Aprovar Apropriação

 

Código de função        LOGER

Categoria de função        Função de aplicação

Texto de função      Log

Nome de ícone        ICON_ERROR_PROTOCOL

Texto informativo    Log de Processamento

 

Código de função        FIRST

Categoria de função        Função de aplicação

Texto de função      First

Nome de ícone        ICON_TOTAL_LEFT

Texto informativo    Primeiro Item

 

Código de função        PRIOR

Categoria de função        Função de aplicaç

Texto de função      Prior

Nome de ícone        ICON_COLUMN_LEFT

Texto informativo    Item Anterior

 

Código de função        NEXT

Categoria de função        Função de aplicaç

Texto de função      Next

Nome de ícone        ICON_COLUMN_RIGHT

Texto informativo    Próximo Item

 

Código de função        LAST

Categoria de função        Função de aplicação

Texto de função      Last

Nome de ícone        ICON_TOTAL_RIGHT

Texto informativo    Último Item

 

****************************Status GUI: ST0004

*Teclas de função:

 F2                             SELE       Selecionar

 F5                             DESAPR     Desapropriar

 F6                             MALL       Marcar

 F7                             DALL       Desmarcar

 

*Definição das teclas de funções:

 

Código de função        ENTE

Categoria de função        Função de aplicação

Texto de função      ENTE

 

Código de função        BACK

Categoria de função        Função de aplicação

Texto de função      Voltar

 

Código de função        ABORT

Categoria de função     E  Comando exit

Texto de função      Encerrar

 

Código de função        MALL

Categoria de função        Função de aplicação

Texto de função      Marcar

Nome de ícone        ICON_SELECT_ALL

Texto informativo    Marcar Todos

 

Código de função        DALL

Categoria de função        Função de aplicação

Texto de função      Desmarcar

Nome de ícone        ICON_DESELECT_ALL

Texto informativo    Desmarcar Todos

 

Código de função        DESAPR

Categoria de função        Função de aplicação

Texto de função      Desapropriar

Nome de ícone        ICON_TREE

 

Código de função        SELE

Categoria de função        Função de aplicação

Texto de função      Selecionar

Nome de ícone        ICON_SELECT_DETAIL

 

****Codigo fonte:

*---------------------------------------------------------------------*

* Report /PWS/ZYCIR070

*                                                                     *

*---------------------------------------------------------------------*

* ProcWork SoftWare

* Produto:   Pw.CE

* Módulo    : MM

* DESCRIÇÃ0 : CI - Apropriação/Desapropriação - Seleção de Dados

*

* Help Desk: 11-5504-0270

*----------------------------------------------------------------------*

* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA

*----------------------------------------------------------------------*

* Nome                      Data         Descrição

*-----------------------------------------------------------------------

REPORT /pws/zycir070 MESSAGE-ID /pws/zycim.

 

 

* Controles de Tela

CONTROLS: tc_exp      TYPE TABLEVIEW USING SCREEN '0001',

          tc_exp_ap   TYPE TABLEVIEW USING SCREEN '0002',

          tc_imp_ap   TYPE TABLEVIEW USING SCREEN '0002',

          tc_log      TYPE TABLEVIEW USING SCREEN '0003',

          tc_exp_desa TYPE TABLEVIEW USING SCREEN '0004'.

 

 

* Tabela transparentes

TABLES: ekko    ,

        t001         ,

        /pws/zycee002,

        /pws/zycet002,

        /pws/zycit244,

        /pws/zycit245,

        /pws/zycit279,

        /pws/zycie282,

        /pws/zycit282,

        /pws/zycit321,

        /pws/zycit283,

        /pws/zycit094,

        /pws/zycit100,

        /pws/zycie100,

        /pws/zycet117,

        /pws/zycit327,

*PWS245742 - Início ----------------------------------------------------

        /pws/zycit439,

*PWS245742 - Fim -------------------------------------------------------

*PWS243757 - Início ----------------------------------------------------

        vbap.

*PWS243757 - Fim -------------------------------------------------------

.

 

* Tabelas Internas

* Controla exportações selecionadas.

DATA: BEGIN OF it_zycet002 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet002.

DATA: qtdbx   LIKE /pws/zycet002-fkimg,

      mexp(1) TYPE c                  .

DATA: END OF it_zycet002.

 

*Cabeçario de exportação

DATA: BEGIN OF it_zycet001 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet001.

DATA: END OF it_zycet001.

 

*Itens da DI

DATA: BEGIN OF itab_zycit246 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit246.

DATA: END OF itab_zycit246.

 

 

 

* grupo da exportação.

DATA: BEGIN OF it_zycet002_grp OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet002.

DATA: qtdbx   LIKE /pws/zycet002-fkimg,

      mexp(1) TYPE c             ,

      grp     LIKE mvke-mvgr1   .

DATA: END OF it_zycet002_grp.

 

 

***  PWS171210 - Inicio

* Controla exportações com itens estornados

DATA: BEGIN OF it_zycet002_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet002.

DATA: END OF it_zycet002_aux.

***  PWS171210 - Fim

 

 

* Controla as Desapropriações.

DATA: BEGIN OF it_zycet002_desa OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet002.

DATA: qtdapr  LIKE /pws/zycit283-qtd_apr,

      mexp(1) TYPE c.

DATA: END OF it_zycet002_desa.

 

 

* Controla Apropriações (Importações)

DATA: BEGIN OF it_apr OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

data: un_ncm  like /pws/zycit245-meins,

      perc(10).

DATA: END OF it_apr.

 

DATA: BEGIN OF it_apr_final OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

data: un_ncm  like /pws/zycit245-meins,

      perc(10).

DATA: END OF it_apr_final.

 

DATA: BEGIN OF it_apr_final_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

DATA: END OF it_apr_final_aux.

 

DATA: BEGIN OF it_zycit283 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit283.

DATA: END OF it_zycit283.

 

DATA: BEGIN OF it_zycit282_des OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

DATA: END OF it_zycit282_des.

 

DATA: BEGIN OF it_zycit282_est OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

DATA: END OF it_zycit282_est.

 

DATA: BEGIN OF it_zycit283_des OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit283.

DATA: END OF it_zycit283_des.

 

DATA: BEGIN OF it_zycit283_est OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit283.

DATA: END OF it_zycit283_est.

 

 

DATA: BEGIN OF it_agrup OCCURS 0.

        INCLUDE STRUCTURE mvke.

DATA: END OF it_agrup.

 

* Fornecedores utilizados

DATA: BEGIN OF itab_fornec OCCURS 0.

DATA: lifnr  LIKE /pws/zycie244-lifnr,

      nrseqd LIKE /pws/zycie244-nrseqd.

DATA: END OF itab_fornec.

 

 

DATA: BEGIN OF it_zycit422 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit422.

DATA: END OF it_zycit422.

 

DATA: BEGIN OF itab_zycet117 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycet117.

DATA: END OF itab_zycet117.

 

 

* Tabela de parâmetros de lista técnica de material.

DATA: BEGIN OF it_zycit281 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit281.

DATA: END OF it_zycit281.

 

 

* Tabela de Importações Recebidas

DATA: BEGIN OF it_zycit279 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit279.

data: matnr_alt like /pws/zycit279-matnr.

DATA: END OF it_zycit279.

 

DATA: BEGIN OF it_zycit279_save OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit279.

data: matnr_alt like /pws/zycit279-matnr.

DATA: END OF it_zycit279_save.

 

* Tabela de Insumos alternativos

DATA: BEGIN OF itab_zycit433 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit433.

DATA: END OF itab_zycit433.

 

* Cabeçalho dos Ato Concessórios

DATA: BEGIN OF it_zycit244 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit244.

DATA: END OF it_zycit244.

 

 

* Tabela de Ato Concessórios - Importações

DATA: BEGIN OF it_zycit245 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit245.

DATA: END OF it_zycit245.

 

* Tabela de Importações Realizadas

DATA: BEGIN OF it_zycit282 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit282.

DATA: END OF it_zycit282.

 

 

* Tabela de Ato Concessórios - Exportações

DATA: BEGIN OF it_zycit247 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit247.

DATA: END OF it_zycit247.

 

DATA: BEGIN OF it_zycit247_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit247.

DATA: END OF it_zycit247_aux.

 

DATA: BEGIN OF it_zycit247_save OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit247.

DATA: END OF it_zycit247_save.

 

DATA: itab_stko LIKE stko   OCCURS 0 WITH HEADER LINE.

DATA: it_stpox2 LIKE stpox  OCCURS 0 WITH HEADER LINE.

DATA: it_matcat LIKE cscmat OCCURS 0 WITH HEADER LINE.

 

DATA: BEGIN OF it_stpox OCCURS 0.

        INCLUDE STRUCTURE stpox.

DATA: mngko2 LIKE /pws/zycie240d-mngko.

DATA: END OF it_stpox.

 

* Tabela de Ato Concessórios - Exportações

DATA: BEGIN OF it_zycit247f OCCURS 0.

        INCLUDE STRUCTURE /pws/zycit247.

DATA: END OF it_zycit247f.

 

 

 

 

* Controla Botões da barra de ferramentas.

DATA: BEGIN OF it_buttons OCCURS 0.

DATA:   bname(35) TYPE c.

DATA: END OF it_buttons.

 

 

* Controla a exibição do log de processamento.

DATA: BEGIN OF it_log_erro OCCURS 0.

DATA:   ltext(135) TYPE c.

DATA: END OF it_log_erro.

 

 

* Trata Ordem de Venda.

DATA : BEGIN OF itab_zycee085 OCCURS 10.

        INCLUDE STRUCTURE /pws/zycee085.

DATA : END   OF itab_zycee085.

 

DATA : BEGIN OF itab_saida OCCURS 10.

        INCLUDE STRUCTURE /pws/zycee085.

DATA : END OF itab_saida.

 

*  Lista tecnica

  DATA: BEGIN OF it_materiais OCCURS 0,

        matnr LIKE mara-matnr,

        werks LIKE marc-werks,

        stlan LIKE stpox-stlan,

        stlnr LIKE stpo-stlnr,

        stlal LIKE stpox-stlal,

        capid LIKE tc04-capid.

  DATA: END OF it_materiais.

 

  DATA: BEGIN OF i_final OCCURS 0,

        insumo  LIKE mara-matnr,

        produto LIKE stpox-idnrk,

        centro  LIKE stpox-werks,

        ncm     LIKE marc-steuc,

        qtunit  TYPE p DECIMALS 5,

        meins   LIKE stpox-meins.

  DATA: END OF i_final.

 

  DATA: BEGIN OF itab_lista OCCURS 0,

        matnr   LIKE mara-matnr,

        ncm     LIKE marc-steuc,

        usagem  TYPE p DECIMALS 5,

        qtd     like /pws/zycit282-qtd_mimp,

        meins   LIKE stpox-meins,

        perc(10)                 .

  DATA: END OF itab_lista.

data: itab_lista_aux like itab_lista occurs 0 with header line.

data: itab_lista_f like itab_lista occurs 0 with header line.

data: itab_zycit439 like /pws/zycit439 occurs 0 with header line.

 

*PWs245742 - Início ----------------------------------------------------

* PERDAS POR MATERIAL X INSUMO

*data: begin of it_zycit439 occurs 0.

*        include structure /pws/zycit439.

*data: end of it_zycit439.

*PWS245742 - Fim -------------------------------------------------------

 

 

*PWS243757 - Início ----------------------------------------------------

* Documento de vendas: dados de item

data: begin of it_vbap occurs 0,

        vbeln like vbap-vbeln,

        netpr like vbap-netpr,

      end of it_vbap.

*PWS243757 - Fim ------------------------------------------------------

 

* Work Área

DATA: wa_cols TYPE cxtab_column.

 

 

* Declaração de variáveis.

DATA: v_erro(1)        TYPE c VALUE 'N'                ,

      v_errolt(1)      TYPE c                          ,

      v_dias           type i                          ,

      v_dtforn         LIKE sy-datum                   ,

      ok_code          LIKE sy-ucomm                   ,

      mexp(1)          TYPE c                          ,

      v_ilinhas        TYPE i                          ,

      v_mtxt1_0001(40) TYPE c                          ,

      v_mtxt1_0002(40) TYPE c                          ,

      v_ctxt1_0002(40) TYPE c                          ,

      nextline         TYPE sy-tabix                   ,

      v_menorpct       TYPE p DECIMALS 5               ,

      v_pct_com        TYPE p DECIMALS 5               ,

      rimc1            LIKE indx-srtfd VALUE 'R070PAR1',

      v_import(1)      TYPE c VALUE 'N'                ,

      v_campo(35)      TYPE c                          ,

      v_valor(35)      TYPE c                          ,

      v_linha          TYPE i                          ,

      v_pos            TYPE i                          ,

      v_idx            LIKE sy-tabix                   ,

      v_indic1         LIKE icon-id                    ,

      v_indic2         LIKE icon-id                    ,

      v_indicatu       LIKE sy-tabix                   ,

      v_aprov(1)       TYPE c VALUE 'N'                ,

      v_index          TYPE sy-tabix                   ,

      v_errolog(135)   TYPE c                          ,

      v_qtdbx          LIKE /pws/zycet002-fkimg        ,

      v_exapr                                          ,

      v_apcomp(1)      TYPE c                          ,

      v_perc(10)       TYPE c                          ,

      v_tptrans(1)     TYPE c                          ,

      v_un_ncm         LIKE /pws/zycit245-meins        ,

      v_apr            LIKE /pws/zycit283-qtd_apr      ,

      v_saldo_mat      TYPE p DECIMALS 3               ,

      v_perc_di        TYPE p DECIMALS 2               ,

      v_saldo_di       TYPE p DECIMALS 3               ,

      v_qtd_apropriada type p decimals 3               ,

*PWS243757 - Início ----------------------------------------------------

      v_valor_imp  like /pws/zycit282-imp_s_cob_camb    ,

      v_exp_camb       like /pws/zycit282-exp_c_cob_camb,

      v_ebelp          like /pws/zycit282-ebelp         ,

      v_ebelp2         like /pws/zycit282-ebelp         ,

      v_imp_camb       like /pws/zycit282-imp_s_cob_camb,

*PWS243757 - Fim -------------------------------------------------------

*PWS251144 - Início ----------------------------------------------------

      v_exit.

*PWS251144 - Fim -------------------------------------------------------

 

* Seleção de Dados (Tela: Critério de Seleção) -------------------------

selection-screen BEGIN OF block scr1 WITH frame title text-000.

SELECT-OPTIONS: nrseqexp FOR /pws/zycee002-nrseq   ,

                vbeln_va FOR /pws/zycee002-vbeln_va,

                aupos    FOR /pws/zycee002-aupos   ,

                vbeln_vf FOR /pws/zycee002-vbeln_vf,

                posnr    FOR /pws/zycee002-posnr   ,

                docnum   FOR /pws/zycee002-docnum  ,

                vbeln_vl FOR /pws/zycee002-vbeln_vl,

                posnl    FOR /pws/zycee002-posnl   ,

                eebeln   FOR /pws/zycee002-ebeln   ,

                eebelp   FOR /pws/zycee002-ebelp   ,

                matnr    FOR /pws/zycee002-matnr   .

SELECTION-SCREEN END OF BLOCK scr1.

* ----------------------------------------------------------------------

 

 

INITIALIZATION.

 

*Authority-check   Transação

    authority-check object 'S_TCODE' id 'TCD' field sy-tcode.

    if sy-subrc ne 0.

      message i015 with text-290 sy-tcode.

      leave program.

    endif.

 

 

START-OF-SELECTION.

 

 

* Checa o tipo de transação chamada (manual ou automática) para trata-

* mento da apropriação.

  CASE sy-tcode.

    WHEN '/PWS/ZYCIR254'.

      v_tptrans = 'A'.

    WHEN '/PWS/ZYCIR254_D'.

      v_tptrans = 'D'.

  ENDCASE.

  CLEAR v_exapr.

 

* Importa dados das exportações direto do embarque.

  IMPORT it_zycet002 FROM MEMORY ID rimc1.

 

 

* Caso o relatório seja executado diretamente pelo embarque, efetua a

* apropriação direto sem exigir seleção de dados ou filtro de exporta-

* ções na tela 0001.

  IF sy-subrc NE 0.

 

*   Checa se foi preenchido algum valor como parâmetro.

    PERFORM check_minimum_selection CHANGING v_erro.

 

    CASE v_erro.

 

      WHEN 'N'.

 

        PERFORM select_data CHANGING v_erro.

        CASE v_erro.

          WHEN 'N'.

            IF v_tptrans NE 'D'.

              PERFORM execute_process.

            ELSE.

              PERFORM execute_process_desa.

            ENDIF.

          WHEN 'S'.

            IF v_exapr IS INITIAL.

              MESSAGE s015 WITH text-001.

            ELSE.

              MESSAGE s015 WITH text-040 text-041.

            ENDIF.

        ENDCASE.

 

      WHEN 'S'.

        MESSAGE s015 WITH text-033 text-034.

 

    ENDCASE.

 

  ELSE.

***  PWS171210 - Inicio

    IF NOT it_zycet002[] IS INITIAL.

      DELETE it_zycet002 WHERE fksto = 'X'

                         OR    shkzg = 'X'.

    ENDIF.

***  PWS171210 - Fim

 

*** 07/07/04 - Inicio.

* Se estiver executando a apropriação remove itens já apropriados.

    IF NOT it_zycet002[] IS INITIAL AND v_tptrans NE 'D'.

      LOOP AT it_zycet002.

        SELECT SINGLE * FROM /pws/zycit282

               WHERE nrseqexp = it_zycet002-nrseq

                 AND vbeln_va = it_zycet002-vbeln_va

                 AND aupos    = it_zycet002-aupos

*                 and vbeln_vf = it_zycet002-vbeln_vf

*                 and posnr    = it_zycet002-posnr

*                 and docnum   = it_zycet002-docnum

                 AND vbeln_vl = it_zycet002-vbeln_vl

                 AND posnl    = it_zycet002-posnl

                 AND eebeln   = it_zycet002-ebeln

                 AND eebelp   = it_zycet002-ebelp.

        IF sy-subrc EQ 0 .

          v_exapr = 'S'.

          DELETE it_zycet002.

        ENDIF.

      ENDLOOP.

      IF it_zycet002[] IS INITIAL.

        IF v_exapr IS INITIAL.

          MESSAGE s015 WITH text-001.

        ELSE.

          MESSAGE s015 WITH text-040 text-041.

        ENDIF.

 

 

      ELSE.

*   Trata Ordem de Venda, Devoluções, Etc.

        PERFORM trata_ordem_venda.

 

*   Ordena a tabela interna de exportações.

        SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.

 

*   Executa a apropriação das exportações.

        PERFORM run_appropriation_exportation.

        v_import = 'S'.

 

*   Posiciona a tabela interna de exportações vinda do embarque no

*   registro hum com 'X'.

        MOVE 1 TO v_indicatu.

        READ TABLE it_zycet002 INDEX v_indicatu.

        IF sy-subrc EQ 0.

          it_zycet002-mexp = 'X'.

          MODIFY it_zycet002 INDEX v_indicatu.

        ENDIF.

 

*   Posiciona as importações de acordo com os registros de exportações.

        PERFORM locate_record_appropriation.

 

*   Chama a tela de apropriações processadas.

        CALL SCREEN 0002.

 

*   Limpa endereço de memória com os dados da exportação.

        FREE MEMORY ID rimc1.

      ENDIF.

    ENDIF.

*** 07/07/04 - Fim.

 

  ENDIF.

 

END-OF-SELECTION.

 

*&---------------------------------------------------------------------*

*&      Form  select_data

*&---------------------------------------------------------------------*

FORM select_data CHANGING v_erro.

 

* itens já apropriados

  DATA: it_zycit282_temp LIKE /pws/zycit282.

 

 

* Seleciona dados das exportações.

 

  CLEAR: it_zycet002    ,

         it_zycet002_aux.

 

  REFRESH: it_zycet002    ,

           it_zycet002_aux.

 

  SELECT * FROM /pws/zycet002 INTO TABLE it_zycet002

         WHERE nrseq IN nrseqexp

           AND vbeln_va IN vbeln_va

           AND aupos    IN aupos

*           AND vbeln_vf IN vbeln_vf

*           AND posnr    IN posnr

*           AND docnum   IN docnum

           AND vbeln_vl IN vbeln_vl

           AND posnl    IN posnl

           AND ebeln    IN eebeln

           AND ebelp    IN eebelp

           AND matnr    IN matnr

           AND fkimg    >  0

***  PWS171210 - Inicio

           AND shkzg    NE 'X'

           AND fksto    NE 'X'.

***  PWS171210 - Fim

  IF sy-subrc NE 0.

    v_erro = 'S'.

  ENDIF.

 

*** 07/07/04 - Inicio.

* Se estiver executando a apropriação remove itens já apropriados.

  IF NOT it_zycet002[] IS INITIAL AND v_tptrans NE 'D'.

    LOOP AT it_zycet002.

      SELECT SINGLE * FROM /pws/zycit282 INTO it_zycit282_temp

             WHERE nrseqexp = it_zycet002-nrseq

               AND vbeln_va = it_zycet002-vbeln_va

               AND aupos    = it_zycet002-aupos

               AND vbeln_vl = it_zycet002-vbeln_vl

               AND posnl    = it_zycet002-posnl

               AND eebeln   = it_zycet002-ebeln

               AND eebelp   = it_zycet002-ebelp.

      IF sy-subrc EQ 0 .

        v_exapr = 'S'.

        DELETE it_zycet002.

      ENDIF.

    ENDLOOP.

    IF it_zycet002[] IS INITIAL.

      v_erro = 'S'.

    ENDIF.

  ENDIF.

*** 07/07/04 - Fim.

ENDFORM.                    " select_data

 

*&---------------------------------------------------------------------*

*&      Form  executa_processo

*&---------------------------------------------------------------------*

FORM execute_process.

 

* Trata Ordem de Venda, Devoluções, Etc.

  PERFORM trata_ordem_venda.

 

* Ordena a tabela interna de exportações.

  SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.

 

* Posiciona a table control com as exportações na primeira linha.

  tc_exp-top_line = 1.

 

* Chama a tela com as exportações selecionadas para executar a apropria-

* ção.

  CALL SCREEN 0001.

 

ENDFORM.                    " execute_process

 

 

INCLUDE /PWS/ZYCIR254I01.

*INCLUDE /pws/zycir070i01.

INCLUDE /PWS/ZYCIR254F01.

*INCLUDE /pws/zycir070f01.

INCLUDE /PWS/ZYCIR254O01.

*INCLUDE /pws/zycir070o01.

 

 

 

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

Modificações efetuadas em PROG /PWS/ZYCIR254F01

 

*----------------------------------------------------------------------*

***INCLUDE /PWS/ZYCIR070F01 .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*& Form execute_back_button                                            *

*&---------------------------------------------------------------------*

FORM execute_back_button.

  LEAVE TO SCREEN 0.

ENDFORM. " execute_back_button

*&---------------------------------------------------------------------*

*& Form execute_mall_button                                            *

*&---------------------------------------------------------------------*

FORM execute_mall_button.

  LOOP AT it_zycet002.

    it_zycet002-mexp = 'X'.

    MODIFY it_zycet002.

  ENDLOOP.

ENDFORM. " execute_mall_button

*&---------------------------------------------------------------------*

*& Form execute_dall_button                                            *

*&---------------------------------------------------------------------*

FORM execute_dall_button.

  LOOP AT it_zycet002.

    it_zycet002-mexp = ' '.

    MODIFY it_zycet002.

  ENDLOOP.

ENDFORM. " execute_dall_button

*&---------------------------------------------------------------------*

*& Form blaettern                                                      *

*&---------------------------------------------------------------------*

FORM blaettern USING p_tccurr p_tclins p_itlin p_okcode

               CHANGING nextline.

  DATA: b_overlapping(1) TYPE c VALUE 'X'.

  IF p_itlin EQ 0.

    EXIT.

  ENDIF.

  CALL FUNCTION 'SCROLLING_IN_TABLE'

       EXPORTING

            entry_to       = p_itlin  "Nº de linha da tabela

            loops          = p_tclins  "Número de linha da TC na tela

            ok_code        = p_okcode

            entry_act      = p_tccurr

            last_page_full = ' '

            overlapping    = b_overlapping

       IMPORTING

            entry_new      = nextline.

ENDFORM. " blaettern

*&---------------------------------------------------------------------*

*& Form execute_aprop_button                                           *

*&---------------------------------------------------------------------*

FORM execute_aprop_button.

* Checa se foi marcado uma linha da table control.

* Caso tenha alguma exportação marcada, prossegue com a apro-

* priação.

  READ TABLE it_zycet002 WITH KEY mexp = 'X'.

  IF sy-subrc EQ 0.

*   Elimina as exportações não selecionadas.

    DELETE it_zycet002 WHERE mexp NE 'X'.

*   Retira o 'X' da marcação dos registros de exportação.

    LOOP AT it_zycet002.

      IF sy-tabix EQ 1.

        MOVE sy-tabix TO v_indicatu.

        it_zycet002-mexp = 'X'.

      ELSE.

        it_zycet002-mexp = ' '.

      ENDIF.

      MODIFY it_zycet002.

    ENDLOOP.

*   Ordena a tabela interna de exportações.

    SORT it_zycet002 BY nrseq vbeln_va vbeln_vf posnr ASCENDING.

*   Executa a apropriação das exportações.

    PERFORM run_appropriation_exportation.

*   Posiciona as importações de acordo com os registros de exportações.

    PERFORM locate_record_appropriation.

*   Chama a tela de apropriações processadas.

    CALL SCREEN 0002.

  ELSE.

    MESSAGE s015 WITH text-002 text-003.

  ENDIF.

ENDFORM. " execute_aprop_button

*&---------------------------------------------------------------------*

*& Form run_appropriation_exportation                                  *

*&---------------------------------------------------------------------*

FORM run_appropriation_exportation.

  DATA: v_ncm_temp(5),

        v_ncm_b LIKE it_zycet002_grp-steuc.

 

  SELECT SINGLE * FROM /pws/zycit321.

  REFRESH itab_zycit439.

  SELECT * FROM /pws/zycit439 INTO TABLE itab_zycit439

      WHERE dtde <= sy-datum AND

            dtate >= sy-datum.

 

 

  IF NOT it_zycet002[] IS INITIAL.

 

 

 

 

 

 

 

    CLEAR it_zycet001. REFRESH it_zycet001.

    SELECT * FROM /pws/zycet001 INTO TABLE it_zycet001

        FOR ALL ENTRIES IN it_zycet002

        WHERE nrseq EQ it_zycet002-nrseq.

 

* Seleciona na Tabela de parâmetros a lista técnica de materiais de

* cada exportação.

    CLEAR it_zycit281.

    REFRESH it_zycit281.

    SELECT * FROM /pws/zycit281 INTO TABLE it_zycit281

           FOR ALL ENTRIES IN it_zycet002

           WHERE matnr EQ it_zycet002-matnr.

 

*Seleciona Atos Comuns.

 

* Seleciona os Atos Concessórios com saldo para efetuar as

* apropriações.

    CLEAR it_zycit247. REFRESH it_zycit247.

    SELECT * FROM /pws/zycit247 INTO TABLE it_zycit247

           FOR ALL ENTRIES IN it_zycet002

*             WHERE codmat   EQ it_zycet002-matnr

           WHERE j_1bnbm  EQ it_zycet002-steuc

             AND esgotado EQ space.

    IF sy-subrc EQ 0.

*   Seleciona o cabeçalho dos Atos Concessórios.

      CLEAR it_zycit244. REFRESH it_zycit244.

      SELECT * FROM /pws/zycit244 INTO TABLE it_zycit244

             FOR ALL ENTRIES IN it_zycit247

             WHERE nrseqd     EQ it_zycit247-nrseqd

               AND status     EQ 'D'

               AND ( tipo     EQ 'C' OR tipo EQ 'F' )

               AND vcto_fn    >= sy-datum

               AND dtatoc     NE '00000000'

               AND modalidade EQ 'S'.

*   Seleciona os componentes importados dos Atos Concessórios.

      CLEAR it_zycit245. REFRESH it_zycit245.

      SELECT * FROM /pws/zycit245 INTO TABLE it_zycit245

             FOR ALL ENTRIES IN it_zycit247

             WHERE nrseqd EQ it_zycit247-nrseqd.

 

 

*   Seleciona os componentes importados recebidos efetivamente.

      CLEAR it_zycit279. REFRESH it_zycit279.

      SELECT * FROM /pws/zycit279 INTO TABLE it_zycit279

               FOR ALL ENTRIES IN it_zycit247

               WHERE nrseqd   EQ it_zycit247-nrseqd

                 AND esgotado EQ space.

 

 

 

*   Seleciona dados do cabeçalho da lista técnica, para busca da

*   quantidade base do material exportado.

      CLEAR itab_stko. REFRESH itab_stko.

      SELECT * FROM stko INTO TABLE itab_stko

             FOR ALL ENTRIES IN it_zycit247

             WHERE stlty EQ 'M'

               AND stlnr EQ it_zycit247-stlnr

               AND stlal EQ it_zycit247-stlal.

    ENDIF.

 

* Ordena tabela interna de materiais.

    PERFORM sort_records_zycit247.

* Trava os registros de recebimento.

    PERFORM lock_record_receb.

* Trava os registros do ato concessório.

    PERFORM lock_record_ato.

* Ordena a tabela interna de recebimentos (importações)

    SORT it_zycit279 BY nrseq ebeln ebelp matnr.

    LOOP AT it_zycet002.

      IF t001-bukrs NE it_zycet002-bukrs.

        SELECT SINGLE * FROM t001 WHERE bukrs EQ it_zycet002-bukrs.

      ENDIF.

 

 

*        READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr

*                                        werks = it_zycet002-werks.

      PERFORM converte_um_base USING    it_zycet002-matnr

                            CHANGING it_zycet002-vrkme

                                     it_zycet002-fkimg.

      IF it_zycet002-fkimg IS INITIAL.

        CONTINUE.

      ENDIF.

 

*Seleciona lista tecnica para explosão

      READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr

                                      werks = it_zycet002-werks.

      IF sy-subrc NE 0.

*Se o material não possui lista para o centro informado busca o centro

*  produtor para selecionar a lista tecnica.

        SELECT SINGLE a~wrk02

          FROM ( t460a AS a INNER JOIN marc AS b ON

            a~werks EQ b~werks AND

            a~sobsl EQ b~sobsl AND

            a~beskz EQ b~beskz )

        INTO it_zycet002-werks

        WHERE b~matnr EQ it_zycet002-matnr

          AND b~werks EQ it_zycet002-werks

          AND a~beskz EQ 'F'.

 

        IF sy-subrc EQ 0.

          READ TABLE it_zycit281 WITH KEY matnr = it_zycet002-matnr

                                          werks = it_zycet002-werks.

        ENDIF.

      ENDIF.

      IF sy-subrc EQ 0.

*     Puxa lista técnica de materiais.

        CLEAR: it_stpox, it_stpox2, it_matcat.

        REFRESH: it_stpox, it_stpox2, it_matcat. v_errolt = 'N'.

        PERFORM get_bom_of_materials TABLES it_stpox2

                                            it_matcat

                                     USING it_zycit281-matnr

                                           it_zycit281-capid

                                           it_zycit281-werks

                                           it_zycit281-stlan

                                           it_zycit281-stlnr

                                           it_zycit281-stlal

                                  CHANGING v_errolt.

        IF v_errolt EQ 'N'.

*       Trata recursividade dos componentes.

          PERFORM collect_materials TABLES it_stpox it_stpox2 it_matcat.

*  Monta tabela com os insumos e quantidades para a apropriação.

          REFRESH itab_lista. CLEAR itab_lista.

          LOOP AT i_final.

            itab_lista-matnr  = i_final-insumo.

            itab_lista-usagem = i_final-qtunit.

            itab_lista-ncm    = i_final-ncm.

            itab_lista-meins  = i_final-meins.

            itab_lista-qtd    = itab_lista-usagem * it_zycet002-fkimg.

            APPEND itab_lista.

          ENDLOOP.

 

*        Seleciona data de remessa.

          SELECT SINGLE bldat FROM likp INTO v_dtforn

              WHERE vbeln EQ it_zycet002-vbeln_vl.

 

*       Apropria o material vigente.

          PERFORM appropriate_current_record.

        ELSE.

*       Trata log erro (Lista técnica materiais não processada).

          CLEAR: v_errolog, it_log_erro.

          CONCATENATE text-015 it_zycet002-matnr

                                  INTO v_errolog SEPARATED BY space.

          MOVE v_errolog TO it_log_erro.

          APPEND it_log_erro.

        ENDIF.

      ELSE.

*     Trata log erro (Não há lista técnica de mat. parametrizada).

        CLEAR: v_errolog, it_log_erro.

        CONCATENATE text-016 it_zycet002-matnr

                                  INTO v_errolog SEPARATED BY space.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

      ENDIF.

    ENDLOOP.

 

  ENDIF.

* Remove as mensagem repedidas no Log de Erros.

  SORT it_log_erro BY ltext.

  DELETE ADJACENT DUPLICATES FROM it_log_erro .

 

 

 

ENDFORM. " run_appropriation_exportation

*&---------------------------------------------------------------------*

*& Form check_buttons_screen                                           *

*&---------------------------------------------------------------------*

FORM check_buttons_screen.

  REFRESH it_buttons.

  CASE sy-dynnr.

    WHEN '0001'.

      CLEAR it_buttons.

      it_buttons-bname = 'APROV'.    "Oculta Botão Aprovar Apropriação.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'FIRST'.    "Oculta Botão Primeiro Item.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'PRIOR'.    "Oculta Botão Item Anterior.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'NEXT'.    "Oculta Botão Próximo Item.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'LAST'.    "Oculta Botão Último Item.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'LOGER'.    "Oculta Botão Log de Processamento.

      APPEND it_buttons.

    WHEN '0002'.

      CLEAR it_buttons.

      it_buttons-bname = 'MALL'.    "Oculta Botão Marcar Todos.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'DALL'.    "Oculta Botão Desmarcar Todos.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'APROP'.   "Oculta Botão de Apropriação.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'P++'.   "Oculta Botão de Apropriação.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'P+'.   "Oculta Botão de Apropriação.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'P-'.   "Oculta Botão de Apropriação.

      APPEND it_buttons.

      CLEAR it_buttons.

      it_buttons-bname = 'P--'.   "Oculta Botão de Apropriação.

      APPEND it_buttons.

      IF it_log_erro[] IS INITIAL.

        CLEAR it_buttons.

        it_buttons-bname = 'LOGER'.  "Oculta Botão Log de Processamento.

        APPEND it_buttons.

      ENDIF.

      IF it_apr_final[] IS INITIAL.

        CLEAR it_buttons.

        it_buttons-bname = 'APROV'.  "Oculta Botão de Aprovação.

        APPEND it_buttons.

      ENDIF.

  ENDCASE.

ENDFORM. " check_buttons_screen

*&---------------------------------------------------------------------*

*& Form execute_back_button2                                           *

*&---------------------------------------------------------------------*

FORM execute_back_button2.

* Desbloqueia os registros de recebimento.

  PERFORM unlock_record_receb.

* Desbloqueia os registros do ato concessório.

  PERFORM unlock_record_ato.

 

*** INICIO MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010

*** Caso tenha sido execuado ela transação de embarque de Exportação

*** voltar para a tela de Exportação.

  IF sy-tcode EQ '/PWS/ZYCE003_A'.

    v_import = 'E'.

  ENDIF.

*** FIM MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010

 

* Se o relatório foi executado através do embarque exportação,

* volta direto ao embarque exportação. Se foi executado direto através

* da transação, retorna a tela de critério de seleção.

  CASE v_import.

    WHEN 'S'.

      LEAVE PROGRAM.

    WHEN 'N'.

      LEAVE TO TRANSACTION sy-tcode.

*** INICIO MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010

    WHEN 'E'.

      LEAVE TO TRANSACTION sy-tcode AND SKIP FIRST SCREEN.

*** FIM MODIFICAÇÃO - Victor Neves 07/06/2004 - Request: F6DK907010

  ENDCASE.

ENDFORM. " execute_back_button2

*&---------------------------------------------------------------------*

*& Form execute_aprov_button2                                          *

*&---------------------------------------------------------------------*

FORM execute_aprov_button2.

  DATA: v_confirm(1) TYPE c.

  IF it_apr_final[] IS INITIAL.

    MESSAGE s015 WITH text-012 text-013.

    EXIT.

  ENDIF.

  IF v_aprov EQ 'S'.

    MESSAGE s015 WITH text-010.

  ELSE.

    CALL FUNCTION 'POPUP_TO_CONFIRM'

         EXPORTING

            titlebar                    = text-006

*           DIAGNOSE_OBJECT             = ' '

            text_question               = text-007

            text_button_1               = text-008

*           ICON_BUTTON_1               = ' '

            text_button_2               = text-009

*           ICON_BUTTON_2               = ' '

            default_button              = '1'

            display_cancel_button       = 'X'

*           USERDEFINED_F1_HELP         = ' '

*           START_COLUMN                = 25

*           START_ROW                   = 6

*           POPUP_TYPE                  =

         IMPORTING

            answer                      = v_confirm

*        TABLES

*           PARAMETER                   =

         EXCEPTIONS

            text_not_found              = 1

            OTHERS                      = 2.

    IF v_confirm EQ '1'.

      PERFORM save_appropriations.

    ENDIF.

  ENDIF.

ENDFORM. " execute_aprov_button2

*&---------------------------------------------------------------------*

*& Form execute_first_button2                                          *

*&---------------------------------------------------------------------*

FORM execute_first_button2.

  MOVE 1 TO v_indicatu.

  tc_exp_ap-top_line = v_indicatu.

  LOOP AT it_zycet002 WHERE mexp = 'X'.

    it_zycet002-mexp = ' '.

    MODIFY it_zycet002.

  ENDLOOP.

  READ TABLE it_zycet002 INDEX v_indicatu.

  IF sy-subrc EQ 0.

    it_zycet002-mexp = 'X'.

    MODIFY it_zycet002 INDEX v_indicatu.

*   Posiciona as importações de acordo com os registros de exportações.

    PERFORM locate_record_appropriation.

  ENDIF.

ENDFORM. " execute_first_button2

*&---------------------------------------------------------------------*

*& Form execute_prior_button2                                          *

*&---------------------------------------------------------------------*

FORM execute_prior_button2.

  IF v_indicatu > 1.

    v_indicatu = v_indicatu - 1.

  ENDIF.

  tc_exp_ap-top_line = v_indicatu.

  LOOP AT it_zycet002 WHERE mexp = 'X'.

    it_zycet002-mexp = ' '.

    MODIFY it_zycet002.

  ENDLOOP.

  READ TABLE it_zycet002 INDEX v_indicatu.

  IF sy-subrc EQ 0.

    it_zycet002-mexp = 'X'.

    MODIFY it_zycet002 INDEX v_indicatu.

*   Posiciona as importações de acordo com os registros de exportações.

    PERFORM locate_record_appropriation.

  ENDIF.

ENDFORM.                    " execute_prior_button2

*&---------------------------------------------------------------------*

*&      Form  execute_next_button2

*&---------------------------------------------------------------------*

FORM execute_next_button2.

  DESCRIBE TABLE it_zycet002 LINES v_ilinhas.

  IF v_indicatu < v_ilinhas.

    v_indicatu = v_indicatu + 1.

  ENDIF.

  IF v_indicatu > 4.

    IF v_indicatu NE tc_exp_ap-top_line.

      tc_exp_ap-top_line = tc_exp_ap-top_line + 1.

    ENDIF.

  ENDIF.

  LOOP AT it_zycet002 WHERE mexp = 'X'.

    it_zycet002-mexp = ' '.

    MODIFY it_zycet002.

  ENDLOOP.

  READ TABLE it_zycet002 INDEX v_indicatu.

  IF sy-subrc EQ 0.

    it_zycet002-mexp = 'X'.

    MODIFY it_zycet002 INDEX v_indicatu.

*   Posiciona as importações de acordo com os registros de exportações.

    PERFORM locate_record_appropriation.

  ENDIF.

ENDFORM. " execute_next_button2

*&---------------------------------------------------------------------*

*& Form execute_last_button2                                           *

*&---------------------------------------------------------------------*

FORM execute_last_button2.

  DESCRIBE TABLE it_zycet002 LINES v_ilinhas.

  v_indicatu = v_ilinhas.

  tc_exp_ap-top_line = v_indicatu.

  LOOP AT it_zycet002 WHERE mexp = 'X'.

    it_zycet002-mexp = ' '.

    MODIFY it_zycet002.

  ENDLOOP.

  READ TABLE it_zycet002 INDEX v_indicatu.

  IF sy-subrc EQ 0.

    it_zycet002-mexp = 'X'.

    MODIFY it_zycet002 INDEX v_indicatu.

*   Posiciona as importações de acordo com os registros de exportações.

    PERFORM locate_record_appropriation.

  ENDIF.

ENDFORM. " execute_last_button2

*&---------------------------------------------------------------------*

*& Form execute_sele_button2                                           *

*&---------------------------------------------------------------------*

FORM execute_sele_button2.

  CLEAR: v_campo, v_valor, v_linha.

  GET CURSOR FIELD v_campo VALUE v_valor LINE v_linha.

  CASE v_campo.

    WHEN 'V_INDIC1'.

      IF v_linha > 0.

        v_pos = tc_exp_ap-top_line + v_linha - 1.

        MOVE v_pos TO v_indicatu.

        LOOP AT it_zycet002 WHERE mexp EQ 'X'.

          it_zycet002-mexp = ' '.

          MODIFY it_zycet002.

        ENDLOOP.

        READ TABLE it_zycet002 INDEX v_indicatu.

        IF sy-subrc EQ 0.

          it_zycet002-mexp = 'X'.

          MODIFY it_zycet002 INDEX v_indicatu.

*         Posiciona as importações de acordo com os registros de

*         exportações.

          PERFORM locate_record_appropriation.

        ENDIF.

      ENDIF.

  ENDCASE.

ENDFORM. " execute_sele_button2

*&---------------------------------------------------------------------*

*& Form locate_record_appropriation                                    *

*&---------------------------------------------------------------------*

FORM locate_record_appropriation.

* Posiciona a tabela de importações de acordo com o registro

* selecionado nas exportações.

  CLEAR it_apr. REFRESH it_apr.

  LOOP AT it_zycet002 WHERE mexp EQ 'X'.

    LOOP AT it_apr_final WHERE nrseqexp = it_zycet002-nrseq

                           AND vbeln_va = it_zycet002-vbeln_va

                           AND aupos    = it_zycet002-aupos

                           AND vbeln_vf = it_zycet002-vbeln_vf

                           AND posnr    = it_zycet002-posnr

                           AND docnum   = it_zycet002-docnum

                           AND vbeln_vl = it_zycet002-vbeln_vl

                           AND posnl    = it_zycet002-posnl

                           AND eebeln   = it_zycet002-ebeln

                           AND eebelp   = it_zycet002-ebelp.

      MOVE-CORRESPONDING it_apr_final TO it_apr.

      APPEND it_apr.

    ENDLOOP.

  ENDLOOP.

ENDFORM. " locate_record_appropriation

*&---------------------------------------------------------------------*

*& Form get_bom_of_materials                                           *

*&---------------------------------------------------------------------*

* Objetivo: Pega lista tecnica do material

*&---------------------------------------------------------------------*

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

*&---------------------------------------------------------------------*

* --> p_matnr

* --> p_capid

* --> p_werks

* --> p_stlan

* --> p_stlnr

* --> p_stlal

* <-- p_erro

* <-> p_list

* <-> p_list2

*&---------------------------------------------------------------------*

* Chamado     Data            Descrição

*&---------------------------------------------------------------------*

* 230434      04/05/2005      Iclucão da parte para gravar na tabela

*                             /pws/zycit327

*&---------------------------------------------------------------------*

FORM get_bom_of_materials TABLES p_list  LIKE it_stpox2[]

                                 p_list2 LIKE it_matcat[]

                           USING p_matnr

                                 p_capid

                                 p_werks

                                 p_stlan

                                 p_stlnr

                                 p_stlal

                        CHANGING p_erro.

  CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'

       EXPORTING

            capid                 = p_capid

            datuv                 = sy-datum

            mktls                 = 'X'

            mehrs                 = 'X'

            mtnrv                 = p_matnr

            stlal                 = p_stlal

            stlan                 = p_stlan

            svwvo                 = 'X'

            werks                 = p_werks

            vrsvo                 = 'X'

       TABLES

            stb                   = p_list

            matcat                = p_list2

       EXCEPTIONS

            alt_not_found         = 1

            call_invalid          = 2

            material_not_found    = 3

            missing_authorization = 4

            no_bom_found          = 5

            no_plant_data         = 6

            no_suitable_bom_found = 7

            conversion_error      = 8

            OTHERS                = 9.

  IF sy-subrc NE 0.

    p_erro = 'S'.

  ENDIF.

 

 

* Chamado 230434 - Inicio

  DATA: v_datum     LIKE sy-datum,

        v_trans(20) TYPE c       ,

        idmemory1        LIKE indx-srtfd VALUE 'ITMAT'   ,

        idmemory2        LIKE indx-srtfd VALUE 'ITINS'   .

 

  DATA: BEGIN OF itab_zycit327 OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit327.

  DATA: END OF itab_zycit327.

 

* Seleciona o nome da transação (REPORT) de explosão de lista técnica.

  SELECT SINGLE transacao FROM /pws/zycet079 INTO v_trans

         WHERE codmod EQ 'D'

           AND func   EQ 'LTM'.

  IF sy-subrc NE 0 OR v_trans IS INITIAL.

    MESSAGE i015 WITH text-052 text-053.

    LEAVE PROGRAM.

    EXIT.

  ENDIF.

  CLEAR i_final. REFRESH i_final.

  CLEAR it_materiais. REFRESH it_materiais.

  it_materiais-matnr = p_matnr.

  it_materiais-werks = p_werks.

  it_materiais-stlan = p_stlan.

  it_materiais-stlnr = p_stlnr.

  it_materiais-stlal = p_stlal.

  it_materiais-capid = p_capid.

  APPEND it_materiais.

* Exporta a tabela com o material a ser explodida a lista técnica.

  EXPORT it_materiais TO MEMORY ID idmemory1.

* Chama programa de explosão de lista técnica.

  SUBMIT (v_trans) AND RETURN.

* Importa a tabela final com os insumos explodidos.

  IMPORT i_final FROM MEMORY ID idmemory2.

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

    p_erro = 'S'.

  ELSE.

*   Tratamento de laudo técnico

    SELECT * FROM /pws/zycit327 INTO TABLE itab_zycit327

           FOR ALL ENTRIES IN i_final

           WHERE produto EQ i_final-produto

             AND centro  EQ i_final-centro.

    LOOP AT i_final.

      READ TABLE itab_zycit327 WITH KEY produto = i_final-produto

                                        insumo  = i_final-insumo

                                        centro  = i_final-centro

                                        usagem  = i_final-qtunit.

 

      READ TABLE p_list WITH KEY idnrk =   i_final-insumo.

      IF sy-subrc EQ 0.

        IF sy-datum < itab_zycit327-data_de OR

           sy-datum > itab_zycit327-data_ate.

          MOVE: i_final-produto TO /pws/zycit327-produto,

                i_final-centro  TO /pws/zycit327-centro,

                i_final-insumo  TO /pws/zycit327-insumo,

                i_final-qtunit  TO /pws/zycit327-usagem,

                i_final-meins   TO /pws/zycit327-meins,

*                sy-datum        TO /pws/zycit327-data_de,

                p_list-datuv  TO /pws/zycit327-data_de,

*                '99991231'      TO /pws/zycit327-data_ate.

                p_list-datub   TO /pws/zycit327-data_ate.

          MODIFY /pws/zycit327 FROM /pws/zycit327.

        ENDIF.

      ELSE.

        READ TABLE itab_zycit327 WITH KEY produto = i_final-produto

                                          insumo  = i_final-insumo

                                          centro  = i_final-centro.

        IF sy-subrc EQ 0.

          MOVE: i_final-produto TO /pws/zycit327-produto ,

                i_final-centro  TO /pws/zycit327-centro  ,

                i_final-insumo  TO /pws/zycit327-insumo  ,

                i_final-qtunit  TO /pws/zycit327-usagem  ,

                i_final-meins   TO /pws/zycit327-meins   ,

*                sy-datum        TO /pws/zycit327-data_de,

                p_list-datuv  TO /pws/zycit327-data_de,

*                '99991231'      TO /pws/zycit327-data_ate.

                p_list-datub   TO /pws/zycit327-data_ate.

          MODIFY /pws/zycit327 FROM /pws/zycit327.

          CLEAR v_datum.

          v_datum = sy-datum - 1.

          MOVE v_datum TO itab_zycit327-data_ate.

          MODIFY /pws/zycit327 FROM itab_zycit327.

        ELSE.

          MOVE: i_final-produto TO /pws/zycit327-produto ,

                i_final-centro  TO /pws/zycit327-centro  ,

                i_final-insumo  TO /pws/zycit327-insumo  ,

                i_final-qtunit  TO /pws/zycit327-usagem  ,

                i_final-meins   TO /pws/zycit327-meins   ,

*                sy-datum        TO /pws/zycit327-data_de,

                p_list-datuv  TO /pws/zycit327-data_de,

*                '99991231'      TO /pws/zycit327-data_ate.

                p_list-datub   TO /pws/zycit327-data_ate.

          MODIFY /pws/zycit327 FROM /pws/zycit327.

        ENDIF.

      ENDIF.

    ENDLOOP.

    LOOP AT itab_zycit327.

      READ TABLE i_final WITH KEY produto = itab_zycit327-produto

                                  insumo  = itab_zycit327-insumo

                                  centro  = itab_zycit327-centro

                                  qtunit  = itab_zycit327-usagem.

      IF sy-subrc NE 0.

        CLEAR v_datum.

        v_datum = sy-datum - 1.

        MOVE: v_datum TO itab_zycit327-data_ate.

        MODIFY /pws/zycit327 FROM itab_zycit327.

      ENDIF.

    ENDLOOP.

*    p_list[] = i_final[].

  ENDIF.

* Limpa o endereço de memória e seu conteúdo.

  FREE MEMORY ID idmemory2.

* Chamado 230434 - Fim

ENDFORM. " get_bom_of_materials

*&---------------------------------------------------------------------*

*& Form appropriate_current_record                                     *

*&---------------------------------------------------------------------*

FORM appropriate_current_record.

  DATA: v_apmat(1) TYPE c              ,

        v_diasv TYPE /pws/zycit321-dia_ant ,

        v_qtdaprop LIKE /pws/zycet002-fkimg ,

        v_qtdbase  LIKE itab_stko-bmeng,

        v_error(1) TYPE c              .

  v_apmat = 'N'.

*** Inicio Modificação - Victor Neves 02/06/2004 - F6DK906822

*** Ordena para pegar apartir do ato concessório mais antigo.

  SORT it_zycit247 BY nrseqd.

 

*** Fim Modificação - Victor Neves 02/06/2004 - F6DK906822

 

  CLEAR: it_zycet001, v_pct_com.

  READ TABLE it_zycet001 WITH KEY nrseq = it_zycet002-nrseq.

  IF it_zycet001-dtprev IS INITIAL.

    CLEAR: v_errolog, it_log_erro.

    CONCATENATE text-075 it_zycet002-nrseq text-077

                                    INTO v_errolog SEPARATED BY space.

    MOVE v_errolog TO it_log_erro.

    APPEND it_log_erro.

    EXIT.

 

  ENDIF.

  REFRESH itab_lista_f.

  itab_lista_f[] = itab_lista[].

*    LOOP AT it_zycit247 WHERE codmat   EQ it_zycet002-matnr

  LOOP AT it_zycit247 WHERE j_1bnbm  EQ it_zycet002-steuc

                        AND esgotado EQ ' '

                        AND werks EQ it_zycet002-werks.

    READ TABLE itab_stko WITH KEY stlnr = it_zycit247-stlnr

                                  stlal = it_zycit247-stlal.

    IF sy-subrc NE 0.

      v_qtdbase = 1.

    ELSE.

      v_qtdbase = itab_stko-bmeng.

    ENDIF.

    CLEAR it_zycit244.

    READ TABLE it_zycit244 WITH KEY nrseqd = it_zycit247-nrseqd.

 

    IF sy-subrc NE 0.

      CONTINUE.

    ENDIF.

 

*     Verifica dias de antecedencia ao vencimento do ato

    IF it_zycit244-vcto_vg IS INITIAL.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE text-031 it_zycit244-nrseqd text-076

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

      CONTINUE.

    ENDIF.

    v_diasv = it_zycit244-vcto_vg - it_zycet001-dtprev.

    IF v_diasv < /pws/zycit321-dia_ant.

      CONTINUE.

    ENDIF.

    v_pct_com = v_qtdaprop / it_zycet002-fkimg .

    IF v_qtdaprop >= it_zycet002-fkimg.

      EXIT.

    ENDIF.

    v_apmat = 'S'.

    v_error = 'N'.

*   Se o tipo de ato concessório não for genérico, executa uma rotina

*   de apropriação não genérica, senão, executa uma rotina específica

*   para genérico.

    IF it_zycit244-tipo NE 'G'.

      PERFORM appropriate_tng CHANGING v_qtdaprop v_qtdbase v_error.

    ELSE.

      PERFORM appropriate_tg CHANGING v_qtdaprop v_qtdbase v_error.

    ENDIF.

 

*    IF NOT v_apcomp IS INITIAL.

*      EXIT.

*    ENDIF.

 

    IF v_error EQ 'S'.

      CONTINUE.

    ENDIF.

  ENDLOOP.

  REFRESH: itab_lista.

*  IF v_apcomp IS INITIAL.

  itab_lista[] = itab_lista_f[].

*  ENDIF.

*****************************************

  IF NOT itab_lista_f[] IS INITIAL.

    IF /pws/zycit321-apr_gen EQ 'G'.

      LOOP AT itab_lista_f.

        itab_lista_f-qtd = itab_lista_f-usagem *

          ( it_zycet002-fkimg * v_pct_com  ).

        MODIFY itab_lista_f.

      ENDLOOP.

    ELSE.

      LOOP AT itab_lista_f.

        itab_lista_f-qtd = itab_lista_f-usagem * it_zycet002-fkimg.

        MODIFY itab_lista_f.

      ENDLOOP.

 

    ENDIF.

    REFRESH itab_lista_aux.

    itab_lista_aux[] = itab_lista_f[].

 

 

    REFRESH: itab_fornec.

    LOOP AT it_zycit247f WHERE j_1bnbm  EQ it_zycet002-steuc

                           AND esgotado EQ ' '

                           AND werks EQ it_zycet002-werks.

 

 

      CLEAR it_zycit244.

      READ TABLE it_zycit244 WITH KEY nrseqd = it_zycit247f-nrseqd.

 

      IF sy-subrc NE 0.

        CONTINUE.

      ENDIF.

      READ TABLE itab_fornec WITH KEY lifnr = it_zycit244-lifnr.

      IF sy-subrc EQ 0 AND

        itab_fornec-nrseqd NE it_zycit244-nrseqd.

        CONTINUE.

      ENDIF.

*     Verifica dias de antecedencia ao vencimento do ato

      IF it_zycit244-vcto_vg IS INITIAL.

        CLEAR: v_errolog, it_log_erro.

        CONCATENATE text-031 it_zycit244-nrseqd text-076

                                      INTO v_errolog SEPARATED BY space.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

        CONTINUE.

      ENDIF.

      v_diasv = it_zycit244-vcto_vg - it_zycet001-dtprev.

      IF v_diasv < /pws/zycit321-dia_ant.

        CONTINUE.

      ENDIF.

 

      PERFORM apr_tf .

      DELETE itab_lista_aux WHERE qtd <= 0.

 

*    Verifica se ainda existem insumos a serem apropriados

      IF itab_lista_aux[] IS INITIAL.

        EXIT.

      ENDIF.

 

*   v_menorpct

    ENDLOOP.

  ENDIF.

****************************************************

 

* Atualiza Log de Erro (Não há Atos Concessórios com Saldo).

  IF v_apmat = 'N'.

    CLEAR: v_errolog, it_log_erro.

    CONCATENATE text-021 it_zycet002-matnr '/' it_zycet002-werks

                                      INTO v_errolog SEPARATED BY space.

    MOVE v_errolog TO it_log_erro.

    APPEND it_log_erro.

 

  ENDIF.

 

  IF v_apmat = 'N'.

    CLEAR v_qtdaprop.

  ENDIF.

 

  MOVE v_qtdaprop TO it_zycet002-qtdbx.

  MODIFY it_zycet002.

ENDFORM. " appropriate_current_record

*&---------------------------------------------------------------------*

*& Form get_pct                                                        *

*&---------------------------------------------------------------------*

FORM get_pct USING p_qtdtmp p_qtdebase CHANGING p_menorpct.

  DATA: p_pct_aux TYPE p DECIMALS 5  ,

        v_qtdtot  LIKE /pws/zycee002-fkimg,

        v_qttmp   LIKE /pws/zycee002-fkimg,

        v_tabix   LIKE sy-tabix,

        v_perda   LIKE /pws/zycie245-perda,

        v_qtd_perda   LIKE /pws/zycee002-fkimg,

        v_tabix_245   LIKE sy-tabix,

        c_pct_dec TYPE p DECIMALS 2.

 

  CLEAR it_zycit279.

  MODIFY it_zycit279 TRANSPORTING matnr_alt

    WHERE matnr_alt NE space.

 

  LOOP AT itab_lista.

 

    REFRESH itab_zycit433.

    SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433

          WHERE matnr EQ itab_lista-matnr.

    itab_zycit433-matnr = itab_lista-matnr.

    itab_zycit433-matnr_alt = itab_lista-matnr.

    APPEND itab_zycit433.

 

    LOOP AT itab_zycit433.

      it_zycit279-matnr_alt = itab_zycit433-matnr.

      MODIFY it_zycit279 TRANSPORTING matnr_alt

        WHERE matnr  EQ itab_zycit433-matnr_alt

          AND nrseqd EQ it_zycit247-nrseqd.

 

    ENDLOOP.

 

 

**************************

 

 

 

    CLEAR: v_qtdtot, v_qtd_perda, v_perda, it_zycit245.

    LOOP AT it_zycit279 WHERE matnr_alt EQ itab_lista-matnr

                          AND esgotado = space

                          AND nrseqd   = it_zycit247-nrseqd    .

 

*      v_dtforn

      CLEAR: v_perda, v_dias.

      v_dias = v_dtforn - it_zycit279-dtnf.

      IF it_zycit281-nrdprod > v_dias.

        CONTINUE.

      ENDIF.

 

      READ TABLE itab_zycit439 WITH KEY

          insumo = it_zycit279-matnr

          matnr  = it_zycet002-matnr.

      IF sy-subrc NE 0 OR

          itab_zycit439-perda_e IS INITIAL.

        READ TABLE it_zycit245 WITH KEY

                               nrseqd  = it_zycit247-nrseqd

*                               codcomp = it_zycit279-matnr.

                               j_1bnbm = it_zycit279-j_1bnbm.

 

        IF sy-subrc EQ 0.

          v_perda = it_zycit245-perda_e.

        ENDIF.

      ELSE.

        v_perda = itab_zycit439-perda_e.

      ENDIF.

      v_qtd_perda = ( it_zycit279-slqtde * v_perda ) /

                    ( 100 - v_perda ).

 

      v_qtdtot = v_qtdtot + it_zycit279-slqtde + v_qtd_perda.

 

    ENDLOOP.

 

    p_pct_aux = ( v_qtdtot / itab_lista-qtd ) * 100.

*  Menor percentual

    IF /pws/zycit321-percent EQ 'N'.

      IF ( p_menorpct IS INITIAL

        OR p_menorpct > p_pct_aux ) AND

        NOT p_pct_aux IS INITIAL.

        p_menorpct = p_pct_aux.

      ENDIF.

 

*  Maior percentual

    ELSEIF /pws/zycit321-percent EQ 'M'.

      IF p_menorpct IS INITIAL

        OR p_menorpct < p_pct_aux.

        p_menorpct = p_pct_aux.

      ENDIF.

    ENDIF.

 

    IF p_pct_aux > 100.

      p_pct_aux = 100.

    ENDIF.

    c_pct_dec = p_pct_aux.

    MOVE c_pct_dec TO itab_lista-perc.

    CONCATENATE itab_lista-perc '%' INTO itab_lista-perc.

    MODIFY itab_lista.

  ENDLOOP.

  IF p_menorpct > 100.

    p_menorpct = 100.

  ENDIF.

ENDFORM. " get_pct

*&---------------------------------------------------------------------*

*& Form verify_receive_all_components                                  *

*&---------------------------------------------------------------------*

FORM verify_receive_all_components CHANGING p_allcomp p_totit.

* Verifica se todos os componentes do ato concessório atual foram

* recebidos efetivamente.

  p_allcomp = 'S'.

  LOOP AT it_zycit245 WHERE nrseqd EQ it_zycit247-nrseqd.

    READ TABLE it_zycit279 WITH KEY matnr  = it_zycit245-codcomp

                                    nrseqd = it_zycit245-nrseqd.

    IF sy-subrc NE 0.

      p_allcomp = 'N'.

      EXIT.

    ENDIF.

*   Apura quantos itens têem que ser apropriados no total.

    p_totit = p_totit + 1.

  ENDLOOP.

ENDFORM. " verify_receive_all_components

*&---------------------------------------------------------------------*

*& Form save_appropriations                                            *

*&---------------------------------------------------------------------*

FORM save_appropriations.

* Elimina as exportações não apropriadas.

  LOOP AT it_zycet002.

    v_index = sy-tabix.

    READ TABLE it_apr_final WITH KEY nrseqexp = it_zycet002-nrseq

                                     vbeln_va = it_zycet002-vbeln_va

                                     aupos    = it_zycet002-aupos

                                     vbeln_vf = it_zycet002-vbeln_vf

                                     posnr    = it_zycet002-posnr

                                     docnum   = it_zycet002-docnum

                                     vbeln_vl = it_zycet002-vbeln_vl

                                     posnl    = it_zycet002-posnl

                                     eebeln   = it_zycet002-ebeln

                                     eebelp   = it_zycet002-ebelp.

    IF sy-subrc NE 0.

      DELETE it_zycet002 INDEX v_index.

 

      UPDATE /pws/zycet002 SET staprop = 'E'

                     WHERE nrseq    = it_zycet002-nrseq

                       AND vbeln_va = it_zycet002-vbeln_va

                       AND aupos    = it_zycet002-aupos

                       AND vbeln_vl = it_zycet002-vbeln_vl

                       AND posnl    = it_zycet002-posnl.

    ELSE.

      UPDATE /pws/zycet002 SET staprop = 'A'

                   WHERE nrseq    = it_zycet002-nrseq

                     AND vbeln_va = it_zycet002-vbeln_va

                     AND aupos    = it_zycet002-aupos

                     AND vbeln_vl = it_zycet002-vbeln_vl

                     AND posnl    = it_zycet002-posnl.

 

    ENDIF.

  ENDLOOP.

  MODIFY /pws/zycit282 FROM TABLE it_apr_final.

  MODIFY /pws/zycit283 FROM TABLE it_zycit283.

  MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.

  MODIFY /pws/zycit245 FROM TABLE it_zycit245.

  MODIFY /pws/zycit279 FROM TABLE it_zycit279_save.

  COMMIT WORK.

  IF sy-subrc EQ 0.

    v_aprov = 'S'.

    MESSAGE s015 WITH text-011.

    CLEAR it_log_erro. REFRESH it_log_erro.

*   Desbloqueia os registros de recebimento.

    PERFORM unlock_record_receb.

*   Desbloqueia os registros do ato concessório.

    PERFORM unlock_record_ato.

  ENDIF.

ENDFORM. " save_appropriations

*&---------------------------------------------------------------------*

*& Form execute_loger_button2                                          *

*&---------------------------------------------------------------------*

FORM execute_loger_button2.

  CALL SCREEN '0003' STARTING AT 3 4. " ending at 89 12.

ENDFORM. " execute_loger_button2

*&---------------------------------------------------------------------*

*& Form sort_records_zycit247                                          *

*&---------------------------------------------------------------------*

FORM sort_records_zycit247.

  CLEAR it_zycit247_aux. REFRESH it_zycit247_aux.

* Ordena a tabela interna de cabeçalho dos atos concessórios.

  SORT it_zycit244 BY dtatoc ASCENDING.

  it_zycit247_aux[] = it_zycit247[].

  CLEAR it_zycit247. REFRESH it_zycit247.

* Realimenta a tabela interna de materiais (exportação) em ordem de

* data, de acordo com o cabeçalho do ato concessório.

  LOOP AT it_zycit244.

 

*Authority-check   Centro

    AUTHORITY-CHECK OBJECT 'C_PPBD'

                       ID 'AKTTYP' FIELD 'V'

          ID 'WERKS' FIELD it_zycit244-werks.

    IF sy-subrc NE 0.

*      message i015 with text-289 it_zycit244-werks.

      DELETE it_zycit244.

      DELETE it_zycit247 WHERE nrseqd EQ it_zycit244-nrseqd.

      DELETE it_zycit245 WHERE nrseqd EQ it_zycit244-nrseqd.

      DELETE it_zycit279 WHERE nrseqd EQ it_zycit244-nrseqd.

      CONTINUE.

    ENDIF.

 

*Authority-check   Empresa

    AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

                          ID 'BUKRS' FIELD it_zycit244-bukrs "Empresa

                                      ID 'ACTVT' FIELD '01'.

    IF sy-subrc NE 0.

      DELETE it_zycit244.

      DELETE it_zycit247 WHERE nrseqd EQ it_zycit244-nrseqd.

      DELETE it_zycit245 WHERE nrseqd EQ it_zycit244-nrseqd.

      DELETE it_zycit279 WHERE nrseqd EQ it_zycit244-nrseqd.

      CONTINUE.

    ENDIF.

 

 

    LOOP AT it_zycit247_aux WHERE nrseqd = it_zycit244-nrseqd.

      CLEAR it_zycit247.

      IF it_zycit244-tipo EQ 'C' .

 

        MOVE-CORRESPONDING it_zycit247_aux TO it_zycit247.

        READ TABLE it_zycit279 WITH KEY nrseqd = it_zycit247_aux-nrseqd.

        IF sy-subrc EQ 0.

          APPEND it_zycit247.

        ENDIF.

      ELSE.

        MOVE-CORRESPONDING it_zycit247_aux TO it_zycit247f.

        READ TABLE it_zycit279 WITH KEY nrseqd = it_zycit247_aux-nrseqd.

        IF sy-subrc EQ 0.

          APPEND it_zycit247f.

        ENDIF.

      ENDIF.

    ENDLOOP.

  ENDLOOP.

ENDFORM. " sort_records_zycit247

*&---------------------------------------------------------------------*

*& Form appropriate_tng                                                *

*&---------------------------------------------------------------------*

* Chamado     Data            Descrição

* ----------------------------------------------------------------------

* 220218      02/05/2005      Alterado calculo da quantidade a ser

*                             apropriada para utilizar o campo

*                             it_stpox-MNGKO2 como usagem do componente.

* ----------------------------------------------------------------------

FORM appropriate_tng CHANGING p_qtdaprop p_qtdebase p_error.

  DATA: "v_menorpct   TYPE p DECIMALS 5          ,

        v_allcomp(1) TYPE c                     ,

        v_totit      TYPE i                     ,

        v_totit_tmp  TYPE i                     ,

        v_qtdtmp     LIKE /pws/zycet002-fkimg   ,

        v_qtdtmp2    LIKE /pws/zycet002-fkimg   ,

        v_bxreceb    LIKE /pws/zycit279-slqtde  ,

        v_bxatoc     LIKE /pws/zycit247-sdomat_e,

        v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,

        v_saldo_e    LIKE /pws/zycit247-sdomat_e,

        v_meins_e    LIKE /pws/zycit247-meins   ,

        v_dtnf       LIKE sy-datum              ,

*        v_dias       LIKE /pws/zycit281-nrdprod ,

        v_mdias                                 ,

        v_aprcomum                              ,

        v_dttax      LIKE sy-datum              .

 

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

 

* Apura a quantidade a ser usada do Ato concessório para os cálculos.

  v_qtdtmp  = it_zycet002-fkimg - p_qtdaprop.

  v_meins_e = it_zycit247-meins.

  v_saldo_e = it_zycit247-sdomat_e.

 

  PERFORM converte_um_base USING    it_zycet002-matnr

                        CHANGING v_meins_e

                                 v_saldo_e.

 

 

  IF v_saldo_e >= v_qtdtmp.

    v_qtdtmp = v_qtdtmp.

  ELSE.

    v_qtdtmp = v_saldo_e.

  ENDIF.

 

  LOOP AT itab_lista.

    itab_lista-qtd = itab_lista-usagem * v_qtdtmp.

    MODIFY itab_lista.

  ENDLOOP.

 

  CLEAR: v_menorpct, v_allcomp, v_totit, v_totit_tmp, v_mdias.

* Apura a menor porcentagem usada entre todos os componentes do Ato.

  PERFORM get_pct USING v_qtdtmp p_qtdebase CHANGING v_menorpct.

* Verifica se todos os componentes do ato foram recebidos efetivamente

*  PERFORM verify_receive_all_components CHANGING v_allcomp v_totit.

 

 

  IF v_menorpct > 0. " AND v_allcomp EQ 'S'.

    REFRESH: itab_lista_aux.

    LOOP AT itab_lista.

 

      itab_lista_aux = itab_lista.

      itab_lista_aux-qtd = ( itab_lista-qtd * v_menorpct ) / 100.

      itab_lista-qtd = itab_lista-qtd - itab_lista_aux-qtd.

      APPEND itab_lista_aux.

      MODIFY itab_lista.

    ENDLOOP.

    v_bxatoc = itab_lista_aux-qtd / itab_lista_aux-usagem.

*    v_bxatoc  = ( v_qtdtmp * v_menorpct ) / 100.

*   Se o que for apropriado deste ato for maior do que a quantidade a

*   ser exportada, vai para o próximo ato.

    v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).

    IF v_bxatoc_tmp > it_zycet002-fkimg.

      v_bxatoc = it_zycet002-fkimg - p_qtdaprop .

*      p_error = 'S'.

*      EXIT.

    ENDIF.

    CLEAR: v_apcomp.

    CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.

    IF p_qtdebase IS INITIAL.

      p_qtdebase = 1.

    ENDIF.

    LOOP AT itab_lista_aux.

      v_qtdtmp2 = itab_lista_aux-usagem *

          ( it_zycet002-fkimg - p_qtdaprop ) .

 

      CLEAR it_zycit279.

      MODIFY it_zycit279 TRANSPORTING matnr_alt

        WHERE matnr_alt NE space.

 

 

      REFRESH itab_zycit433.

      SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433

            WHERE matnr EQ itab_lista_aux-matnr.

      itab_zycit433-matnr = itab_lista_aux-matnr.

      itab_zycit433-matnr_alt = itab_lista_aux-matnr.

      APPEND itab_zycit433.

 

      LOOP AT itab_zycit433.

        it_zycit279-matnr_alt = itab_zycit433-matnr.

        MODIFY it_zycit279 TRANSPORTING matnr_alt

          WHERE matnr  EQ itab_zycit433-matnr_alt

            AND nrseqd EQ it_zycit247-nrseqd.

 

      ENDLOOP.

      CLEAR: v_aprcomum.

      LOOP AT it_zycit279 WHERE nrseqd   = it_zycit247-nrseqd

                            AND esgotado = space

                            AND matnr_alt EQ itab_lista_aux-matnr.

 

 

        CLEAR v_dias.

        v_dias = v_dtforn - it_zycit279-dtnf.

        IF it_zycit281-nrdprod > v_dias.

          CONTINUE.

        ENDIF.

 

 

 

        CLEAR it_apr_final.

        MOVE: it_zycet002-nrseq    TO it_apr_final-nrseqexp  ,

              it_zycet002-vbeln_va TO it_apr_final-vbeln_va  ,

              it_zycet002-aupos    TO it_apr_final-aupos     ,

              it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf  ,

              it_zycet002-posnr    TO it_apr_final-posnr     ,

              it_zycet002-docnum   TO it_apr_final-docnum    ,

              it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl  ,

              it_zycet002-posnl    TO it_apr_final-posnl     ,

              it_zycet002-ebeln    TO it_apr_final-eebeln    ,

              it_zycet002-ebelp    TO it_apr_final-eebelp    ,

              it_zycet002-steuc    TO it_apr_final-j_1bnbmexp,

              it_zycit279-nrseq    TO it_apr_final-nrseqimp  ,

              it_zycit279-ebeln    TO it_apr_final-ebeln     ,

              it_zycit279-ebelp    TO it_apr_final-ebelp     ,

              it_zycit279-nrseqd   TO it_apr_final-nrseqd    ,

              it_zycet002-matnr    TO it_apr_final-matnr_exp ,

              it_zycet002-vrkme    TO it_apr_final-meins_e   ,

              it_zycet002-fkimg    TO it_apr_final-qtd_eorg  ,

              itab_lista_aux-perc  TO it_apr_final-perc      ,

              v_bxatoc             TO it_apr_final-qtd_mexp  ,

 

              v_bxatoc             TO it_apr_final-qtd_ncm   ,

              it_zycet002-vrkme    TO it_apr_final-um_ncm    ,

 

              it_zycit247-nritem   TO it_apr_final-nritem    ,

              it_zycit279-matnr    TO it_apr_final-matnr_imp ,

              itab_lista-meins     TO it_apr_final-un_ncm    ,

              it_zycit279-meins    TO it_apr_final-meins_i   .

 

        PERFORM converte_um_ncm USING it_apr_final-matnr_exp

                          CHANGING it_apr_final-um_ncm

                                   it_zycet002-werks

                                   it_apr_final-qtd_ncm.

        it_apr_final-mengecom = it_zycit279-slqtde.

 

 

* Trata perda e Perda excedente

        READ TABLE itab_zycit439 WITH KEY

                 insumo = it_apr_final-matnr_imp

                 matnr  = it_zycet002-matnr.

        IF sy-subrc EQ 0.

          IF itab_zycit439-perda IS INITIAL.

            READ TABLE it_zycit245 WITH KEY

                                   nrseqd  = it_apr_final-nrseqd

                                   j_1bnbm = it_zycit279-j_1bnbm.

            IF sy-subrc EQ 0.

              it_apr_final-perda = it_zycit245-perda.

            ENDIF.

          ELSE.

            it_apr_final-perda = itab_zycit439-perda.

          ENDIF.

          IF itab_zycit439-perda_e IS INITIAL.

            READ TABLE it_zycit245 WITH KEY

                                   nrseqd  = it_apr_final-nrseqd

                                   j_1bnbm = it_zycit279-j_1bnbm.

            IF sy-subrc EQ 0.

              it_apr_final-perda_e = it_zycit245-perda_e.

            ENDIF.

          ELSE.

            it_apr_final-perda_e = itab_zycit439-perda_e.

          ENDIF.

        ELSE.

          READ TABLE it_zycit245 WITH KEY

                                 nrseqd  = it_apr_final-nrseqd

                                 j_1bnbm = it_zycit279-j_1bnbm.

          IF sy-subrc EQ 0.

            it_apr_final-perda = it_zycit245-perda.

            it_apr_final-perda_e = it_zycit245-perda_e.

          ENDIF.

        ENDIF.

 

 

        it_apr_final-qtd_iorg = itab_lista_aux-qtd.

 

************************* ajusta quantidade a apropriar .

        itab_lista_aux-qtd = itab_lista_aux-qtd -

         ( itab_lista_aux-qtd * ( it_apr_final-perda_e / 100 ) ) .

 

*************************

        IF it_zycit279-slqtde < itab_lista_aux-qtd.

 

          it_apr_final-qtd_mimp = it_zycit279-slqtde.

        ELSE.

          it_apr_final-qtd_mimp = itab_lista_aux-qtd.

 

        ENDIF.

        itab_lista_aux-qtd = it_apr_final-qtd_iorg .

        it_apr_final-qtd_iorg = v_qtdtmp2.

 

 

************************* calcula quantidade de perda excesiva.

        it_apr_final-qtd_perda_e =

               ( it_apr_final-qtd_mimp * it_apr_final-perda_e )

                           / ( 100 - it_apr_final-perda_e ) .

 

        it_apr_final-qtd_iorg = it_apr_final-qtd_iorg -

         ( it_apr_final-qtd_iorg * ( it_apr_final-perda_e / 100 ) ).

*************************

        v_qtdtmp2 = v_qtdtmp2 - it_apr_final-qtd_mimp -

                                it_apr_final-qtd_perda_e .

 

*     Calcula perda

        it_apr_final-qtd_perda =

              ( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )

                        * ( it_apr_final-perda / 100 ).

 

*    Atualiza saldos

        itab_lista_aux-qtd = itab_lista_aux-qtd -

                 it_apr_final-qtd_mimp - it_apr_final-qtd_perda_e.

 

 

 

 

 

        DATA: v_nrseqdi LIKE /pws/zycit085-nrseqdi.

 

        FREE itab_zycit246.

 

        SELECT SINGLE * FROM /pws/zycit094

        INTO /pws/zycit094

        WHERE nrseq EQ it_apr_final-nrseqimp.

 

        IF sy-subrc = 0.

          SELECT SINGLE nrdi dtreg dttax

          FROM /pws/zycit085

          INTO (it_apr_final-nrdi,it_apr_final-dtreg,v_dttax)

          WHERE nrbl EQ /pws/zycit094-nrseqce.

        ENDIF.

 

* Verifica o saldo para Export/Import C/S Cobertura Cambial.

        IF it_zycit244-importacao NE 'X'.

          it_apr_final-exp_c_cob_camb =

              it_zycet002-fkimg * it_zycit247-tolling.

 

          CLEAR v_valor_imp.

          v_valor_imp = it_zycit279-valor.

 

          PERFORM valor_converte_imp USING   'BRL'

                                             'USD'

                                             v_dttax

                                    CHANGING v_valor_imp.

 

          it_apr_final-imp_s_cob_camb =

              it_apr_final-qtd_mimp  * v_valor_imp.

        ELSE.

          SELECT vbeln netpr FROM vbap

            INTO TABLE it_vbap

            WHERE vbeln EQ it_apr_final-vbeln_va.

 

          READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.

          IF sy-subrc EQ 0.

            it_apr_final-exp_c_cob_camb =

                it_apr_final-qtd_mexp * it_vbap-netpr.

          ENDIF.

        ENDIF.

 

*----------------------------------------------------------------------*

*-Calcular Campo QTD equivalente mat.de export.------------------------*

 

        DATA: v_usagem TYPE p DECIMALS 5.

        v_usagem = ( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )

                    / itab_lista_aux-usagem.

 

        MOVE v_usagem TO it_apr_final-qtd_eq_mexp.

 

        CLEAR it_apr_final_aux.

        MOVE it_apr_final TO it_apr_final_aux.

 

        APPEND it_apr_final_aux.

        APPEND it_apr_final.

*Remove insumo da lista técnica do intermediario caso tenha sido

* apropriado em ato comum.

        DELETE itab_lista_f WHERE matnr = itab_lista_aux-matnr.

 

 

        it_zycit279-slqtde = it_zycit279-slqtde -

                             it_apr_final-qtd_mimp.

        IF it_zycit279-slqtde <= 0.

          it_zycit279-esgotado = 'X'.

        ENDIF.

        MODIFY it_zycit279.

*         Atualiza a tabela de importações realizadas e seus saldos.

        READ TABLE it_zycit279_save WITH KEY

                                    nrseq  = it_zycit279-nrseq

                                    ebeln  = it_zycit279-ebeln

                                    ebelp  = it_zycit279-ebelp

                                    nrseqd = it_zycit279-nrseqd

                                    matnr  = it_zycit279-matnr.

        IF sy-subrc NE 0.

          CLEAR it_zycit279_save.

          MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

          APPEND it_zycit279_save.

        ELSE.

          it_zycit279_save-slqtde =

                      it_zycit279_save-slqtde - it_apr_final-qtd_mimp.

          IF it_zycit279_save-slqtde <= 0.

            it_zycit279_save-esgotado = 'X'.

          ENDIF.

          MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                  WHERE nrseq  = it_zycit279-nrseq

                                    AND ebeln  = it_zycit279-ebeln

                                    AND ebelp  = it_zycit279-ebelp

                                    AND nrseqd = it_zycit279-nrseqd

                                    AND matnr  = it_zycit279-matnr.

        ENDIF.

        DELETE itab_lista_f WHERE matnr EQ itab_lista_aux-matnr.

 

        v_aprcomum = 'X'.

        IF v_apcomp IS INITIAL.

          v_apcomp = 'S'.

        ENDIF.

        IF itab_lista_aux-qtd <= 0.

          EXIT.

        ENDIF.

      ENDLOOP.

*      IF v_aprcomum IS INITIAL.

**        read table it_apr_final with key

*        itab_lista_f = itab_lista_aux.

*        APPEND itab_lista_f.

*      ENDIF.

 

    ENDLOOP.

*   Checa se foi efetuada as apropriações dos componentes.

    IF v_apcomp IS INITIAL.

 

      IF NOT v_mdias IS INITIAL.

        CONCATENATE text-066 it_zycit281-nrdprod

                    text-067 it_zycit281-matnr

          INTO v_errolog SEPARATED BY space.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

 

      ENDIF.

 

 

      p_error = 'S'.

      EXIT.

*    ELSE.

    ENDIF.

    v_saldo_e = v_bxatoc .

    PERFORM converte_unidade  USING it_zycet002-matnr

                                    it_zycet002-vrkme

                                    it_zycit247-meins

                           CHANGING v_saldo_e.

 

    it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_saldo_e.

    IF it_zycit247-sdomat_e <= 0.

      it_zycit247-esgotado = 'X'.

    ENDIF.

    MODIFY it_zycit247.

*   Atualiza a tabela de exportações e seus saldos.

    READ TABLE it_zycit247_save WITH KEY

                                      nrseqd = it_zycit247-nrseqd

                                      nritem = it_zycit247-nritem.

    IF sy-subrc NE 0.

      CLEAR it_zycit247_save.

      MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.

      APPEND it_zycit247_save.

    ELSE.

      it_zycit247_save-sdomat_e =

                                 it_zycit247_save-sdomat_e - v_saldo_e.

      IF it_zycit247_save-sdomat_e <= 0.

        it_zycit247_save-esgotado = 'X'.

      ENDIF.

      MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                              WHERE nrseqd  = it_zycit247-nrseqd

                                AND nritem  = it_zycit247-nritem.

    ENDIF.

    p_qtdaprop = p_qtdaprop + v_bxatoc.

  ELSE.

*   Atualiza Log de Erro.

    IF v_menorpct <= 0.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE text-031 it_zycit247-nrseqd text-018

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ELSEIF v_allcomp EQ 'N'.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE

      text-017 it_zycet002-matnr text-019 it_zycit247-nrseqd text-020

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ENDIF.

  ENDIF.

ENDFORM. " appropriate_tng

*&---------------------------------------------------------------------*

*& Form appropriate_tg                                                 *

*&---------------------------------------------------------------------*

FORM appropriate_tg CHANGING p_qtdaprop

                             p_qtdebase

                             p_error.

  DATA: v_menorpct   TYPE p DECIMALS 5     ,

        v_qtdtmp     LIKE /pws/zycet002-fkimg   ,

        v_bxreceb    LIKE /pws/zycit279-slqtde  ,

        v_bxatoc     LIKE /pws/zycit247-sdomat_e,

        v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,

        v_valor_imp  LIKE /pws/zycit282-imp_s_cob_camb.

 

* Apura a quantidade a ser usada do Ato concessório para os cálculos.

  IF it_zycit247-sdomat_e >= it_zycet002-fkimg.

    v_qtdtmp = it_zycet002-fkimg.

  ELSE.

    v_qtdtmp = it_zycit247-sdomat_e.

  ENDIF.

  IF v_qtdtmp > p_qtdaprop.

    v_qtdtmp = v_qtdtmp - p_qtdaprop.

  ELSE.

    v_qtdtmp = p_qtdaprop - v_qtdtmp.

  ENDIF.

  CLEAR v_menorpct.

* Apura a menor porcentagem usada entre todos os componentes do Ato.

  PERFORM get_pct_tg USING v_qtdtmp p_qtdebase CHANGING v_menorpct.

  IF v_menorpct > 0.

    v_bxatoc = ( v_qtdtmp * v_menorpct ) / 100.

*   Se o que for apropriado deste ato for maior do que a quantidade a

*   ser exportada, vai para o próximo ato.

    v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).

    IF v_bxatoc_tmp > it_zycet002-fkimg.

      p_error = 'S'.

      EXIT.

    ENDIF.

    CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.

    LOOP AT it_zycit279 WHERE nrseqd   = it_zycit247-nrseqd

                          AND esgotado = ' '.

      READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.

      IF sy-subrc EQ 0.

        v_bxreceb = ( ( v_qtdtmp *

                ( it_stpox-mngko2 / p_qtdebase ) ) * v_menorpct ) / 100.

*       Verifica se o item recebido tem saldo suficiente. Caso não

*       tenha, vai para o próximo item do recebimento.

        IF it_zycit279-slqtde < v_bxreceb.

          CONTINUE.

        ENDIF.

        CLEAR it_apr_final.

        MOVE: it_zycet002-nrseq    TO it_apr_final-nrseqexp ,

              it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,

              it_zycet002-aupos    TO it_apr_final-aupos    ,

              it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,

              it_zycet002-posnr    TO it_apr_final-posnr    ,

              it_zycet002-docnum   TO it_apr_final-docnum   ,

              it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,

              it_zycet002-posnl    TO it_apr_final-posnl    ,

              it_zycet002-ebeln    TO it_apr_final-eebeln   ,

              it_zycet002-ebelp    TO it_apr_final-eebelp   ,

              it_zycet002-steuc    TO it_apr_final-j_1bnbmexp,

              it_zycit279-nrseq    TO it_apr_final-nrseqimp ,

              it_zycit279-ebeln    TO it_apr_final-ebeln    ,

              it_zycit279-ebelp    TO it_apr_final-ebelp    ,

              it_zycit279-nrseqd   TO it_apr_final-nrseqd   ,

              it_zycet002-matnr    TO it_apr_final-matnr_exp,

              it_zycet002-vrkme    TO it_apr_final-meins_e  ,

              it_zycet002-fkimg    TO it_apr_final-qtd_eorg ,

              v_bxatoc             TO it_apr_final-qtd_mexp ,

              it_zycit279-matnr    TO it_apr_final-matnr_imp,

              it_zycit279-meins    TO it_apr_final-meins_i  ,

              v_bxreceb            TO it_apr_final-qtd_mimp .

        it_apr_final-qtd_iorg =

                        ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).

 

*PWS243757 - Início ---------------------------------------------------

* Verifica o saldo para Export/Import C/S Cobertura Cambial.

        IF it_zycit244-importacao NE 'X'.

          it_apr_final-exp_c_cob_camb =

              it_zycet002-fkimg * it_zycit247-tolling.

          CLEAR v_valor_imp.

          v_valor_imp = it_zycit279-valor.

 

          PERFORM valor_converte_imp USING   'BRL'

                                             'USD'

                                             it_apr_final-dtreg

                                    CHANGING v_valor_imp.

 

          it_apr_final-imp_s_cob_camb =

              it_apr_final-qtd_mimp  * v_valor_imp.

        ELSE.

          SELECT vbeln netpr FROM vbap

            INTO TABLE it_vbap

            WHERE vbeln EQ it_apr_final-vbeln_va.

 

          READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.

          IF sy-subrc EQ 0.

            it_apr_final-exp_c_cob_camb =

                it_apr_final-qtd_mexp * it_vbap-netpr.

          ENDIF.

        ENDIF.

*PWS243757 - Fim ------------------------------------------------------

*PWS245742 - Início ----------------------------------------------------

        SELECT * FROM /pws/zycit439

               WHERE insumo EQ it_apr_final-matnr_imp

                 AND matnr  EQ it_zycet002-matnr.

        ENDSELECT.

        IF sy-subrc EQ 0.

          IF /pws/zycit439-dtde > sy-datum AND

             /pws/zycit439-dtate <= sy-datum.

            it_apr_final-perda = /pws/zycit439-perda.

            it_apr_final-qtd_perda =

            ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

          ELSE.

            READ TABLE it_zycit245 WITH KEY

                                   nrseqd  = it_apr_final-nrseqd

                                   codcomp = it_apr_final-matnr_imp.

            IF sy-subrc EQ 0.

              it_apr_final-perda = it_zycit245-perda.

 

              it_apr_final-qtd_perda =

              ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

            ENDIF.

          ENDIF.

        ELSE.

          READ TABLE it_zycit245 WITH KEY nrseqd = it_apr_final-nrseqd.

          IF sy-subrc EQ 0.

            it_apr_final-perda = it_zycit245-perda.

            it_apr_final-qtd_perda =

            ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

          ENDIF.

        ENDIF.

*PWS245742 - Fim -------------------------------------------------------

 

        CLEAR it_apr_final_aux.

        MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.

        APPEND it_apr_final_aux.

        APPEND it_apr_final.

        it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.

        IF it_zycit279-slqtde <= 0.

          it_zycit279-esgotado = 'X'.

        ENDIF.

        MODIFY it_zycit279.

*       Atualiza a tabela de importações realizadas e seus saldos.

        READ TABLE it_zycit279_save WITH KEY

                                    nrseq  = it_zycit279-nrseq

                                    ebeln  = it_zycit279-ebeln

                                    ebelp  = it_zycit279-ebelp

                                    nrseqd = it_zycit279-nrseqd

                                    matnr  = it_zycit279-matnr.

        IF sy-subrc NE 0.

          CLEAR it_zycit279_save.

          MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

          APPEND it_zycit279_save.

        ELSE.

          it_zycit279_save-slqtde =

                                  it_zycit279_save-slqtde - v_bxreceb.

          IF it_zycit279_save-slqtde <= 0.

            it_zycit279_save-esgotado = 'X'.

          ENDIF.

          MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                    WHERE nrseq  = it_zycit279-nrseq

                                      AND ebeln  = it_zycit279-ebeln

                                      AND ebelp  = it_zycit279-ebelp

                                      AND nrseqd = it_zycit279-nrseqd

                                      AND matnr  = it_zycit279-matnr.

        ENDIF.

      ENDIF.

    ENDLOOP.

    CLEAR it_zycit283.

    MOVE: it_zycet002-nrseq    TO it_zycit283-nrseqexp,

          it_zycet002-vbeln_va TO it_zycit283-vbeln_va,

          it_zycet002-aupos    TO it_zycit283-aupos   ,

          it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,

          it_zycet002-posnr    TO it_zycit283-posnr   ,

          it_zycet002-docnum   TO it_zycit283-docnum  ,

          it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,

          it_zycet002-posnl    TO it_zycit283-posnl   ,

          it_zycet002-ebeln    TO it_zycit283-eebeln  ,

          it_zycet002-ebelp    TO it_zycit283-eebelp  ,

          it_zycit247-codmat   TO it_zycit283-matnr   ,

          it_zycit247-nrseqd   TO it_zycit283-nrseqd  ,

          it_zycit247-meins    TO it_zycit283-meins   ,

          v_bxatoc             TO it_zycit283-qtd_apr .

    APPEND it_zycit283.

    it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.

    IF it_zycit247-sdomat_e <= 0.

      it_zycit247-esgotado = 'X'.

    ENDIF.

    MODIFY it_zycit247.

*   Atualiza a tabela de exportações e seus saldos.

    READ TABLE it_zycit247_save WITH KEY

                                      nrseqd = it_zycit247-nrseqd

                                      codmat = it_zycit247-codmat

                                      werks  = it_zycit247-werks

                                      stlan  = it_zycit247-stlan

                                      stlnr  = it_zycit247-stlnr

                                      stlal  = it_zycit247-stlal.

    IF sy-subrc NE 0.

      CLEAR it_zycit247_save.

      MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.

      APPEND it_zycit247_save.

    ELSE.

      it_zycit247_save-sdomat_e =

                                 it_zycit247_save-sdomat_e - v_bxatoc.

      IF it_zycit247_save-sdomat_e <= 0.

        it_zycit247_save-esgotado = 'X'.

      ENDIF.

      MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                              WHERE nrseqd  = it_zycit247-nrseqd

                                AND codmat  = it_zycit247-codmat

                                AND werks   = it_zycit247-werks

                                AND stlan   = it_zycit247-stlan

                                AND stlnr   = it_zycit247-stlnr

                                AND stlal   = it_zycit247-stlal.

    ENDIF.

    p_qtdaprop = p_qtdaprop + v_bxatoc.

  ELSE.

*   Atualiza Log de Erro.

    IF v_menorpct <= 0.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE text-017 it_zycet002-matnr text-018

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ENDIF.

  ENDIF.

ENDFORM. " appropriate_tg

*&---------------------------------------------------------------------*

*& Form get_pct_tg                                                     *

*&---------------------------------------------------------------------*

FORM get_pct_tg USING    p_qtdtmp

                         p_qtdebase

                CHANGING p_menorpct.

  DATA: p_pct_aux TYPE p DECIMALS 5.

  LOOP AT it_zycit279 WHERE nrseqd = it_zycit247-nrseqd.

    READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.

    IF sy-subrc EQ 0.

      p_pct_aux =

        ( it_zycit279-slqtde / ( p_qtdtmp *

                             ( it_stpox-mngko2 / p_qtdebase ) ) ) * 100.

      IF p_pct_aux < p_menorpct OR p_menorpct IS INITIAL.

        p_menorpct = p_pct_aux.

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF p_menorpct > 100.

    p_menorpct = 100.

  ENDIF.

ENDFORM. " get_pct_tg

*&---------------------------------------------------------------------*

*& Form appropriate_tng_mod                                            *

*&---------------------------------------------------------------------*

FORM appropriate_tng_mod CHANGING p_qtdaprop

                                  p_qtdebase

                                  p_error

                                  p_pctapr.

  DATA: v_allcomp(1) TYPE c                ,

        v_totit      TYPE i                ,

        v_totit_tmp  TYPE i                ,

        v_qtdtmp     LIKE /pws/zycet002-fkimg   ,

        v_apcomp(1)  TYPE c                ,

        v_bxreceb    LIKE /pws/zycit279-slqtde  ,

        v_bxatoc     LIKE /pws/zycit247-sdomat_e,

        v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,

        v_valor_imp  LIKE /pws/zycit282-imp_s_cob_camb,

        v_dttax      LIKE sy-datum.

 

* Apura a quantidade a ser usada do Ato concessório para os cálculos.

  IF it_zycit247-sdomat_e >= it_zycet002-fkimg.

    v_qtdtmp = it_zycet002-fkimg.

  ELSE.

    v_qtdtmp = it_zycit247-sdomat_e.

  ENDIF.

  IF v_qtdtmp > p_qtdaprop.

    v_qtdtmp = v_qtdtmp - p_qtdaprop.

  ELSE.

    v_qtdtmp = p_qtdaprop - v_qtdtmp.

  ENDIF.

  CLEAR: v_allcomp, v_totit, v_totit_tmp.

* Verifica se todos os componentes do ato foram recebidos efetivamente

  PERFORM verify_receive_all_components CHANGING v_allcomp v_totit.

  IF p_pctapr > 0 AND v_allcomp EQ 'S'.

    v_bxatoc  = ( v_qtdtmp * p_pctapr ) / 100.

*   Se o que for apropriado deste ato for maior do que a quantidade a

*   ser exportada, vai para o próximo ato.

    v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).

    IF v_bxatoc_tmp > v_qtdbx.

      p_error = 'S'.

      EXIT.

    ENDIF.

    CLEAR: v_apcomp.

    CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.

    LOOP AT it_zycit279 WHERE nrseqd   = it_zycit247-nrseqd

                          AND esgotado = ' '.

      READ TABLE it_zycit245 WITH KEY codcomp = it_zycit279-matnr

                                      nrseqd  = it_zycit279-nrseqd.

      IF sy-subrc EQ 0.

        READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.

        IF sy-subrc EQ 0.

          v_bxreceb =

          ( ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ) *

                                                       p_pctapr ) / 100.

*         Verifica se o item recebido tem saldo suficiente. Caso não

*         tenha, vai para o próximo item do recebimento.

          IF it_zycit279-slqtde < v_bxreceb.

            CONTINUE.

          ENDIF.

*         Apura o total de itens apropriados para confrontar com o que

*         foi recebido totalmente.

          v_totit_tmp = v_totit_tmp + 1.

          CLEAR it_apr_final.

          MOVE: it_zycet002-nrseq    TO it_apr_final-nrseqexp ,

                it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,

                it_zycet002-aupos    TO it_apr_final-aupos    ,

                it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,

                it_zycet002-posnr    TO it_apr_final-posnr    ,

                it_zycet002-docnum   TO it_apr_final-docnum   ,

                it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,

                it_zycet002-posnl    TO it_apr_final-posnl    ,

                it_zycet002-ebeln    TO it_apr_final-eebeln   ,

                it_zycet002-ebelp    TO it_apr_final-eebelp   ,

               it_zycet002-steuc    TO it_apr_final-j_1bnbmexp,

                it_zycit279-nrseq    TO it_apr_final-nrseqimp ,

                it_zycit279-ebeln    TO it_apr_final-ebeln    ,

                it_zycit279-ebelp    TO it_apr_final-ebelp    ,

                it_zycit279-nrseqd   TO it_apr_final-nrseqd   ,

                it_zycet002-matnr    TO it_apr_final-matnr_exp,

                it_zycet002-vrkme    TO it_apr_final-meins_e  ,

                it_zycet002-fkimg    TO it_apr_final-qtd_eorg ,

                v_bxatoc             TO it_apr_final-qtd_mexp ,

                it_zycit279-matnr    TO it_apr_final-matnr_imp,

                it_zycit279-meins    TO it_apr_final-meins_i  ,

                v_bxreceb            TO it_apr_final-qtd_mimp .

          it_apr_final-qtd_iorg =

                        ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).

 

*PWS243757 - Início ---------------------------------------------------

* Verifica o saldo para Export/Import C/S Cobertura Cambial.

          IF it_zycit244-importacao NE 'X'.

            it_apr_final-exp_c_cob_camb =

                it_zycet002-fkimg * it_zycit247-tolling.

 

            CLEAR v_valor_imp.

            v_valor_imp = it_zycit279-valor.

 

            PERFORM valor_converte_imp USING   'BRL'

                                               'USD'

                                               v_dttax

                                      CHANGING v_valor_imp.

 

            it_apr_final-imp_s_cob_camb =

                it_apr_final-qtd_mimp  * v_valor_imp.

          ELSE.

            SELECT vbeln netpr FROM vbap

              INTO TABLE it_vbap

              WHERE vbeln EQ it_apr_final-vbeln_va.

 

            READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.

            IF sy-subrc EQ 0.

              it_apr_final-exp_c_cob_camb =

                  it_apr_final-qtd_mexp * it_vbap-netpr.

            ENDIF.

          ENDIF.

*PWS243757 - Fim ------------------------------------------------------

*PWS245742 - Início ----------------------------------------------------

          SELECT * FROM /pws/zycit439

                 WHERE insumo EQ it_apr_final-matnr_imp

                   AND matnr  EQ it_zycet002-matnr.

          ENDSELECT.

          IF sy-subrc EQ 0.

            it_apr_final-perda = /pws/zycit439-perda.

            it_apr_final-qtd_perda =

            ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

          ELSE.

            READ TABLE it_zycit245 WITH KEY

                                   nrseqd  = it_apr_final-nrseqd

                                   codcomp = it_apr_final-matnr_imp.

            IF sy-subrc EQ 0.

              it_apr_final-perda = it_zycit245-perda.

 

              it_apr_final-qtd_perda =

              ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

            ENDIF.

          ENDIF.

*PWS245742 - Fim -------------------------------------------------------

 

 

          CLEAR it_apr_final_aux.

          MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.

          APPEND it_apr_final_aux.

          APPEND it_apr_final.

          it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.

          IF it_zycit279-slqtde <= 0.

            it_zycit279-esgotado = 'X'.

          ENDIF.

          MODIFY it_zycit279.

*         Atualiza a tabela de importações realizadas e seus saldos.

          READ TABLE it_zycit279_save WITH KEY

                                      nrseq  = it_zycit279-nrseq

                                      ebeln  = it_zycit279-ebeln

                                      ebelp  = it_zycit279-ebelp

                                      nrseqd = it_zycit279-nrseqd

                                      matnr  = it_zycit279-matnr.

          IF sy-subrc NE 0.

            CLEAR it_zycit279_save.

            MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

            APPEND it_zycit279_save.

          ELSE.

            it_zycit279_save-slqtde =

                                  it_zycit279_save-slqtde - v_bxreceb.

            IF it_zycit279_save-slqtde <= 0.

              it_zycit279_save-esgotado = 'X'.

            ENDIF.

            MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                    WHERE nrseq  = it_zycit279-nrseq

                                      AND ebeln  = it_zycit279-ebeln

                                      AND ebelp  = it_zycit279-ebelp

                                      AND nrseqd = it_zycit279-nrseqd

                                      AND matnr  = it_zycit279-matnr.

          ENDIF.

          IF v_apcomp IS INITIAL.

            v_apcomp = 'S'.

          ENDIF.

        ENDIF.

      ENDIF.

    ENDLOOP.

*   Checa se foi efetuada as apropriações dos componentes.

    IF v_apcomp IS INITIAL.

      p_error = 'S'.

      EXIT.

    ELSE.

*     Estorna os componentes apropriados não salvando-os na tabela

*     transparente caso não tenha sido efetuada a apropriação de todos

*     os componentes do ato concessório em vigência.

      IF v_totit NE v_totit_tmp.

        LOOP AT it_apr_final_aux.

          LOOP AT it_zycit279 WHERE

                                  nrseq  = it_apr_final_aux-nrseqimp

                              AND ebeln  = it_apr_final_aux-ebeln

                              AND ebelp  = it_apr_final_aux-ebelp

                              AND nrseqd = it_apr_final_aux-nrseqd

                              AND matnr  = it_apr_final_aux-matnr_imp.

            it_zycit279-slqtde =

                           it_zycit279-slqtde + it_apr_final-qtd_mimp.

            IF it_zycit279-slqtde > 0.

              it_zycit279-esgotado = ' '.

            ENDIF.

            MODIFY it_zycit279.

            DELETE it_zycit279_save WHERE nrseq  = it_zycit279-nrseq

                                      AND ebeln  = it_zycit279-ebeln

                                      AND ebelp  = it_zycit279-ebelp

                                      AND nrseqd = it_zycit279-nrseqd

                                      AND matnr  = it_zycit279-matnr.

          ENDLOOP.

          DELETE it_apr_final WHERE

                                  nrseqexp = it_apr_final_aux-nrseqexp

                              AND vbeln_va = it_apr_final_aux-vbeln_va

                              AND aupos    = it_apr_final_aux-aupos

                              AND vbeln_vf = it_apr_final_aux-vbeln_vf

                              AND posnr    = it_apr_final_aux-posnr

                              AND docnum   = it_apr_final_aux-docnum

                              AND vbeln_vl = it_apr_final_aux-vbeln_vl

                              AND posnl    = it_apr_final_aux-posnl

                              AND eebeln   = it_apr_final_aux-eebeln

                              AND eebelp   = it_apr_final_aux-eebelp

                              AND nrseqimp = it_apr_final_aux-nrseqimp

                              AND ebeln    = it_apr_final_aux-ebeln

                              AND ebelp    = it_apr_final_aux-ebelp

                              AND nrseqd   = it_apr_final_aux-nrseqd.

        ENDLOOP.

        p_error = 'S'.

        EXIT.

      ENDIF.

    ENDIF.

    CLEAR it_zycit283.

    MOVE: it_zycet002-nrseq    TO it_zycit283-nrseqexp,

          it_zycet002-vbeln_va TO it_zycit283-vbeln_va,

          it_zycet002-aupos    TO it_zycit283-aupos   ,

          it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,

          it_zycet002-posnr    TO it_zycit283-posnr   ,

          it_zycet002-docnum   TO it_zycit283-docnum  ,

          it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,

          it_zycet002-posnl    TO it_zycit283-posnl   ,

          it_zycet002-ebeln    TO it_zycit283-eebeln  ,

          it_zycet002-ebelp    TO it_zycit283-eebelp  ,

          it_zycit247-nrseqd   TO it_zycit283-nrseqd  ,

          it_zycit247-meins    TO it_zycit283-meins   ,

          v_bxatoc             TO it_zycit283-qtd_apr .

    APPEND it_zycit283.

    it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.

    IF it_zycit247-sdomat_e <= 0.

      it_zycit247-esgotado = 'X'.

    ENDIF.

    MODIFY it_zycit247.

*   Atualiza a tabela de exportações e seus saldos.

    READ TABLE it_zycit247_save WITH KEY

                                      nrseqd = it_zycit247-nrseqd

                                      codmat = it_zycit247-codmat

                                      werks  = it_zycit247-werks

                                      stlan  = it_zycit247-stlan

                                      stlnr  = it_zycit247-stlnr

                                      stlal  = it_zycit247-stlal.

    IF sy-subrc NE 0.

      CLEAR it_zycit247_save.

      MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.

      APPEND it_zycit247_save.

    ELSE.

      it_zycit247_save-sdomat_e =

                                 it_zycit247_save-sdomat_e - v_bxatoc.

      IF it_zycit247_save-sdomat_e <= 0.

        it_zycit247_save-esgotado = 'X'.

      ENDIF.

      MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                              WHERE nrseqd  = it_zycit247-nrseqd

                                AND codmat  = it_zycit247-codmat

                                AND werks   = it_zycit247-werks

                                AND stlan   = it_zycit247-stlan

                                AND stlnr   = it_zycit247-stlnr

                                AND stlal   = it_zycit247-stlal.

    ENDIF.

    p_qtdaprop = p_qtdaprop + v_bxatoc.

  ELSE.

*   Atualiza Log de Erro.

    IF p_pctapr <= 0.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE text-017 it_zycet002-matnr text-018

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ELSEIF v_allcomp EQ 'N'.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE

       text-017 it_zycet002-matnr text-019 it_zycit247-nrseqd text-020

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ENDIF.

  ENDIF.

ENDFORM. " appropriate_tng_mod

*&---------------------------------------------------------------------*

*& Form appropriate_tg_mod                                             *

*&---------------------------------------------------------------------*

FORM appropriate_tg_mod CHANGING p_qtdaprop

                                 p_qtdebase

                                 p_error

                                 p_pctapr.

  DATA: v_qtdtmp     LIKE /pws/zycet002-fkimg   ,

        v_bxreceb    LIKE /pws/zycit279-slqtde  ,

        v_bxatoc     LIKE /pws/zycit247-sdomat_e,

        v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e.

* Apura a quantidade a ser usada do Ato concessório para os cálculos.

  IF it_zycit247-sdomat_e >= v_qtdbx.

    v_qtdtmp = v_qtdbx.

  ELSE.

    v_qtdtmp = it_zycit247-sdomat_e.

  ENDIF.

  IF v_qtdtmp > p_qtdaprop.

    v_qtdtmp = v_qtdtmp - p_qtdaprop.

  ELSE.

    v_qtdtmp = p_qtdaprop - v_qtdtmp.

  ENDIF.

  IF p_pctapr > 0.

    v_bxatoc = ( v_qtdtmp * p_pctapr ) / 100.

*   Se o que for apropriado deste ato for maior do que a quantidade a

*   ser exportada, vai para o próximo ato.

    v_bxatoc_tmp = ( p_qtdaprop + v_bxatoc ).

    IF v_bxatoc_tmp > v_qtdbx.

      p_error = 'S'.

      EXIT.

    ENDIF.

    CLEAR it_apr_final_aux. REFRESH it_apr_final_aux.

    LOOP AT it_zycit279 WHERE nrseqd   = it_zycit247-nrseqd

                          AND esgotado = ' '.

      READ TABLE it_stpox WITH KEY idnrk = it_zycit279-matnr.

      IF sy-subrc EQ 0.

        v_bxreceb = ( ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ) *

                                                       p_pctapr ) / 100.

*       Verifica se o item recebido tem saldo suficiente. Caso não

*       tenha, vai para o próximo item do recebimento.

        IF it_zycit279-slqtde < v_bxreceb.

          CONTINUE.

        ENDIF.

        CLEAR it_apr_final.

        MOVE: it_zycet002-nrseq    TO it_apr_final-nrseqexp ,

              it_zycet002-vbeln_va TO it_apr_final-vbeln_va ,

              it_zycet002-aupos    TO it_apr_final-aupos    ,

              it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf ,

              it_zycet002-posnr    TO it_apr_final-posnr    ,

              it_zycet002-docnum   TO it_apr_final-docnum   ,

              it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl ,

              it_zycet002-posnl    TO it_apr_final-posnl    ,

              it_zycet002-ebeln    TO it_apr_final-eebeln   ,

              it_zycet002-ebelp    TO it_apr_final-eebelp   ,

             it_zycet002-steuc    TO it_apr_final-j_1bnbmexp,

              it_zycit279-nrseq    TO it_apr_final-nrseqimp ,

              it_zycit279-ebeln    TO it_apr_final-ebeln    ,

              it_zycit279-ebelp    TO it_apr_final-ebelp    ,

              it_zycit279-nrseqd   TO it_apr_final-nrseqd   ,

              it_zycet002-matnr    TO it_apr_final-matnr_exp,

              it_zycet002-vrkme    TO it_apr_final-meins_e  ,

              it_zycet002-fkimg    TO it_apr_final-qtd_eorg ,

              v_bxatoc             TO it_apr_final-qtd_mexp ,

              it_zycit279-matnr    TO it_apr_final-matnr_imp,

              it_zycit279-meins    TO it_apr_final-meins_i  ,

              v_bxreceb            TO it_apr_final-qtd_mimp .

        it_apr_final-qtd_iorg =

                        ( v_qtdtmp * ( it_stpox-mngko2 / p_qtdebase ) ).

 

*PWS243757 - Início ---------------------------------------------------

* Verifica o saldo para Export/Import C/S Cobertura Cambial.

        IF it_zycit244-importacao NE 'X'.

          it_apr_final-exp_c_cob_camb =

              it_zycet002-fkimg * it_zycit247-tolling.

          it_apr_final-imp_s_cob_camb =

              it_apr_final-qtd_mimp  * it_zycit279-valor.

        ELSE.

          SELECT vbeln netpr FROM vbap

            INTO TABLE it_vbap

            WHERE vbeln EQ it_apr_final-vbeln_va.

 

          READ TABLE it_vbap WITH KEY vbeln = it_apr_final-vbeln_va.

          IF sy-subrc EQ 0.

            it_apr_final-exp_c_cob_camb =

                it_apr_final-qtd_mexp * it_vbap-netpr.

          ENDIF.

        ENDIF.

*PWS243757 - Fim ------------------------------------------------------

*PWS245742 - Início ----------------------------------------------------

        SELECT * FROM /pws/zycit439

               WHERE insumo EQ it_apr_final-matnr_imp

                 AND matnr  EQ it_zycet002-matnr.

        ENDSELECT.

        IF sy-subrc EQ 0.

          it_apr_final-perda = /pws/zycit439-perda.

          it_apr_final-qtd_perda =

          ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

        ELSE.

          READ TABLE it_zycit245 WITH KEY

                                 nrseqd  = it_apr_final-nrseqd

                                 codcomp = it_apr_final-matnr_imp.

          IF sy-subrc EQ 0.

            it_apr_final-perda = it_zycit245-perda.

 

            it_apr_final-qtd_perda =

            ( it_apr_final-qtd_mimp * it_apr_final-perda ) / 100.

          ENDIF.

        ENDIF.

*PWS245742 - Fim -------------------------------------------------------

 

 

        CLEAR it_apr_final_aux.

        MOVE-CORRESPONDING it_apr_final TO it_apr_final_aux.

        APPEND it_apr_final_aux.

        APPEND it_apr_final.

        it_zycit279-slqtde = it_zycit279-slqtde - v_bxreceb.

        IF it_zycit279-slqtde <= 0.

          it_zycit279-esgotado = 'X'.

        ENDIF.

        MODIFY it_zycit279.

*       Atualiza a tabela de importações realizadas e seus saldos.

        READ TABLE it_zycit279_save WITH KEY

                                    nrseq  = it_zycit279-nrseq

                                    ebeln  = it_zycit279-ebeln

                                    ebelp  = it_zycit279-ebelp

                                    nrseqd = it_zycit279-nrseqd

                                    matnr  = it_zycit279-matnr.

        IF sy-subrc NE 0.

          CLEAR it_zycit279_save.

          MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

          APPEND it_zycit279_save.

        ELSE.

          it_zycit279_save-slqtde =

                                  it_zycit279_save-slqtde - v_bxreceb.

          IF it_zycit279_save-slqtde <= 0.

            it_zycit279_save-esgotado = 'X'.

          ENDIF.

          MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                    WHERE nrseq  = it_zycit279-nrseq

                                      AND ebeln  = it_zycit279-ebeln

                                      AND ebelp  = it_zycit279-ebelp

                                      AND nrseqd = it_zycit279-nrseqd

                                      AND matnr  = it_zycit279-matnr.

        ENDIF.

      ENDIF.

    ENDLOOP.

    CLEAR it_zycit283.

    MOVE: it_zycet002-nrseq    TO it_zycit283-nrseqexp,

          it_zycet002-vbeln_va TO it_zycit283-vbeln_va,

          it_zycet002-aupos    TO it_zycit283-aupos   ,

          it_zycet002-vbeln_vf TO it_zycit283-vbeln_vf,

          it_zycet002-posnr    TO it_zycit283-posnr   ,

          it_zycet002-docnum   TO it_zycit283-docnum  ,

          it_zycet002-vbeln_vl TO it_zycit283-vbeln_vl,

          it_zycet002-posnl    TO it_zycit283-posnl   ,

          it_zycet002-ebeln    TO it_zycit283-eebeln  ,

          it_zycet002-ebelp    TO it_zycit283-eebelp  ,

          it_zycit247-nrseqd   TO it_zycit283-nrseqd  ,

          it_zycit247-meins    TO it_zycit283-meins   ,

          v_bxatoc             TO it_zycit283-qtd_apr .

    APPEND it_zycit283.

    it_zycit247-sdomat_e = it_zycit247-sdomat_e - v_bxatoc.

    IF it_zycit247-sdomat_e <= 0.

      it_zycit247-esgotado = 'X'.

    ENDIF.

    MODIFY it_zycit247.

*   Atualiza a tabela de exportações e seus saldos.

    READ TABLE it_zycit247_save WITH KEY

                                      nrseqd = it_zycit247-nrseqd

                                      codmat = it_zycit247-codmat

                                      werks  = it_zycit247-werks

                                      stlan  = it_zycit247-stlan

                                      stlnr  = it_zycit247-stlnr

                                      stlal  = it_zycit247-stlal.

    IF sy-subrc NE 0.

      CLEAR it_zycit247_save.

      MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.

      APPEND it_zycit247_save.

    ELSE.

      it_zycit247_save-sdomat_e =

                                 it_zycit247_save-sdomat_e - v_bxatoc.

      IF it_zycit247_save-sdomat_e <= 0.

        it_zycit247_save-esgotado = 'X'.

      ENDIF.

      MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                              WHERE nrseqd  = it_zycit247-nrseqd

                                AND codmat  = it_zycit247-codmat

                                AND werks   = it_zycit247-werks

                                AND stlan   = it_zycit247-stlan

                                AND stlnr   = it_zycit247-stlnr

                                AND stlal   = it_zycit247-stlal.

    ENDIF.

    p_qtdaprop = p_qtdaprop + v_bxatoc.

  ELSE.

*   Atualiza Log de Erro.

    IF p_pctapr <= 0.

      CLEAR: v_errolog, it_log_erro.

      CONCATENATE text-017 it_zycet002-matnr text-018

                                    INTO v_errolog SEPARATED BY space.

      MOVE v_errolog TO it_log_erro.

      APPEND it_log_erro.

    ENDIF.

  ENDIF.

ENDFORM. " appropriate_tg_mod

*&---------------------------------------------------------------------*

*& Form reverse_appropriation_mod                                      *

*&---------------------------------------------------------------------*

FORM reverse_appropriation_mod.

  LOOP AT it_apr_final WHERE nrseqexp  = it_zycet002-nrseq

                         AND vbeln_va  = it_zycet002-vbeln_va

                         AND aupos     = it_zycet002-aupos

                         AND vbeln_vf  = it_zycet002-vbeln_vf

                         AND posnr     = it_zycet002-posnr

                         AND docnum    = it_zycet002-docnum

                         AND vbeln_vl  = it_zycet002-vbeln_vl

                         AND posnl     = it_zycet002-posnl

                         AND eebeln    = it_zycet002-ebeln

                         AND eebelp    = it_zycet002-ebelp

                         AND matnr_exp = it_zycet002-matnr.

    READ TABLE it_zycit279_save WITH KEY

                                      nrseq  = it_apr_final-nrseqimp

                                      ebeln  = it_apr_final-ebeln

                                      ebelp  = it_apr_final-ebelp

                                      nrseqd = it_apr_final-nrseqd

                                      matnr  = it_apr_final-matnr_imp.

    IF sy-subrc EQ 0.

      it_zycit279_save-slqtde =

                        it_zycit279_save-slqtde + it_apr_final-qtd_mimp.

      IF it_zycit279_save-slqtde > 0.

        it_zycit279_save-esgotado = ' '.

      ENDIF.

      MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                  WHERE nrseq  = it_apr_final-nrseqimp

                                    AND ebeln  = it_apr_final-ebeln

                                    AND ebelp  = it_apr_final-ebelp

                                    AND nrseqd = it_apr_final-nrseqd

                                    AND matnr  = it_apr_final-matnr_imp.

    ENDIF.

    READ TABLE it_zycit279 WITH KEY nrseq  = it_apr_final-nrseqimp

                                    ebeln  = it_apr_final-ebeln

                                    ebelp  = it_apr_final-ebelp

                                    nrseqd = it_apr_final-nrseqd

                                    matnr  = it_apr_final-matnr_imp.

    IF sy-subrc EQ 0.

      it_zycit279-slqtde = it_zycit279-slqtde + it_apr_final-qtd_mimp.

      IF it_zycit279-slqtde > 0.

        it_zycit279-esgotado = ' '.

      ENDIF.

      MODIFY it_zycit279 TRANSPORTING slqtde esgotado

                                WHERE nrseq  = it_apr_final-nrseqimp

                                  AND ebeln  = it_apr_final-ebeln

                                  AND ebelp  = it_apr_final-ebelp

                                  AND nrseqd = it_apr_final-nrseqd

                                  AND matnr  = it_apr_final-matnr_imp.

    ENDIF.

    DELETE it_apr WHERE nrseqexp = it_apr_final-nrseqexp

                    AND vbeln_va = it_apr_final-vbeln_va

                    AND aupos    = it_apr_final-aupos

                    AND vbeln_vf = it_apr_final-vbeln_vf

                    AND posnr    = it_apr_final-posnr

                    AND docnum   = it_apr_final-docnum

                    AND vbeln_vl = it_apr_final-vbeln_vl

                    AND posnl    = it_apr_final-posnl

                    AND eebeln   = it_apr_final-eebeln

                    AND eebelp   = it_apr_final-eebelp

                    AND nrseqimp = it_apr_final-nrseqimp

                    AND ebeln    = it_apr_final-ebeln

                    AND ebelp    = it_apr_final-ebelp

                    AND nrseqd   = it_apr_final-nrseqd.

    DELETE it_apr_final.

  ENDLOOP.

  LOOP AT it_zycit283 WHERE nrseqexp = it_zycet002-nrseq

                        AND vbeln_va = it_zycet002-vbeln_va

                        AND aupos    = it_zycet002-aupos

                        AND vbeln_vf = it_zycet002-vbeln_vf

                        AND posnr    = it_zycet002-posnr

                        AND docnum   = it_zycet002-docnum

                        AND vbeln_vl = it_zycet002-vbeln_vl

                        AND posnl    = it_zycet002-posnl

                        AND eebeln   = it_zycet002-ebeln

                        AND eebelp   = it_zycet002-ebelp.

    READ TABLE it_zycit247_save WITH KEY

                                      nrseqd = it_zycit283-nrseqd

                                      codmat = it_zycit283-matnr.

    IF sy-subrc EQ 0.

      it_zycit247_save-sdomat_e =

                        it_zycit247_save-sdomat_e + it_zycit283-qtd_apr.

      IF it_zycit247_save-sdomat_e > 0.

        it_zycit247_save-esgotado = ' '.

      ENDIF.

      MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                              WHERE nrseqd  = it_zycit283-nrseqd

                                AND codmat  = it_zycit283-matnr.

    ENDIF.

    READ TABLE it_zycit247 WITH KEY nrseqd = it_zycit283-nrseqd

                                    codmat = it_zycit283-matnr.

    IF sy-subrc EQ 0.

      it_zycit247-sdomat_e = it_zycit247-sdomat_e + it_zycit283-qtd_apr.

      IF it_zycit247-sdomat_e > 0.

        it_zycit247-esgotado = ' '.

      ENDIF.

      MODIFY it_zycit247 TRANSPORTING sdomat_e esgotado

                                WHERE nrseqd  = it_zycit283-nrseqd

                                  AND codmat  = it_zycit283-matnr.

    ENDIF.

  ENDLOOP.

ENDFORM. " reverse_appropriation_mod

*&---------------------------------------------------------------------*

*& Form execute_process_desa                                           *

*&---------------------------------------------------------------------*

FORM execute_process_desa.

* Trata Ordem de Venda, Devoluções, Etc.

  PERFORM trata_ordem_venda.

* filtra somente as exportações com apropriações realizadas.

  PERFORM load_appropriatons.

* Posiciona a table control com as exportações na primeira linha.

  tc_exp_desa-top_line = 1.

* Chama a tela com as exportações selecionadas para executar as

* desapropriações.

*PWS251144 - Início ----------------------------------------------------

  IF v_exit = 'X'.

    EXIT.

  ENDIF.

*PWS251144 - Início ----------------------------------------------------

  IF it_zycet002_desa[] IS INITIAL.

    MESSAGE s015 WITH text-065.

  ELSE.

    CALL SCREEN 0004.

  ENDIF.

ENDFORM. " execute_process_desa

*&---------------------------------------------------------------------*

*& Form execute_desaprop_button_0004                                   *

*&---------------------------------------------------------------------*

FORM execute_desaprop_button_0004.

 

  DATA: BEGIN OF it_zycit282_aux OCCURS 0.

          INCLUDE STRUCTURE /pws/zycit282.

  DATA:  END OF it_zycit282_aux.

 

  DATA: v_status LIKE /pws/zycit244-status.

 

 

* Checa se foi marcado uma linha da table control.

* Caso tenha alguma exportação marcada, prossegue com a desapro-

* priação.

  READ TABLE it_zycet002_desa WITH KEY mexp = 'X'.

 

  IF sy-subrc EQ 0.

 

*** PWS176335 - Inicio

* Se o Ato Concessório foi Encerrado, não permite a desapropriação.

    SELECT * FROM /pws/zycit282 INTO TABLE it_zycit282_aux

             WHERE nrseqexp = it_zycet002_desa-nrseq.

 

    READ TABLE it_zycit282_aux WITH KEY nrseqexp =

                                       it_zycet002_desa-nrseq.

 

    SELECT SINGLE status FROM /pws/zycit244 INTO v_status

           WHERE nrseqd = it_zycit282_aux-nrseqd.

 

    IF v_status NE 'E'.

*     Elimina as exportações não selecionadas.

      DELETE it_zycet002_desa WHERE mexp NE 'X'.

*     Retira o 'X' da marcação dos registros de exportação.

      LOOP AT it_zycet002_desa.

        it_zycet002_desa-mexp = ' '.

        MODIFY it_zycet002_desa.

      ENDLOOP.

*     Ordena a tabela interna de exportações.

      SORT it_zycet002_desa BY nrseq vbeln_va vbeln_vf posnr ASCENDING.

      PERFORM run_dispossession_exportation.

    ELSE.

      MESSAGE s015 WITH text-036 text-037.

    ENDIF.

  ELSE.

    MESSAGE s015 WITH text-002 text-024.

  ENDIF.

*** PWS176335 - Inicio

 

ENDFORM. " execute_desaprop_button_0004

*&---------------------------------------------------------------------*

*& Form load_appropriatons                                             *

*&---------------------------------------------------------------------*

FORM load_appropriatons.

 

  CLEAR: it_zycet002_desa,

         it_zycit247     ,

         it_zycit279     ,

         it_zycit282_des ,

         it_zycit283_des .

  REFRESH: it_zycet002_desa,

           it_zycit247     ,

           it_zycit279     ,

           it_zycit282_des ,

           it_zycit283_des .

* Seleciona as apropriações realizadas.

  IF NOT it_zycet002[] IS INITIAL.

    SELECT * FROM /pws/zycit282 INTO TABLE it_zycit282_des

           FOR ALL ENTRIES IN it_zycet002

           WHERE nrseqexp = it_zycet002-nrseq

             AND vbeln_va = it_zycet002-vbeln_va

             AND aupos    = it_zycet002-aupos

             AND vbeln_vl = it_zycet002-vbeln_vl

             AND posnl    = it_zycet002-posnl

             AND eebeln   = it_zycet002-ebeln

             AND eebelp   = it_zycet002-ebelp.

 

 

 

    IF NOT it_zycit282_des[] IS INITIAL.

*     seleciona os materiais do ato concessório.

      SELECT * FROM /pws/zycit247 INTO TABLE it_zycit247

             FOR ALL ENTRIES IN it_zycit282_des

             WHERE nrseqd = it_zycit282_des-nrseqd.

*     seleciona os recebimentos dos componentes.

      SELECT * FROM /pws/zycit279 INTO TABLE it_zycit279

             FOR ALL ENTRIES IN it_zycit282_des

             WHERE nrseq = it_zycit282_des-nrseqimp

               AND ebeln = it_zycit282_des-ebeln

               AND ebelp = it_zycit282_des-ebelp.

    ENDIF.

  ENDIF.

  CLEAR: v_exit.

  LOOP AT it_zycet002.

    READ TABLE it_zycit282_des WITH KEY nrseqexp = it_zycet002-nrseq

                                    vbeln_va = it_zycet002-vbeln_va

                                    aupos    = it_zycet002-aupos

                                    vbeln_vl = it_zycet002-vbeln_vl

                                    posnl    = it_zycet002-posnl

                                    eebeln   = it_zycet002-ebeln

                                    eebelp   = it_zycet002-ebelp.

    IF sy-subrc EQ 0.

      SELECT SINGLE * FROM /pws/zycit244

              WHERE nrseqd EQ it_zycit282_des-nrseqd.

      IF /pws/zycit244-tipo NE 'C'.

        v_exit = 'X'.

        MESSAGE s015 WITH text-068.

        EXIT.

      ENDIF.

      MOVE-CORRESPONDING it_zycet002 TO it_zycet002_desa.

      MOVE it_zycit282_des-qtd_mexp TO it_zycet002_desa-qtdapr.

      APPEND it_zycet002_desa.

    ENDIF.

  ENDLOOP.

ENDFORM. " load_appropriatons

*&---------------------------------------------------------------------*

*& Form run_dispossession_exportation                                  *

*&---------------------------------------------------------------------*

* Objetivo: Desapropriar materiais

*&---------------------------------------------------------------------*

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

*&---------------------------------------------------------------------*

* --> <nonon-nonon>

* <-- <nonon-nonon>

* <-- <nonon-nonon>

* <-> <nonon-nonon>

*&---------------------------------------------------------------------*

* Chamado     Data            Descrição

*&---------------------------------------------------------------------*

* 233207      18/05/2005      Incluído consistencia para verificar se

*                             campo /PWS/ZYCEE116-NRRE está preenchido

*                             Caso estiver preenchido, não deixar

*                             desapropriar.

*&---------------------------------------------------------------------*

FORM run_dispossession_exportation.

  DATA: v_confirm(1) TYPE c,

        v_pct        TYPE i,

        v_cont       TYPE i.

  CALL FUNCTION 'POPUP_TO_CONFIRM'

       EXPORTING

          titlebar                    = text-006

*             DIAGNOSE_OBJECT             = ' '

          text_question               = text-025

          text_button_1               = text-008

*             ICON_BUTTON_1               = ' '

          text_button_2               = text-009

*             ICON_BUTTON_2               = ' '

          default_button              = '1'

          display_cancel_button       = 'X'

*             USERDEFINED_F1_HELP         = ' '

*             START_COLUMN                = 25

*             START_ROW                   = 6

*             POPUP_TYPE                  =

       IMPORTING

          answer                      = v_confirm

*          TABLES

*             PARAMETER                   =

       EXCEPTIONS

          text_not_found              = 1

          OTHERS                      = 2.

  IF v_confirm EQ '2' OR v_confirm EQ 'A'.

    EXIT.

 

  ELSE."Se RE(/PWS/ZYCEE116-NRRE) estiver preenchido não desapropriar.

 

    SELECT * FROM /pws/zycet117

     INTO TABLE itab_zycet117

      WHERE nrseq IN nrseqexp.

 

    IF sy-subrc EQ 0.

      LOOP AT itab_zycet117 WHERE nrre NE space.

        MESSAGE i015 WITH text-063 itab_zycet117-nrseqre '.' text-064.

      ENDLOOP.

 

      IF sy-subrc = 0.

        EXIT.

      ENDIF.

    ENDIF.

  ENDIF.

 

  CLEAR: it_zycit247_save,

         it_zycit279_save,

         it_zycit282_est ,

         it_zycit283_est .

  REFRESH: it_zycit247_save,

           it_zycit279_save,

           it_zycit282_est ,

           it_zycit283_est .

  DESCRIBE TABLE it_zycet002_desa LINES v_ilinhas.

  v_cont = 1.

 

  SORT it_zycet002_desa BY nrseq vbeln_va aupos vbeln_vl posnl.

  DELETE ADJACENT DUPLICATES FROM it_zycet002_desa COMPARING

        nrseq vbeln_va aupos vbeln_vl posnl.

  LOOP AT it_zycet002_desa.

*   Apura a porcentagem total executada e passa como parâmetro para

*   apresentar a ampulheta de execução.

    v_pct = ( 100 * v_cont ) / v_ilinhas.

    IF v_pct > 100.

      v_pct = 100.

    ENDIF.

 

    CLEAR it_zycet002.

    READ TABLE it_zycet002 WITH KEY

                         nrseq = it_zycet002_desa-nrseq

                         vbeln_va = it_zycet002_desa-vbeln_va

                         aupos    = it_zycet002_desa-aupos

*                              AND vbeln_vf = it_zycet002_desa-vbeln_vf

*                              AND posnr    = it_zycet002_desa-posnr

*                              AND docnum   = it_zycet002_desa-docnum

                         vbeln_vl = it_zycet002_desa-vbeln_vl

                         posnl    = it_zycet002_desa-posnl.

    IF sy-subrc NE 0.

      CONTINUE.

    ENDIF.

 

    PERFORM show_progress USING v_pct.

*   desapropria as importações (componentes) recebidos.

    LOOP AT it_zycit282_des WHERE nrseqexp = it_zycet002-nrseq

                              AND vbeln_va = it_zycet002-vbeln_va

                              AND aupos    = it_zycet002-aupos

*                              AND vbeln_vf = it_zycet002-vbeln_vf

*                              AND posnr    = it_zycet002-posnr

*                              AND docnum   = it_zycet002-docnum

                              AND vbeln_vl = it_zycet002-vbeln_vl

                              AND posnl    = it_zycet002-posnl

                              AND eebeln   = it_zycet002-ebeln

                              AND eebelp   = it_zycet002-ebelp.

      READ TABLE it_zycit279 WITH KEY

                                    nrseq  = it_zycit282_des-nrseqimp

                                    ebeln  = it_zycit282_des-ebeln

                                    ebelp  = it_zycit282_des-ebelp

                                    nrseqd = it_zycit282_des-nrseqd

                                    matnr  = it_zycit282_des-matnr_imp.

      IF sy-subrc EQ 0.

        it_zycit279-slqtde =

                          it_zycit279-slqtde + it_zycit282_des-qtd_mimp.

        IF it_zycit279-slqtde > it_zycit279-menge.

          it_zycit279-slqtde = it_zycit279-menge.

        ENDIF.

        IF it_zycit279-slqtde > 0.

          it_zycit279-esgotado = ' '.

        ENDIF.

        MODIFY it_zycit279 TRANSPORTING slqtde esgotado

                           WHERE nrseq  = it_zycit282_des-nrseqimp

                             AND ebeln  = it_zycit282_des-ebeln

                             AND ebelp  = it_zycit282_des-ebelp

                             AND nrseqd = it_zycit282_des-nrseqd

                             AND matnr  = it_zycit282_des-matnr_imp.

        READ TABLE it_zycit279_save WITH KEY

                                     nrseq  = it_zycit282_des-nrseqimp

                                     ebeln  = it_zycit282_des-ebeln

                                     ebelp  = it_zycit282_des-ebelp

                                     nrseqd = it_zycit282_des-nrseqd

                                     matnr  = it_zycit282_des-matnr_imp.

        IF sy-subrc EQ 0.

          it_zycit279_save-slqtde =

                     it_zycit279_save-slqtde + it_zycit282_des-qtd_mimp.

          IF it_zycit279_save-slqtde > it_zycit279_save-menge.

            it_zycit279_save-slqtde = it_zycit279_save-menge.

          ENDIF.

          IF it_zycit279_save-slqtde > 0.

            it_zycit279_save-esgotado = ' '.

          ENDIF.

          MODIFY it_zycit279_save

                               TRANSPORTING slqtde esgotado

                               WHERE nrseq  = it_zycit282_des-nrseqimp

                                 AND ebeln  = it_zycit282_des-ebeln

                                 AND ebelp  = it_zycit282_des-ebelp

                                 AND nrseqd = it_zycit282_des-nrseqd

                                 AND matnr  = it_zycit282_des-matnr_imp.

        ELSE.

          MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

          APPEND it_zycit279_save.

        ENDIF.

        MOVE-CORRESPONDING it_zycit282_des TO it_zycit282_est.

        APPEND it_zycit282_est.

      ENDIF.

    ENDLOOP.

    v_cont = v_cont + 1.

  ENDLOOP.

** salva nas tabelas transparentes os novos saldos.

*  MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.

  MODIFY /pws/zycit279 FROM TABLE it_zycit279_save.

* elimina as apropriações estornadas.

  DELETE /pws/zycit282 FROM TABLE it_zycit282_est.

  DELETE /pws/zycit283 FROM TABLE it_zycit283_est.

 

  SORT it_zycit282_est BY nrseqexp vbeln_va aupos vbeln_vl posnl

                      eebeln eebelp nrseqd.

 

 

  DELETE ADJACENT DUPLICATES FROM it_zycit282_est

        COMPARING nrseqexp vbeln_va aupos vbeln_vl posnl

                      eebeln eebelp nrseqd.

  LOOP AT it_zycit282_est.

 

******

    READ TABLE it_zycit247 WITH KEY nrseqd = it_zycit282_est-nrseqd

                                    nritem = it_zycit282_est-nritem.

    IF sy-subrc EQ 0.

      it_zycit247-sdomat_e = it_zycit247-sdomat_e +

                                             it_zycit282_est-qtd_mexp.

      IF it_zycit247-sdomat_e > it_zycit247-qtd_iten.

        it_zycit247-sdomat_e = it_zycit247-qtd_iten.

      ENDIF.

      IF it_zycit247-sdomat_e > 0.

        it_zycit247-esgotado = ' '.

      ENDIF.

      MODIFY it_zycit247 TRANSPORTING sdomat_e esgotado

                         WHERE nrseqd = it_zycit282_est-nrseqd

                           AND nritem = it_zycit282_est-nritem.

      READ TABLE it_zycit247_save WITH KEY

                                       nrseqd = it_zycit247-nrseqd

                                       nritem = it_zycit247-nritem.

      IF sy-subrc EQ 0.

        it_zycit247_save-sdomat_e = it_zycit247-sdomat_e.

        it_zycit247_save-esgotado = it_zycit247-esgotado.

        MODIFY it_zycit247_save TRANSPORTING sdomat_e esgotado

                                WHERE nrseqd = it_zycit247-nrseqd

                                  AND nritem = it_zycit247-nritem.

      ELSE.

        MOVE-CORRESPONDING it_zycit247 TO it_zycit247_save.

        APPEND it_zycit247_save.

      ENDIF.

*      MOVE-CORRESPONDING it_zycit283_des TO it_zycit283_est.

*      APPEND it_zycit283_est.

    ENDIF.

 

 

******

 

    UPDATE /pws/zycet002 SET staprop = ' '

                   WHERE nrseq    = it_zycit282_est-nrseqexp

                     AND vbeln_va = it_zycit282_est-vbeln_va

                     AND aupos    = it_zycit282_est-aupos

                     AND vbeln_vl = it_zycit282_est-vbeln_vl

                     AND posnl    = it_zycit282_est-posnl.

  ENDLOOP.

 

  MODIFY /pws/zycit247 FROM TABLE it_zycit247_save.

 

  COMMIT WORK.

  IF sy-subrc EQ 0.

    MESSAGE s015 WITH text-026.

    LEAVE TO SCREEN 0.

  ENDIF.

ENDFORM. " run_dispossession_exportation

*&---------------------------------------------------------------------*

*& Form show_progress                                                  *

*&---------------------------------------------------------------------*

FORM show_progress USING p_pct.

  CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'

       EXPORTING

            percentage = p_pct

            text       = ''.

ENDFORM. " show_progress

*&---------------------------------------------------------------------*

*& Form lock_record_receb                                              *

*&---------------------------------------------------------------------*

FORM lock_record_receb.

  LOOP AT it_zycit279.

    CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT279'

         EXPORTING

              nrseq          = it_zycit279-nrseq

              ebeln          = it_zycit279-ebeln

              ebelp          = it_zycit279-ebelp

         EXCEPTIONS

              foreign_lock   = 1

              system_failure = 2.

    CASE sy-subrc.

      WHEN 1.

*       Trata log erro (Não foi possível travar registro).

        CLEAR: v_errolog, it_log_erro.

        CONCATENATE text-027 it_zycit279-ebeln text-028

                    it_zycit279-ebelp text-029

                                      INTO v_errolog SEPARATED BY space.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

        DELETE it_zycit279.

      WHEN 2.

*       Trata log erro (Problemas no bloqueio do registro).

        CLEAR: v_errolog, it_log_erro.

        MOVE text-030 TO v_errolog.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

        DELETE it_zycit279.

    ENDCASE.

  ENDLOOP.

ENDFORM. " lock_record_receb

*&---------------------------------------------------------------------*

*& Form lock_record_ato                                                *

*&---------------------------------------------------------------------*

FORM lock_record_ato.

  LOOP AT it_zycit247.

    CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT247'

         EXPORTING

              nrseqd         = it_zycit247-nrseqd

*              nritem         = it_zycit247-codmat

         EXCEPTIONS

              foreign_lock   = 1

              system_failure = 2.

    CASE sy-subrc.

      WHEN 1.

*       Trata log erro (Não foi possível travar registro).

        MESSAGE i013 WITH text-056 text-057 text-058.

        LEAVE PROGRAM.

 

 

 

 

      WHEN 2.

*       Trata log erro (Problemas no bloqueio do registro).

        CLEAR: v_errolog, it_log_erro.

        MOVE text-030 TO v_errolog.

        MOVE v_errolog TO it_log_erro.

        APPEND it_log_erro.

        DELETE it_zycit247.

    ENDCASE.

  ENDLOOP.

ENDFORM. " lock_record_ato

*&---------------------------------------------------------------------*

*& Form unlock_record_receb                                            *

*&---------------------------------------------------------------------*

FORM unlock_record_receb.

  LOOP AT it_zycit279.

    CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT279'

         EXPORTING

              nrseq = it_zycit279-nrseq

              ebeln = it_zycit279-ebeln

              ebelp = it_zycit279-ebelp.

  ENDLOOP.

ENDFORM. " unlock_record_receb

*&---------------------------------------------------------------------*

*& Form unlock_record_ato                                              *

*&---------------------------------------------------------------------*

FORM unlock_record_ato.

  LOOP AT it_zycit247.

    CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT247'

         EXPORTING

              nrseqd = it_zycit247-nrseqd.

*              codmat = it_zycit247-codmat.

  ENDLOOP.

ENDFORM.                    " unlock_record_ato

*&---------------------------------------------------------------------*

*&      Form  trata_ordem_venda

*&---------------------------------------------------------------------*

FORM trata_ordem_venda.

  DATA: nrseq LIKE /pws/zycee085-nrseq, " Sequencial de Agrupamento

        itab_zycit428 LIKE /pws/zycit428 OCCURS 0 WITH HEADER LINE.

  CLEAR itab_zycee085. REFRESH itab_zycee085.

 

*  SELECT * FROM /pws/zycit428 INTO TABLE itab_zycit428

*                                           WHERE export EQ 'X'.

 

  LOOP AT it_zycet002.

 

 

*Authority-check   Centro

    AUTHORITY-CHECK OBJECT 'C_PPBD'

                       ID 'AKTTYP' FIELD 'V'

          ID 'WERKS' FIELD it_zycet002-werks.

    IF sy-subrc NE 0.

      MESSAGE i015 WITH text-289 it_zycet002-werks.

      DELETE it_zycet002 WHERE werks EQ it_zycet002-werks.

      CONTINUE.

    ENDIF.

 

*Authority-check   Empresa

    AUTHORITY-CHECK OBJECT 'F_BKPF_BUK'

                          ID 'BUKRS' FIELD it_zycet002-bukrs "Empresa

                                      ID 'ACTVT' FIELD '01'.

    IF sy-subrc NE 0.

      MESSAGE i015 WITH text-291 it_zycet002-bukrs.

      DELETE it_zycet002 WHERE bukrs EQ it_zycet002-bukrs.

      CONTINUE.

    ENDIF.

 

 

 

 

    nrseq = nrseq + 1.

    itab_zycee085-nrseq = nrseq.

    SHIFT itab_zycee085-nrseq RIGHT DELETING TRAILING space.

    UNPACK  itab_zycee085-nrseq   TO itab_zycee085-nrseq.

    MOVE : it_zycet002-mandt    TO itab_zycee085-mandt,

           it_zycet002-vbeln_va TO itab_zycee085-vbeln_va,

           it_zycet002-vbeln_vf TO itab_zycee085-vbeln_vf,

           it_zycet002-vbeln_vl TO itab_zycee085-vbeln_vl,

           it_zycet002-posnl    TO itab_zycee085-posnl,

           it_zycet002-posnr    TO itab_zycee085-posnr,

           it_zycet002-aupos    TO itab_zycee085-aupos,

           it_zycet002-ntgew    TO itab_zycee085-ntgew,

           it_zycet002-brgew    TO itab_zycee085-brgew,

           it_zycet002-shkzg    TO itab_zycee085-shkzg,

           it_zycet002-nfnum    TO itab_zycee085-nfnum,

           it_zycet002-auart    TO itab_zycee085-auart,

           it_zycet002-fkart    TO itab_zycee085-fkart,

           it_zycet002-waers    TO itab_zycee085-waers,

           it_zycet002-gewei    TO itab_zycee085-gewei,

           it_zycet002-inco1    TO itab_zycee085-inco1,

           it_zycet002-fkimg    TO itab_zycee085-fkimg,

           it_zycet002-vrkme    TO itab_zycee085-vrkme,

           it_zycet002-vlme     TO itab_zycee085-vlme .

    APPEND itab_zycee085.

  ENDLOOP.

  EXPORT itab_zycee085 TO MEMORY ID 'ODOC'.

  CALL FUNCTION '/PWS/ZYCE_TRATA_ORDEM'

       TABLES

            t_saida = itab_saida.

  FREE MEMORY ID 'ODOC'.

  LOOP AT itab_saida WHERE vlme = space OR

                  ( ntgew = space AND brgew = space AND fkimg = space ).

    DELETE it_zycet002 WHERE vbeln_va = itab_saida-vbeln_va

                         AND vbeln_vf = itab_saida-vbeln_vf

                         AND vbeln_vl = itab_saida-vbeln_vl

                         AND posnl    = itab_saida-posnl

                         AND posnr    = itab_saida-posnr

                         AND aupos    = itab_saida-aupos.

    DELETE itab_saida.

  ENDLOOP.

ENDFORM. " trata_ordem_venda

*&---------------------------------------------------------------------*

*& Form check_minimum_selection                                        *

*&---------------------------------------------------------------------*

FORM check_minimum_selection CHANGING p_erro.

  IF nrseqexp[] IS INITIAL AND

     vbeln_va[] IS INITIAL AND

     aupos[]    IS INITIAL AND

     vbeln_vf[] IS INITIAL AND

     posnr[]    IS INITIAL AND

     docnum[]   IS INITIAL AND

     vbeln_vl[] IS INITIAL AND

     posnl[]    IS INITIAL AND

     eebeln[]   IS INITIAL AND

     eebelp[]   IS INITIAL AND

     matnr[]    IS INITIAL.

    p_erro = 'S'.

  ENDIF.

ENDFORM. " check_minimum_selection

*&---------------------------------------------------------------------*

*& Form check_field_selection                                          *

*&---------------------------------------------------------------------*

FORM check_field_selection.

  DATA: v_vbeln_va LIKE vbak-vbeln      ,

        v_vbeln_vf LIKE vbrp-vbeln      ,

        v_vbeln_vl LIKE vbrp-vbeln      ,

        v_docnum   LIKE /pws/zycet002-docnum ,

        i_ebeln    LIKE ekko-ebeln      ,

        v_nrseqdi  LIKE /pws/zycie085-nrseqdi,

        v_tpdi     LIKE /pws/zycie085-tpdi   .

  CLEAR: v_campo, v_valor.

  GET CURSOR FIELD v_campo VALUE v_valor.

  CASE v_campo.

    WHEN '/PWS/ZYCEE002-NRSEQ'.

*     Visualiza o Embarque de exportação.

      IF NOT v_valor IS INITIAL.

        SET PARAMETER ID '/PWS/ZYCEP001' FIELD v_valor.

        CALL TRANSACTION '/PWS/ZYCE003_E' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

    WHEN '/PWS/ZYCEE002-VBELN_VA'.

*     Visualiza a Ordem de Venda de exportação.

      IF NOT v_valor IS INITIAL.    " Seleção Ordem de Venda

        v_vbeln_va = v_valor.

        SET PARAMETER ID 'AUN' FIELD v_vbeln_va.

        CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

    WHEN '/PWS/ZYCEE002-VBELN_VF'.

*     Visualiza Ordem de faturamento de exportação.

      IF NOT v_valor IS INITIAL.    " Seleção Ordem de Faturamento

        v_vbeln_vf = v_valor.

        SET PARAMETER ID 'VF' FIELD v_vbeln_vf.

        CALL TRANSACTION 'VF03' AND SKIP FIRST SCREEN.

      ENDIF.

    WHEN '/PWS/ZYCEE002-VBELN_VL'.

*     Visualiza Ordem de Fornecimento de exportação.

      IF NOT v_valor IS INITIAL.    "Sel Fornecimento

        v_vbeln_vl = v_valor.

        SET PARAMETER ID 'VL' FIELD v_vbeln_vl.

        CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

    WHEN '/PWS/ZYCEE002-DOCNUM'.

*     Visualiza o documento de venda.

      IF NOT v_valor IS INITIAL.    "Sel Doc. Venda

        v_docnum = v_valor.

        SET PARAMETER ID 'JEF' FIELD v_docnum.

        CALL TRANSACTION 'J1B3' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

    WHEN '/PWS/ZYCIE282-EBELN'.

*     Visualiza o Doc. de Compra.

      IF NOT v_valor IS INITIAL.    "Sel Documento de Compra

        SELECT SINGLE ebeln FROM ekko INTO ekko

               WHERE ebeln = v_valor.

        IF sy-subrc EQ 0.

          i_ebeln = v_valor.

          SET PARAMETER ID 'BES' FIELD i_ebeln.

          CALL TRANSACTION 'ME23N' AND SKIP FIRST SCREEN.

        ENDIF.

      ENDIF.

    WHEN '/PWS/ZYCIE282-NRSEQIMP'.

*     Visualiza o Embarque Importação.

      IF NOT v_valor IS INITIAL.    "Sel Embarque Importação

        SET PARAMETER ID '/PWS/ZYCIP001' FIELD v_valor.

        CALL TRANSACTION '/PWS/ZYCI001_E' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

    WHEN '/PWS/ZYCIE282-NRSEQD'.

*     Visualiza o Ato Concessório.

      IF NOT v_valor IS INITIAL.

        SET PARAMETER ID '/PWS/ZYCIP435' FIELD v_valor.

        CALL TRANSACTION '/PWS/ZYCI040_E' AND SKIP FIRST SCREEN.

        CLEAR ok_code.

      ENDIF.

  ENDCASE.

ENDFORM. " check_field_selection

*&---------------------------------------------------------------------*

*& Form collect_materials                                              *

*&---------------------------------------------------------------------*

FORM collect_materials TABLES it_stpox  STRUCTURE it_stpox

                              it_stpox2 STRUCTURE it_stpox2

                              it_matcat STRUCTURE it_matcat.

  DATA: v_qtd LIKE it_stpox-mngko.

  SORT it_stpox  BY ttidx ASCENDING.

  SORT it_matcat BY index ASCENDING.

  LOOP AT it_stpox2.

    MOVE-CORRESPONDING it_stpox2 TO it_stpox.

    APPEND it_stpox.

  ENDLOOP.

  LOOP AT it_matcat WHERE index = 1.

    READ TABLE it_stpox WITH KEY idnrk = it_matcat-matnr.

    IF sy-subrc EQ 0.

      v_qtd     = it_stpox-mngko.

      LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.

        CHECK it_stpox-mngko >= 0.

        it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.

        MODIFY it_stpox.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

  LOOP AT it_matcat WHERE index > 1.

    READ TABLE it_stpox WITH KEY idnrk = it_matcat-matnr.

    IF sy-subrc EQ 0.

      v_qtd     = it_stpox-mngko.

      LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.

        CHECK it_stpox-mngko >= 0.

        it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.

        MODIFY it_stpox.

      ENDLOOP.

      IF sy-subrc EQ 0.

        DELETE it_stpox WHERE idnrk EQ it_matcat-matnr.

      ENDIF.

    ENDIF.

  ENDLOOP.

  IF sy-subrc NE 0.

    LOOP AT it_stpox.

      MOVE it_stpox-mngko TO it_stpox-mngko2.

      MODIFY it_stpox.

    ENDLOOP.

  ELSE.

    LOOP AT it_matcat WHERE index = 1.

      LOOP AT it_stpox WHERE ttidx EQ it_matcat-index.

        CHECK it_stpox-mngko >= 0.

        it_stpox-mngko2 = it_stpox-mngko. " * v_qtd.

        MODIFY it_stpox.

      ENDLOOP.

    ENDLOOP.

  ENDIF.

  SORT it_stpox BY idnrk ASCENDING.

ENDFORM. " COLLECT_MATERIALS

*&---------------------------------------------------------------------*

*&      Form  converte_um_base

*&---------------------------------------------------------------------*

* Objetivo: Converte Unidade de Medida Base

*&---------------------------------------------------------------------*

* Parâmetros:   ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )

*&---------------------------------------------------------------------*

* --> P_MATNR

* <-- P_MEINS

* <-- P_QTD

* <-> <nonon-nonon>

*&---------------------------------------------------------------------*

* Chamado     Data            Descrição

*&---------------------------------------------------------------------*

* 232196      16/05/2005      Alterado a variavel do select(INTO)

*&---------------------------------------------------------------------*

FORM converte_um_base USING    p_matnr

                      CHANGING p_meins

                               p_qtd.

 

  DATA: v_um_rez TYPE i,

        v_meinsb LIKE marm-meinh,

        v_um_rez1 LIKE marm-umrez,

        v_um_ren1 LIKE marm-umren,

        v_um_ren TYPE i.

  DATA: v_conv1  TYPE /pws/zycit245-qtd_ncm,

        v_conv2  TYPE /pws/zycit245-qtd_ncm.

 

  SELECT SINGLE meins FROM mara INTO v_meinsb

      WHERE matnr EQ p_matnr.

 

  IF v_meinsb = p_meins.

    EXIT.

  ENDIF.

  CLEAR: v_um_rez, v_um_ren.

  v_conv1 = 1.

  CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

       EXPORTING

            input                = v_conv1

            no_type_check        = 'X'

            round_sign           = 'X'

            unit_in              = p_meins

            unit_out             = v_meinsb

       IMPORTING

            denominator          = v_um_ren

            numerator            = v_um_rez

            output               = v_conv2

       EXCEPTIONS

            conversion_not_found = 1

            division_by_zero     = 2

            input_invalid        = 3

            output_invalid       = 4

            overflow             = 5

            type_invalid         = 6

            units_missing        = 7

            unit_in_not_found    = 8

            unit_out_not_found   = 9

            OTHERS               = 10.

  IF sy-subrc <> 0.

 

    SELECT SINGLE umrez umren

             FROM marm INTO (v_um_rez1, v_um_ren1)

             WHERE matnr = p_matnr

             AND   meinh = p_meins.

    IF sy-subrc NE 0.

      MESSAGE i015 WITH text-061 p_meins text-062 p_matnr.

      CLEAR p_qtd.

      EXIT.

    ELSE.

      v_um_rez = v_um_rez1.

      v_um_ren = v_um_ren1.

 

    ENDIF.

  ENDIF.

  IF v_um_rez IS INITIAL

    OR v_um_ren IS INITIAL.

    EXIT.

  ENDIF.

  p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.

 

  p_meins = v_meinsb.

 

ENDFORM.                    " converte_um_base

*&---------------------------------------------------------------------*

*&      Form  cob_camb

*&---------------------------------------------------------------------*

FORM cob_camb.

 

  LOOP AT it_apr_final WHERE nrseqexp EQ it_zycet002-nrseq

                         AND vbeln_va EQ it_zycet002-vbeln_va.

 

    IF "v_ebelp    ne it_apr_final-ebelp or

       v_exp_camb NE it_apr_final-exp_c_cob_camb.

      v_exp_camb = v_exp_camb + it_apr_final-exp_c_cob_camb.

    ENDIF.

    IF v_ebelp2  NE it_apr_final-ebelp OR

       v_imp_camb NE it_apr_final-imp_s_cob_camb.

      v_ebelp2   = it_apr_final-ebelp.

      v_imp_camb =  v_imp_camb + it_apr_final-imp_s_cob_camb.

    ENDIF.

  ENDLOOP.

 

ENDFORM.                    " cob_camb

*&---------------------------------------------------------------------*

*&      Form  valor_converte_imp

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*      -->P_3587   text

*      -->P_3588   text

*      -->P_V_DATATX  text

*      <--P_ITAB_ZYCIT246_VLCIFN_ME  text

*----------------------------------------------------------------------*

FORM valor_converte_imp USING   p_waersde

                                p_waerspara

                                p_data

                       CHANGING p_valor.

*  CLEAR: p_taxa, v_msgfre.

  DATA:  v_origem  LIKE tcurc-/pws/codmo,

         v_destino LIKE tcurc-/pws/codmo,

         v_taxa    LIKE /pws/zycit174-txconver,

         v_taxa2   LIKE /pws/zycit174-txconver.

 

 

  SELECT SINGLE /pws/codmo FROM tcurc INTO v_origem WHERE

         waers = p_waersde.

  IF sy-subrc EQ 0.

    CLEAR v_taxa.

    SELECT SINGLE txconver FROM /pws/zycit174 INTO v_taxa WHERE

           codconver = v_origem    AND

           vigen_inicio <= p_data AND

           vigen_fim    >= p_data .

 

    IF sy-subrc NE 0 AND p_waersde EQ 'BRL'.

      v_taxa = 1.

    ENDIF.

  ENDIF.

 

  SELECT SINGLE /pws/codmo FROM tcurc INTO v_destino WHERE

         waers = p_waerspara.

  IF sy-subrc EQ 0.

    CLEAR v_taxa2.

    SELECT SINGLE txconver FROM /pws/zycit174 INTO v_taxa2 WHERE

           codconver = v_destino    AND

           vigen_inicio <= p_data AND

           vigen_fim    >= p_data.

  ENDIF.

 

  IF NOT v_taxa IS INITIAL AND NOT v_taxa2 IS INITIAL.

 

    p_valor = ( p_valor * v_taxa ) / v_taxa2.

 

  ENDIF.

 

ENDFORM.                    " valor_converte_imp

 

 

 

*&---------------------------------------------------------------------*

*&      Form  converte_um_ncm

*&---------------------------------------------------------------------*

* Objetivo: Converter quantidade do mateiral para a unidade de medida

*           usada pelo siscomex.

* --------------------------------------------------------------------

* --> p_itab_zycit247_codmat - codigo do material

* <-> p_meins                - unidade de medida

* <-> p_qtd                  - Quantidade a ser convertida

* --------------------------------------------------------------------

* Chamado     Data         Descrição

* --------------------------------------------------------------------

* 260597     29/09/05      Codificação inicial                       **

 

* --------------------------------------------------------------------

 

FORM converte_um_ncm USING p_matnr

                     CHANGING p_meins

                              p_werks

                              p_qtd.

*

  DATA: v_cod_umncm   LIKE /pws/zyglt204-zum , " Codigo da UM.Estat.

        v_codpais     LIKE /pws/zycev604-land1  , " Código do País

        v_meinsb      LIKE marm-meinh,

        v_um_rez      TYPE i,

        v_um_ren      TYPE i,

        v_um_rez2      TYPE i,

        v_um_ren2      TYPE i,

        v_um_rez1      LIKE marm-umrez,

        v_um_ren1      LIKE marm-umren,

        v_j_1bnbm     LIKE /pws/zycit247-j_1bnbm,

        v_umncm       LIKE /pws/zyglt204-msehi  , " UM. Estatistica

        v_qtd_ncm     LIKE /pws/zycit247-qtd_ncm. " Total Qtd. NCM.

  DATA: v_conv1       TYPE /pws/zycit245-qtd_ncm,

        v_conv2       TYPE /pws/zycit245-qtd_ncm.

 

  CLEAR: v_um_rez, v_um_ren, v_codpais, v_cod_umncm, v_umncm,

         v_um_rez2, v_um_ren2.

 

  IF p_werks IS INITIAL.

    CLEAR p_qtd.

    EXIT.

  ENDIF.

 

*   Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F

  CLEAR v_cod_umncm.

 

  SELECT SINGLE a~steuc INTO v_j_1bnbm

         FROM ( marc AS a INNER JOIN t001w AS b ON

                a~werks EQ b~werks )

         WHERE a~matnr EQ p_matnr

           AND a~steuc NE space

           AND b~land1 EQ t001-land1.

 

  IF sy-subrc EQ 0.

    SELECT SINGLE land1 /pws/zum

             FROM t604f INTO (v_codpais, v_cod_umncm)

             WHERE steuc = v_j_1bnbm.

  ENDIF.

  IF NOT v_cod_umncm IS INITIAL.

 

*   Seleciona a UM.Estatística

    SELECT SINGLE msehi

             FROM /pws/zyglt204 INTO (v_umncm)

             WHERE zum = v_cod_umncm.

    IF sy-subrc NE 0.

      MESSAGE i015 WITH text-072 text-073 v_j_1bnbm.

      CLEAR p_qtd.

      EXIT.

    ENDIF.

 

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

         EXPORTING

              input                = v_conv1

              no_type_check        = 'X'

              round_sign           = 'X'

              unit_in              = p_meins

              unit_out             = v_umncm

         IMPORTING

              denominator          = v_um_ren

              numerator            = v_um_rez

              output               = v_conv2

         EXCEPTIONS

              conversion_not_found = 1

              division_by_zero     = 2

              input_invalid        = 3

              output_invalid       = 4

              overflow             = 5

              type_invalid         = 6

              units_missing        = 7

              unit_in_not_found    = 8

              unit_out_not_found   = 9

              OTHERS               = 10.

    IF sy-subrc = 0.

 

      p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.

      p_meins = v_umncm.

      EXIT.

 

    ENDIF.

 

  ENDIF.

 

 

 

  SELECT SINGLE meins FROM mara INTO v_meinsb

    WHERE matnr EQ p_matnr.

 

  IF v_meinsb NE p_meins.

 

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

      EXPORTING

        input                     = v_conv1

       no_type_check              = 'X'

       round_sign                 = 'X'

       unit_in                    = p_meins

       unit_out                   = v_meinsb

     IMPORTING

*   ADD_CONST                  =

*   DECIMALS                   =

       denominator                = v_um_ren

       numerator                  = v_um_rez

       output                     = v_conv2

     EXCEPTIONS

       conversion_not_found       = 1

       division_by_zero           = 2

       input_invalid              = 3

       output_invalid             = 4

       overflow                   = 5

       type_invalid               = 6

       units_missing              = 7

       unit_in_not_found          = 8

       unit_out_not_found         = 9

       OTHERS                     = 10

              .

    IF sy-subrc <> 0.

 

      SELECT SINGLE umrez umren

               FROM marm INTO (v_um_rez1, v_um_ren1)

               WHERE matnr = p_matnr

               AND   meinh = p_meins.

 

      IF sy-subrc NE 0.

        MESSAGE i015 WITH text-061 p_meins text-062 p_matnr.

        CLEAR p_qtd.

        EXIT.

      ELSE.

        v_um_rez = v_um_rez1.

        v_um_ren = v_um_ren1.

 

      ENDIF.

    ENDIF.

    IF v_um_rez IS INITIAL

      OR v_um_ren IS INITIAL.

      EXIT.

    ENDIF.

*    p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.

*    CLEAR: v_um_rez, v_um_ren.

  ELSE.

    v_um_ren = 1.

    v_um_rez = 1.

  ENDIF.

*   Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F

  IF NOT v_cod_umncm IS INITIAL.

 

*  Seleciona o contador para conversão de UM. Estatistica.

    IF v_meinsb NE v_umncm.

 

      v_conv1 = 1.

      CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

        EXPORTING

          input                     = v_conv1

         no_type_check              = 'X'

         round_sign                 = 'X'

         unit_in                    = v_meinsb

         unit_out                   = v_umncm

       IMPORTING

*   ADD_CONST                  =

*   DECIMALS                   =

         denominator                = v_um_rez2

         numerator                  = v_um_ren2

         output                     = v_conv2

       EXCEPTIONS

         conversion_not_found       = 1

         division_by_zero           = 2

         input_invalid              = 3

         output_invalid             = 4

         overflow                   = 5

         type_invalid               = 6

         units_missing              = 7

         unit_in_not_found          = 8

         unit_out_not_found         = 9

         OTHERS                     = 10

                .

      IF sy-subrc <> 0.

 

        SELECT SINGLE umrez umren

                 FROM marm INTO (v_um_rez1, v_um_ren1)

                 WHERE matnr = p_matnr

                 AND   meinh = v_umncm.

        IF sy-subrc NE 0.

          MESSAGE i015 WITH text-061 v_umncm text-062 p_matnr.

          CLEAR p_qtd.

          EXIT.

        ELSE.

          v_um_rez2 = v_um_rez1.

          v_um_ren2 = v_um_ren1.

 

        ENDIF.

      ENDIF.

 

      IF v_um_rez IS INITIAL

        OR v_um_ren IS INITIAL.

        EXIT.

      ENDIF.

*      p_qtd = ( p_qtd / v_um_rez ) * v_um_ren.

    ELSE.

      v_um_ren2 = 1.

      v_um_rez2 = 1.

    ENDIF.

    p_qtd = p_qtd *

      ( ( v_um_rez / v_um_ren ) * ( v_um_ren2 / v_um_rez2 ) ).

 

    p_meins = v_umncm.

  ELSE.

 

    IF v_j_1bnbm IS INITIAL.

      MESSAGE i015 WITH text-074 p_matnr.

    ELSE.

      MESSAGE i015 WITH text-072 text-073 v_j_1bnbm.

    ENDIF.

    CLEAR p_qtd.

    EXIT.

  ENDIF.

ENDFORM.                    "

 

 

 

***********************************

*&---------------------------------------------------------------------*

*&      Form  converte_um_ncm

*&---------------------------------------------------------------------*

* Objetivo: Converter quantidade do mateiral para a unidade de medida

*           usada pelo siscomex.

* --------------------------------------------------------------------

* --> p_itab_zycit247_codmat - codigo do material

* <-> p_meins                - unidade de medida

* <-> p_qtd                  - Quantidade a ser convertida

* --------------------------------------------------------------------

* Chamado     Data         Descrição

* --------------------------------------------------------------------

* 260597     29/09/05      Codificação inicial                       **

 

* --------------------------------------------------------------------

 

FORM converte_unidade   USING p_matnr

                              p_de

                              p_para

                     CHANGING p_qtd.

*

  DATA: v_cod_umncm   LIKE /pws/zyglt204-zum , " Codigo da UM.Estat.

        v_codpais     LIKE /pws/zycev604-land1  , " Código do País

        v_meinsb      LIKE marm-meinh,

        v_um_rez      TYPE i,

        v_um_ren      TYPE i,

        v_um_rez2      TYPE i,

        v_um_ren2      TYPE i,

 

        v_um_rez1      LIKE marm-umrez,

        v_um_ren1      LIKE marm-umren,

 

        v_j_1bnbm     LIKE /pws/zycit247-j_1bnbm,

        v_umncm       LIKE /pws/zyglt204-msehi  , " UM. Estatistica

        v_qtd_ncm     LIKE /pws/zycit247-qtd_ncm. " Total Qtd. NCM.

  DATA: v_conv1       TYPE /pws/zycit245-qtd_ncm,

        v_conv2       TYPE /pws/zycit245-qtd_ncm.

 

  CLEAR: v_um_rez, v_um_ren, v_codpais, v_cod_umncm, v_umncm,

         v_um_rez2, v_um_ren2.

 

*   Seleciona o Código da UM.Estatística e o Cód. País na tabela T604F

  CLEAR v_cod_umncm.

 

  SELECT SINGLE a~steuc INTO v_j_1bnbm

         FROM ( marc AS a INNER JOIN t001w AS b ON

                a~werks EQ b~werks )

         WHERE a~matnr EQ p_matnr

           AND a~steuc NE space

           AND b~land1 EQ t001-land1.

 

 

  v_conv1 = 1.

  CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

       EXPORTING

            input                = v_conv1

            no_type_check        = 'X'

            round_sign           = 'X'

            unit_in              = p_de

            unit_out             = p_para

       IMPORTING

            denominator          = v_um_ren

            numerator            = v_um_rez

            output               = v_conv2

       EXCEPTIONS

            conversion_not_found = 1

            division_by_zero     = 2

            input_invalid        = 3

            output_invalid       = 4

            overflow             = 5

            type_invalid         = 6

            units_missing        = 7

            unit_in_not_found    = 8

            unit_out_not_found   = 9

            OTHERS               = 10.

  IF sy-subrc = 0.

 

    p_qtd = ( p_qtd / v_um_ren ) * v_um_rez.

 

    EXIT.

 

  ENDIF.

 

 

 

 

  SELECT SINGLE meins FROM mara INTO v_meinsb

    WHERE matnr EQ p_matnr.

 

  IF v_meinsb NE p_de.

 

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

      EXPORTING

        input                     = v_conv1

       no_type_check              = 'X'

       round_sign                 = 'X'

       unit_in                    = p_de

       unit_out                   = v_meinsb

     IMPORTING

*   ADD_CONST                  =

*   DECIMALS                   =

       denominator                = v_um_ren

       numerator                  = v_um_rez

       output                     = v_conv2

     EXCEPTIONS

       conversion_not_found       = 1

       division_by_zero           = 2

       input_invalid              = 3

       output_invalid             = 4

       overflow                   = 5

       type_invalid               = 6

       units_missing              = 7

       unit_in_not_found          = 8

       unit_out_not_found         = 9

       OTHERS                     = 10

              .

    IF sy-subrc <> 0.

 

      SELECT SINGLE umrez umren

               FROM marm INTO (v_um_rez1, v_um_ren1)

               WHERE matnr = p_matnr

               AND   meinh = p_de.

 

      IF sy-subrc NE 0.

        MESSAGE i015 WITH text-061 p_de text-062 p_matnr.

        CLEAR p_qtd.

        EXIT.

      ELSE.

        v_um_rez = v_um_rez1.

        v_um_ren = v_um_ren1.

 

      ENDIF.

    ENDIF.

    IF v_um_rez IS INITIAL

      OR v_um_ren IS INITIAL.

      EXIT.

    ENDIF.

  ELSE.

    v_um_ren = 1.

    v_um_rez = 1.

  ENDIF.

 

 

*  Seleciona o contador para conversão de UM. Estatistica.

  IF v_meinsb NE p_para.

 

    v_conv1 = 1.

    CALL FUNCTION 'UNIT_CONVERSION_SIMPLE_OLD'

      EXPORTING

        input                     = v_conv1

       no_type_check              = 'X'

       round_sign                 = 'X'

       unit_in                    = v_meinsb

       unit_out                   = p_para

     IMPORTING

*   ADD_CONST                  =

*   DECIMALS                   =

       denominator                = v_um_rez2

       numerator                  = v_um_ren2

       output                     = v_conv2

     EXCEPTIONS

       conversion_not_found       = 1

       division_by_zero           = 2

       input_invalid              = 3

       output_invalid             = 4

       overflow                   = 5

       type_invalid               = 6

       units_missing              = 7

       unit_in_not_found          = 8

       unit_out_not_found         = 9

       OTHERS                     = 10

              .

    IF sy-subrc <> 0.

 

      SELECT SINGLE umrez umren

               FROM marm INTO (v_um_rez1, v_um_ren1)

               WHERE matnr = p_matnr

               AND   meinh = p_para.

      IF sy-subrc NE 0.

        MESSAGE i015 WITH text-061 p_para text-062 p_matnr.

        CLEAR p_qtd.

        EXIT.

      ELSE.

        v_um_rez2 = v_um_rez1.

        v_um_ren2 = v_um_ren1.

 

      ENDIF.

    ENDIF.

 

    IF v_um_rez IS INITIAL

      OR v_um_ren IS INITIAL.

      EXIT.

    ENDIF.

  ELSE.

    v_um_ren2 = 1.

    v_um_rez2 = 1.

  ENDIF.

  p_qtd = p_qtd *

    ( ( v_um_rez / v_um_ren ) * ( v_um_ren2 / v_um_rez2 ) ).

 

ENDFORM.                    "

*&---------------------------------------------------------------------*

*&      Form  apr_tf

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

*  -->  p1        text

*  <--  p2        text

*----------------------------------------------------------------------*

FORM apr_tf.

 

  DATA: v_menorpct   TYPE p DECIMALS 5          ,

        v_allcomp(1) TYPE c                     ,

        v_totit      TYPE i                     ,

        v_totit_tmp  TYPE i                     ,

        v_qtdtmp     LIKE /pws/zycet002-fkimg   ,

        v_qtdtmp2    LIKE /pws/zycet002-fkimg   ,

        v_bxreceb    LIKE /pws/zycit279-slqtde  ,

        v_bxatoc     LIKE /pws/zycit247-sdomat_e,

        v_bxatoc_tmp LIKE /pws/zycit247-sdomat_e,

        v_saldo_e    LIKE /pws/zycit247-sdomat_e,

        v_meins_e    LIKE /pws/zycit247-meins   ,

        v_dtnf       LIKE sy-datum              ,

        v_aprcomum                              ,

        v_dttax      LIKE sy-datum              .

 

* Apura a quantidade a ser usada do Ato concessório para os cálculos.

 

 

 

 

 

  LOOP AT itab_lista_aux.

 

    CLEAR it_zycit279.

    MODIFY it_zycit279 TRANSPORTING matnr_alt

      WHERE matnr_alt NE space.

 

 

    REFRESH itab_zycit433.

    SELECT * FROM /pws/zycit433 INTO TABLE itab_zycit433

          WHERE matnr EQ itab_lista_aux-matnr.

    itab_zycit433-matnr = itab_lista_aux-matnr.

    itab_zycit433-matnr_alt = itab_lista_aux-matnr.

    APPEND itab_zycit433.

 

    LOOP AT itab_zycit433.

      it_zycit279-matnr_alt = itab_zycit433-matnr.

      MODIFY it_zycit279 TRANSPORTING matnr_alt

        WHERE matnr  EQ itab_zycit433-matnr_alt

          AND nrseqd EQ it_zycit247f-nrseqd.

 

    ENDLOOP.

 

 

    LOOP AT it_zycit279 WHERE nrseqd   = it_zycit247f-nrseqd

                          AND esgotado = space

                          AND matnr_alt EQ itab_lista_aux-matnr.

 

 

 

*****************************

      CLEAR v_dias.

      v_dias = v_dtforn - it_zycit279-dtnf.

      IF it_zycit281-nrdprod > v_dias.

        CONTINUE.

      ENDIF.

 

      CLEAR it_apr_final.

      MOVE: it_zycet002-nrseq    TO it_apr_final-nrseqexp  ,

            it_zycet002-vbeln_va TO it_apr_final-vbeln_va  ,

            it_zycet002-aupos    TO it_apr_final-aupos     ,

            it_zycet002-vbeln_vf TO it_apr_final-vbeln_vf  ,

            it_zycet002-posnr    TO it_apr_final-posnr     ,

            it_zycet002-docnum   TO it_apr_final-docnum    ,

            it_zycet002-vbeln_vl TO it_apr_final-vbeln_vl  ,

            it_zycet002-posnl    TO it_apr_final-posnl     ,

            it_zycet002-ebeln    TO it_apr_final-eebeln    ,

            it_zycet002-ebelp    TO it_apr_final-eebelp    ,

            it_zycet002-steuc    TO it_apr_final-j_1bnbmexp,

            it_zycit279-nrseq    TO it_apr_final-nrseqimp  ,

            it_zycit279-ebeln    TO it_apr_final-ebeln     ,

            it_zycit279-ebelp    TO it_apr_final-ebelp     ,

            it_zycit279-nrseqd   TO it_apr_final-nrseqd    ,

            it_zycet002-matnr    TO it_apr_final-matnr_exp ,

            it_zycet002-vrkme    TO it_apr_final-meins_e   ,

            it_zycet002-fkimg    TO it_apr_final-qtd_eorg  ,

            itab_lista_aux-perc  TO it_apr_final-perc      ,

            it_zycit247f-nritem  TO it_apr_final-nritem    ,

            it_zycit279-matnr    TO it_apr_final-matnr_imp ,

            itab_lista-meins     TO it_apr_final-un_ncm    ,

            it_zycit279-meins    TO it_apr_final-meins_i   .

 

 

      it_apr_final-mengecom = it_zycit279-slqtde.

 

 

* Trata perda e Perda excedente

      READ TABLE itab_zycit439 WITH KEY

               insumo = it_apr_final-matnr_imp

               matnr  = it_zycet002-matnr.

      IF sy-subrc EQ 0.

        IF itab_zycit439-perda IS INITIAL.

          READ TABLE it_zycit245 WITH KEY

                                 nrseqd  = it_apr_final-nrseqd

                                 j_1bnbm = it_zycit279-j_1bnbm.

          IF sy-subrc EQ 0.

            it_apr_final-perda = it_zycit245-perda.

          ENDIF.

        ELSE.

          it_apr_final-perda = itab_zycit439-perda.

        ENDIF.

        IF itab_zycit439-perda_e IS INITIAL.

          READ TABLE it_zycit245 WITH KEY

                                 nrseqd  = it_apr_final-nrseqd

                                 j_1bnbm = it_zycit279-j_1bnbm.

          IF sy-subrc EQ 0.

            it_apr_final-perda_e = it_zycit245-perda_e.

          ENDIF.

        ELSE.

          it_apr_final-perda_e = itab_zycit439-perda_e.

        ENDIF.

      ELSE.

        READ TABLE it_zycit245 WITH KEY

                               nrseqd  = it_apr_final-nrseqd

                               j_1bnbm = it_zycit279-j_1bnbm.

        IF sy-subrc EQ 0.

          it_apr_final-perda = it_zycit245-perda.

          it_apr_final-perda_e = it_zycit245-perda_e.

        ENDIF.

      ENDIF.

 

 

      it_apr_final-qtd_iorg = itab_lista_aux-qtd.

 

************************* ajusta quantidade a apropriar .

      itab_lista_aux-qtd = itab_lista_aux-qtd -

       ( itab_lista_aux-qtd * ( it_apr_final-perda_e / 100 ) ) .

 

*************************

      IF it_zycit279-slqtde < itab_lista_aux-qtd.

 

        it_apr_final-qtd_mimp = it_zycit279-slqtde.

      ELSE.

        it_apr_final-qtd_mimp = itab_lista_aux-qtd.

 

      ENDIF.

 

      v_bxatoc = it_apr_final-qtd_mimp / itab_lista-usagem .

      MOVE: v_bxatoc             TO it_apr_final-qtd_mexp  ,

            v_bxatoc             TO it_apr_final-qtd_ncm   ,

            it_zycet002-vrkme    TO it_apr_final-um_ncm    .

 

      PERFORM converte_um_ncm USING it_apr_final-matnr_exp

                        CHANGING it_apr_final-um_ncm

                                 it_zycet002-werks

                                 it_apr_final-qtd_ncm.

 

 

      itab_lista_aux-qtd = it_apr_final-qtd_iorg .

      it_apr_final-qtd_iorg = itab_lista_aux-qtd.

 

 

************************* calcula quantidade de perda excesiva.

      it_apr_final-qtd_perda_e =

             ( it_apr_final-qtd_mimp * it_apr_final-perda_e )

                         / ( 100 - it_apr_final-perda_e ) .

 

      it_apr_final-qtd_iorg = it_apr_final-qtd_iorg -

        ( it_apr_final-qtd_iorg * ( it_apr_final-perda_e / 100 ) ).

 

      v_qtdtmp2 = v_qtdtmp2 - it_apr_final-qtd_mimp -

                              it_apr_final-qtd_perda_e .

 

*     Calcula perda

      it_apr_final-qtd_perda =

            ( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )

                      * ( it_apr_final-perda / 100 ).

 

*    Atualiza saldos

      itab_lista_aux-qtd = itab_lista_aux-qtd -

               it_apr_final-qtd_mimp - it_apr_final-qtd_perda_e.

 

 

 

      it_apr_final-qtd_eq_mexp =

            ( it_apr_final-qtd_mimp + it_apr_final-qtd_perda_e )

                                          / itab_lista_aux-usagem.

 

      CLEAR it_apr_final_aux.

      MOVE it_apr_final TO it_apr_final_aux.

 

      APPEND it_apr_final_aux.

      APPEND it_apr_final.

 

      READ TABLE itab_fornec WITH KEY lifnr = it_zycit244-lifnr.

      IF sy-subrc NE 0 .

        itab_fornec-lifnr  = it_zycit244-lifnr .

        itab_fornec-nrseqd = it_zycit244-nrseqd.

        APPEND itab_fornec.

      ENDIF.

 

 

      it_zycit279-slqtde = it_zycit279-slqtde -

                           it_apr_final-qtd_mimp.

      IF it_zycit279-slqtde <= 0.

        it_zycit279-esgotado = 'X'.

      ENDIF.

      itab_lista_aux-qtd =

              itab_lista_aux-qtd - it_apr_final-qtd_mimp.

      MODIFY itab_lista_aux.

      MODIFY it_zycit279.

*         Atualiza a tabela de importações realizadas e seus saldos.

      READ TABLE it_zycit279_save WITH KEY

                                  nrseq  = it_zycit279-nrseq

                                  ebeln  = it_zycit279-ebeln

                                  ebelp  = it_zycit279-ebelp

                                  nrseqd = it_zycit279-nrseqd

                                  matnr  = it_zycit279-matnr.

      IF sy-subrc NE 0.

        CLEAR it_zycit279_save.

        MOVE-CORRESPONDING it_zycit279 TO it_zycit279_save.

        APPEND it_zycit279_save.

      ELSE.

        it_zycit279_save-slqtde =

                    it_zycit279_save-slqtde - it_apr_final-qtd_mimp.

        IF it_zycit279_save-slqtde <= 0.

          it_zycit279_save-esgotado = 'X'.

        ENDIF.

        MODIFY it_zycit279_save TRANSPORTING slqtde esgotado

                                WHERE nrseq  = it_zycit279-nrseq

                                  AND ebeln  = it_zycit279-ebeln

                                  AND ebelp  = it_zycit279-ebelp

                                  AND nrseqd = it_zycit279-nrseqd

                                  AND matnr  = it_zycit279-matnr.

      ENDIF.

 

 

*****************************

    ENDLOOP.

 

 

  ENDLOOP.

 

 

 

 

 

 

 

ENDFORM.                    " apr_tf

 

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

Modificações efetuadas em PROG /PWS/ZYCIR254I01

 

*----------------------------------------------------------------------*

***INCLUDE /PWS/ZYCIR070I01 .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&      Module  USER_COMMAND_0001  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0001 INPUT.

  CASE OK_CODE.

    WHEN 'BACK'.

      PERFORM EXECUTE_BACK_BUTTON.      "Botão Voltar

    WHEN 'MALL'.

      PERFORM EXECUTE_MALL_BUTTON.      "Botão Marcar Todos

    WHEN 'DALL'.

      PERFORM EXECUTE_DALL_BUTTON.      "Botão Desmarcar Todos

    WHEN 'APROP'.

      PERFORM EXECUTE_APROP_BUTTON.     "Botão Apropriar Exportações

    WHEN 'P-'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP-TOP_LINE = NEXTLINE.

    WHEN 'P--'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP-TOP_LINE = NEXTLINE.

    WHEN 'P+'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP-TOP_LINE = NEXTLINE.

    WHEN 'P++'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002 LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP-TOP_LINE = NEXTLINE.

    WHEN 'SELE'.

      PERFORM CHECK_FIELD_SELECTION.

  ENDCASE.

  CLEAR OK_CODE.

ENDMODULE.                 " USER_COMMAND_0001  INPUT

*&---------------------------------------------------------------------*

*&      Module  fill_table_it_zycet002  INPUT

*&---------------------------------------------------------------------*

MODULE FILL_TABLE_IT_ZYCET002 INPUT.

  IT_ZYCET002-NRSEQ    = /PWS/ZYCEE002-NRSEQ   .

  IT_ZYCET002-VBELN_VA = /PWS/ZYCEE002-VBELN_VA.

  IT_ZYCET002-AUPOS    = /PWS/ZYCEE002-AUPOS   .

  IT_ZYCET002-VBELN_VF = /PWS/ZYCEE002-VBELN_VF.

  IT_ZYCET002-POSNR    = /PWS/ZYCEE002-POSNR   .

  IT_ZYCET002-DOCNUM   = /PWS/ZYCEE002-DOCNUM  .

  IT_ZYCET002-VBELN_VL = /PWS/ZYCEE002-VBELN_VL.

  IT_ZYCET002-POSNL    = /PWS/ZYCEE002-POSNL   .

  IT_ZYCET002-EBELN    = /PWS/ZYCEE002-EBELN   .

  IT_ZYCET002-EBELP    = /PWS/ZYCEE002-EBELP   .

  IT_ZYCET002-FKIMG    = /PWS/ZYCEE002-FKIMG   .

  IT_ZYCET002-VRKME    = /PWS/ZYCEE002-VRKME   .

  IT_ZYCET002-MATNR    = /PWS/ZYCEE002-MATNR   .

  IT_ZYCET002-MEXP     = MEXP             .

  MODIFY IT_ZYCET002 INDEX TC_EXP-CURRENT_LINE.

ENDMODULE.                 " fill_table_it_zycet002  INPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0001_exit  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0001_EXIT INPUT.

  CASE OK_CODE.

    WHEN 'ABORT'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " user_command_0001_exit  INPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0002  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0002 INPUT.

  CASE OK_CODE.

    WHEN 'BACK'.

      PERFORM EXECUTE_BACK_BUTTON2.

    WHEN 'FIRST'.

      PERFORM EXECUTE_FIRST_BUTTON2.

    WHEN 'PRIOR'.

      PERFORM EXECUTE_PRIOR_BUTTON2.

    WHEN 'NEXT'.

      PERFORM EXECUTE_NEXT_BUTTON2.

    WHEN 'LAST'.

      PERFORM EXECUTE_LAST_BUTTON2.

    WHEN 'SELE'.

      PERFORM EXECUTE_SELE_BUTTON2.

      PERFORM CHECK_FIELD_SELECTION.

    WHEN 'APROV'.

      PERFORM EXECUTE_APROV_BUTTON2.

    WHEN 'LOGER'.

      PERFORM EXECUTE_LOGER_BUTTON2.

  ENDCASE.

  CLEAR OK_CODE.

ENDMODULE.                 " user_command_0002  INPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0002_exit  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0002_EXIT INPUT.

  CASE OK_CODE.

    WHEN 'ABORT'.

*     Desbloqueia os registros de recebimento.

      PERFORM UNLOCK_RECORD_RECEB.

*     Desbloqueia os registros do ato concessório.

      PERFORM UNLOCK_RECORD_ATO.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " user_command_0002_exit  INPUT

*&---------------------------------------------------------------------*

*&      Module  fill_table_it_zycet002_exp  INPUT

*&---------------------------------------------------------------------*

MODULE FILL_TABLE_IT_ZYCET002_EXP INPUT.

  IT_ZYCET002-NRSEQ    = /PWS/ZYCEE002-NRSEQ   .

  IT_ZYCET002-VBELN_VA = /PWS/ZYCEE002-VBELN_VA.

  IT_ZYCET002-AUPOS    = /PWS/ZYCEE002-AUPOS   .

  IT_ZYCET002-VBELN_VF = /PWS/ZYCEE002-VBELN_VF.

  IT_ZYCET002-POSNR    = /PWS/ZYCEE002-POSNR   .

  IT_ZYCET002-DOCNUM   = /PWS/ZYCEE002-DOCNUM  .

  IT_ZYCET002-VBELN_VL = /PWS/ZYCEE002-VBELN_VL.

  IT_ZYCET002-POSNL    = /PWS/ZYCEE002-POSNL   .

  IT_ZYCET002-EBELN    = /PWS/ZYCEE002-EBELN   .

  IT_ZYCET002-EBELP    = /PWS/ZYCEE002-EBELP   .

  IT_ZYCET002-FKIMG    = /PWS/ZYCEE002-FKIMG   .

  IT_ZYCET002-VRKME    = /PWS/ZYCEE002-VRKME   .

  IT_ZYCET002-MATNR    = /PWS/ZYCEE002-MATNR   .

  IT_ZYCET002-QTDBX    = V_QTDBX          .

ENDMODULE.                 " fill_table_it_zycet002_exp  INPUT

*&---------------------------------------------------------------------*

*&      Module  fill_table_it_apr  INPUT

*&---------------------------------------------------------------------*

MODULE FILL_TABLE_IT_APR INPUT.

  IT_APR-NRSEQIMP  = /PWS/ZYCIE282-NRSEQIMP .

  IT_APR-EBELN     = /PWS/ZYCIE282-EBELN    .

  IT_APR-EBELP     = /PWS/ZYCIE282-EBELP    .

  IT_APR-NRSEQD    = /PWS/ZYCIE282-NRSEQD   .

  IT_APR-MATNR_IMP = /PWS/ZYCIE282-MATNR_IMP.

  IT_APR-MEINS_I   = /PWS/ZYCIE282-MEINS_I  .

  IT_APR-QTD_IORG  = /PWS/ZYCIE282-QTD_IORG .

  IT_APR-QTD_MIMP  = /PWS/ZYCIE282-QTD_MIMP .

ENDMODULE.                 " fill_table_it_apr  INPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0003  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0003 INPUT.

  CASE OK_CODE.

    WHEN 'CANCE'.

      LEAVE TO SCREEN 0.

    WHEN 'P-'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_LOG-TOP_LINE = NEXTLINE.

    WHEN 'P--'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_LOG-TOP_LINE = NEXTLINE.

    WHEN 'P+'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_LOG-TOP_LINE = NEXTLINE.

    WHEN 'P++'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_LOG_ERRO LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_LOG-CURRENT_LINE 6 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_LOG-TOP_LINE = NEXTLINE.

  ENDCASE.

  CLEAR OK_CODE.

ENDMODULE.                 " user_command_0003  INPUT

*&---------------------------------------------------------------------*

*&      Module  modify_qtd_aprop  INPUT

*&---------------------------------------------------------------------*

MODULE MODIFY_QTD_APROP INPUT.

  DATA: V_PCTAPR   TYPE P DECIMALS 5   ,

        V_APMAT(1) TYPE C              ,

        V_QTDAPROP LIKE /PWS/ZYCET002-FKIMG ,

        V_QTDBASE  LIKE ITAB_STKO-BMENG,

        V_ERROR(1) TYPE C              .

  CLEAR: V_CAMPO, V_VALOR, V_LINHA.

  GET CURSOR FIELD V_CAMPO VALUE V_VALOR LINE V_LINHA.

  IF V_LINHA > 0.

    V_POS = TC_EXP_AP-TOP_LINE + V_LINHA - 1.

    MOVE V_POS TO V_INDICATU.

    LOOP AT IT_ZYCET002 WHERE MEXP EQ 'X'.

      IT_ZYCET002-MEXP = ' '.

      MODIFY IT_ZYCET002.

    ENDLOOP.

    READ TABLE IT_ZYCET002 INDEX V_INDICATU.

    IF SY-SUBRC EQ 0.

      IT_ZYCET002-MEXP = 'X'.

      MODIFY IT_ZYCET002 INDEX V_INDICATU.

*     Posiciona as importações de acordo com os registros de

*     exportações.

      PERFORM LOCATE_RECORD_APPROPRIATION.

    ENDIF.

  ENDIF.

  READ TABLE IT_ZYCET002 INDEX V_POS.

  IF SY-SUBRC EQ 0.

    IF V_QTDBX > IT_ZYCET002-FKIMG.

      MESSAGE W061 WITH TEXT-022.

      EXIT.

    ENDIF.

    CLEAR V_QTDAPROP.

*   Apura a porcentagem da quantidade modificada.

    V_PCTAPR = ( 100 * V_QTDBX ) / IT_ZYCET002-FKIMG.

    READ TABLE IT_ZYCIT281 WITH KEY MATNR = IT_ZYCET002-MATNR.

    " werks = it_zycet002-werks.

    IF SY-SUBRC EQ 0.

*     Puxa lista técnica de materiais.

      CLEAR: IT_STPOX, IT_STPOX2, IT_MATCAT.

      REFRESH: IT_STPOX, IT_STPOX2, IT_MATCAT. V_ERROLT = 'N'.

      PERFORM GET_BOM_OF_MATERIALS TABLES IT_STPOX2

                                          IT_MATCAT

                                   USING IT_ZYCIT281-MATNR

                                         IT_ZYCIT281-CAPID

                                         IT_ZYCIT281-WERKS

                                         IT_ZYCIT281-STLAN

                                         IT_ZYCIT281-STLNR

                                         IT_ZYCIT281-STLAL

                                CHANGING V_ERROLT.

      IF V_ERROLT EQ 'N'.

*       Trata recursividade dos componentes.

        PERFORM COLLECT_MATERIALS TABLES IT_STPOX IT_STPOX2 IT_MATCAT.

        PERFORM REVERSE_APPROPRIATION_MOD.

*       Apropria o material vigente.

        V_APMAT = 'N'.

        LOOP AT IT_ZYCIT247 WHERE CODMAT   EQ IT_ZYCET002-MATNR

                              AND ESGOTADO EQ ' '.

          READ TABLE ITAB_STKO WITH KEY STLNR = IT_ZYCIT247-STLNR

                                        STLAL = IT_ZYCIT247-STLAL.

          IF SY-SUBRC NE 0.

            V_QTDBASE = 1.

          ELSE.

            V_QTDBASE = ITAB_STKO-BMENG.

          ENDIF.

          CLEAR IT_ZYCIT244.

          READ TABLE IT_ZYCIT244 WITH KEY NRSEQD = IT_ZYCIT247-NRSEQD.

          IF V_QTDAPROP >= V_QTDBX.

            EXIT.

          ENDIF.

          V_APMAT = 'S'.

          V_ERROR = 'N'.

*         Se o tipo de ato concessório não for genérico, executa uma

*         rotina de apropriação não genérica, senão, executa uma rotina

*         específica para genérico.

          IF IT_ZYCIT244-TIPO NE 'G'.

            PERFORM APPROPRIATE_TNG_MOD CHANGING V_QTDAPROP

                                                 V_QTDBASE

                                                 V_ERROR

                                                 V_PCTAPR.

          ELSE.

            PERFORM APPROPRIATE_TG_MOD CHANGING V_QTDAPROP

                                                V_QTDBASE

                                                V_ERROR

                                                V_PCTAPR.

          ENDIF.

          IF V_ERROR EQ 'S'.

            CONTINUE.

          ENDIF.

        ENDLOOP.

*       Atualiza Log de Erro (Não há Atos Concessórios com Saldo).

        IF V_APMAT = 'N'.

          CLEAR: V_ERROLOG, IT_LOG_ERRO.

          CONCATENATE TEXT-021 IT_ZYCET002-MATNR

                                      INTO V_ERROLOG SEPARATED BY SPACE.

          MOVE V_ERROLOG TO IT_LOG_ERRO.

          APPEND IT_LOG_ERRO.

        ENDIF.

        MOVE V_QTDAPROP TO IT_ZYCET002-QTDBX.

        MODIFY IT_ZYCET002 INDEX V_POS.

      ELSE.

*       Trata log erro (Lista técnica materiais não processada).

        CLEAR: V_ERROLOG, IT_LOG_ERRO.

        CONCATENATE TEXT-015 IT_ZYCET002-MATNR

                                      INTO V_ERROLOG SEPARATED BY SPACE.

        MOVE V_ERROLOG TO IT_LOG_ERRO.

        APPEND IT_LOG_ERRO.

      ENDIF.

    ELSE.

*     Trata log erro (Não há lista técnica de mat. parametrizada).

      CLEAR: V_ERROLOG, IT_LOG_ERRO.

      CONCATENATE TEXT-016 IT_ZYCET002-MATNR

                                    INTO V_ERROLOG SEPARATED BY SPACE.

      MOVE V_ERROLOG TO IT_LOG_ERRO.

      APPEND IT_LOG_ERRO.

    ENDIF.

*   Posiciona as importações de acordo com os registros de

*   exportações.

    PERFORM LOCATE_RECORD_APPROPRIATION.

  ENDIF.

ENDMODULE.                 " modify_qtd_aprop  INPUT

*&---------------------------------------------------------------------*

*&      Module  fill_table_it_zycet002_desa  INPUT

*&---------------------------------------------------------------------*

MODULE FILL_TABLE_IT_ZYCET002_DESA INPUT.

*  it_zycet002_desa-nrseq    = /pws/zycee002-nrseq   .

*  it_zycet002_desa-vbeln_va = /pws/zycee002-vbeln_va.

*  it_zycet002_desa-aupos    = /pws/zycee002-aupos   .

*  it_zycet002_desa-vbeln_vf = /pws/zycee002-vbeln_vf.

*  it_zycet002_desa-posnr    = /pws/zycee002-posnr   .

*  it_zycet002_desa-docnum   = /pws/zycee002-docnum  .

*  it_zycet002_desa-vbeln_vl = /pws/zycee002-vbeln_vl.

*  it_zycet002_desa-posnl    = /pws/zycee002-posnl   .

*  it_zycet002_desa-ebeln    = /pws/zycee002-ebeln   .

*  it_zycet002_desa-ebelp    = /pws/zycee002-ebelp   .

*  it_zycet002_desa-qtdapr   = v_apr            .

*  it_zycet002_desa-fkimg    = /pws/zycee002-fkimg   .

*  it_zycet002_desa-vrkme    = /pws/zycee002-vrkme   .

*  it_zycet002_desa-matnr    = /pws/zycee002-matnr   .

  READ TABLE IT_ZYCET002_DESA INDEX TC_EXP_DESA-CURRENT_LINE.

  IT_ZYCET002_DESA-MEXP     = MEXP             .

  MODIFY IT_ZYCET002_DESA INDEX TC_EXP_DESA-CURRENT_LINE.

ENDMODULE.                 " fill_table_it_zycet002_desa  INPUT

*&---------------------------------------------------------------------*

*&      Module  user_command_0004  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0004 INPUT.

  CASE OK_CODE.

    WHEN 'BACK'.

      PERFORM EXECUTE_BACK_BUTTON.           "Botão Voltar

    WHEN 'MALL'.

      PERFORM EXECUTE_MALL_BUTTON_0004.      "Botão Marcar Todos

    WHEN 'DALL'.

      PERFORM EXECUTE_DALL_BUTTON_0004.      "Botão Desmarcar Todos

    WHEN 'DESAPR'.

      PERFORM EXECUTE_DESAPROP_BUTTON_0004.  "Botão Despropriar Export.

    WHEN 'P-'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP_DESA-TOP_LINE = NEXTLINE.

    WHEN 'P--'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP_DESA-TOP_LINE = NEXTLINE.

    WHEN 'P+'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP_DESA-TOP_LINE = NEXTLINE.

    WHEN 'P++'.

      CLEAR NEXTLINE.

      DESCRIBE TABLE IT_ZYCET002_DESA LINES V_ILINHAS.

      PERFORM BLAETTERN

              USING TC_EXP_DESA-CURRENT_LINE 10 V_ILINHAS OK_CODE

              CHANGING NEXTLINE.

      TC_EXP_DESA-TOP_LINE = NEXTLINE.

    WHEN 'SELE'.

      PERFORM CHECK_FIELD_SELECTION.

  ENDCASE.

  CLEAR OK_CODE.

ENDMODULE.                 " user_command_0004  INPUT

*&---------------------------------------------------------------------*

*&      Form  execute_mall_button_0004

*&---------------------------------------------------------------------*

FORM EXECUTE_MALL_BUTTON_0004.

  LOOP AT IT_ZYCET002_DESA.

    IT_ZYCET002_DESA-MEXP = 'X'.

    MODIFY IT_ZYCET002_DESA.

  ENDLOOP.

ENDFORM.                    " execute_mall_button_0004

*&---------------------------------------------------------------------*

*&      Form  execute_dall_button_0004

*&---------------------------------------------------------------------*

FORM EXECUTE_DALL_BUTTON_0004.

  LOOP AT IT_ZYCET002_DESA.

    IT_ZYCET002_DESA-MEXP = ' '.

    MODIFY IT_ZYCET002_DESA.

  ENDLOOP.

ENDFORM.                    " execute_dall_button_0004

*&---------------------------------------------------------------------*

*&      Module  user_command_0004_exit  INPUT

*&---------------------------------------------------------------------*

MODULE USER_COMMAND_0004_EXIT INPUT.

  CASE OK_CODE.

    WHEN 'ABORT'.

      LEAVE PROGRAM.

  ENDCASE.

ENDMODULE.                 " user_command_0004_exit  INPUT

 

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

Modificações efetuadas em PROG /PWS/ZYCIR254O01

 

*----------------------------------------------------------------------*

***INCLUDE /PWS/ZYCIR070O01 .

*----------------------------------------------------------------------*

*&---------------------------------------------------------------------*

*&      Module  STATUS_0001  OUTPUT

*&---------------------------------------------------------------------*

MODULE status_0001 OUTPUT.

  PERFORM check_buttons_screen.

  SET PF-STATUS 'ST0001' EXCLUDING it_buttons.

  SET TITLEBAR  '0001' WITH text-004.

ENDMODULE.                 " STATUS_0001  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  fill_screen_0001  OUTPUT

*&---------------------------------------------------------------------*

MODULE fill_screen_0001 OUTPUT.

  /pws/zycee002-nrseq    = it_zycet002-nrseq.

  /pws/zycee002-vbeln_va = it_zycet002-vbeln_va.

  /pws/zycee002-aupos    = it_zycet002-aupos.

  /pws/zycee002-vbeln_vf = it_zycet002-vbeln_vf.

  /pws/zycee002-posnr    = it_zycet002-posnr.

  /pws/zycee002-docnum   = it_zycet002-docnum.

  /pws/zycee002-vbeln_vl = it_zycet002-vbeln_vl.

  /pws/zycee002-posnl    = it_zycet002-posnl.

  /pws/zycee002-ebeln    = it_zycet002-ebeln.

  /pws/zycee002-ebelp    = it_zycet002-ebelp.

  /pws/zycee002-fkimg    = it_zycet002-fkimg.

  /pws/zycee002-vrkme    = it_zycet002-vrkme.

  /pws/zycee002-matnr    = it_zycet002-matnr.

  mexp              = it_zycet002-mexp.

ENDMODULE.                 " fill_screen_0001  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  set_screen  OUTPUT

*&---------------------------------------------------------------------*

MODULE set_screen OUTPUT.

  DESCRIBE TABLE it_zycet002 LINES v_ilinhas.

  tc_exp-lines = v_ilinhas.

ENDMODULE.                 " set_screen  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  select_text_material  OUTPUT

*&---------------------------------------------------------------------*

MODULE select_text_material OUTPUT.

* Seleciona a Descrição do material.

  SELECT maktx UP TO 1 ROWS FROM makt INTO v_mtxt1_0001

         WHERE matnr = /pws/zycee002-matnr

           AND spras = sy-langu.

  ENDSELECT.

ENDMODULE.                 " select_text_material  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  status_0002  OUTPUT

*&---------------------------------------------------------------------*

MODULE status_0002 OUTPUT.

  PERFORM check_buttons_screen.

  SET PF-STATUS 'ST0001' EXCLUDING it_buttons.

  SET TITLEBAR  '0001' WITH text-005.

ENDMODULE.                 " status_0002  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  fill_screen_0002_exp  OUTPUT

*&---------------------------------------------------------------------*

MODULE fill_screen_0002_exp OUTPUT.

  /pws/zycee002-nrseq    = it_zycet002-nrseq.

  /pws/zycee002-vbeln_va = it_zycet002-vbeln_va.

  /pws/zycee002-aupos    = it_zycet002-aupos.

  /pws/zycee002-vbeln_vf = it_zycet002-vbeln_vf.

  /pws/zycee002-posnr    = it_zycet002-posnr.

  /pws/zycee002-docnum   = it_zycet002-docnum.

  /pws/zycee002-vbeln_vl = it_zycet002-vbeln_vl.

  /pws/zycee002-posnl    = it_zycet002-posnl.

  /pws/zycee002-ebeln    = it_zycet002-ebeln.

  /pws/zycee002-ebelp    = it_zycet002-ebelp.

  /pws/zycee002-fkimg    = it_zycet002-fkimg.

  /pws/zycee002-vrkme    = it_zycet002-vrkme.

  /pws/zycee002-matnr    = it_zycet002-matnr.

  v_qtdbx                = it_zycet002-qtdbx.

  v_saldo_mat            = it_zycet002-fkimg - v_qtdbx.

 

  PERFORM cob_camb.

 

ENDMODULE.                 " fill_screen_0002_exp  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  select_text_material2_exp  OUTPUT

*&---------------------------------------------------------------------*

MODULE select_text_material2_exp OUTPUT.

* Seleciona a Descrição do material.

  SELECT maktx UP TO 1 ROWS FROM makt INTO v_mtxt1_0002

         WHERE matnr = /pws/zycee002-matnr

           AND spras = sy-langu.

  ENDSELECT.

* Carrega Ícone de indicação de Posicionamento de registro.

  IF it_zycet002-mexp EQ 'X'.

    v_indic1 = '@9T@'.

  ELSE.

    v_indic1 = '@5F@'.

  ENDIF.

  IF NOT it_zycet002 IS INITIAL.

    READ TABLE it_apr_final WITH KEY nrseqexp = it_zycet002-nrseq

                                     vbeln_va = it_zycet002-vbeln_va

                                     aupos    = it_zycet002-aupos

                                     vbeln_vf = it_zycet002-vbeln_vf

                                     posnr    = it_zycet002-posnr

                                     docnum   = it_zycet002-docnum

                                     vbeln_vl = it_zycet002-vbeln_vl

                                     posnl    = it_zycet002-posnl

                                     eebeln   = it_zycet002-ebeln

                                     eebelp   = it_zycet002-ebelp.

    IF sy-subrc EQ 0.

      IF v_saldo_mat = 0.

        v_indic2 = '@5B@'. "Verde

      ELSE.

        v_indic2 = '@5D@'. "Amarelo

      ENDIF.

 

*      UPDATE /pws/zycet002 SET staprop = 'A'

*               WHERE nrseq = it_zycet002-nrseq

*                 AND ebeln = it_zycet002-ebeln

*                 AND ebelp = it_zycet002-ebelp.

 

    ELSE.

      v_indic2 = '@5C@'. "Vermelho

 

*      UPDATE /pws/zycet002 SET staprop = 'E'

*             WHERE nrseq = it_zycet002-nrseq

*               AND ebeln = it_zycet002-ebeln

*               AND ebelp = it_zycet002-ebelp.

    ENDIF.

    IF v_tptrans EQ 'M'.

      LOOP AT SCREEN.

        CASE screen-name.

          WHEN 'V_QTDBX'.

            screen-input = 1.

        ENDCASE.

        MODIFY SCREEN.

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDMODULE.                 " select_text_material2_exp  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  fill_screen_0002_imp  OUTPUT

*&---------------------------------------------------------------------*

* Chamado     Data            Descrição

* ----------------------------------------------------------------------

* 220218      09/05/05         Ajustado calculo do saldo restante da DI*

* ----------------------------------------------------------------------

MODULE fill_screen_0002_imp OUTPUT.

  DATA: v_p_perda2(8).

  CLEAR v_qtd_apropriada.

 

 

 

  /pws/zycie282-nrseqimp     = it_apr-nrseqimp     .

  /pws/zycie282-ebeln        = it_apr-ebeln        .

  /pws/zycie282-ebelp        = it_apr-ebelp        .

  /pws/zycie282-nrseqd       = it_apr-nrseqd       .

  /pws/zycie282-matnr_imp    = it_apr-matnr_imp    .

  /pws/zycie282-meins_i      = it_apr-meins_i      .

  /pws/zycie282-qtd_iorg     = it_apr-qtd_iorg     .

  /pws/zycie282-qtd_mimp     = it_apr-qtd_mimp     .

  /pws/zycie282-nrdi         = it_apr-nrdi         .

  /pws/zycie282-dtreg        = it_apr-dtreg        .

  /pws/zycie282-mengecom     = it_apr-mengecom     .

  /pws/zycie282-qtd_eq_mexp  = it_apr-qtd_eq_mexp  .

  v_un_ncm                   = it_apr-un_ncm       .

  v_perc                     = it_apr-perc         .

*PWS245742 -Início -----------------------------------------------------

  /pws/zycie282-perda        = it_apr-perda        .

  /pws/zycie282-qtd_perda    = it_apr-qtd_perda    .

  /pws/zycie282-perda_e      = it_apr-perda_e      .

  /pws/zycie282-qtd_perda_e  = it_apr-qtd_perda_e  .

*PWS245742 -Fim --------------------------------------------------------

 

 

  v_perc_di = ( /pws/zycie282-mengecom / /pws/zycie282-qtd_iorg )

              * 100.

  IF v_perc_di > 100.

    v_perc_di = 100.

  ENDIF.

  v_saldo_di = /pws/zycie282-mengecom - /pws/zycie282-qtd_mimp .

  IF v_saldo_di < 0.

    v_saldo_di = 0.

  ENDIF.

*

 

 

ENDMODULE.                 " fill_screen_0002_imp  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  select_text_material2_imp  OUTPUT

*&---------------------------------------------------------------------*

MODULE select_text_material2_imp OUTPUT.

* Seleciona a Descrição do material.

  SELECT maktx UP TO 1 ROWS FROM makt INTO v_ctxt1_0002

         WHERE matnr = /pws/zycie282-matnr_imp

           AND spras = sy-langu.

  ENDSELECT.

ENDMODULE.                 " select_text_material2_imp  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  set_screen2  OUTPUT

*&---------------------------------------------------------------------*

MODULE set_screen2 OUTPUT.

* Fixa número de linhas para table control de exportação

  DESCRIBE TABLE it_zycet002 LINES v_ilinhas.

  tc_exp_ap-lines = v_ilinhas.

* Fixa número de linhas para table control de importação

  DESCRIBE TABLE it_apr LINES v_ilinhas.

  tc_imp_ap-lines = v_ilinhas.

ENDMODULE.                 " set_screen2  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  status_0003  OUTPUT

*&---------------------------------------------------------------------*

MODULE status_0003 OUTPUT.

  SET PF-STATUS '0003'.

  SET TITLEBAR '0001' WITH text-014.

ENDMODULE.                 " status_0003  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  fill_screen_0004  OUTPUT

*&---------------------------------------------------------------------*

MODULE fill_screen_0004 OUTPUT.

  /pws/zycee002-nrseq    = it_zycet002_desa-nrseq.

  /pws/zycee002-vbeln_va = it_zycet002_desa-vbeln_va.

  /pws/zycee002-aupos    = it_zycet002_desa-aupos.

  /pws/zycee002-vbeln_vf = it_zycet002_desa-vbeln_vf.

  /pws/zycee002-posnr    = it_zycet002_desa-posnr.

  /pws/zycee002-docnum   = it_zycet002_desa-docnum.

  /pws/zycee002-vbeln_vl = it_zycet002_desa-vbeln_vl.

  /pws/zycee002-posnl    = it_zycet002_desa-posnl.

  /pws/zycee002-ebeln    = it_zycet002_desa-ebeln.

  /pws/zycee002-ebelp    = it_zycet002_desa-ebelp.

  /pws/zycee002-fkimg    = it_zycet002_desa-fkimg.

  /pws/zycee002-vrkme    = it_zycet002_desa-vrkme.

  /pws/zycee002-matnr    = it_zycet002_desa-matnr.

  v_apr             = it_zycet002_desa-qtdapr.

  mexp              = it_zycet002_desa-mexp.

ENDMODULE.                 " fill_screen_0004  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  status_0004  OUTPUT

*&---------------------------------------------------------------------*

MODULE status_0004 OUTPUT.

  SET PF-STATUS 'ST0004'.

  SET TITLEBAR  '0001' WITH text-023.

ENDMODULE.                 " status_0004  OUTPUT

*&---------------------------------------------------------------------*

*&      Module  set_screen_0004  OUTPUT

*&---------------------------------------------------------------------*

MODULE set_screen_0004 OUTPUT.

* Fixa número de linhas para table control de importação

  DESCRIBE TABLE it_zycet002_desa LINES v_ilinhas.

  tc_exp_desa-lines = v_ilinhas.

ENDMODULE.                 " set_screen_0004  OUTPUT

 

 

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0001

 

 

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

   V_QUAD1_0001

      Quadr      1        2     119     119       1     CHAR

 

+  TC_EXP

      Tabel      2        3     116     116      25

      Seleção linha=Múltipla, Seleção coluna=Nenh.

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

 - /PWS/ZYCEE002-NRSEQ

      Texto      1        1      17      17       1     CHAR      X    2

                               /PWS/ZYCEP001

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VA

      Texto      1        2      10      10       1     CHAR      X    F

                               AUN

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-AUPOS

      Texto      1        3      15      15       1     CHAR      X    2

                               APO

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VL

      Texto      1        4      15      12       1     CHAR      X    2

                               VL

      Título de coluna TC

 - /PWS/ZYCEE002-POSNL

      Texto      1        5      15      15       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCEE002-VBELN_VF

      Texto      1        6      13      12       1     CHAR      X    F

                               VF

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-POSNR

      Texto      1        7      15      15       1     CHAR      X    2

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-DOCNUM

      Texto      1        8      15      15       1     CHAR      X    F

                               JEF

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-VRKME

      Texto      1        9      15      15       1     CHAR      X    2

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-FKIMG

      Texto      1       10      13      15       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCEE002-MATNR

      Texto      1       11      15      15       1     CHAR      X    2

                               MAT

      Chave externa, Título de coluna TC

 - V_MTXT1_0001

      Texto      1       12      18      30       1     CHAR

      Título de coluna TC

 - MEXP

      Check      1        0       1       1       1     CHAR               Ent Off

      Coluna marc.TC

 - /PWS/ZYCEE002-NRSEQ

      I/O        1        1      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCEP001

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VA

      I/O        1        2      10      10       1     CHAR   X               Off

                       SPA GPA AUN

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-AUPOS

      I/O        1        3       6       6       1     NUMC   X               Off

      NEX              SPA GPA APO

      Elem.TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VL

      I/O        1        4      10      12       1     CHAR   X               Off

                       SPA GPA VL

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNL

      I/O        1        5       6       6       1     NUMC   X               Off

      Elem.TC

 - /PWS/ZYCEE002-VBELN_VF

      I/O        1        6      10      12       1     CHAR   X               Off

                       SPA GPA VF

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

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNR

      I/O        1        7       6       6       1     NUMC   X               Off

      Elem.TC

 - /PWS/ZYCEE002-DOCNUM

      I/O        1        8      10      10       1     NUMC   X               Off

                       SPA GPA JEF

      Dest, Elem.TC

 - /PWS/ZYCEE002-VRKME

      I/O        1        9       3       3       1     UNIT   X               Off

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

      Saída de conversão=CUNIT

 - /PWS/ZYCEE002-FKIMG

      I/O        1       10      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCEE002-MATNR

      I/O        1       11      18      18       1     CHAR   X               Off

                       SPA GPA MAT

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

      Saída de conversão=MATN1

 - V_MTXT1_0001

      I/O        1       12      40      30       1     CHAR                   Off

      PossRol, Elem.TC

   OK_CODE

      OK

 

*LOGICA DE PROCESSAMENTO:

PROCESS BEFORE OUTPUT.

  MODULE: status_0001,

          set_screen .

  LOOP AT it_zycet002 WITH CONTROL tc_exp CURSOR tc_exp-current_line.

    MODULE: fill_screen_0001    ,

            select_text_material.

  ENDLOOP.

PROCESS AFTER INPUT.

  LOOP AT it_zycet002.

    MODULE fill_table_it_zycet002.

  ENDLOOP.

  MODULE: user_command_0001                     ,

          user_command_0001_exit AT EXIT-COMMAND.

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0002

 

*CAMPOS:

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

   V_QUAD1_0002

      Quadr      1        2     119     119       1     CHAR

 

   V_QUAD2_0002

      Quadr      2        3     117     117       1     CHAR

 

+  TC_EXP_AP

      Tabel      3        4     115     115      10

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

      TabEntr., Com título, Configurável, LnhSep.vert.

 - V_INDIC2

      Texto      1        2       4       3       1     CHAR

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-NRSEQ

      Texto      1        3      14      12       1     CHAR      X    F

                               /PWS/ZYCEP001

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-MATNR

      Texto      1        4      15      15       1     CHAR      X    2

                               MAT

      Chave externa, Título de coluna TC

 - V_MTXT1_0002

      Texto      1        5      18      30       1     CHAR

      Título de coluna TC

 - /PWS/ZYCEE002-VBELN_VA

      Texto      1        6       9      10       1     CHAR      X    F

                               AUN

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VL

      Texto      1        7      15      12       1     CHAR      X    2

                               VL

      Título de coluna TC

 - /PWS/ZYCEE002-POSNL

      Texto      1        8      15       5       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCEE002-VBELN_VF

      Texto      1        9      10      10       1     CHAR      X    F

                               VF

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-POSNR

      Texto      1       10      15      15       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCEE002-DOCNUM

      Texto      1       11      10      12       1     CHAR      X    F

                               JEF

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-VRKME

      Texto      1       12       3       5       1     CHAR      X    F

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-FKIMG

      Texto      1       13      16      15       1     CHAR      X    F

      Título de coluna TC

 - V_QTDBX

      Texto      1       14      17      17       1     CHAR

      Título de coluna TC

 - V_TXT_SALDO

      Texto      1       15      14      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-EXP_C_COB_CAMB

      Texto      1       16      22      18       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-IMP_S_COB_CAMB

      Texto      1       17      22      18       1     CHAR      X    F

      Título de coluna TC

 - V_INDIC1

      I/O        1        1      33       3       1     CHAR                   Off

      Bidimens, PossRol, Elem.TC, Col.fixa TC

      C/ícone

 - V_INDIC2

      I/O        1        2      33       3       1     CHAR                   Off

      Bidimens, PossRol, Elem.TC, Col.fixa TC

      C/ícone

 - /PWS/ZYCEE002-NRSEQ

      I/O        1        3      10      12       1     CHAR   X               Off

      NEX              SPA GPA /PWS/ZYCEP001

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

 - /PWS/ZYCEE002-MATNR

      I/O        1        4      18      18       1     CHAR   X               Off

      NEX              SPA GPA MAT

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

      Saída de conversão=MATN1

 - V_MTXT1_0002

      I/O        1        5      40      30       1     CHAR                   Off

      PossRol, Elem.TC

 - /PWS/ZYCEE002-VBELN_VA

      I/O        1        6      10      10       1     CHAR   X               Off

      NEX              SPA GPA AUN

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

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-VBELN_VL

      I/O        1        7      10      12       1     CHAR   X               Off

      NEX              SPA GPA VL

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNL

      I/O        1        8       6       5       1     NUMC   X               Off

      NEX

      PossRol, Elem.TC

 - /PWS/ZYCEE002-VBELN_VF

      I/O        1        9      10      10       1     CHAR   X               Off

      NEX              SPA GPA VF

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

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNR

      I/O        1       10       6       6       1     NUMC   X               Off

      NEX

      Elem.TC

 - /PWS/ZYCEE002-DOCNUM

      I/O        1       11      10      12       1     NUMC   X               Off

      NEX              SPA GPA JEF

      Dest, Elem.TC

 - /PWS/ZYCEE002-VRKME

      I/O        1       12       3       5       1     UNIT   X               Off

      NEX

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

      Saída de conversão=CUNIT

 - /PWS/ZYCEE002-FKIMG

      I/O        1       13      17      17       1     QUAN   X               Off

      NEX

      Alinh.à dir., Elem.TC

 - V_QTDBX

      I/O        1       14      17      17       1     DEC                    Off

      Alinh.à dir., Elem.TC

 - V_SALDO_MAT

      I/O        1       15      19      17       1     DEC                    Off

      Alinh.à dir., Elem.TC

 - V_EXP_CAMB

      I/O        1       16      18      18       1     CURR                   Off

      Alinh.à dir., Elem.TC

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

 - V_IMP_CAMB

      I/O        1       17      18      18       1     CURR                   Off

      Alinh.à dir., Elem.TC

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

   V_QUAD3_0002

      Quadr     14        3     117     117       1     CHAR

 

+  TC_IMP_AP

      Tabel     15        4     114     114      11

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

      TabEntr., Com título, Configurável, LnhSep.vert.

 - /PWS/ZYCIE282-NRSEQD

      Texto      1        1      15      10       1     CHAR      X    F

                               /PWS/ZYCIP435

      Título de coluna TC

 - /PWS/ZYCIE282-MATNR_IMP

      Texto      1        2       6      18       1     CHAR      X    F

                               MAT

      Título de coluna TC

 - V_PERC

      Texto      1        3      19      12       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQIMP

      Texto      1        4      14      10       1     CHAR      X    F

                               /PWS/ZYCIP001

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELN

      Texto      1        5      15      10       1     CHAR      X    2

                               BES

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELP

      Texto      1        6      15       5       1     CHAR      X    2

                               BSP

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-NRDI

      Texto      1        7       5      11       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-DTREG

      Texto      1        8      12      10       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MEINS_I

      Texto      1        9       6       6       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_IORG

      Texto      1       10      23      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MENGECOM

      Texto      1       11      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_PERC_DI

      Texto      1       12      18      12       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_MIMP

      Texto      1       13      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_TXT_SLDI

      Texto      1       14      25      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA

      Texto      1       15       7       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA

      Texto      1       16      20      16       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA_E

      Texto      1       17      12       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      Texto      1       18      20      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      Texto      1       19      19      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQD

      I/O        1        1      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP435

      Dest, Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-MATNR_IMP

      I/O        1        2      18      18       1     CHAR   X               Off

                       SPA GPA MAT

      Elem.TC, Col.fixa TC

      Saída de conversão=MATN1

 - V_PERC

      I/O        1        3      10      12       1     CHAR                   Off

      Alinh.à dir., Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-NRSEQIMP

      I/O        1        4      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP001

      Dest, Elem.TC

 - /PWS/ZYCIE282-EBELN

      I/O        1        5      10      10       1     CHAR   X               Off

                       SPA GPA BES

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCIE282-EBELP

      I/O        1        6       5       5       1     NUMC   X               Off

                       SPA GPA BSP

      Elem.TC

 - /PWS/ZYCIE282-NRDI

      I/O        1        7      11      11       1     CHAR   X               Off

      Elem.TC

 - /PWS/ZYCIE282-DTREG

      I/O        1        8      10      10       1     DATE   X               Off

      Botão EntrsPoss.stand., Elem.TC

 - /PWS/ZYCIE282-MEINS_I

      I/O        1        9       3       6       1     UNIT   X               Off

      Elem.TC

      Saída de conversão=CUNIT

 - /PWS/ZYCIE282-QTD_IORG

      I/O        1       10      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-MENGECOM

      I/O        1       11      17      17       1     QUAN   X     X         Off

      Alinh.à dir., Elem.TC

 - V_PERC_DI

      I/O        1       12      17      12       1     DEC                    Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_MIMP

      I/O        1       13      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - V_SALDO_DI

      I/O        1       14      17      17       1     DEC                    Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA

      I/O        1       15       7       8       1     DEC    X     X         Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA

      I/O        1       16      16      16       1     QUAN   X     X         Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA_E

      I/O        1       17       8       8       1     DEC    X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      I/O        1       18      33      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      I/O        1       19      17      17       1     QUAN   X     X         Off

      Dest, Alinh.à dir., Elem.TC

   OK_CODE

      OK

 

*LOGICA DE PROCESSAMENTO:

PROCESS BEFORE OUTPUT.

  MODULE: status_0002,

          set_screen2.

* Controla table control com as exportações apropriadas.

  LOOP AT it_zycet002 WITH CONTROL tc_exp_ap

                                          CURSOR tc_exp_ap-current_line

    MODULE: fill_screen_0002_exp     ,

            select_text_material2_exp.

  ENDLOOP.

* Controla table control com as importações apropriadas.

  LOOP AT it_apr WITH CONTROL tc_imp_ap CURSOR tc_imp_ap-current_line.

    MODULE: fill_screen_0002_imp     ,

            select_text_material2_imp.

  ENDLOOP.

PROCESS AFTER INPUT.

* Controla tabela interna de exportações apropriadas.

  LOOP AT it_zycet002.

    CHAIN.

      FIELD v_qtdbx MODULE modify_qtd_aprop ON CHAIN-REQUEST.

    ENDCHAIN.

    MODULE fill_table_it_zycet002_exp.

  ENDLOOP.

* Controla tabela interna de importações apropriadas.

  LOOP AT it_apr.

    MODULE fill_table_it_apr.

  ENDLOOP.

  MODULE: user_command_0002                     ,

          user_command_0002_exit AT EXIT-COMMAND.

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0003

*CAMPOS:

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

+  TC_LOG

      Tabel      1        1     113     113       7

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

      TabEntr., Com título, Configurável

 - IT_LOG_ERRO-LTEXT

      I/O        1        1     113     113       1     CHAR                   Off S.Sd

      Dest, Elem.TC, Col.fixa TC

   OK_CODE

      OK

 

*LOGICA DE PROCESSAMENTO:

process before output.

  module status_0003.

  loop at it_log_erro with control tc_log cursor tc_log-current_line.

  endloop.

process after input.

  loop at it_log_erro.

  endloop.

  module user_command_0003.

 

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0004

*CAMPOS:

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

   V_QUAD1_0004

      Quadr      1        2      88      88       1     CHAR

 

+  TC_EXP_DESA

      Tabel      3        3      86      86      12

      Seleção linha=Múltipla, Seleção coluna=Nenh.

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

 - /PWS/002-NRSEQ

      Texto      1        1      17      10       1     CHAR

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VA

      Texto      1        2      15      15       1     CHAR      X    2

                               AUN

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VF

      Texto      1        3      15      15       1     CHAR      X    2

                               VF

      Chave externa, Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-POSNR

      Texto      1        4      15      15       1     CHAR      X    2

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCEE002-DOCNUM

      Texto      1        5      15      15       1     CHAR      X    2

                               JEF

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-VBELN_VL

      Texto      1        6      15      15       1     CHAR      X    2

                               VL

      Título de coluna TC

 - /PWS/ZYCEE002-POSNL

      Texto      1        7      15      15       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCEE002-EBELN

      Texto      1        8      15      15       1     CHAR      X    2

                               BES

      Título de coluna TC

 - /PWS/ZYCEE002-EBELP

      Texto      1        9      15      15       1     CHAR      X    2

      Título de coluna TC

 - /PWS/ZYCEE002-VRKME

      Texto      1       10      15      15       1     CHAR      X    2

      Chave externa, Título de coluna TC

 - /PWS/ZYCEE002-FKIMG

      Texto      1       11      15      15       1     CHAR      X    2

      Título de coluna TC

 - V_APR

      Texto      1       12      14      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCEE002-MATNR

      Texto      1       13      15      15       1     CHAR      X    2

                               MAT

      Chave externa, Título de coluna TC

 - V_MTXT1_0001

      Texto      1       14      18      30       1     CHAR

      Título de coluna TC

 - MEXP

      Check      1        0       1       1       1     CHAR               Ent Off

      Coluna marc.TC

 - /PWS/ZYCEE002-NRSEQ

      I/O        1        1      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCEP001

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

 - /PWS/ZYCEE002-VBELN_VA

      I/O        1        2      10      10       1     CHAR   X               Off

                       SPA GPA AUN

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-VBELN_VF

      I/O        1        3      10      10       1     CHAR   X               Off

                       SPA GPA VF

      Dest, Chave externa, Botão EntrsPoss.stand., Elem.TC, Col.fixa TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNR

      I/O        1        4       6       6       1     NUMC   X               Off

      Elem.TC, Col.fixa TC

 - /PWS/ZYCEE002-DOCNUM

      I/O        1        5      10      10       1     NUMC   X               Off

                       SPA GPA JEF

      Dest, Botão EntrsPoss.stand., Elem.TC

 - /PWS/ZYCEE002-VBELN_VL

      I/O        1        6      10      10       1     CHAR   X               Off

                       SPA GPA VL

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-POSNL

      I/O        1        7       6       6       1     NUMC   X               Off

      Elem.TC

 - /PWS/ZYCEE002-EBELN

      I/O        1        8      10      10       1     CHAR   X               Off

                       SPA GPA BES

      Botão EntrsPoss.stand., Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCEE002-EBELP

      I/O        1        9       5       5       1     NUMC   X               Off

                       SPA GPA

      Elem.TC

 - /PWS/ZYCEE002-VRKME

      I/O        1       10       3       3       1     UNIT   X               Off

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

      Saída de conversão=CUNIT

 - /PWS/ZYCEE002-FKIMG

      I/O        1       11      17      17       1     QUAN   X               Off

      Elem.TC

 - V_APR

      I/O        1       12      17      17       1     DEC                    Off

      NEX

      Alinh.à dir., Elem.TC

 - /PWS/ZYCEE002-MATNR

      I/O        1       13      18      18       1     CHAR   X               Off

                       SPA GPA MAT

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

      Saída de conversão=MATN1

 - V_MTXT1_0001

      I/O        1       14      40      30       1     CHAR                   Off

      PossRol, Elem.TC

   OK_CODE

      OK

 

*LOGICA DE PROCESSAMENTO:

PROCESS BEFORE OUTPUT.

  MODULE: status_0004    ,

          set_screen_0004.

  LOOP AT it_zycet002_desa WITH CONTROL tc_exp_desa

                                        CURSOR tc_exp_desa-current_line.

    MODULE: fill_screen_0004    ,

            select_text_material.

  ENDLOOP.

PROCESS AFTER INPUT.

  LOOP AT it_zycet002_desa.

    MODULE fill_table_it_zycet002_desa.

  ENDLOOP.

  MODULE: user_command_0004                     ,

          user_command_0004_exit AT EXIT-COMMAND.

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0005

*CAMPOS:

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

   V_QUAD2_0001

      Quadr      1        1     134     134       1     CHAR

 

+  TC_IMP_AP

      Tabel      2        2     132     132      16

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

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

 - /PWS/ZYCIE282-NRSEQD

      Texto      1        1      15      10       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MATNR_IMP

      Texto      1        2       6      18       1     CHAR      X    F

      Título de coluna TC

 - V_PERC

      Texto      1        3      19      12       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQIMP

      Texto      1        4      14      10       1     CHAR      X    F

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELN

      Texto      1        5       6      10       1     CHAR      X    F

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELP

      Texto      1        6      15       5       1     CHAR      X    2

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-NRDI

      Texto      1        7       5      11       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-DTREG

      Texto      1        8      12      10       1     CHAR      X    F

      Título de coluna TC

 - V_LOTE_I

      Texto      1        9       4      15       1     CHAR

      LOT

      Título de coluna TC

 - /PWS/ZYCIE282-MEINS_I

      Texto      1       10       6       6       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_IORG

      Texto      1       11      23      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MENGECOM

      Texto      1       12      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_PERC_DI

      Texto      1       13      18      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_MIMP

      Texto      1       14      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_TXT_SLDI

      Texto      1       15      25      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA

      Texto      1       16       7       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA

      Texto      1       17      20      16       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA_E

      Texto      1       18      12       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      Texto      1       19      20      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      Texto      1       20      19      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQD

      I/O        1        1      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP435

      Dest, Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-MATNR_IMP

      I/O        1        2      18      18       1     CHAR   X               Off

                       SPA GPA MAT

      Elem.TC, Col.fixa TC

      Saída de conversão=MATN1

 - V_PERC

      I/O        1        3      10      12       1     CHAR                   Off

      Alinh.à dir., Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-NRSEQIMP

      I/O        1        4      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP001

      Dest, Elem.TC

 - /PWS/ZYCIE282-EBELN

      I/O        1        5      10      10       1     CHAR   X               Off

                       SPA GPA BES

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCIE282-EBELP

      I/O        1        6       5       5       1     NUMC   X               Off

                       SPA GPA BSP

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-NRDI

      I/O        1        7      11      11       1     CHAR   X               Off

      Elem.TC

 - /PWS/ZYCIE282-DTREG

      I/O        1        8      10      10       1     DATS   X               Off

      Botão EntrsPoss.stand., Elem.TC

 - V_LOTE_I

      I/O        1        9      15      15       1     CHAR                   Off

      LOT

      Elem.TC

 - /PWS/ZYCIE282-MEINS_I

      I/O        1       10       3       6       1     UNIT   X               Off

      Elem.TC

      Saída de conversão=CUNIT

 - /PWS/ZYCIE282-QTD_IORG

      I/O        1       11      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-MENGECOM

      I/O        1       12      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - V_PERC_DI

      I/O        1       13      10      17       1     CHAR                   Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_MIMP

      I/O        1       14      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - V_SALDO_DI

      I/O        1       15      17      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA

      I/O        1       16       7       8       1     DEC    X     X         Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA

      I/O        1       17      16      16       1     QUAN   X     X         Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA_E

      I/O        1       18       8       8       1     DEC    X               Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      I/O        1       19      33      17       1     QUAN   X               Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      I/O        1       20      17      17       1     QUAN   X     X         Off

          LOT

      Dest, Alinh.à dir., Elem.TC

 

      OK

 

*LOGICA DE PROCESSAMENTO:

PROCESS BEFORE OUTPUT.

 MODULE STATUS_0005.

*

* Controla table control com as importações apropriadas.

  LOOP AT it_apr

              WITH CONTROL tc_imp_ap CURSOR tc_imp_ap-current_line.

    MODULE: fill_screen_0002_imp     ,

            select_text_material2_imp.

  ENDLOOP.

 

 

PROCESS AFTER INPUT.

 

* Controla tabela interna de importações apropriadas.

  LOOP AT it_apr.

    MODULE fill_table_it_apr.

  ENDLOOP.

 

* MODULE USER_COMMAND_0005.

 

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

Modificações efetuadas em DYNP /PWS/ZYCIR254                           0006

*CAMPOS:

   Nome

      Ctg.      Linha   Coluna  CmprDf  CmVis   Altura  Format Dict  Modif At.Des.Só At

      Gr1 Gr2 Gr3 Gr4  SPA GPA ID parâm             Cód.F                TCmp   TpoLoopExbLoop

      Outros atributos

 

   V_QUAD2_0001

      Quadr      1        1     134     134       1     CHAR

 

+  TC_IMP_AP2

      Tabel      2        2     132     132       7

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

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

 - /PWS/ZYCIE282-NRSEQD

      Texto      1        1      15      10       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MATNR_IMP

      Texto      1        2       6      18       1     CHAR      X    F

      Título de coluna TC

 - V_PERC

      Texto      1        3      19      12       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQIMP

      Texto      1        4      14      10       1     CHAR      X    F

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELN

      Texto      1        5       6      10       1     CHAR      X    F

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-EBELP

      Texto      1        6      15       5       1     CHAR      X    2

      Título de coluna TC, Col.fixa TC

 - /PWS/ZYCIE282-NRDI

      Texto      1        7       5      11       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-DTREG

      Texto      1        8      12      10       1     CHAR      X    F

      Título de coluna TC

 - V_LOTE_I

      Texto      1        9       4      15       1     CHAR

      LOT

      Título de coluna TC

 - /PWS/ZYCIE282-MEINS_I

      Texto      1       10       6       6       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_IORG

      Texto      1       11      23      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-MENGECOM

      Texto      1       12      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_PERC_DI

      Texto      1       13      18      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_MIMP

      Texto      1       14      15      17       1     CHAR      X    F

      Título de coluna TC

 - V_TXT_SLDI

      Texto      1       15      25      17       1     CHAR

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA

      Texto      1       16       7       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA

      Texto      1       17      20      16       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-PERDA_E

      Texto      1       18      12       8       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      Texto      1       19      20      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      Texto      1       20      19      17       1     CHAR      X    F

      Título de coluna TC

 - /PWS/ZYCIE282-NRSEQD

      I/O        1        1      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP435

      Dest, Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-MATNR_IMP

      I/O        1        2      18      18       1     CHAR   X               Off

                       SPA GPA MAT

      Elem.TC, Col.fixa TC

      Saída de conversão=MATN1

 - V_PERC

      I/O        1        3      10      12       1     CHAR                   Off

      Alinh.à dir., Elem.TC, Col.fixa TC

 - /PWS/ZYCIE282-NRSEQIMP

      I/O        1        4      10      10       1     CHAR   X               Off

                       SPA GPA /PWS/ZYCIP001

      Dest, Elem.TC

 - /PWS/ZYCIE282-EBELN

      I/O        1        5      10      10       1     CHAR   X               Off

                       SPA GPA BES

      Dest, Elem.TC

      Saída de conversão=ALPHA

 - /PWS/ZYCIE282-EBELP

      I/O        1        6       5       5       1     NUMC   X               Off

                       SPA GPA BSP

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-NRDI

      I/O        1        7      11      11       1     CHAR   X               Off

      Elem.TC

 - /PWS/ZYCIE282-DTREG

      I/O        1        8      10      10       1     DATS   X               Off

      Botão EntrsPoss.stand., Elem.TC

 - V_LOTE_I

      I/O        1        9      15      15       1     CHAR                   Off

      LOT

      Elem.TC

 - /PWS/ZYCIE282-MEINS_I

      I/O        1       10       3       6       1     UNIT   X               Off

      Elem.TC

      Saída de conversão=CUNIT

 - /PWS/ZYCIE282-QTD_IORG

      I/O        1       11      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-MENGECOM

      I/O        1       12      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - V_PERC_DI

      I/O        1       13      10      17       1     CHAR                   Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_MIMP

      I/O        1       14      17      17       1     QUAN   X               Off

      Alinh.à dir., Elem.TC

 - V_SALDO_DI

      I/O        1       15      17      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA

      I/O        1       16       7       8       1     DEC    X     X         Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA

      I/O        1       17      16      16       1     QUAN   X     X         Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-PERDA_E

      I/O        1       18       8       8       1     DEC    X               Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_PERDA_E

      I/O        1       19      33      17       1     QUAN   X               Off

          LOT

      Alinh.à dir., Elem.TC

 - /PWS/ZYCIE282-QTD_EQ_MEXP

      I/O        1       20      17      17       1     QUAN   X     X         Off

          LOT

      Dest, Alinh.à dir., Elem.TC

   BOX03

      Quadr     10        1     134     134       1     CHAR

 

+  TC_MER_AP

      Tabel     11        2     132     132       7

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

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

 - WA_REAL_MERC-NRSEQD

      Texto      1        1      15      10       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-MATNR

      Texto      1        2       6      18       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-DISP

      Texto      1        3      19      10       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-FORNEC

      Texto      1        4      10      25       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-DOCNUM

      Texto      1        5      18      10       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-EBELN

      Texto      1        6       6      10       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-EBELP

      Texto      1        7       4       5       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-NFNUM

      Texto      1        8      18       8       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-SERIE

      Texto      1        9       5       3       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-DTNF

      Texto      1       10       7      10       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-LOTE

      Texto      1       11       4      15       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-MEINS_I

      Texto      1       12       6       6       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-QTD_IORG

      Texto      1       13      23      17       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-SALDO

      Texto      1       14      15      17       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-DISPNF

      Texto      1       15      18      17       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-QTD_MIMP

      Texto      1       16      15      17       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-SALDOR

      Texto      1       17      25      17       1     CHAR

      Título de coluna TC

 - WA_REAL_MERC-NRSEQD

      I/O        1        1      10      10       1     CHAR                   Off

      Dest, Alinh.à dir., Elem.TC, Col.fixa TC

 - WA_REAL_MERC-MATNR

      I/O        1        2      18      18       1     CHAR                   Off

      Alinh.à dir., Elem.TC, Col.fixa TC

 - WA_REAL_MERC-DISP

      I/O        1        3      10      12       1     CHAR                   Off

      Alinh.à dir., Elem.TC, Col.fixa TC

 - WA_REAL_MERC-FORNEC

      I/O        1        4      35      25       1     CHAR                   Off

      PossRol, Elem.TC

 - WA_REAL_MERC-DOCNUM

      I/O        1        5      10      10       1     NUMC                   Off

      Dest, Alinh.à dir., Elem.TC

 - WA_REAL_MERC-EBELN

      I/O        1        6      10      10       1     CHAR                   Off

      Dest, Alinh.à dir., Elem.TC

 - WA_REAL_MERC-EBELP

      I/O        1        7       5       5       1     NUMC                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-NFNUM

      I/O        1        8       6       8       1     NUMC                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-SERIE

      I/O        1        9       3       3       1     CHAR                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-DTNF

      I/O        1       10      10      10       1     DATS                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-LOTE

      I/O        1       11      15      15       1     CHAR                   Off

      LOT

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-MEINS_I

      I/O        1       12       3       6       1     CHAR                   Off

      Elem.TC

 - WA_REAL_MERC-QTD_IORG

      I/O        1       13      33      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-SALDO

      I/O        1       14      33      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-DISPNF

      I/O        1       15      10      17       1     CHAR                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-QTD_MIMP

      I/O        1       16      33      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 - WA_REAL_MERC-SALDOR

      I/O        1       17      33      17       1     QUAN                   Off

      Alinh.à dir., Elem.TC

 

      OK

 

 

*LOGICA DE PROCESSAMENTO:

 

PROCESS BEFORE OUTPUT.

 

  MODULE status_0006.

*

  LOOP AT it_apr

              WITH CONTROL tc_imp_ap2 CURSOR tc_imp_ap2-current_line.

 

    MODULE: fill_screen_0002_imp     ,

            select_text_material2_imp.

  ENDLOOP.

 

 

  LOOP AT it_apr_m

              WITH CONTROL tc_mer_ap CURSOR tc_mer_ap-current_line.

 

    MODULE: fill_screen_0002_mer     .

  ENDLOOP.

 

PROCESS AFTER INPUT.

 

  LOOP AT it_apr.

 

    MODULE fill_table_it_apr.

  ENDLOOP.

 

  LOOP AT it_apr_m.

 

    MODULE fill_table_it_apr.

  ENDLOOP.

 

 

* MODULE USER_COMMAND_0006.

 

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

*Elementos de texto ABAP programa /PWS/ZYCIR254

 

Símbolos de texto

 

ID  Chave      Compr  Texto

 

I   000         19    Critério de Seleção

I   001         48    Não há dados para critério de seleção informado.

I   002         31    Nenhuma exportação foi marcada.

I   003         26    Apropriação não permitida.

I   004         31    Apropriação Exportação/DrawBack

I   005         24    Apropriações Processadas

I   006         11    Confirmação

I   007         36    Aprovar as apropriações realizadas ?

I   008          3    Sim

I   009          3    Não

I   010         29    Apropriação já foi aprovada !

I   011         34    Apropriação aprovada com sucesso !

I   012         39    Não foi processada nenhuma apropriação.

I   013         25    Aprovação não permitida !

I   014         20    Log de Processamento

I   015         52    Lista técnica materiais não processada para material

I   016         47    Não há lista técnica de mat. parametrizada para

I   017          9    Material:

I   018         36    não possui insumos para apropriação.

I   019          4    Ato:

I   020         34    Não há recebim. p/ todos os comps.

I   021         82    Não foram encontrados Atos Concessórios com Saldo disponível p/ o

Material/Centro:

I   022         20    Quantidade inválida!

I   023         34    Desapropriação Exportação/DrawBack

I   024         29    Desapropriação não permitida.

I   025         58    Deseja realmente desapropriar as exportações selecionadas?

I   026         40    Exportações desapropriadas com sucesso !

I   027          6    Pedido

I   028          4    Item

I   029         39    está sendo utilizado por outro usuário.

I   030         55    Problemas de bloqueio. Avisar administrador do sistema.

I   031          3    Ato

I   032          8    Material

I   033         36    É necessário um preenchimento mínimo

I   034         27    dos parâmetros de seleção !

I   035         75    "Função de explosão não é adequada a configuração de "Lista Técnica SAP" ".

I   036         48    Desapropriação não permitida, o Ato Concessório

I   037         43    referente a este Embarque está Encerrado.

I   038         10    Grupo/NCM:

I   039         39    não possui Lista Técnica parametrizada.

I   040         25    Apropriação já executada,

I   041         38    não existem itens a serem apropriados.

I   052         43    Funcionalidade p/ Explosão de Lista Técnica

I   053         50    não parametrizada. Verificar tabela /PWS/ZYCET079.

I   056         44    Este programa esta sendo executado por outro

I   057         41    usuário! Favor aguardar o encerramento da

I   058         32    transação para nova apropriação.

I   059         28    Tipo de documento de venda "

I   060         49    " não esta parametrizado nas tabelas de drawback.

I   061          7    Unidade

I   062         38    não está parametrizado para o material

I   063          3    RE:

I   064         39    está registrada. Não pode ser alterada.

I   065         50    Não foram encontrados itens para a desapropriação!

I   066         15    São necessários

I   067         42    dias para o processo produtivo do material

I   068         47    Tipo de AC diferente do tipo da Desapropriação.

I   072         48    Unidade de medida Siscomex não esta corretamente

I   073         24    parametrizada para o NCM

I   074         44    Código NCM não parametrizado para o material

I   075          8    Embarque

I   076         52    não possui a data de vencimento vingente preenchida.

I   077         40    não possui data de previsão de embarque.

I   100        132

I   289         28    Sem permissão para o Centro:

I   290         31    Sem permissão para a Transação:

I   291         29    Sem permissão para a Empresa:

 

 

 

*Elementos de texto ABAP programa /PWS/ZYCIR254

 

Opções de seleção/parâmetros

 

ID  Chave      Compr  DDIC  Texto

 

S   AUPOS       31          Item Documento de Venda

S   DOCNUM      20          Nº Documento

S   EEBELN      30          Nº Documento de Compra

S   EEBELP      35          Item do Documento de Compra

S   MATNR       16          Material

S   NRSEQEXP    34          Número Sequencial Embarque

S   POSNL       23          Item de Remessa

S   POSNR       34          Item Documento Faturamento

S   VBELN_VA    26          Documento de Venda

S   VBELN_VF    32          Documento de Faturamento

S   VBELN_VL    20          Fornecimento

 

 

* Transações:

 

Criar e incluir no menu as transações (transações de Report):

 

/PWS/ZYCIR254      - Apropriação Drawback Suspensão

 

/PWS/ZYCIR254_D    - Desapropriação Drawback Suspensão