CE PLUS - Nota 001268

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Embarque

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

Data/Hora Última Alteração: 20/06/2011 12:27:45

Descrição da Nota: DESENVOLVIMENTO ENTREPOSTO ADUANEIRO

Sintoma

Desenvolvimento para tratamento de entreposto aduaneiro.

 

 

Solução

Desenvolvimento para tratamento de entreposto aduaneiro.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

ENTREPOSTO ADUANEIRO

Informações Complementares

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

Nota Número 01268 Data: 03/05/2006 Hora: 10:02:06

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

 

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

Nota Número              : 01268

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 6.0

Pacote                   : 00023

Agrupamento              : 00111

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

Referência às notas relacionadas:

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

 

00774  - 00001 - 6.0    - 00022  - ENTREPOSTO ADUANEIRO

00904  - 00002 - 6.0    - 00022  - AJUSTE DE TABELA

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

DESENVOLVIMENTO ENTREPOSTO ADUANEIRO

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

Palavras Chave:

ENTREPOSTO ADUANEIRO - EMBARQUE

 

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

Objetos da nota:

CUAD /PWS/SAPMZYCI001

CUAD /PWS/SAPMZYCI070

DYNP /PWS/SAPMZYCI001                        0003

DYNP /PWS/SAPMZYCI001                        0051

DYNP /PWS/SAPMZYCI001                        0052

DYNP /PWS/SAPMZYCI001                        0053

DYNP /PWS/SAPMZYCI001                        0100

DYNP /PWS/SAPMZYCI001                        0101

DYNP /PWS/SAPMZYCI001                        0102

DYNP /PWS/SAPMZYCI001                        0111

DYNP /PWS/SAPMZYCI001                        0700

DYNP /PWS/SAPMZYCI002                        0051

DYNP /PWS/SAPMZYCI002                        0052

DYNP /PWS/SAPMZYCI002                        0053

DYNP /PWS/SAPMZYCI002                        0101

DYNP /PWS/SAPMZYCI002                        0102

DYNP /PWS/SAPMZYCI002                        0103

DYNP /PWS/SAPMZYCI002                        0104

 

 

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

Modificações efetuadas em CUAD /PWS/SAPMZYCI001

 

*Criado status

 

Status               Tipo Code de objeto       Code de objeto            Descrição

 

0003                 D    000013               000016               0001 CI - Seleção DA

 

*Criado Teclas de função CI - Seleção DA

Código de função     Tecla F Tecla de função                Código de função     Texto

 

000016               05      F5                             CANCEL               Encerrar

000016               08      F8                             ENTER                Selecionar

 

*Criado Botões CI - Seleção DA

 

Code de objeto       Code Item Tecla de função                Código de função     Id   Exibição

Texto de ícones

 

000016               0001 01   F8                             ENTER                ICON_OKAY

000016               0001 02   F5                             CANCEL               ICON_CANCEL

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

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

  MOVE ekpo-idnlf TO itab_zycit003-idnlf.

 

 

  "Atualizando itab conforme table-control

  MODIFY itab_zycit003 INDEX tc_ped-current_line.

 

* Tratamento para novo registro obtido por match-code.

  IF sy-subrc NE 0.               "Checando se é um novo registro

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

    IF  /pws/zycie001-regime NE '14'.

* << Fim da inclusão

      READ TABLE itab_zycit003_aux WITH KEY

                                  ebeln    = itab_zycit003-ebeln

                                  ebelp    = itab_zycit003-ebelp.

      IF sy-subrc NE 0.             "Checando se registro já existia

        "Buscar Saldo para novo registro.

        CLEAR itab_zycit013.

        READ TABLE itab_zycit013 WITH KEY

 

...

        "Buscar dados complementares da EKKN ( Divisão )

        "Selecionando a divisão dos itens de pedidos

        SELECT SINGLE gsber

          INTO itab_zycit003-gsber

          FROM ekkn                     "for all entries in itab_itens

          WHERE ebeln = itab_zycit003-ebeln

            AND ebelp = itab_zycit003-ebelp.

 

        APPEND itab_zycit003.

 

        "Copia registros atualizados

        APPEND itab_zycit003 TO itab_zycit003_aux.

      ELSE.

        MESSAGE w061 WITH text-002 itab_zycit003-ebelp

                          text-003 itab_zycit003-ebeln.

      ENDIF.

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

    ENDIF.

* << Fim da inclusão

ENDFORM.                    " ALTERA_ITAB_ZYCIT003

*&                                                                     *

*&      Form  GRAVA_TABELAS

*&                                                                     *

*       Gravando dados nas tebelas relacionadas a Embarcação

*                                                                      *

FORM grava_tabelas.

 

...

...

       IF /pws/zycit000-flagbl IS INITIAL.

         /pws/zycit093-paemb      = /pws/zycit001-paorigem.

         /pws/zycit093-padest     = /pws/zycit001-padest.

         /pws/zycit093-paispae    = /pws/zycit001-paispao.

       ENDIF.

       MODIFY /pws/zycit093.

     ENDIF.

   ENDIF.

   MODIFY /pws/zycit356 FROM /pws/zycie356.

 

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

   if /pws/zycie001-regime eq '14'.

      perform salva_dados_da.

   endif.

* << Fim da inclusão

 

 

   CLEAR itab_zycit003_del.

   REFRESH itab_zycit003_del.

 

   DELETE FROM /pws/zycit001 WHERE nrseq = space.

 

* Exit Salvar

   PERFORM verifica_exit USING 'D'

                               '/PWS/SAPMZYCI001'

                               'EMB003'.

...

 

 

...

 

   "Andando pelos itens da embarcação e checando diferenças com EKKO/EKPO

     LOOP AT itab_zycit003.

       CLEAR itab_itens_aux.

       READ TABLE itab_itens_aux WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

      IF sy-subrc EQ 0.             "Se existir verif. se houve alteraçao

 *      move: itab_itens_aux-txz01  to itab_zycit003-descr,

 *            itab_itens_aux-meins  to itab_zycit003-meins,

         PERFORM load_pttext USING itab_itens_aux-matnr

                                   itab_itens_aux-spras.

         MOVE: itab_itens_aux-netpr   TO  itab_zycit003-netpr,

               itab_itens_aux-bednr   TO  itab_zycit003-bednr,

               itab_itens_aux-uebto   TO  itab_zycit003-uebto,

               itab_itens_aux-uebtk   TO  itab_zycit003-uebtk,

               itab_itens_aux-lifnr   TO  itab_zycit003-lifnr,

               itab_itens_aux-j_1bnbm TO  itab_zycit003-j_1bnbm,

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

      itab_itens_aux-werks   TO  itab_zycit003-werks,

* << Fim da exclusão

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

      itab_itens_aux-werks   TO  itab_zycit003-werks.

* << Fim da inclusão

 

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

        IF NOT itab_itens_aux-mfrnr IS INITIAL .

          move itab_itens_aux-mfrnr   TO itab_zycit003-lifnrfabr .

        endif.

* << Fim da inclusão

 

...

 FORM selecionar_itens.

   DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,

         itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.

 

   DATA: v_nolin TYPE i VALUE IS INITIAL,

         v_lifnr LIKE /pws/zycie001-lifnr,

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

         v_waers LIKE /pws/zycie001-waers,

* << Fim da exclusão

        v_inco1 LIKE /pws/zycie001-inco1,

        v_cont  TYPE i.

  IF sy-dynnr EQ '0300'.

    "Requisito minimo para selecao de itens

    CLEAR v_cont .

    IF so_lifnr+3(1) EQ ' '.

      v_cont = v_cont + 1 .

    ENDIF.

    IF so_bednr+3(1) EQ ' '.

      v_cont = v_cont + 1.

    ENDIF.

    IF so_ebeln+3(1) EQ ' '.

      v_cont = v_cont + 1.

    ENDIF.

...

 

...

FORM atualiza_variaveis.

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

IF ok_code EQ 'PED'.

* << Fim da inclusão

    pa_bukrs = /pws/zycie001-bukrs.

    so_werks = /pws/zycie001-werks.

    IF NOT /pws/zycie001-lifnr IS INITIAL AND so_lifnr+3(1) EQ ' '.

      FREE so_lifnr.

      so_lifnr-sign   = 'I'.

      so_lifnr-option = 'EQ'.

      so_lifnr-low    = /pws/zycie001-lifnr.

      APPEND so_lifnr.

    ENDIF.

    IF NOT /pws/zycie001-waers IS INITIAL AND so_waers+3(1) EQ ' '.

      FREE so_waers.

      so_waers-sign   = 'I'.

      so_waers-option = 'EQ'.

      so_waers-low    = /pws/zycie001-waers.

      APPEND so_waers.

    ENDIF.

    IF NOT /pws/zycie001-inco1 IS INITIAL AND so_inco1+3(1) EQ ' '.

      FREE so_inco1.

      so_inco1-sign   = 'I'.

      so_inco1-option = 'EQ'.

      so_inco1-low    = /pws/zycie001-inco1.

      APPEND so_inco1.

    ENDIF.

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

ENDIF.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F02

 

...

        IF sy-subrc EQ 0.

          PERFORM find_nrseq_emp USING itab_zyglt006-range

                                 CHANGING /pws/zycie001-nrseq.

        ELSE.

          MESSAGE i061 WITH text-136.

        ENDIF.

      ENDIF.

    ELSE.

      PERFORM find_nrseqc.

      PERFORM find_embarca.

    ENDIF.

  ENDIF.

  "Verifica alterações nos itens do pedido e atualiza.

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

  if /pws/zycie001-regime ne '14'.

* << Fim da inclusão

     PERFORM verifica_itens.

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

  else.

     PERFORM verifica_itens_da.

  endif.

* << Fim da inclusão

...

 

...

  v_contador = 0.

  IF v_status_s NE '0'.

    LOOP AT itab_zycit003 WHERE mark EQ 'X'.

      v_ip = sy-tabix.

      v_contador = v_contador + 1.

    ENDLOOP.

  ELSE.

    LOOP AT itab_zycit003 WHERE mark EQ 'X'.

      v_contador = v_contador + 1.

    ENDLOOP.

  ENDIF.

  IF v_contador NE 1.

    MESSAGE s015 WITH text-062.

  ELSE.

    READ TABLE itab_zycit003 WITH KEY mark = 'X'.

    MOVE-CORRESPONDING itab_zycit003 TO /pws/zycie003.

    v_centro = ' '.

    v_saldo = itab_zycit003-slqtde.

* >> Início da inclusão: FORM_TRATA_DETITEM

    if /pws/zycie001-regime eq '14'.

       v_totemb = /pws/zycie003-menge.

    else.

* << Fim da inclusão

 

        READ TABLE itab_komv WITH KEY ebeln = /pws/zycie003-ebeln

                                      kposn = /pws/zycie003-ebelp

                                      kschl = 'Z0X1'.

        IF sy-subrc EQ 0.

          IF itab_komv-kpein NE 0.

            v_totemb = itab_komv-kbetr / itab_komv-kpein

                       * /pws/zycie003-qtd_iten.

          ENDIF.

        ENDIF.

* >> Início da inclusão: FORM_TRATA_DETITEM

    endif.

* << Fim da inclusão

...

 

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

Modificações efetuadas em REPS /PWS/MZYCI001F03

 

FORM atualiza_encer.

 

...

  SELECT SINGLE dtencer status status_e FROM /pws/zycit001

     INTO (/pws/zycie001-dtencer,

     /pws/zycie001-status, /pws/zycie001-status_e )

     WHERE nrseq EQ /pws/zycie001-nrseq.

 

ENDFORM.                   " atualiza_encer

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

*&                                                                     *

*&      Form  trata_screen_0102

*&                                                                     *

*       Tela 0102

*                                                                      *

FORM trata_screen_0102.

  "Tratando campos da table control

  IF v_status_s = 0.

    LOOP AT tc_ped-cols INTO wa_cols.

      wa_cols-screen-input = '0'.

      MODIFY tc_ped-cols FROM wa_cols.

    ENDLOOP.

  ELSEIF v_status_s = 1.

    LOOP AT tc_ped-cols INTO wa_cols.

      IF wa_cols-screen-group1 NE 'OUT'.

        wa_cols-screen-input = '1'.

      ENDIF.

      IF v_di EQ 'S'.

        IF wa_cols-screen-name EQ '/PWS/ZYCIE003-QTD_ITEND' .

          wa_cols-screen-input = '0'.

        ENDIF.

        IF wa_cols-screen-name EQ '/PWS/ZYCIE003-NTGEWD' .

          wa_cols-screen-input = '0'.

        ENDIF.

      ENDIF.

      IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .

        IF v_nf EQ 'X'.

          wa_cols-screen-input = '0'.

        ELSE.

          wa_cols-screen-input = '1'.

        ENDIF.

      ENDIF.

      MODIFY tc_ped-cols FROM wa_cols.

    ENDLOOP.

  ENDIF.

 

ENDFORM.                    " trata_screen_0102

*&                                                                     *

*&      Form  selecionar_da

*&                                                                     *

*  Chamado     Data         Descrição

*  290246      18/04/06     Seleção de dados da DA

*&                                                                     *

 

 

FORM selecionar_da.

 

 

*Fazer as selecoes dos itens com a itabs da selection options.

  "Selecionando itens da DA

 

  SELECT /pws/zycit442~nrseqda /pws/zycit442~nrdi /pws/zycit442~bukrs

         /pws/zycit442~dtdesemb /pws/zycit460~lifnr /pws/zycit443~ebeln

         /pws/zycit443~ebelp /pws/zycit443~matnr /pws/zycit463~lote_forn

         /pws/zycit463~numfatura /pws/zycit463~qtd_lote

         /pws/zycit463~qtd_nac

     FROM ( /pws/zycit442 INNER JOIN /pws/zycit460 ON

            /pws/zycit442~nrseqda = /pws/zycit460~nrseqda

           INNER JOIN /pws/zycit443 ON

           /pws/zycit442~nrseqda = /pws/zycit443~nrseqda

           INNER JOIN /pws/zycit463 ON

           /pws/zycit463~nrseqda = /pws/zycit443~nrseqda  )

    INTO TABLE itab_da

    WHERE /pws/zycit442~bukrs   EQ pa_buk

      AND /pws/zycit460~lifnr   IN so_lifn

      AND /pws/zycit442~nrseqda IN so_nrseq

      AND /pws/zycit442~nrdi    IN so_nrda

      AND /pws/zycit443~ebeln   IN so_beln

      AND /pws/zycit443~ebelp   IN so_belp

      AND /pws/zycit443~matnr   IN so_matn.

 

 

  IF NOT itab_da[] IS INITIAL.

    MOVE ITAB_DA[] TO ITAB_DA_AUX[].

 

    loop at itab_da.

       if itab_da-qtd_lote is initial.

          delete itab_da.

       elseif itab_da-qtd_nac eq itab_da-qtd_lote and

          not itab_da-qtd_nac is initial .

          delete itab_da .

       else.

          if not itab_da-qtd_nac is initial.

              itab_da-qtd_lote = itab_da-qtd_lote - itab_da-qtd_nac.

              clear itab_da-qtd_nac.

              modify itab_da.

          endif.

       endif.

    endloop.

 

 

    DESCRIBE TABLE itab_da LINES v_line.

 

    IF v_line GT '1'.

      CALL SCREEN '0003'.

    ELSE.

      PERFORM selecionar_itens_da.

    ENDIF.

  ELSE.

    MESSAGE s015 WITH text-259.

  ENDIF.

ENDFORM.                    " selecionar_da

*&                                                                     *

*&      Form  trata_delp

*&                                                                     *

FORM trata_delp.

  CASE ts_embar-activetab.

    WHEN 'FC_PED' .

      LOOP AT itab_zycit003 WHERE mark = 'X'.

        IF itab_zycit003-nrseqli IS INITIAL AND

           itab_zycit003-nrseqlsi IS INITIAL.

          CLEAR v_tabix.

          v_tabix = sy-tabix.

 

*              IF itab_zycit003-nrseq_pgfat IS INITIAL.

*PWS238018  inicio

          READ TABLE itab_zycit094 WITH KEY

                         nrseq = itab_zycit003-nrseq.

          IF sy-subrc EQ 0.

            MESSAGE w015 WITH text-246.

            EXIT.

          ENDIF.

*PWS238018  fim

          READ TABLE itab_zycit263 WITH KEY

               ebeln     = itab_zycit003-ebeln

               ebelp     = itab_zycit003-ebelp

               eliminado = space.

          IF sy-subrc NE 0.

            CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT013'

                 EXPORTING

                      ebeln = itab_zycit003-ebeln

                      ebelp = itab_zycit003-ebelp.

            DELETE itab_zycit003 INDEX v_tabix.

            CLEAR itab_zycit003.

          ELSE.

            MESSAGE w015 WITH text-043.

            EXIT.

          ENDIF.

 

          MOVE:itab_zycit003-ebeln    TO itab_zycit003_del-ebeln,

               itab_zycit003-ebelp    TO itab_zycit003_del-ebelp,

            itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.

          APPEND itab_zycit003_del.

 

        ELSE.

          MESSAGE w015 WITH text-190.

          EXIT.

        ENDIF.

      ENDLOOP.

 

    WHEN 'FC_FORNEC'.

      LOOP AT itab_zycit125 WHERE mark = 'X'.

        DELETE itab_zycit125 INDEX sy-tabix.

        CLEAR itab_zycit125.

      ENDLOOP.

    when 'FC_DA'.

       LOOP AT itab_zycit003 WHERE mark = 'X'.

        IF itab_zycit003-nrseqli IS INITIAL AND

           itab_zycit003-nrseqlsi IS INITIAL.

          CLEAR v_tabix.

          v_tabix = sy-tabix.

 

          READ TABLE itab_zycit094 WITH KEY

                         nrseq = itab_zycit003-nrseq.

          IF sy-subrc EQ 0.

            MESSAGE w015 WITH text-246.

            EXIT.

          ENDIF.

 

          MOVE:itab_zycit003-ebeln    TO itab_zycit003_del-ebeln,

               itab_zycit003-ebelp    TO itab_zycit003_del-ebelp,

               itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.

          APPEND itab_zycit003_del.

        ELSE.

          MESSAGE w015 WITH text-190.

          EXIT.

        ENDIF.

      ENDLOOP.

 

  ENDCASE.

ENDFORM.                    " trata_delp

*&                                                                     *

*&      Form  trata_screen_0101

*&                                                                     *

FORM trata_screen_0101.

  CLEAR v_linha.

  DESCRIBE TABLE itab_zycit003 LINES v_linha.

  "Tratando campos de tela

  LOOP AT SCREEN.

    IF v_status_s = 0.

      "Passa campos de entrada para apenas saída

      IF screen-group1 NE 'TAB'.

        screen-input = '0'.

        MODIFY SCREEN.

      ENDIF.

      IF screen-group2 EQ 'ADM'.

        IF /pws/zycie001-tpdecl EQ 'DSI'.

          IF /pws/zycie001-regime EQ '09'.

            screen-invisible = '0'.

          ELSE.

            screen-invisible = '1'.

          ENDIF.

        ELSEIF /pws/zycie001-tpdecl EQ 'DI'.

          IF /pws/zycie001-regime EQ '05'.

            screen-invisible = '0'.

          ELSE.

            screen-invisible = '1'.

          ENDIF.

        ELSE.

          screen-invisible = '1'.

        ENDIF.

      ENDIF.

      IF /pws/zycie001-regime EQ '14'.

        IF screen-group2 EQ 'DA'.

          screen-invisible = '0'.

        ENDIF.

        IF screen-group2 EQ 'PED'.

          screen-invisible = '1'.

        ENDIF.

      ELSE.

        IF screen-group2 EQ 'DA'.

          screen-invisible = '1'.

        ENDIF.

        IF screen-group2 EQ 'PED'.

          screen-invisible = '0'.

        ENDIF.

      ENDIF.

      MODIFY SCREEN.

      MODIFY SCREEN.

    ELSEIF v_status_s = 1.

      "Retorna campos para entrada

      IF screen-group1 NE 'OUT'.

        screen-input = '1'.

      ELSEIF screen-group1 EQ 'OUT'

      "and sy-tcode eq '/PWS/ZYCI001_C'

         AND screen-group2 NE 'OUT'

         AND v_linha EQ 0.

        screen-input = '1'.

      ELSE.

        screen-input = '0'.

      ENDIF.

      MODIFY SCREEN.

      IF screen-name EQ '/PWS/ZYCIE001-MODALIDADE'.

        IF v_modemb = 'X'.

          screen-input = 0.

          MODIFY SCREEN.

        ENDIF.

      ENDIF.

 

      IF v_status_s EQ '1'.

        IF screen-name EQ '/PWS/ZYCIE001-NAPOLICE'

        OR screen-name EQ '/PWS/ZYCIE001-DTAPOLICE'

        OR  screen-name EQ '/PWS/ZYCIE001-VLAPOLICE'.

 

          IF /pws/zycie001-apocalcao IS INITIAL.

            screen-input = 0.

            CLEAR: /pws/zycie001-napolice,

                   /pws/zycie001-dtapolice,

                   /pws/zycie001-vlapolice.

 

          ELSE.

            screen-input = 1.

          ENDIF.

          MODIFY SCREEN.

 

        ENDIF.

      ENDIF.

      IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.

        IF /pws/zycie001-meioemba EQ 'MA' OR

           /pws/zycie001-meioemba EQ 'FL'.

          screen-input = 1.

          MODIFY SCREEN.

          IF screen-group3 EQ 'VER'.

            screen-input = 1.

            MODIFY SCREEN.

 

        ENDIF.

      ENDIF.

      IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.

        IF /pws/zycie001-meioemba EQ 'MA' OR

           /pws/zycie001-meioemba EQ 'FL'.

          screen-input = 1.

          MODIFY SCREEN.

          IF screen-group3 EQ 'VER'.

            screen-input = 1.

            MODIFY SCREEN.

          ENDIF.

        ELSE.

          IF screen-group3 EQ 'VER'.

            screen-input = 0.

            MODIFY SCREEN.

            CLEAR: /pws/zycie001-navio,

                   v_bande.

          ENDIF.

        ENDIF.

      ENDIF.

      IF screen-group2 EQ 'ADM'.

        IF /pws/zycie001-tpdecl EQ 'DSI'.

          IF /pws/zycie001-regime EQ '09'.

            screen-invisible = '0'.

            MOVE 'X' TO v_flagadm.

          ELSE.

            screen-invisible = '1'.

            MOVE space TO v_flagadm.

          ENDIF.

        ELSEIF /pws/zycie001-tpdecl EQ 'DI'.

          IF /pws/zycie001-regime EQ '05'.

            screen-invisible = '0'.

            MOVE 'X' TO v_flagadm.

          ELSE.

            screen-invisible = '1'.

            MOVE space TO v_flagadm.

          ENDIF.

        ELSE.

          screen-invisible = '1'.

          MOVE space TO v_flagadm.

        ENDIF.

      ENDIF.

      MODIFY SCREEN.

      IF screen-group1 EQ 'VIN'.

        IF NOT /pws/zycie001-nacional IS INITIAL.

          screen-input = '1'.

        ELSE.

          CLEAR: /pws/zycie001-tpvinculo,

                 /pws/zycie001-nrseqref.

          screen-input = '0'.

        ENDIF.

        MODIFY SCREEN.

      ENDIF.

      IF screen-name = '/PWS/ZYCIE001-MEIOEMBA'.

        SELECT SINGLE * FROM /pws/zycit094

          WHERE nrseq = /pws/zycie001-nrseq.

        IF sy-subrc = 0 AND NOT /pws/zycie001-nrseq IS INITIAL.

          screen-input = 0.

          MODIFY SCREEN.

        ELSE.

          screen-input = 1.

          MODIFY SCREEN.

        ENDIF.

      ENDIF.

      IF /pws/zycie001-regime EQ '14'.

        IF screen-group2 EQ 'DA'.

          screen-invisible = '0'.

        ENDIF.

        IF screen-group2 EQ 'PED'.

          screen-invisible = '1'.

        ENDIF.

      ELSE.

        IF screen-group2 EQ 'DA'.

          screen-invisible = '1'.

        ENDIF.

        IF screen-group2 EQ 'PED'.

          screen-invisible = '0'.

        ENDIF.

      ENDIF.

      MODIFY SCREEN.

 

    ENDIF.

    IF NOT /pws/zycit000-flagbl IS INITIAL.

      IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR

         screen-name EQ '/PWS/ZYCIE001-PAISPAO'  OR

         screen-name EQ '/PWS/ZYCIE001-PADEST'   OR

         screen-name EQ '/PWS/ZYCIE001-PAISPA'   OR

         screen-name EQ '/PWS/ZYCIE001-NAVIO'    OR

         screen-name EQ 'V_CIDORIG'         OR

         screen-name EQ 'V_CIDEST'.

        screen-required = 0.

        screen-input = 0.

        screen-invisible = 1.

        MODIFY SCREEN.

      ENDIF.

    ELSE.

      IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR

         screen-name EQ '/PWS/ZYCIE001-PAISPAO'  OR

         screen-name EQ '/PWS/ZYCIE001-PADEST'.

        SELECT SINGLE * FROM /pws/zycit094

          WHERE nrseq = /pws/zycie001-nrseq.

        IF sy-subrc NE 0.

          IF v_status_s = 1.

            screen-input = 1.

          ELSE.

            screen-input = 0.

          ENDIF.

          MODIFY SCREEN.

        ENDIF.

      ENDIF.

    ENDIF.

    IF screen-name = '/PWS/ZYCIE001-EMBARCA'.

      IF v_status_s = '1'.

        SELECT SINGLE * FROM /pws/zycit094

          WHERE nrseq = /pws/zycie001-nrseq.

        IF sy-subrc NE 0 OR /pws/zycie001-nrseq IS INITIAL.

          screen-input = 1.

          MODIFY SCREEN.

        ENDIF.

      ENDIF.

    ENDIF.

    IF screen-name = '/PWS/ZYCIE001-DT_ENT_DE' OR

       screen-name = '/PWS/ZYCIE001-DT_ENT_ATE'.

      IF /pws/zycie001-regime = '02' AND v_status_s = 0.

        screen-input = 0.

        screen-invisible = 0.

      ELSEIF /pws/zycie001-regime = '02'.

        screen-input = 1.

        screen-invisible = 0.

      ELSE.

        screen-input = 0.

        screen-invisible = 1.

      ENDIF.

      MODIFY SCREEN.

    ENDIF.

    IF screen-name EQ '/PWS/ZYCIE001-NRDESPADU'.

      IF NOT /pws/zycit000-oil IS INITIAL.

        screen-required = '1'.

      ELSE.

        screen-required = 0  .

      ENDIF.

      MODIFY SCREEN.

    ENDIF.

    IF screen-name EQ '/PWS/ZYCIE001-REGIME'.

      LOOP AT itab_zycit003 WHERE NOT nrseqlsi IS initial.

        screen-input = 0.

      ENDLOOP.

      IF /pws/zycie001-meioemba = 'PS'.     "Beth 18/07/03

        screen-input = 1.

        MODIFY SCREEN.

      ENDIF.

      MODIFY SCREEN.

    ENDIF.

    IF /pws/zycie001-modalidade EQ '02'.

      IF screen-group1 EQ 'SER'.

        screen-input = '0'.

        MODIFY SCREEN.

      ENDIF.

    ENDIF.

 

    IF /pws/zycie001-modalidade NE '02'

       AND /pws/zycie001-modalidade NE '03'.

      IF screen-name EQ '/PWS/ZYCIE001-TPSERV'.

        screen-input = 0.

        screen-invisible = 1.

        MODIFY SCREEN.

      ENDIF.

    ENDIF.

    PERFORM trata_obrig4.

  ENDLOOP.

ENDFORM.                    " trata_screen_0101

*&                                                                     *

*&      Form  trata_obrig4

*&                                                                     *

FORM trata_obrig4.

*chamado 290246 inicio

  IF screen-name EQ '/PWS/ZYCIE001-BUKRS' OR

     screen-name EQ '/PWS/ZYCIE001-J_1BBRANCH' OR

     screen-name EQ '/PWS/ZYCIE001-MODALIDADE' OR

     screen-name EQ '/PWS/ZYCIE001-TPDECL' OR

     screen-name EQ '/PWS/ZYCIE001-REGIME' OR

     screen-name EQ '/PWS/ZYCIE001-MEIOEMBA'.

    IF /pws/zycie001-regime EQ '14'.

      screen-required = '0'.

      MODIFY SCREEN.

    ELSE.

      screen-required = '1'.

      MODIFY SCREEN.

    ENDIF.

  ENDIF.

*chamado 290246 fim

 

ENDFORM.                    " trata_obrig4

*&                                                                     *

*&      Form  verifica_itens_da

*&                                                                     *

*       text

*                                                                      *

*    >  p1        text

*  <    p2        text

*                                                                      *

FORM verifica_itens_da.

  DATA:   v_ebelp      LIKE konv-kposn,      "Iten do tamanho do da konv

* Tabela criada para melhorar a performance do programa

    itab_zycit100_per LIKE /pws/zycit100 OCCURS 0 WITH HEADER LINE.

 

  clear /pws/zycie001-netpr.

 

  IF ( sy-tcode = '/PWS/ZYCI001_E' OR

       sy-tcode = '/PWS/ZYCI001_A' ) AND

     ( okcode = 'P-' OR okcode = 'P  ' OR

       okcode = 'P+' OR okcode = 'P++' ). " or okcode is initial ).

  ELSEIF okcode EQ 'SELE_DA' OR okcode EQ 'ENTE' OR okcode EQ 'SAVE' OR

                                                okcode EQ 'FAT'.

 

    IF sy-tcode EQ '/PWS/ZYCI001_C' AND okcode EQ 'SAVE'.

 

      CALL FUNCTION '/PWS/ZYCI_ENQUEUE_ZYCIT001'

           EXPORTING

                nrseq = /pws/zycie001-nrseq.

 

    ENDIF.

 

 

    CHECK NOT itab_zycit003[] IS INITIAL.

 

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

           FOR ALL ENTRIES IN itab_zycit003 WHERE

           nrseq = itab_zycit003-nrseq AND

           ebeln = itab_zycit003-ebeln AND

           ebelp = itab_zycit003-ebelp AND

           eliminado = space.

    FREE itab_itens_aux.

    CLEAR itab_itens_aux.

 

 

*Selecionar DA atualizada

    SELECT SINGLE * FROM /pws/zycit455

       WHERE nrseq EQ /pws/zycie001-nrseq.

 

    SELECT * FROM /pws/zycit443

      INTO TABLE itab_zycit443_aux

      FOR ALL ENTRIES IN itab_zycit003

      WHERE ebeln EQ itab_zycit003-ebeln

      AND   ebelp EQ itab_zycit003-ebelp.

 

    DELETE itab_zycit443_aux WHERE nrseqda NE /pws/zycit455-nrseqda.

 

 

  "Andando pelos itens da embarcação e checando diferenças com EKKO/EKPO

    LOOP AT itab_zycit003.

      PERFORM load_pttext USING itab_zycit003-matnr

                           sy-langu.

      PERFORM: aplicacao.

      MODIFY itab_zycit003.

    ENDLOOP.

 

 

    PERFORM calcula_saldo_da.

 

    SELECT SINGLE * FROM /pws/zycit094

      WHERE nrseq = /pws/zycie001-nrseq.

    IF sy-subrc = 0.

      SELECT SINGLE * FROM /pws/zycit093

        WHERE nrseqce = /pws/zycit094-nrseqce.

      IF sy-subrc = 0.

        CLEAR v_tot_ntgew.

        LOOP AT itab_zycit003.

          v_tot_ntgew = v_tot_ntgew + itab_zycit003-ntgew.

        ENDLOOP.

        IF v_tot_ntgew > /pws/zycit093-brgew.

          MESSAGE w015 WITH text-045.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

 

  SELECT SINGLE * FROM /pws/zycbt007.

 

  CLEAR /pws/zycie001-netpr.

 

  READ TABLE itab_zycit003 INDEX 1.

  MOVE itab_zycit003-waers TO v_moeda.

  LOOP AT itab_zycit003 WHERE waers NE v_moeda.

    v_waers_diferente = 'X'.

  ENDLOOP.

  IF sy-subrc NE 0.

    /pws/zycie001-waers = v_moeda.

  ELSE.

    /pws/zycie001-waers = /pws/zycbt007-waersa.

    IF /pws/zycbt007-waersa IS INITIAL.

      MESSAGE e015 WITH text-213.

    ENDIF.

*    /pws/zycie001-waers = v_moeda.

  ENDIF.

 

 

  LOOP AT itab_zycit003.

    v_tabix = sy-tabix.

    /pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.

 

    IF /pws/zycie001-netpr < 0.

      CLEAR /pws/zycie001-netpr.

      MESSAGE e061 WITH text-235 text-236.

    ENDIF.

 

 

*   Atualiza Tipo de NF

    SELECT SINGLE j_1bmatuse INTO ekpo-j_1bmatuse

             FROM ekpo

            WHERE ebeln EQ itab_zycit003-ebeln

              AND ebelp EQ itab_zycit003-ebelp.

 

    SELECT SINGLE tpnf tpnf_ld tpnf_db tpnf_icms INTO

    CORRESPONDING FIELDS OF /pws/zycit012

             FROM /pws/zycit012

             WHERE j_1bmatuse EQ ekpo-j_1bmatuse.

    READ TABLE itab_zycit100_per WITH KEY nrseq = itab_zycit003-nrseq

                                          ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

* Verificando se é drawback.

    IF itab_zycit003-tpnf IS INITIAL.

      READ TABLE itab_zycit100 WITH KEY nrseq = itab_zycit003-nrseq

                                        ebeln = itab_zycit003-ebeln

                                        ebelp = itab_zycit003-ebelp.

      IF sy-subrc EQ 0.

        IF NOT itab_zycit003-nrseqd IS INITIAL

        AND NOT /pws/zycit012-tpnf_db IS INITIAL.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf_db.

*     Verificando se é ICMS deferido

        ELSEIF /pws/zycit100-icms_dif EQ 'X'

        AND NOT /pws/zycit012-tpnf_icms IS INITIAL.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf_icms.

        ELSE.

          itab_zycit003-tpnf   = /pws/zycit012-tpnf.

 

          REFRESH itab_zycit263.

 

          IF NOT itab_zycit003[] IS INITIAL.

            SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

                   FOR ALL ENTRIES IN itab_zycit003 WHERE

                   nrseq = itab_zycit003-nrseq AND

                   ebeln = itab_zycit003-ebeln AND

                   ebelp = itab_zycit003-ebelp AND

                    eliminado = space.

           ENDIF.

           READ TABLE itab_zycit263 WITH KEY ebeln = itab_zycit263-ebeln

                                             ebelp = itab_zycit263-ebelp.

 

           IF sy-subrc EQ 0.

             SELECT SINGLE frpagto INTO /pws/zycit006-frpagto

              FROM /pws/zycit006

              WHERE nrseq_pgfat EQ itab_zycit263-nrseq_pgfat.

             IF sy-subrc EQ 0.

               IF /pws/zycit006-frpagto EQ 'A'.

                 itab_zycit003-tpnf = /pws/zycit012-tpnf_ld.

               ENDIF.

             ENDIF.

           ENDIF.

         ENDIF.

       ENDIF.

     ENDIF.

     READ TABLE itab_zycit443_aux WITH KEY

                  ebeln = itab_zycit003-ebeln

                  ebelp = itab_zycit003-ebelp.

     IF sy-subrc EQ  0.

       IF itab_zycit003-ntgew IS INITIAL AND

          itab_zycit443_aux-gewei = 'G' AND NOT

          itab_zycit003-qtd_iten IS INITIAL.

         itab_zycit003-ntgew = 1 / 1000.

       ENDIF.

     ENDIF.

 

     MODIFY itab_zycit003 INDEX v_tabix.

   ENDLOOP.

 

 ENDFORM.                    " verifica_itens_da

*&                                                                     *

*&      Form  atualiza_itens_da

*&                                                                     *

 FORM atualiza_itens_da.

 

 ENDFORM.                    " atualiza_itens_da

*&                                                                     *

*&      Form  trata_screen_0111

*&                                                                     *

 FORM trata_screen_0111.

   "Tratando campos da table control

  IF v_status_s = 0.

    LOOP AT tc_da-cols INTO wa_cols.

      wa_cols-screen-input = '0'.

      MODIFY tc_da-cols FROM wa_cols.

    ENDLOOP.

  ELSEIF v_status_s = 1.

    LOOP AT tc_da-cols INTO wa_cols.

      IF wa_cols-screen-group1 NE 'OUT'.

        wa_cols-screen-input = '1'.

      ENDIF.

      IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .

        IF v_nf EQ 'X'.

          wa_cols-screen-input = '0'.

        ELSE.

          wa_cols-screen-input = '1'.

        ENDIF.

      ENDIF.

      MODIFY tc_da-cols FROM wa_cols.

    ENDLOOP.

  ENDIF.

 

ENDFORM.                    " trata_screen_0111

*&                                                                     *

*&      Form  carrega_estrutura

*&                                                                     *

FORM carrega_estrutura.

 

  MOVE-CORRESPONDING itab_zycit003 TO /pws/zycie003.

 

* Copia registros atualizados

  REFRESH itab_zycit003_aux.

  MOVE itab_zycit003[] TO itab_zycit003_aux[].

 

ENDFORM.                    " carrega_estrutura

 

*&                                                                     *

*&      Form  selecionar_itens_da

*&                                                                     *

FORM selecionar_itens_da.

 

  DATA: itab_werks LIKE itab_zycit003 OCCURS 0 WITH HEADER LINE,

         itab_t001w LIKE t001w OCCURS 0 WITH HEADER LINE.

 

 

  clear  : /pws/zycie001-netpr.

 

 

  if v_line gt '1'.

     delete itab_da where qtd_nac is initial.

  endif.

 

  read table itab_da index 1.

 

 

  IF NOT itab_da[] IS INITIAL and /pws/zycie001-regime eq '14'.

    SELECT SINGLE * FROM /pws/zycit442

    WHERE nrseqda EQ itab_da-nrseqda

    and   codreg  eq '02'.

 

    "Se a DA estiver finalizada.

    IF /pws/zycit442-statusfin NE space.

      MESSAGE i015 WITH text-255.

      EXIT.

    ENDIF.

 

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443

    FOR ALL ENTRIES IN itab_da

    WHERE nrseqda EQ itab_da-nrseqda.

  ENDIF.

 

  IF NOT /pws/zycit442 IS INITIAL.

    MOVE :

       /pws/zycit442-agente     TO /pws/zycie001-agente      ,

       /pws/zycit442-bukrs      TO /pws/zycie001-bukrs       ,

       /pws/zycit442-dtsaida    TO /pws/zycie001-dtsaida     ,

       /pws/zycit442-inco1      TO /pws/zycie001-inco1       ,

       /pws/zycit442-meiotransp TO /pws/zycie001-meioemba    ,

       /pws/zycit442-moddesps   TO /pws/zycie001-modalidade  ,

       /pws/zycit442-embarca    TO /pws/zycie001-navio      .

 

  ENDIF.

 

  loop at itab_da.

    MOVE : itab_da-ebeln   TO itab_nac-ebeln,

           itab_da-ebelp   TO itab_nac-ebelp,

           itab_da-qtd_nac TO itab_nac-qtd_nac.

    COLLECT itab_nac.

  endloop.

 

 

 

  LOOP AT itab_zycit443 .

    v_tabix = sy-tabix.

    READ TABLE itab_nac WITH KEY ebeln = itab_zycit443-ebeln

                                 ebelp = itab_zycit443-ebelp.

    IF sy-subrc EQ 0.

      itab_zycit443-qtd_iten = itab_nac-qtd_nac.

      MODIFY itab_zycit443 INDEX v_tabix.

    ENDIF.

  ENDLOOP.

  clear   itab_nac.

  refresh itab_nac.

 

  PERFORM calcula_saldo_da.

 

  "Movendo itens da DA para os itens do Embarque

  LOOP AT itab_zycit443.

    MOVE:

     itab_zycit443-advalicms      TO    itab_zycit003-advalicms ,

     itab_zycit443-advalii        TO    itab_zycit003-advalii   ,

     itab_zycit443-advalipi     TO    itab_zycit003-advalipi,

     itab_zycit443-aliqicms       TO    itab_zycit003-aliqicms  ,

     itab_zycit443-aliqii         TO    itab_zycit003-aliqii    ,

     itab_zycit443-aliqipi        TO    itab_zycit003-aliqipi   ,

     itab_zycit443-basred         TO    itab_zycit003-basred    ,

     itab_zycit443-ebeln          TO    itab_zycit003-ebeln     ,

     itab_zycit443-ebelp          TO    itab_zycit003-ebelp    ,

     itab_zycit443-extarif_al     TO    itab_zycit003-extarif_al ,

     itab_zycit443-ii_anoemiss    TO    itab_zycit003-ii_anoemiss,

     itab_zycit443-ii_extarif     TO    itab_zycit003-ii_extarif ,

     itab_zycit443-ii_numero      TO    itab_zycit003-ii_numero ,

     itab_zycit443-ii_orgemiss    TO    itab_zycit003-ii_orgemiss ,

     itab_zycit443-ii_tipo        TO    itab_zycit003-ii_tipo ,

     itab_zycit443-impmerco       TO    itab_zycit003-indic_obrig ,

     itab_zycit443-ipi_anoemiss   TO    itab_zycit003-ipi_anoemiss,

     itab_zycit443-ipi_extarif    TO    itab_zycit003-ipi_extarif,

     itab_zycit443-ipi_numero     TO    itab_zycit003-ipi_numero,

     itab_zycit443-ipi_orgemiss   TO    itab_zycit003-ipi_orgemiss,

     itab_zycit443-ipi_tipo       TO    itab_zycit003-ipi_tipo,

     itab_zycit443-j_1bnbm        TO    itab_zycit003-j_1bnbm,

     itab_zycit443-lifnr          TO    itab_zycit003-lifnr,

     itab_zycit443-matnr          TO    itab_zycit003-matnr,

     itab_zycit443-meins          TO    itab_zycit003-meins,

     itab_zycit443-meinsest       TO    itab_zycit003-meinsest,

     itab_zycit443-QTD_ITEN       to    itab_zycit003-menge,

     itab_zycit443-modalidade     TO    itab_zycit003-modalidade,

     itab_zycit443-naladi         TO    itab_zycit003-naladi,

     itab_zycit443-naladincca     TO    itab_zycit003-naladincca,

     itab_zycit443-netpr          TO    itab_zycit003-netpr,

     itab_zycit443-nrdrawback     TO    itab_zycit003-nrdrawback,

     itab_zycit443-nrli           TO    itab_zycit003-nrli,

     itab_zycit443-nrseq          TO    itab_zycit003-nrseq,

     itab_zycit443-nrseqli        TO    itab_zycit003-nrseqli,

     itab_zycit443-orgemiss_al    TO    itab_zycit003-orgemiss_al,

     itab_zycit443-QTD_ITEN       to    itab_zycit003-QTD_ITEN  ,

     itab_zycit443-qtd_itend      TO    itab_zycit003-qtd_itend,

     itab_zycit443-qtdeumest      TO    itab_zycit003-qtdeumest,

     itab_zycit443-tipo_al        TO    itab_zycit003-tipo_al,

     itab_zycit443-vlfre_fat      TO    itab_zycit003-vlfre_fat,

     itab_zycit443-werks          TO    itab_zycit003-werks,

     itab_zycit443-ad_anoemiss    TO    itab_zycit003-ad_anoemiss,

     itab_zycit443-ad_extarif     TO    itab_zycit003-ad_extarif,

     itab_zycit443-ad_numero      TO    itab_zycit003-ad_numero,

     itab_zycit443-ad_orgemiss    TO    itab_zycit003-ad_orgemiss,

     itab_zycit443-ad_tipo        TO    itab_zycit003-ad_tipo,

     itab_zycit443-anoemiss_al    TO    itab_zycit003-anoemiss_al,

     itab_zycit443-aplicacao      TO    itab_zycit003-aplicacao,

     itab_zycit443-bednr          TO    itab_zycit003-bednr,

     itab_zycit443-condmerc       TO    itab_zycit003-condmerc,

     itab_zycit443-descr          TO    itab_zycit003-descr,

     itab_zycit443-gewei          TO    itab_zycit003-gewei,

     itab_zycit443-gsber          TO    itab_zycit003-gsber,

     itab_zycit443-numero_al      TO    itab_zycit003-numero_al,

     itab_zycit443-vlreal         TO    itab_zycit003-vlreal,

     itab_zycit443-waersbem       TO    itab_zycit003-waers,

     itab_zycit443-qtd_da         to    itab_zycit003-menge ,

     itab_zycit443-netpr          to    itab_zycit003-V_FOB ,

     /pws/zycie001-nrseq          TO    itab_zycit003-nrseq .

 

     " Peso proporcional Qtde. Nacionalizada.

     IF NOT ITAB_ZYCIT443-QTD_DA IS INITIAL.

         itab_zycit003-ntgew = (  itab_zycit443-ntgew /

                  itab_zycit443-qtd_da ) * itab_zycit003-qtd_iten.

          itab_zycit003-v_fob = ( itab_zycit443-netpr /

                  itab_zycit443-qtd_da ) * itab_zycit003-qtd_iten.

     ENDIF.

 

     " Saldo DA

     itab_zycit003-sld_da   =  itab_zycit443-QTD_SLD =

        itab_zycit443-qtd_da - itab_zycit443-qtd_util -

        itab_zycit443-qtd_iten.

    APPEND itab_zycit003.

  ENDLOOP.

 

  move itab_da[] to itab_da_aux[].

  CLEAR itab_da. REFRESH itab_da.

 

 

  READ TABLE itab_zycit003 INDEX 1 .

*  IF itab_zycit003-inco1 IS INITIAL.

*    MESSAGE e015 WITH text-224.

*  ENDIF.

  MOVE: itab_zycit003-lifnr TO v_lifnr,

        itab_zycit003-waers TO v_waers,

*        itab_zycit003-inco1 TO v_inco1,

        itab_zycit003-waers TO /pws/zycie000-waers,

        itab_zycit003-lifnr TO /pws/zycie000-lifnr.

  "Checando se Moeda, Fornecedor, Incorterm veio diferente.

  LOOP AT itab_zycit003 WHERE waers NE v_waers.

    v_waers_diferente = 'X'.

  ENDLOOP.

 

 

  CLEAR v_werks_prod.

  MOVE itab_zycit003[] TO itab_werks[].

 

  CALL FUNCTION 'CHECK_BUKRS_ML_PRODUCTIVE'

       EXPORTING

            i_bukrs          = /pws/zycie001-bukrs

       IMPORTING

            e_all_productive = v_werks_prod.

  IF v_werks_prod IS INITIAL.

    MOVE: itab_zycit003-werks TO v_werks.

    LOOP AT itab_zycit003 WHERE werks NE v_werks.

    ENDLOOP.

    IF sy-subrc EQ 0.

      MESSAGE e015 WITH text-198 text-199.

    ENDIF.

    IF NOT itab_werks[] IS INITIAL.

      LOOP AT itab_zycit003 WHERE werks NE v_werks.

      ENDLOOP.

      IF sy-subrc EQ 0.

        MESSAGE e015 WITH text-198 text-199.

      ENDIF.

    ENDIF.

  ENDIF.

 

 

  IF NOT t001-land1 EQ 'CL' AND NOT t001-land1 EQ 'AR'.

    IF NOT itab_zycit003[] IS INITIAL.

      SELECT * FROM t001w INTO TABLE itab_t001w

          FOR ALL ENTRIES IN itab_zycit003

          WHERE werks = itab_zycit003-werks.

 

      LOOP AT itab_t001w WHERE j_1bbranch NE /pws/zycie001-j_1bbranch.

      ENDLOOP.

      IF sy-subrc EQ 0.

        MESSAGE e015 WITH text-220.

      ENDIF.

      IF NOT itab_werks[] IS INITIAL.

        SELECT * FROM t001w INTO TABLE itab_t001w

          FOR ALL ENTRIES IN itab_werks

          WHERE werks = itab_werks-werks.

        LOOP AT itab_t001w WHERE j_1bbranch NE

            /pws/zycie001-j_1bbranch .

        ENDLOOP.

        IF sy-subrc EQ 0.

          MESSAGE e015 WITH text-220.

        ENDIF.

      ENDIF.

    ENDIF.

  ENDIF.

 

 

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT ebeln ebelp gsber

      INTO TABLE itab_divisao

      FROM ekkn FOR ALL ENTRIES IN itab_zycit003

      WHERE ebeln = itab_zycit003-ebeln

        AND ebelp = itab_zycit003-ebelp.

    SELECT a~ebeln a~ebelp a~ematn

           b~spart

           c~gsber

      INTO CORRESPONDING FIELDS OF TABLE itab_divisao2

      FROM ( (  ekpo AS a INNER JOIN mara AS b

             ON a~ematn = b~matnr )

        INNER JOIN t134h AS c ON b~spart = c~spart

                              AND a~werks = c~bwkey )

        FOR ALL ENTRIES IN itab_zycit003

      WHERE a~ebeln = itab_zycit003-ebeln

        AND a~ebelp = itab_zycit003-ebelp.

 

  ENDIF.

 

 

  LOOP AT itab_zycit003.

    "Atualizando itens na itab_zycit003.

    PERFORM load_pttext USING itab_zycit003-matnr

                              sy-langu.

 

    IF itab_zycit003-j_1bnbm IS INITIAL.

      IF t001-land1 EQ 'BR'.

        SELECT SINGLE steuc FROM marc INTO itab_zycit003-j_1bnbm

             WHERE  matnr = itab_zycit003-matnr.

      ELSE.

        SELECT SINGLE steuc FROM marc INTO itab_zycit003-j_1bnbm

             WHERE  matnr = itab_zycit003-matnr

               AND  werks = ekpo-werks.

      ENDIF.

    ENDIF.

    MODIFY itab_zycit003.

    v_netpr = ( itab_zycit003-netpr * itab_zycit003-qtd_iten *

               v_taxa ).

    PERFORM tratar_decimais USING   itab_zycit003-waers

                           CHANGING v_netpr.

    /pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.

 

    IF /pws/zycie001-netpr < 0.

      CLEAR /pws/zycie001-netpr.

      MESSAGE e061 WITH text-235 text-236.

    ENDIF.

  ENDLOOP.

 

 

 

 

 

ENDFORM.                    " selecionar_itens_da

*&                                                                     *

*&      Form  user_command_0003

*&                                                                     *

FORM user_command_0003.

  CASE sy-ucomm.

    WHEN 'ENTER'.

      PERFORM: "trata_qtde_lote,

*               consiste_da_diferentes,

               selecionar_itens_da.

      LEAVE TO SCREEN 0.

    WHEN 'CANCEL'.

      LEAVE TO SCREEN 0.

  ENDCASE.

ENDFORM.                    " user_command_0003

*&                                                                     *

*&      Form  carrega_estrutura_0003

*&                                                                     *

FORM carrega_estrutura_0003.

  MOVE :

      itab_da-nrseqda  TO /pws/zycie442-nrseqda ,

      itab_da-ebeln    TO /pws/zycie443-ebeln   ,

      itab_da-ebelp    TO /pws/zycit443-ebelp   ,

      itab_da-matnr    TO /pws/zycie443-matnr   ,

      itab_da-lote     TO /pws/zycie463-lote_forn,

      itab_da-qtd_lote TO /pws/zycie463-qtd_lote.

 

ENDFORM.                    " carrega_estrutura_0003

*&                                                                     *

*&      Form  calcula_saldo_da

*&                                                                     *

* chamado      Data         Descrição

* 290246       26/04/06     entreposto aduaneiro

*                                                                      *

 

FORM calcula_saldo_da.

 

  SELECT * FROM /pws/zycit455 INTO TABLE itab_zycit455

    WHERE nrseqda EQ /pws/zycit442-nrseqda

    AND   nrseq   NE /pws/zycie001-nrseq.

  IF sy-subrc EQ 0.

    SELECT * FROM /pws/zycit443 INTO TABLE itab_zycit443_saldo

    FOR ALL ENTRIES IN itab_zycit455

    WHERE nrseq EQ itab_zycit455-nrseq

    AND   ebeln EQ itab_zycit455-ebeln

    AND   ebelp EQ itab_zycit455-ebelp.

  ENDIF.

  DELETE ITAB_ZYCIT443_SALDO WHERE NRSEQDA NE /PWS/ZYCIT442-NRSEQDA.

 

  clear v_qtdutil_da.

  LOOP AT itab_zycit443 .

    v_tabix = sy-tabix.

    LOOP AT itab_zycit443_saldo WHERE ebeln = itab_zycit443-ebeln

                                AND   ebelp = itab_zycit443-ebelp.

      read table itab_zycit455 with key

              ebeln = itab_zycit443_saldo-ebeln

              ebelp = itab_zycit443_saldo-ebelp.

      if sy-subrc = 0 and not itab_zycit455-nrseq is initial.

         v_qtdutil_da = v_qtdutil_da + itab_zycit443_saldo-qtd_da.

      endif.

    ENDLOOP.

    itab_zycit443-qtd_util = v_qtdutil_da.

    MODIFY itab_zycit443 INDEX v_tabix.

  ENDLOOP.

 

ENDFORM.                    " calcula_saldo_da

*&                                                                     *

*&      Form  carrega_itab_003

*&                                                                     *

*   Atualizando estrutura

*                                                                      *

FORM carrega_itab_003.

 

  MODIFY itab_da INDEX tc_selda-current_line.

 

ENDFORM.                    " carrega_itab_003

*&                                                                     *

*&      Form  trata_screen_0003

*&                                                                     *

*       text

*                                                                      *

*    >  p1        text

*  <    p2        text

*                                                                      *

FORM trata_screen_0003.

  LOOP AT tc_selda-cols INTO wa_cols.

    IF v_status_s = '0'.

      wa_cols-screen-input = '0'.

    ENDIF.

    MODIFY tc_selda-cols FROM wa_cols.

  ENDLOOP.

 

ENDFORM.                    " trata_screen_0003

*&                                                                     *

*&      Form  salva_dados_da

*&                                                                     *

form salva_dados_da.

 

  loop at itab_zycit003_del.

 

     delete itab_zycit455 where nrseq  = /pws/zycie001-nrseq

                     and   ebeln    = itab_zycit003_del-ebeln

                     and   ebelp    = itab_zycit003_del-ebelp .

 

  endloop.

 

  loop at itab_da_aux.

     update /pws/zycit463 set qtd_nac = itab_da_aux-qtd_nac

                     where nrseqda    = itab_da_aux-nrseqda

                     and   lote_forn  = itab_da_aux-lote.

  endloop.

 

  loop at itab_zycit003.

     update /pws/zycit455 set nrseq = itab_zycit003-nrseq

                     where nrseqda  = /pws/zycit442-nrseqda

                     and   ebeln    = itab_zycit003-ebeln

                     and   ebelp    = itab_zycit003-ebelp .

  endloop.

 

  commit work.

endform.                    " salva_dados_da

*&                                                                     *

*&      Form  carrega_itab_0111

*&                                                                     *

form carrega_itab_0111.

 

  MOVE-CORRESPONDING  /pws/zycie003 to  itab_zycit003.

 

 

   MODIFY itab_zycit003 INDEX tc_da-current_line.

 

 

endform.                    " carrega_itab_0111

*&                                                                     *

*&      Form  consiste_sld_da

*&                                                                     *

form consiste_sld_da.

   ITAB_ZYCIT003-SLD_DA =  /PWS/ZYCIE003-MENGE - /pws/zycie003-qtd_iten.

endform.                    " consiste_sld_da

*&                                                                     *

*&      Form  consiste_peso_da

*&                                                                     *

*       text

*                                                                      *

*    >  p1        text

*  <    p2        text

*                                                                      *

form consiste_peso_da.

 

     /pws/zycie003-ntgew = (  itab_zycit443-ntgew /

              itab_zycit443-qtd_da ) * /pws/zycie003-qtd_iten.

 

endform.                    " consiste_peso_da

*&                                                                     *

*&      Form  carrega_instrucao

*&                                                                     *

form carrega_instrucao.

*If sy-tcode = '/PWS/ZYCI001_C'.

*   Loop at itab_zycit011 where nrseq = SO_IEMB-LOW.

*        read table itab_zycit003 with key nrseq = /pws/zycie001-nrseq

*                                 ebeln = itab_zycit011-ebeln

*                                 ebelp = itab_zycit011-ebelp.

*       If sy-subrc <> 0.

*          Move: /pws/zycie001-nrseq         to itab_zycit003-nrseq,

*                itab_zycit011-ebelp    to itab_zycit003-ebelp,

*                itab_zycit011-ebeln    to itab_zycit003-ebeln.

**   Teste     itab_zycit011-qtd_iten to itab_zycit003-qtd_iten.

*         append itab_zycit003.

*      Endif.

*   Endloop.

*Endif.

 

* Copia registros atualizados

  REFRESH itab_zycit003_aux.

  MOVE itab_zycit003[] TO itab_zycit003_aux[].

*

 

  SELECT SINGLE nrseqdi

  FROM /pws/zycit100

  INTO v_nrseqdi

  WHERE nrseq = /pws/zycie001-nrseq.

 

  IF NOT v_nrseqdi IS INITIAL.

    SELECT SINGLE canal

    FROM /pws/zycit085

    INTO v_canal

    WHERE nrseqdi = v_nrseqdi.

 

  ENDIF.

 

  SELECT SINGLE /pws/cotne

  FROM t005

  INTO v_cotne

  WHERE land1 = /pws/zycie001-paispao.

 

 

* Verif. para Dt. Aloc. Produto (Cód. 02)

  SELECT * FROM /pws/zycit390

  INTO TABLE itab_zycit390.

*  WHERE evento1 = '02' AND

*  evento2 = '03' AND

*  emb = /pws/zycie001-meioemba AND

*  continente = v_cotne         AND

*  canal = v_canal.

* Carrega data de remessa.

  LOOP AT itab_zycit003.

    SELECT SINGLE eindt

    FROM eket

    INTO itab_zycit003_aux-dtremessa

    WHERE ebeln = itab_zycit003-ebeln AND

          ebelp = itab_zycit003-ebelp.

 

 

* Calcula a data provavel de entrega.

    PERFORM verif_dtproventrega.

    MODIFY itab_zycit003.

    CLEAR itab_zycit003.

  ENDLOOP.

 

endform.                    " carrega_instrucao

 

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI001I01

 

...

  IF NOT /pws/zycie003-ebeln IS INITIAL.

    PERFORM altera_itab_zycit003.

  ENDIF.

ENDMODULE.

MODULE user_command_0100 INPUT.

ENDMODULE.

MODULE user_command_0102 INPUT.

  DATA v_ebeln1 LIKE rm06e-evrtn.

  CASE okcode.

    WHEN 'P-'.

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

      CHECK ts_embar-activetab = 'FC_PED'.

* << Fim da exclusão

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

      IF ts_embar-activetab = 'FC_PED'.

* << Fim da inclusão

      tc_ped-top_line = tc_ped-top_line - 10.

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

      ELSEIF ts_embar-activetab = 'FC_DA'.

         tc_da-top_line = tc_da-top_line - 10.

      ENDIF.

* << Fim da inclusão

    WHEN 'P--'.

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

      CHECK ts_embar-activetab = 'FC_PED'.

* << Fim da exclusão

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

      if ts_embar-activetab = 'FC_PED'.

* << Fim da inclusão

      tc_ped-top_line = tc_ped-top_line - tc_ped-lines.

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

      ELSEIF ts_embar-activetab = 'FC_DA'.

         tc_da-top_line = tc_da-top_line - tc_da-lines.

      ENDIF.

* << Fim da inclusão

    WHEN 'P+'.

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

      CHECK ts_embar-activetab = 'FC_PED'.

* << Fim da exclusão

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

      if ts_embar-activetab = 'FC_PED'.

* << Fim da inclusão

      tc_ped-top_line = tc_ped-top_line + 10.

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

      ELSEIF ts_embar-activetab = 'FC_DA'.

         tc_da-top_line = tc_da-top_line + 10.

      ENDIF.

* << Fim da inclusão

    WHEN 'P++'.

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

      CHECK ts_embar-activetab = 'FC_PED'.

* << Fim da exclusão

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

      if ts_embar-activetab = 'FC_PED'.

* << Fim da inclusão

      tc_ped-top_line = tc_ped-top_line + tc_ped-lines.

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

      ELSEIF ts_embar-activetab = 'FC_DA'.

         tc_da-top_line = tc_da-top_line + tc_da-lines.

      ENDIF.

* << Fim da inclusão

    WHEN 'POSI'.

      CALL SCREEN 0002 STARTING AT 3 3.

    WHEN 'SELE'.

      GET CURSOR FIELD v_campo VALUE v_valor.

...

 

...

      ELSEIF v_campo EQ '/PWS/ZYCIE003-NRSEQLI'.

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

        PERFORM valida_trans USING '/PWS/ZYCI020_E' 'skip'.

      ELSEIF v_campo EQ '/PWS/ZYCIE003-NRSEQLSI'.

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

        PERFORM valida_trans USING '/PWS/ZYCI020_R' 'skip'.

      ELSE.

        MESSAGE s015 WITH text-025.

      ENDIF.

    WHEN 'DESM'.

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

      CHECK ts_embar-activetab = 'FC_PED'.

* << Fim da exclusão

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

      if ts_embar-activetab = 'FC_PED' or

         ts_embar-activetab = 'FC_DA' .

* << Fim da inclusão

      LOOP AT itab_zycit003.

        itab_zycit003-mark = ' '.

        MODIFY itab_zycit003.

      ENDLOOP.

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

      endif.

* << Fim da inclusão

    WHEN OTHERS.

      IF okcode NE 'SAVE'

      AND okcode NE 'ENTE'

...

 

...

        v_netpr = ( itab_zycit003-netpr * itab_zycit003-qtd_iten *

                   v_taxa ).

        PERFORM tratar_decimais USING   itab_zycit003-waers

                               CHANGING v_netpr.

        /pws/zycie001-netpr = /pws/zycie001-netpr + v_netpr.

      ENDLOOP.

  ENDCASE.

ENDMODULE.

MODULE atualizar_itens INPUT.

  DATA:v_ver_index LIKE sy-tabix.

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

  IF /pws/zycie001-regime  NE '14'.

* << Fim da inclusão

  PERFORM atualiza_itens.

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

  ELSE.

    PERFORM atualiza_itens_da.

  ENDIF.

* << Fim da inclusão

  IF v_mexit = 'X'.

    EXIT.

  ENDIF.

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

  IF /pws/zycie001-regime NE '14'.

* << Fim da inclusão

  PERFORM verifica_itens.

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

  ELSE.

    PERFORM verifica_itens_da.

  ENDIF.

* << Fim da inclusão

ENDMODULE.

MODULE verifica_peso INPUT.

ENDMODULE.

MODULE atualiza_itens INPUT.

  IF NOT itab_zycit003[] IS INITIAL.

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

           FOR ALL ENTRIES IN itab_zycit003 WHERE

           nrseq = itab_zycit003-nrseq AND

           ebeln = itab_zycit003-ebeln AND

           ebelp = itab_zycit003-ebelp AND

           eliminado = space.

  ENDIF.

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

  IF /pws/zycie001-regime NE '14'.

* << Fim da inclusão

  PERFORM verifica_itens.

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

  ELSE.

    PERFORM verifica_itens_da.

  ENDIF.

* << Fim da inclusão

  IF /pws/zycie003-qtd_iten > /pws/zycie003-menge.

    MESSAGE w061 WITH text-004 itab_zycit003-ebelp

                      text-005 itab_zycit003-ebeln.

    v_mexit = 'X'.

    EXIT.

  ELSE.

    LOOP AT itab_zycit003.

      v_indice = sy-tabix.

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

      IF /pws/zycie001-regime NE '14'.

* << Fim da inclusão

      PERFORM atualiza_itens.

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

      ELSE.

        PERFORM atualiza_itens_da.

      ENDIF.

* << Fim da inclusão

      PERFORM atualiza_serv.

      MODIFY itab_zycit003 INDEX v_indice.

    ENDLOOP.

  ENDIF.

...

 

...

                  FROM /pws/zycit395

                  INTO v_agrup

                  WHERE codagrup EQ /pws/zycie003-agrupamento.

  ENDIF.

ENDMODULE.

MODULE user_command_0050 INPUT.

  DATA: v_flag2, v_fat, v_errodb.

  DATA:v_cont1 TYPE n.

  DATA: e_subrc LIKE sy-subrc        ,

         e_exec_okcode.

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

  e_subrc = 0.

* << Fim da inclusão

  CLEAR v_flag2.

  CLEAR v_cont1.

  CLEAR: r_okcode, e_exec_okcode.

  CALL METHOD cl_gui_cfw=>dispatch.

  IF NOT r_okcode IS INITIAL.

    okcode = r_okcode.

  ENDIF.

  IF /pws/zycie001-dtprevemb > /pws/zycie001-dtprevcheg.

    IF NOT /pws/zycie001-dtprevcheg IS INITIAL.

      MESSAGE w015 WITH text-250 text-251 text-252.

    ENDIF.

  ELSE.

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

      ENDIF.

* << Fim da inclusão

    PERFORM verifica_exit USING 'D'

                                '/PWS/SAPMZYCI001'

                                'EMB001'.

    CLEAR itab_zyglt100 .

    READ TABLE itab_zyglt100 WITH KEY zexit = 'EMB001'  BINARY SEARCH.

    IF sy-subrc EQ 0.

      IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

        PERFORM (itab_zyglt100-formulario) IN PROGRAM

            (itab_zyglt100-programa)

                               TABLES

...

 

...

          WHEN 'DELE'.

            LOOP AT itab_zycit396 WHERE marc EQ 'X'.

              DELETE FROM /pws/zycit396

              WHERE nrseq  = itab_zycit396-nrseq AND

                    ebeln  = itab_zycit396-ebeln AND

                    ebelp  = itab_zycit396-ebelp AND

                    indice = itab_zycit396-indice.

            ENDLOOP.

          WHEN 'MALL'.

            v_mark = 'X'.

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

            if ts_embar-activetab eq 'FC_DA'.

                loop at itab_zycit003.

                   itab_zycit003-mark = 'X'.

                   modify itab_zycit003.

                endloop.

            endif.

* << Fim da inclusão

          WHEN 'DESM'.

            v_mark = ' '.

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

            if ts_embar-activetab eq 'FC_DA'.

                loop at itab_zycit003.

                   itab_zycit003-mark = ' '.

                   modify itab_zycit003.

                endloop.

            endif.

* << Fim da inclusão

          WHEN 'SAVE'.

            PERFORM atualiza_itens.

            PERFORM grava_tabelas.

            IF /pws/zycie001-nrseq IS INITIAL.

              EXIT.

            ENDIF.

            PERFORM log_mensagens.

            LOOP AT itab_zycit125 WHERE lifnr EQ space.

            ENDLOOP.

            IF sy-subrc NE 0.

...

 

...

              SELECT * FROM /pws/zycit100

                       INTO TABLE it_100_temp

                       WHERE nrseq EQ /pws/zycie001-nrseq.

              IF sy-subrc EQ 0.

                MESSAGE s015 WITH text-181 text-182.

                EXIT.

              ENDIF.

            ENDIF.

            CALL SELECTION-SCREEN '0300'.

          WHEN 'DELP'.

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

            CASE ts_embar-activetab.

              WHEN 'FC_PED'.

                LOOP AT itab_zycit003 WHERE mark = 'X'.

                  IF itab_zycit003-nrseqli IS INITIAL AND

                     itab_zycit003-nrseqlsi IS INITIAL.

                    CLEAR v_tabix.

                    v_tabix = sy-tabix.

                    READ TABLE itab_zycit094 WITH KEY

                                   nrseq = itab_zycit003-nrseq.

                    IF sy-subrc EQ 0.

                      MESSAGE w015 WITH text-246.

                      EXIT.

                    ENDIF.

                    READ TABLE itab_zycit263 WITH KEY

                         ebeln     = itab_zycit003-ebeln

                         ebelp     = itab_zycit003-ebelp

                         eliminado = space.

                    IF sy-subrc NE 0.

                      CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT013'

                           EXPORTING

                                ebeln = itab_zycit003-ebeln

                                ebelp = itab_zycit003-ebelp.

                      DELETE itab_zycit003 INDEX v_tabix.

                      CLEAR itab_zycit003.

                    ELSE.

                      MESSAGE w015 WITH text-043.

                      EXIT.

                    ENDIF.

                 MOVE:itab_zycit003-ebeln    TO itab_zycit003_del-ebeln,

                      itab_zycit003-ebelp    TO itab_zycit003_del-ebelp,

                   itab_zycit003-qtd_iten TO itab_zycit003_del-qtd_iten.

                    APPEND itab_zycit003_del.

                  ELSE.

                    MESSAGE w015 WITH text-190.

                    EXIT.

                  ENDIF.

                ENDLOOP.

              WHEN 'FC_FORNEC'.

                LOOP AT itab_zycit125 WHERE mark = 'X'.

                  DELETE itab_zycit125 INDEX sy-tabix.

                  CLEAR itab_zycit125.

                ENDLOOP.

            ENDCASE.

* << Fim da exclusão

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

            PERFORM trata_delp.

* << Fim da inclusão

          WHEN 'MARC'.

            CASE ts_embar-activetab .

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

              WHEN 'FC_PED'.

* << Fim da exclusão

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

              WHEN 'FC_PED' .

* << Fim da inclusão

                LOOP AT itab_zycit003.

                  itab_zycit003-mark = 'X'.

                  MODIFY itab_zycit003.

                ENDLOOP.

              WHEN 'FC_FORNEC'.

                LOOP AT itab_zycit125.

                  itab_zycit125-mark = 'X'.

                  MODIFY itab_zycit125.

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

                ENDLOOP.

              when 'FC_DA'.

                LOOP AT itab_zycit003.

                  itab_zycit003-mark = 'X'.

                  MODIFY itab_zycit003.

* << Fim da inclusão

                ENDLOOP.

            ENDCASE.

          WHEN 'FACPED'.

            PERFORM grava_tabelas.

            PERFORM call_facped.

          WHEN 'DETITEM'.

            PERFORM trata_detitem.

          WHEN 'PEDINST'.

            CALL SELECTION-SCREEN '0104' .

          WHEN 'COEMBAR'.

            PERFORM verifica_alteracoes.

            PERFORM busca_sequencial_copia.

            LOOP AT itab_zycit003.

              itab_zycit003-slqtde = itab_zycit003-slqtde

                         - itab_zycit003-qtd_iten.

              MODIFY itab_zycit003 INDEX sy-tabix.

            ENDLOOP.

            CLEAR okcode.

        ENDCASE.

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

      ENDIF.

* << Fim da exclusão

    ELSEIF v_status_s EQ 0 AND ( okcode = 'SAVE' OR okcode = 'PED' OR

                               okcode = 'DELP' OR okcode = 'MARC' OR

                              okcode = 'DESM' OR  okcode = 'FACPED' ).

     MESSAGE s004.

    ENDIF.

    CLEAR sy-subrc.

    CASE okcode.

      WHEN 'VLI'.

        PERFORM: verifica_li.

      WHEN 'MODI'.

...

 

...

        CALL TRANSACTION '/PWS/ZYCET042'.

      WHEN 'DA'.

        IF v_status_s NE 0.

          PERFORM grava_tabelas.

        ENDIF.

        PERFORM call_da.

        SELECT SINGLE status

               FROM /pws/zycit001

               INTO /pws/zycie001-status

               WHERE nrseq = /pws/zycie001-nrseq.

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

      WHEN 'SELE_DA'.

        CALL SELECTION-SCREEN '0700'.

* << Fim da inclusão

    ENDCASE.

  ENDIF.

  CLEAR okcode.

ENDMODULE.

MODULE user_command_0002 INPUT.

  CASE okcode.

    WHEN 'ENTER'.

      PERFORM trata_enter_0002.

    WHEN 'BACK'.

      LEAVE TO SCREEN 0.

...

 

...

ENDMODULE.

MODULE consiste_iten INPUT.

  READ TABLE itab_itens_aux WITH KEY ebeln = /pws/zycie003-ebeln

                                     ebelp = /pws/zycie003-ebelp.

  IF /pws/zycie003-qtd_iten > /pws/zycie003-menge.

    MESSAGE w061 WITH text-004 itab_zycit003-ebelp

                      text-005 itab_zycit003-ebeln.

    /pws/zycie003-qtd_iten = itab_zycit003-qtd_iten.

  ENDIF.

ENDMODULE.

* >> Início da inclusão:

MODULE check_obrig4 INPUT.

  PERFORM trata_obrig4.

ENDMODULE.

module USER_COMMAND input.

   if sy-dynnr eq '0003'.

      perform user_command_0003.

   endif.

endmodule.

module carrega_itab input.

   if sy-dynnr eq '0003'.

      perform carrega_itab_003.

   elseif sy-dynnr eq '0111'.

      if /pws/zycie001-regime eq '14'.

         perform carrega_itab_0111.

      endif.

   endif.

endmodule.

module qtd_lote input.

   data: v_dif.

   if itab_da-qtd_nac gt itab_da-qtd_lote.

      message e015 with text-258.

   endif.

  CLEAR: v_sld.

  move itab_da[] to itab_da_aux[].

  move itab_da[] to itab_da_aux2[].

  describe table itab_da_aux lines v_line.

  loop at itab_da_aux .

    v_tabix = sy-tabix.

    loop at itab_da_aux2 .

       if v_tabix ne sy-tabix.

          if itab_da_aux-nrseqda ne itab_da_aux2-nrseqda

             and not itab_da_aux2-qtd_nac is initial.

             v_dif = 'X'.

          endif.

       endif.

    endloop.

  endloop.

  if v_dif = 'X'.

     MESSAGE i015 WITH text-254.

     clear itab_da-qtd_nac.

     clear v_dif.

     clear   : itab_da_aux, itab_da_aux2.

     refresh : itab_da_aux, itab_da_aux2.

   endif.

endmodule.

module consiste_sld_da input.

   perform consiste_sld_da.

   perform consiste_peso_da.

endmodule.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI001O01

 

...

    SET TITLEBAR '0100B'.

  ENDIF.

ENDMODULE.

MODULE set_screen OUTPUT.

  SELECT SINGLE * FROM t001 WHERE bukrs EQ /pws/zycie001-bukrs.

  SELECT SINGLE *

    FROM /pws/zycit000

    WHERE land1 EQ t001-land1.

  CASE sy-dynnr.

    WHEN '0100' OR '0101'.

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

      CLEAR v_linha.

      DESCRIBE TABLE itab_zycit003 LINES v_linha.

* << Fim da exclusão

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

       perform trata_screen_0101.

* << Fim da inclusão

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

      LOOP AT SCREEN.

        IF v_status_s = 0.

          IF screen-group1 NE 'TAB'.

            screen-input = '0'.

            MODIFY SCREEN.

          ENDIF.

          IF screen-group2 EQ 'ADM'.

            IF /pws/zycie001-tpdecl EQ 'DSI'.

              IF /pws/zycie001-regime EQ '09'.

                screen-invisible = '0'.

              ELSE.

                screen-invisible = '1'.

              ENDIF.

            ELSEIF /pws/zycie001-tpdecl EQ 'DI'.

              IF /pws/zycie001-regime EQ '05'.

                screen-invisible = '0'.

              ELSE.

                screen-invisible = '1'.

              ENDIF.

            ELSE.

              screen-invisible = '1'.

            ENDIF.

          ENDIF.

          MODIFY SCREEN.

        ELSEIF v_status_s = 1.

          IF screen-group1 NE 'OUT'.

            screen-input = '1'.

          ELSEIF screen-group1 EQ 'OUT'

             AND screen-group2 NE 'OUT'

             AND v_linha EQ 0.

            screen-input = '1'.

          ELSE.

            screen-input = '0'.

          ENDIF.

          MODIFY SCREEN.

          IF screen-name EQ '/PWS/ZYCIE001-MODALIDADE'.

            IF v_modemb = 'X'.

              screen-input = 0.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

          IF v_status_s EQ '1'.

            IF screen-name EQ '/PWS/ZYCIE001-NAPOLICE'

            OR screen-name EQ '/PWS/ZYCIE001-DTAPOLICE'

            OR  screen-name EQ '/PWS/ZYCIE001-VLAPOLICE'.

              IF /pws/zycie001-apocalcao IS INITIAL.

                screen-input = 0.

                CLEAR: /pws/zycie001-napolice,

                       /pws/zycie001-dtapolice,

                       /pws/zycie001-vlapolice.

              ELSE.

                screen-input = 1.

              ENDIF.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

          IF screen-name EQ '/PWS/ZYCIE001-NAVIO'.

            IF /pws/zycie001-meioemba EQ 'MA' OR

               /pws/zycie001-meioemba EQ 'FL'.

              screen-input = 1.

              MODIFY SCREEN.

              IF screen-group3 EQ 'VER'.

                screen-input = 1.

                MODIFY SCREEN.

              ENDIF.

            ELSE.

              IF screen-group3 EQ 'VER'.

                screen-input = 0.

                MODIFY SCREEN.

                CLEAR: /pws/zycie001-navio,

                       v_bande.

              ENDIF.

            ENDIF.

          ENDIF.

          IF screen-group2 EQ 'ADM'.

            IF /pws/zycie001-tpdecl EQ 'DSI'.

              IF /pws/zycie001-regime EQ '09'.

                screen-invisible = '0'.

                MOVE 'X' TO v_flagadm.

              ELSE.

                screen-invisible = '1'.

                MOVE space TO v_flagadm.

              ENDIF.

            ELSEIF /pws/zycie001-tpdecl EQ 'DI'.

              IF /pws/zycie001-regime EQ '05'.

                screen-invisible = '0'.

                MOVE 'X' TO v_flagadm.

              ELSE.

                screen-invisible = '1'.

                MOVE space TO v_flagadm.

              ENDIF.

            ELSE.

              screen-invisible = '1'.

              MOVE space TO v_flagadm.

            ENDIF.

          ENDIF.

          MODIFY SCREEN.

          IF screen-group1 EQ 'VIN'.

            IF NOT /pws/zycie001-nacional IS INITIAL.

              screen-input = '1'.

            ELSE.

              CLEAR: /pws/zycie001-tpvinculo,

                     /pws/zycie001-nrseqref.

              screen-input = '0'.

            ENDIF.

            MODIFY SCREEN.

          ENDIF.

          IF screen-name = '/PWS/ZYCIE001-MEIOEMBA'.

            SELECT SINGLE * FROM /pws/zycit094

              WHERE nrseq = /pws/zycie001-nrseq.

            IF sy-subrc = 0 AND NOT /pws/zycie001-nrseq IS INITIAL.

              screen-input = 0.

              MODIFY SCREEN.

            ELSE.

              screen-input = 1.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

        ENDIF.

        IF NOT /pws/zycit000-flagbl IS INITIAL.

          IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR

             screen-name EQ '/PWS/ZYCIE001-PAISPAO'  OR

             screen-name EQ '/PWS/ZYCIE001-PADEST'   OR

             screen-name EQ '/PWS/ZYCIE001-PAISPA'   OR

             screen-name EQ '/PWS/ZYCIE001-NAVIO'    OR

             screen-name EQ 'V_CIDORIG'         OR

             screen-name EQ 'V_CIDEST'.

            screen-required = 0.

            screen-input = 0.

            screen-invisible = 1.

            MODIFY SCREEN.

          ENDIF.

        ELSE.

          IF screen-name EQ '/PWS/ZYCIE001-PAORIGEM' OR

             screen-name EQ '/PWS/ZYCIE001-PAISPAO'  OR

             screen-name EQ '/PWS/ZYCIE001-PADEST'.

            SELECT SINGLE * FROM /pws/zycit094

              WHERE nrseq = /pws/zycie001-nrseq.

            IF sy-subrc NE 0.

              IF v_status_s = 1.

                screen-input = 1.

              ELSE.

                screen-input = 0.

              ENDIF.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

        ENDIF.

        IF screen-name = '/PWS/ZYCIE001-EMBARCA'.

          IF v_status_s = '1'.

            SELECT SINGLE * FROM /pws/zycit094

              WHERE nrseq = /pws/zycie001-nrseq.

            IF sy-subrc NE 0 OR /pws/zycie001-nrseq IS INITIAL.

              screen-input = 1.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

        ENDIF.

        IF screen-name = '/PWS/ZYCIE001-DT_ENT_DE' OR

           screen-name = '/PWS/ZYCIE001-DT_ENT_ATE'.

          IF /pws/zycie001-regime = '02' AND v_status_s = 0.

            screen-input = 0.

            screen-invisible = 0.

          ELSEIF /pws/zycie001-regime = '02'.

            screen-input = 1.

            screen-invisible = 0.

          ELSE.

            screen-input = 0.

            screen-invisible = 1.

          ENDIF.

          MODIFY SCREEN.

        ENDIF.

        IF screen-name EQ '/PWS/ZYCIE001-NRDESPADU'.

          IF NOT /pws/zycit000-oil IS INITIAL.

            screen-required = '1'.

          ELSE.

            screen-required = 0  .

          ENDIF.

          MODIFY SCREEN.

        ENDIF.

        IF screen-name EQ '/PWS/ZYCIE001-REGIME'.

          LOOP AT itab_zycit003 WHERE NOT nrseqlsi IS initial.

            screen-input = 0.

          ENDLOOP.

          IF /pws/zycie001-meioemba = 'PS'.

            screen-input = 1.

            MODIFY SCREEN.

          ENDIF.

          MODIFY SCREEN.

        ENDIF.

        IF /pws/zycie001-modalidade EQ '02'.

          IF screen-group1 EQ 'SER'.

            screen-input = '0'.

            MODIFY SCREEN.

          ENDIF.

        ENDIF.

        IF /pws/zycie001-modalidade NE '02'

           AND /pws/zycie001-modalidade NE '03'.

          IF screen-name EQ '/PWS/ZYCIE001-TPSERV'.

            screen-input = 0.

            screen-invisible = 1.

            MODIFY SCREEN.

          ENDIF.

        ENDIF.

      ENDLOOP.

* << Fim da exclusão

    WHEN '0102'.

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

       perform trata_screen_0102.

* << Fim da inclusão

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

      IF v_status_s = 0.

        LOOP AT tc_ped-cols INTO wa_cols.

          wa_cols-screen-input = '0'.

          MODIFY tc_ped-cols FROM wa_cols.

        ENDLOOP.

      ELSEIF v_status_s = 1.

        LOOP AT tc_ped-cols INTO wa_cols.

          IF wa_cols-screen-group1 NE 'OUT'.

            wa_cols-screen-input = '1'.

          ENDIF.

          IF v_di EQ 'S'.

            IF wa_cols-screen-name EQ '/PWS/ZYCIE003-QTD_ITEND' .

              wa_cols-screen-input = '0'.

            ENDIF.

            IF wa_cols-screen-name EQ '/PWS/ZYCIE003-NTGEWD' .

              wa_cols-screen-input = '0'.

            ENDIF.

          ENDIF.

          IF wa_cols-screen-name EQ '/PWS/ZYCIE003-TPNF' .

            IF v_nf EQ 'X'.

              wa_cols-screen-input = '0'.

            ELSE.

              wa_cols-screen-input = '1'.

            ENDIF.

          ENDIF.

          MODIFY tc_ped-cols FROM wa_cols.

        ENDLOOP.

      ENDIF.

* << Fim da exclusão

    WHEN '0103'.

      IF v_status_s = 0.

        LOOP AT tc_fornec-cols INTO wa_cols.

          wa_cols-screen-input = '0'.

          MODIFY tc_fornec-cols FROM wa_cols.

        ENDLOOP.

      ELSEIF v_status_s = 1.

        LOOP AT tc_fornec-cols INTO wa_cols.

          IF wa_cols-screen-group1 NE 'OUT'   .

            wa_cols-screen-input = '1'.

...

 

...

              ENDIF.

            ENDIF.

          ELSE.

            IF screen-group1 EQ 'VIN'.

              screen-input = '0'.

              MODIFY SCREEN.

            ENDIF.

          ENDIF.

        ENDLOOP.

      ENDIF.

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

    when '0111'.

      perform trata_screen_0111.

    when '0003'.

      perform trata_screen_0003.

* << Fim da inclusão

  ENDCASE.

ENDMODULE.

MODULE status_0200 OUTPUT.

  SET PF-STATUS '0200'.

  SET TITLEBAR '0200'.

ENDMODULE.

MODULE status_0001 OUTPUT.

  SET PF-STATUS '0001'.

  IF sy-tcode = '/PWS/ZYCI001_A'.

    SET TITLEBAR '0001'.

...

 

...

MODULE carrega_zycie255 OUTPUT.

  READ TABLE it_zycit119 WITH KEY status = it_zycit255-status.

  CLEAR v_descst.

  MOVE: it_zycit255-data       TO /pws/zycie255-data,

        it_zycit255-hora       TO /pws/zycie255-hora,

        it_zycit255-usuario    TO /pws/zycie255-usuario,

        it_zycit255-status     TO /pws/zycie255-status,

        it_zycit119-descricao  TO v_descst.

ENDMODULE.

MODULE carrega_instrucao OUTPUT.

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

  REFRESH itab_zycit003_aux.

  MOVE itab_zycit003[] TO itab_zycit003_aux[].

  SELECT SINGLE nrseqdi

  FROM /pws/zycit100

  INTO v_nrseqdi

  WHERE nrseq = /pws/zycie001-nrseq.

  IF NOT v_nrseqdi IS INITIAL.

    SELECT SINGLE canal

    FROM /pws/zycit085

    INTO v_canal

    WHERE nrseqdi = v_nrseqdi.

* << Fim da exclusão

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

   if not /pws/zycie001-regime eq '14'.

      perform carrega_instrucao.

* << Fim da inclusão

  ENDIF.

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

  SELECT SINGLE /pws/cotne

  FROM t005

  INTO v_cotne

  WHERE land1 = /pws/zycie001-paispao.

  SELECT * FROM /pws/zycit390

  INTO TABLE itab_zycit390.

  LOOP AT itab_zycit003.

    SELECT SINGLE eindt

    FROM eket

    INTO itab_zycit003_aux-dtremessa

    WHERE ebeln = itab_zycit003-ebeln AND

          ebelp = itab_zycit003-ebelp.

    PERFORM verif_dtproventrega.

    MODIFY itab_zycit003.

    CLEAR itab_zycit003.

  ENDLOOP.

* << Fim da exclusão

ENDMODULE.

MODULE carrega_forn_instrucao OUTPUT.

  IF sy-tcode = '/PWS/ZYCI001_C'.

    READ TABLE itab_zycit010 INDEX 1.

    IF sy-subrc = 0.

      READ TABLE itab_zycit125 WITH KEY nrseq = /pws/zycie001-nrseq

                                        lifnr = itab_zycit010-agente

                                        tipo  = 'AG'.

      IF sy-subrc <> 0.

        MOVE: /pws/zycie001-nrseq       TO itab_zycit125-nrseq,

...

 

...

                              'EMB004'.

  CLEAR: itab_zyglt100 .

  READ TABLE itab_zyglt100 WITH KEY zexit = 'EMB004' BINARY SEARCH.

  IF sy-subrc EQ 0.

    IF NOT itab_zyglt100-zexit_ativa IS INITIAL.

      PERFORM (itab_zyglt100-formulario) IN PROGRAM

          (itab_zyglt100-programa).

    ENDIF.

  ENDIF.

ENDMODULE.

* >> Início da inclusão:

module carrega_estrutura output.

   if sy-dynnr eq '0003'.

      perform carrega_estrutura_0003.

   elseif sy-dynnr eq '0111' .

      if /pws/zycie001-regime eq '14'.

       perform carrega_estrutura.

          DESCRIBE TABLE itab_zycit003 LINES v_line.

          tc_da-lines = v_line.

      endif.

   endif.

endmodule.

module STATUS_0003 output.

  SET PF-STATUS '0003'.

endmodule.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI001TOP

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI001X01

 

tables:

  /pws/zycit001,

  /pws/zycie001,

  /pws/zycit003,

  /pws/zycie003,

  /pws/zyglt217,

  /pws/zycit442,

* >> Início da exclusão:

  /pws/zycit443.

* << Fim da exclusão

* >> Início da inclusão:

  /pws/zycit443,

  /pws/zycit455,

  /pws/zycit460.

* << Fim da inclusão

data: begin of common part a.

DATA: BEGIN OF itab_zycit003 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycie003.

DATA: slqtde LIKE /pws/zycie013-slqtde,

      uebto  LIKE ekpo-uebto,

      uebtk  LIKE ekpo-uebtk,

      noinitial,

      mark,

      idnlf         LIKE mepo1319-idnlf,

* >> Início da exclusão:

      invoiced LIKE /pws/zycie263-qtd_iten.

* << Fim da exclusão

* >> Início da inclusão:

      invoiced LIKE /pws/zycie263-qtd_iten,

      sld_da like /pws/zycit443-qtd_iten.

* << Fim da inclusão

DATA: END OF itab_zycit003.

...

 

...

* >> Início da inclusão:

data: qtd_sld like /pws/zycit443-qtd_iten,

      qtd_util like /pws/zycit443-qtd_iten.

* << Fim da inclusão

...

 

...

* >> Início da inclusão:

  data: begin of itab_zycit443_saldo occurs 0.

          include structure /pws/zycit443.

  data: end of itab_zycit443_saldo.

  data: begin of itab_zycit455 occurs 0.

          include structure /pws/zycit455.

  data: end of itab_zycit455.

  data: v_qtdutil_da like /pws/zycit443-qtd_da  ,

        v_sld        like /pws/zycit443-qtd_da  ,

        v_nrseqda    LIKE /pws/zycie442-nrseqda ,

        v_qtd_sld    like /pws/zycit443-qtd_iten.

  DATA: BEGIN OF itab_da OCCURS 0,

         nrseqda  LIKE /pws/zycie442-nrseqda  ,

         nrdi     LIKE /pws/zycie442-nrdi     ,

         burks    LIKE /pws/zycie442-bukrs    ,

         dtdesemb LIKE /pws/zycie442-dtdesemb ,

         agente   LIKE /pws/zycie460-lifnr    ,

         ebeln    LIKE /pws/zycie443-ebeln    ,

         ebelp    LIKE /pws/zycie443-ebelp    ,

         matnr    LIKE /pws/zycie443-matnr    ,

         lote     like /PWS/ZYCIE463-LOTE_FORN,

         numfatura   like /PWS/ZYCIE463-NUMFATURA,

         qtd_lote like /PWS/ZYCIE463-QTD_LOTE ,

         qtd_nac  like /pws/zycie463-qtd_lote ,

         qtd_usada like /pws/zycie463-qtd_lote ,

         mark.

  DATA: END OF itab_da.

  data: itab_zycit443_aux like itab_zycit443 occurs 0 with header line,

        itab_da_aux       like itab_da occurs 0 with header line,

        itab_da_aux2      like itab_da occurs 0 with header line.

   data: begin of itab_nac occurs 0.

   data: ebeln like /pws/zycit443-ebeln,

         ebelp like /pws/zycit443-ebelp,

         qtd_nac like /pws/zycit443-qtd_iten.

   data: end of itab_nac.

* << Fim da inclusão

data: end of common part a.