CE PLUS - Nota 004286

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Despesas

Data/Hora da Publicação: 27/07/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 15:48:14

Descrição da Nota: DESENVOLVIMENTO PARA GERAR A MIRO NA FATURA(AMERICA LATINA)

Sintoma

Desenvolvimento para gerar a Miro na Fatura(America Latina)

 

 

Solução

Desenvolvimento para gerar a Miro na Fatura(America Latina).

 

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

SISTEMA ESTÁ PERMITINDO ALTERAÇÃO DE FATURA, DEPOIS DA EMISSÃO DA NF

TRATAMENTO PARA MOTIVO DE ESTORNO DA FB08 NA FATURA

Informações Complementares

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

Nota Número 04286 Data: 27/07/2007 Hora: 09:11:02

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

 

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

Nota Número              : 04286

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00002

Agrupamento              : 00005

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

Referência às notas relacionadas:

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

 

02200  - 00001 - 6.0    - 00025  - TRATAMENTO PARA MOTIVO DE ESTORNO DA FB08 NA FATURA

02376  - 00002 - 6.0    - 00025  - SISTEMA ESTÁ PERMITINDO ALTERAÇÃO DE FATURA, DEPOIS DA EMISSÃO DA

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

DESENVOLVIMENTO PARA GERAR A MIRO NA FATURA(AMERICA LATINA)

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

Palavras Chave:

MIRO - FATURA - AMERICA - LATINA

/PWS/SAPMZYCI003 - /PWS/ZYCIT477

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

Objetos da nota:

DYNP /PWS/SAPMZYCI003                        0101

DYNP /PWS/SAPMZYCI003                        0111

REPS /PWS/MZYCI003F01

REPS /PWS/MZYCI003F02

REPS /PWS/MZYCI003I01

REPS /PWS/MZYCI003O01

REPS /PWS/MZYCI003TOP

REPS /PWS/MZYCI003X01

TABD /PWS/ZYCIE006

TABD /PWS/ZYCIE132

TABD /PWS/ZYCIT006

TABD /PWS/ZYCIT132

TABL /PWS/ZYCIT477

TOBJ /PWS/ZYCIT477S

TRAN /PWS/ZYCIT477

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI003                        0101

 

 

 

   Nome

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

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

      Outros atributos

*Campos adicionados Inicio:

   TEXT_MR1M

      Texto     13       83       9       9       1     CHAR

 

   /PWS/ZYCIE006-BELNR_MR1M

      I/O       13       93      10      10       1     CHAR   X               Off

      OUT                      RBN

      Dest

      Saída de conversão=ALPHA

   /PWS/ZYCIE006-IVA

      Texto     20        1       7       7       1     CHAR      X    F

      Chave externa

   /PWS/ZYCIE006-IVA

      I/O       20       20       2       2       1     CHAR   X           Ent Off

                  BOL

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

*Campos adicionados Fim:

 

 

 

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

Modificações efetuadas em DYNP /PWS/SAPMZYCI003                        0111

 

   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_FAT_PARC

      Tabel      2        2     105     105       8

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

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

*Campos adicionados Inicio:

 - /PWS/ZYCIE132-BELNR_MR1M

      Texto      1       13       9      10       1     CHAR      X    F

                               RBN

      Título de coluna TC

 - /PWS/ZYCIE132-BELNR_MR1M

      I/O        1       13      10      10       1     CHAR   X               Off

      OUT                      RBN

      Dest, Elem.TC

      Saída de conversão=ALPHA

*Campos adicionados Fim:

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

  ENDIF.

  IF e_subrc = '8'.

    EXIT.

  ELSE.

    APPEND itab_zycbe033.

    FREE itab_contas.

    LOOP AT itab_zycbt035.

      MOVE-CORRESPONDING itab_zycbt035 TO itab_contas.

      APPEND itab_contas.

    ENDLOOP.

* >> Início da inclusão: FORM FILL_DATE_F-43_F-02

    IF NOT /pws/zycit477 IS INITIAL.

      IF NOT /pws/zycie006-belnr_mr1m IS INITIAL.

        EXIT.

      ENDIF.

      PERFORM miro_am_la.

      EXIT.

    ENDIF.

* << Fim da inclusão

    LOOP AT itab_zycbt034.

      MESSAGE i016 WITH itab_zycbt034-descricao.

    ENDLOOP.

    IF itab_zycbt034[] IS INITIAL.

      IF /pws/zycie006-frpagto = 'D' AND e_subrc = '0'.

        CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_02C'

             EXPORTING

                  v_modo          = v_modo_bi

             TABLES

                  t_dados         = itab_zycbe033

...

 

...

 

FORM reverse_document_fb08.

  DATA:

        v_monat LIKE bsis-monat.

  CLEAR v_erro.

  IF v_parcela = 'X'.

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

    IF itab_zycit132-miro EQ 'X'.

      PERFORM estorn_miro_la.

      EXIT.

    ENDIF.

* << Fim da inclusão

 

...

 

...

      IF v_subrc  = 0.

        itab_zycbe033-budat  = /pws/zycie006-dtlanc.

        itab_zycbe033-stgrd  = /pws/zycbt007-percorr.

      ELSE.

        itab_zycbe033-budat  = sy-datum.

        itab_zycbe033-stgrd  = /pws/zycbt007-perencer .

      ENDIF.

    ENDIF.

    v_belnr_ant = itab_zycit132-belnr_p.

  ELSE.

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

    IF /pws/zycie006-statusp_mr1m EQ 'X'.

      PERFORM estorn_miro_la.

      EXIT.

    ENDIF.

* << Fim da inclusão

    itab_zycbe033-tabela = '/PWS/ZYCIT006'.

    itab_zycbe033-cpochv = /pws/zycie006-nrseq.

    itab_zycbe033-belnr  = /pws/zycie006-belnr_p.

 

...

 

...

 

FORM atualiza_total_parcelas.

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

  data  v_perc_t TYPE p DECIMALS 2.

* << Fim da inclusão

...

 

 

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

  REFRESH: itab_rateio_parc.

* << Fim da inclusão

  LOOP AT itab_zycit132.

    v_total_parc = v_total_parc + itab_zycit132-vlparc.

    IF v_waers_par IS INITIAL.

      v_waers_par = itab_zycit132-waers.

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

    ENDIF.

    IF itab_zycit132-status NE 'X'

      and not /pws/zycie006-vltotal is initial.

      itab_rateio_parc-nrparc = itab_zycit132-nrparc.

      itab_rateio_parc-perc =

            ( itab_zycit132-vlparc / /pws/zycie006-vltotal ) * 100.

      v_perc_t = v_perc_t + itab_rateio_parc-perc.

      append itab_rateio_parc.

* << Fim da inclusão

    ENDIF.

  ENDLOOP.

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

  itab_rateio_parc-perc = itab_rateio_parc-perc + ( 100 - v_perc_t ).

  MODIFY itab_rateio_parc TRANSPORTING perc

                          WHERE nrparc EQ itab_rateio_parc-nrparc.

* << Fim da inclusão

  LOOP AT itab_zycit132 WHERE mark = 'X' OR status EQ 'X'.

    v_total_parc = v_total_parc - itab_zycit132-vlparc.

  ENDLOOP.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

        ELSE.

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                space                  TO itab_zycbt035_aux-bklas .

        ENDIF.

      ELSE.

        MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

              itab_matuse-knttp      TO itab_zycbt035_aux-knttp ,

              space                  TO itab_zycbt035_aux-bklas .

      ENDIF.

      itab_zycbt035_aux-d_valut     = /pws/zycie006-dtd_conta.

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

      IF v_parcela = 'X'.

* << Fim da exclusão

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

      IF v_parcela = 'X' AND /pws/zycit477 IS INITIAL.

* << Fim da inclusão

        IF v_line = v_index.

          itab_zycbt035_aux-wrbtr = itab_zycit132-vlparc - v_tot_parc.

        ELSE.

          itab_zycbt035_aux-wrbtr       = itab_zycit132-vlparc *

                 ( itab_zycit003-total / /pws/zycie006-vltotal ).

         SELECT SINGLE * FROM tcurx WHERE currkey = /pws/zycie006-waers.

          IF sy-subrc <> 0.

            tcurx-currdec = 2.

          ENDIF.

          itab_zycbt035_aux-wrbtr =

             itab_zycbt035_aux-wrbtr * ( 10 ** ( tcurx-currdec - 2 ) ).

          v_tot_parc = v_tot_parc + itab_zycbt035_aux-wrbtr.

        ENDIF.

      ELSE.

        itab_zycbt035_aux-wrbtr       = itab_zycit003-total.

      ENDIF.

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

      IF NOT v_parcela = 'X'.

* << Fim da exclusão

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

      IF NOT v_parcela = 'X' OR /pws/zycit477 IS INITIAL.

* << Fim da inclusão

        SELECT SINGLE * FROM tcurx WHERE currkey = /pws/zycie006-waers.

        IF sy-subrc <> 0.

          tcurx-currdec = 2.

        ENDIF.

        itab_zycbt035_aux-wrbtr =

           itab_zycbt035_aux-wrbtr * ( 10 ** ( tcurx-currdec - 2 ) ).

      ENDIF.

      itab_zycbt035_aux-werks = itab_zycit003-werks.

      IF /pws/zycit000-clucro_ia = 'X'.

        PERFORM verifica_centro_l.

      ENDIF.

      itab_zycbt035_aux-d_gsber     = itab_zycit003-gsber.

      v_tot_wrbtr = v_tot_wrbtr + itab_zycbt035_aux-wrbtr.

      IF v_index EQ v_line.

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

        IF v_parcela = 'X'.

* << Fim da exclusão

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

        IF v_parcela = 'X' AND /pws/zycit477 IS INITIAL.

* << Fim da inclusão

          v_dif_wrbtr = v_tot_wrbtr - itab_zycit132-vlparc.

        ELSE.

          v_dif_wrbtr = v_tot_wrbtr - /pws/zycie006-vltotal.

        ENDIF.

        IF v_dif_wrbtr NE 0.

          itab_zycbt035_aux-wrbtr = itab_zycbt035_aux-wrbtr -

                                       v_dif_wrbtr.

        ENDIF.

      ENDIF.

      IF /pws/zycie006-tpfatura EQ '11'.

...

 

...

      IF NOT /pws/zycie006-frpagto EQ 'D'.

        READ TABLE itab_zycmt019 WITH KEY

                              codmod  = 'PD'

                              tpmatnr = itab_matuse-j_1bmatuse.

        IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

        ELSE.

          CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

        ENDIF.

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

      ENDIF.

      IF NOT /pws/zycit477 IS INITIAL.

        itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

        itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

      ENDIF.

      APPEND itab_zycbt035_aux.

    ENDLOOP.

    CLEAR: itab_zycbt035     ,

           itab_zycbt035_aux2.

    FREE:  itab_zycbt035     ,

           itab_zycbt035_aux2.

   SORT itab_zycbt035_aux BY matuse bklas d_gsber d_prctr c_prctr.

    LOOP AT itab_zycbt035_aux.

      itab_zycbt035_aux2-matuse  = itab_zycbt035_aux-matuse .

...

 

...

      itab_zycbt035_aux-werks     = itab_zycit003-werks.

      IF NOT /pws/zycie006-frpagto EQ 'D'.

        READ TABLE itab_zycmt019 WITH KEY

                              codmod  = 'PD'

                              tpmatnr = itab_matuse-j_1bmatuse.

        IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

        ELSE.

          CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

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

        ENDIF.

* << Fim da inclusão

        ENDIF.

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

      IF NOT /pws/zycit477 IS INITIAL.

        itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

        itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

      ENDIF.

      APPEND itab_zycbt035_aux.

    ENDLOOP.

    CLEAR: itab_zycbt035     ,

...

 

...

      ENDIF.

      IF NOT /pws/zycie006-frpagto EQ 'D'.

        READ TABLE itab_zycmt019 WITH KEY

                              codmod  = 'PD'

                              tpmatnr = itab_matuse-j_1bmatuse.

        IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

        ELSE.

          CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

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

        ENDIF.

* << Fim da inclusão

        ENDIF.

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

      IF NOT /pws/zycit477 IS INITIAL.

        itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

        itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

      ENDIF.

      APPEND itab_zycbt035_aux.

    ENDLOOP.

    CLEAR: itab_zycbt035     ,

...

 

...

              space                  TO itab_zycbt035_aux-bklas .

      ENDIF.

      IF /pws/zycit000-clucro_ia = 'X'.

        PERFORM verifica_centro_l.

      ENDIF.

      itab_zycbt035_aux-d_valut  = /pws/zycie006-dtd_conta.

      IF v_index = v_line.

        itab_zycbt035_aux-wrbtr = /pws/zycie006-vltotal - v_valor_desp.

      ELSE.

        itab_zycbt035_aux-wrbtr = /pws/zycie006-vltotal *

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

                                ( itab_zycit003-netpr / v_tot_valor ).

* << Fim da exclusão

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

             ( ( itab_zycit003-qtd_iten * itab_zycit003-netpr )

                                                       / v_tot_valor ).

* << Fim da inclusão

        v_valor_desp = v_valor_desp + itab_zycbt035_aux-wrbtr.

      ENDIF.

      itab_zycbt035_aux-d_gsber  = itab_zycit003-gsber.

      itab_zycbt035_aux-werks  = itab_zycit003-werks.

      IF NOT /pws/zycie006-frpagto EQ 'D'.

        READ TABLE itab_zycmt019 WITH KEY

                              codmod  = 'PD'

                              tpmatnr = itab_matuse-j_1bmatuse.

        IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

        ELSE.

          CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

        ENDIF.

      ENDIF.

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

      IF NOT /pws/zycit477 IS INITIAL.

        itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

        itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

      ENDIF.

* << Fim da inclusão

      APPEND itab_zycbt035_aux.

    ENDLOOP.

    CLEAR: itab_zycbt035     ,

           itab_zycbt035_aux2.

    FREE : itab_zycbt035     ,

           itab_zycbt035_aux2.

    SORT itab_zycbt035_aux BY matuse bklas d_gsber d_prctr c_prctr.

    LOOP AT itab_zycbt035_aux.

      itab_zycbt035_aux2-matuse  = itab_zycbt035_aux-matuse .

      itab_zycbt035_aux2-bklas   = itab_zycbt035_aux-bklas  .

...

 

...

      itab_zycbt035_aux-d_gsber  = itab_zycit003-gsber.

      IF NOT /pws/zycie006-frpagto EQ 'D'.

        READ TABLE itab_zycmt019 WITH KEY

                              codmod  = 'PD'

                              tpmatnr = itab_matuse-j_1bmatuse.

        IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

        ELSE.

          CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

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

        ENDIF.

* << Fim da inclusão

        ENDIF.

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

      IF NOT /pws/zycit477 IS INITIAL.

        itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

        itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

      ENDIF.

      APPEND itab_zycbt035_aux.

    ENDLOOP.

    CLEAR: itab_zycbt035     ,

...

 

...

        ENDIF.

        IF NOT /pws/zycie006-frpagto EQ 'D'.

          READ TABLE itab_zycmt019 WITH KEY

                                codmod  = 'PD'

                                tpmatnr = itab_matuse-j_1bmatuse.

          IF sy-subrc EQ 0 AND itab_zycmt019-contabiliza EQ 'X'.

            itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

            itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

          ELSE.

            CLEAR: itab_zycbt035_aux-ebeln, itab_zycbt035_aux-ebelp.

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

          ENDIF.

* << Fim da inclusão

          ENDIF.

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

        IF NOT /pws/zycit477 IS INITIAL.

          itab_zycbt035_aux-ebeln = itab_zycit003-ebeln .

          itab_zycbt035_aux-ebelp = itab_zycit003-ebelp .

* << Fim da inclusão

        ENDIF.

        APPEND itab_zycbt035_aux.

      ENDLOOP.

    ENDLOOP.

...

 

...

 

FORM load_parametros.

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

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

  SELECT SINGLE * FROM /pws/zycit477

      WHERE land EQ t001-land1.

* << Fim da inclusão

...

 

...

 

* >> Início da inclusão:

FORM miro_am_la.

  TYPES: BEGIN OF mmcr_drseg_co.

          INCLUDE STRUCTURE cobl_mrm_d.

  TYPES: cr LIKE drseg_cr    OCCURS 0,

         unpl_refwr TYPE refwr,

         END OF mmcr_drseg_co.

  TYPES: BEGIN OF mmcr_drseg.

          INCLUDE STRUCTURE drseg.

  TYPES: cr LIKE drseg_cr OCCURS 0,

         co TYPE mmcr_drseg_co OCCURS 0,

         sm LIKE drseg_sm OCCURS 0,

         charact TYPE rbcharact_instance OCCURS 3,

         uebgmat  TYPE matnr,

         uebrblgp TYPE rblgp,

         selkz_db TYPE selkz,

         rblgp_old TYPE rblgp,

         END OF mmcr_drseg.

  DATA: v_chave(10),

        v_indice TYPE i,

        v_iva(2),

         v_cont2 TYPE sy-tabix,

         v_cont TYPE sy-tabix,

         v_awkey TYPE bkpf-awkey,

         v_doc_miro TYPE bkpf-belnr.

  DATA: wa_headerdata TYPE bapi_incinv_create_header,

        v_belnr_mr1m TYPE /pws/zycie006-belnr_mr1m,

        v_invoice TYPE rbkp-xrech,

        v_gjahr TYPE rbkp-gjahr,

        v_creditmemo TYPE rbkp-xrech.

  DATA: itab_itemdata TYPE bapi_incinv_create_item

        OCCURS 0 WITH HEADER LINE,

        itab_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE,

        itab_account TYPE bapi_incinv_create_account

                          OCCURS 0 WITH HEADER LINE,

         v_quantity LIKE itab_itemdata-quantity,

         v_amount TYPE /pws/zycit003-netpr,

         v_vlfr TYPE /pws/zycie031-wrbtr,

         v_vlsg TYPE /pws/zycie031-wrbtr,

         v_vlaux TYPE /pws/zycie031-wrbtr,

         v_kursf TYPE rbkp-kursf,

         v_zbd1p TYPE rbkp-zbd1p,

         v_ebelp(6) TYPE c,

         v_item_amount TYPE /pws/zycit003-netpr,

         v_item_amount2 TYPE /pws/zycit036-netpr.

  DATA: itab_konv TYPE konv OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF itab_ped OCCURS 0.

  DATA: ebeln TYPE ekko-ebeln,

        knumv TYPE ekko-knumv.

  DATA: END OF itab_ped.

  DATA: itab_contas_aux LIKE itab_contas OCCURS 0 WITH HEADER LINE,

        itab_zycbe033_aux LIKE itab_zycbe033 OCCURS 0 WITH HEADER LINE,

        itab_zycit030 LIKE /pws/zycit030 OCCURS 0 WITH HEADER LINE,

        itab_komv_a LIKE itab_komv OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF itab_komk_aux OCCURS 0.

          INCLUDE STRUCTURE komk.

  DATA: ebeln LIKE ekko-ebeln.

  DATA: END OF itab_komk_aux.

  DATA: BEGIN OF itab_fat OCCURS 0.

  DATA: nrseq TYPE /pws/zycie006-nrseq.

  DATA: END OF itab_fat.

  DATA: itab_zycit047a TYPE /pws/zycit047 OCCURS 0 WITH HEADER LINE.

  DATA: BEGIN OF itab_ivaped OCCURS 0.

  DATA:  ebeln TYPE ekpo-ebeln,

         ebelp TYPE ekpo-ebelp,

         mwskz TYPE ekpo-mwskz.

  DATA: END OF itab_ivaped.

  DATA: itab_itens_iva TYPE mmcr_drseg OCCURS 0 WITH HEADER LINE,

        itab_retorno TYPE bset OCCURS 0 WITH HEADER LINE.

  IF v_parcela = 'X' AND

    NOT itab_zycit132-belnr_mr1m IS INITIAL.

    EXIT.

  ENDIF.

  FREE: itab_contas_aux.

  itab_contas_aux[] = itab_contas[].

  itab_zycbe033_aux[] = itab_zycbe033[].

  PERFORM get_parameters_mrm1_receb.

  CASE /pws/zycie006-tpfatura.

    WHEN '01'.

      SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

        WHERE codeven = '001N'

          AND codmod EQ 'D'

          AND bukrs EQ /pws/zycit006-bukrs.

      IF sy-subrc NE 0.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

          WHERE codeven = '001N'

            AND codmod EQ 'D'.

      ENDIF.

    WHEN '02'.

      SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

        WHERE codeven = '001NF'

          AND codmod EQ 'D'

          AND bukrs EQ /pws/zycit006-bukrs.

      IF sy-subrc NE 0.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

          WHERE codeven = '001NF'

            AND codmod EQ 'D'.

      ENDIF.

    WHEN '03'.

      SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

        WHERE codeven = '001NS'

          AND codmod EQ 'D'

          AND bukrs EQ /pws/zycit006-bukrs.

      IF sy-subrc NE 0.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

          WHERE codeven = '001NS'

            AND codmod EQ 'D'.

      ENDIF.

    WHEN '04'.

      SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

        WHERE codeven = '001NO'

          AND codmod EQ 'D'

          AND bukrs EQ /pws/zycit006-bukrs.

      IF sy-subrc NE 0.

        SELECT SINGLE * FROM /pws/zycbt011 INTO wa_zycbt011

          WHERE codeven = '001NO'

            AND codmod EQ 'D'.

      ENDIF.

  ENDCASE.

  SELECT * FROM /pws/zycit030

    INTO TABLE itab_zycit030

    WHERE bukrs = /pws/zycie006-bukrs.

  IF /pws/zycie006-tpfatura NE '01'.

    SELECT nrseq  FROM /pws/zycit006

        INTO TABLE itab_fat

        WHERE nrseqce EQ /pws/zycie006-nrseqce

          AND eliminado EQ space

          AND tpfatura  EQ /pws/zycie006-tpfatura

          AND nrseq     NE /pws/zycie006-nrseq.

    IF /pws/zycie006-tpfatura EQ '04' AND sy-subrc EQ 0.

      SELECT * FROM /pws/zycit047 INTO TABLE itab_zycit047a

          FOR ALL ENTRIES IN itab_fat

          WHERE nrseq EQ itab_fat-nrseq.

    ENDIF.

  ELSE.

    SELECT ebeln ebelp mwskz FROM ekpo

        INTO TABLE itab_ivaped

        FOR ALL ENTRIES IN itab_zycit003

        WHERE ebeln EQ itab_zycit003-ebeln

          AND ebelp EQ itab_zycit003-ebelp.

  ENDIF.

  READ TABLE itab_zycit003 INDEX 1.

  READ TABLE itab_zycbe033_aux INDEX 1.

  IF /pws/zycie006-tpfatura EQ '02' AND

     /pws/zycie006-tpfatura EQ '03'.

    REFRESH itab_zycit263.

    SELECT * FROM /pws/zycit263 INTO TABLE itab_zycit263

        WHERE nrseq EQ itab_zycit003-nrseq

          AND eliminado NE 'X'.

  ENDIF.

  itab_zycie033-mandt = sy-mandt.

  itab_zycie033-tcode = 'MIRO'.

  itab_zycie033-tabela = '/PWS/ZYCIT006'.

  itab_zycie033-cpochv  = /pws/zycie006-nrseq.

  itab_zycie033-bldat = itab_zycbe033_aux-bldat.

  itab_zycie033-budat = sy-datlo.

  itab_zycie033-bukrs = /pws/zycie006-bukrs.

  itab_zycie033-zterm = /pws/zycie006-zterm.

  itab_zycie033-zfbdt = itab_zycbe033_aux-zfbdt.

  IF NOT /pws/zycit048-lifnr IS INITIAL.

    itab_zycie033-lifnr   = /pws/zycit048-lifnr.

  ELSE.

    itab_zycie033-lifnr   = /pws/zycie006-lifnr.

  ENDIF.

  itab_zycie033-bktxt   = /pws/zycie006-nrfat.

  itab_zycie033-xblnr   = /pws/zycie006-lfsnr.

  itab_zycie033-mwskz = /pws/zycie006-iva.

  CLEAR v_cont.

  FREE: itab_zycit031,

        itab_itemdata.

  CLEAR: itab_itemdata,

         itab_zycit031, itab_zycie033-rmwwr, itab_zycie033-waers.

  IF /pws/zycie006-tpfatura EQ '04'.

    LOOP AT itab_zycit003.

      READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

      PERFORM retorna_decimais USING /pws/zycie006-waers

                            CHANGING itab_contas_aux-wrbtr.

      CLEAR: itab_zycit031.

      itab_zycit031-tcode  = itab_zycie033-tcode   .

      itab_zycit031-tabela = itab_zycie033-tabela  .

      itab_zycit031-cpochv = itab_zycie033-cpochv  .

      itab_zycit031-ebeln  = itab_zycit003-ebeln   .

      itab_zycit031-ebelp  = itab_zycit003-ebelp   .

      itab_zycit031-menge  = itab_zycit003-qtd_iten.

      itab_zycit031-meins  = itab_zycit003-meins   .

      itab_zycit031-mwskz  = itab_zycie033-mwskz   .

      CLEAR: v_vlaux.

      LOOP AT itab_zycit047 WHERE vldp > 0.

        CLEAR: itab_zycit019, itab_zycit030.

        READ TABLE itab_zycit019 WITH KEY

                                  tpdesp = itab_zycit047-tpdesp.

        READ TABLE itab_zycit030 WITH KEY

                                  codigo = itab_zycit019-codigo.

        itab_zycit031-lgort = itab_zycit030-kschl.

        itab_zycit031-wrbtr  = itab_contas_aux-wrbtr *

             ( itab_zycit047-vldp / /pws/zycie006-vltotal ).

        v_vlaux = v_vlaux + itab_zycit031-wrbtr.

        CLEAR: itab_zycit031-sernp.

        READ TABLE itab_zycit047a WITH KEY

                        tpdesp = itab_zycit047-tpdesp.

        IF sy-subrc EQ 0.

          itab_zycit031-sernp = 'X'.

        ENDIF.

        APPEND itab_zycit031.

      ENDLOOP.

      v_vlaux = itab_contas_aux-wrbtr - v_vlaux.

      itab_zycit031-wrbtr = itab_zycit031-wrbtr + v_vlaux.

      MODIFY itab_zycit031 TRANSPORTING wrbtr

                WHERE ebeln EQ itab_zycit003-ebeln

                  AND ebelp EQ itab_zycit003-ebelp

                  AND lgort EQ itab_zycit031-lgort.

      itab_zycie033-waers = /pws/zycie006-waers.

      itab_zycie033-rmwwr = itab_contas_aux-wrbtr + itab_zycie033-rmwwr.

    ENDLOOP.

  ELSEIF /pws/zycie006-tpfatura EQ '02'.

    READ TABLE itab_zycit030 WITH KEY codigo = 'FRETEI'.

    LOOP AT itab_zycit003.

      READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

      PERFORM retorna_decimais USING /pws/zycie006-waers

                            CHANGING itab_contas_aux-wrbtr.

      CLEAR: itab_zycit031.

      itab_zycit031-tcode  = itab_zycie033-tcode   .

      itab_zycit031-tabela = itab_zycie033-tabela  .

      itab_zycit031-cpochv = itab_zycie033-cpochv  .

      itab_zycit031-ebeln  = itab_zycit003-ebeln   .

      itab_zycit031-ebelp  = itab_zycit003-ebelp   .

      itab_zycit031-menge  = itab_zycit003-qtd_iten.

      itab_zycit031-meins  = itab_zycit003-meins   .

      itab_zycit031-mwskz  = itab_zycie033-mwskz   .

      itab_zycit031-wrbtr  = itab_contas_aux-wrbtr .

      READ TABLE itab_zycit030 WITH KEY

                                codigo = 'FRETEI'.

      itab_zycit031-lgort = itab_zycit030-kschl.

      IF NOT itab_fat[] IS INITIAL.

        itab_zycit031-sernp = 'X'.

      ELSE.

        LOOP AT itab_zycit263 WHERE ebeln EQ itab_zycit003-ebeln

                                AND ebelp EQ itab_zycit003-ebelp

                                AND vlfre_fat > 0.

          itab_zycit031-sernp = 'X'.

          EXIT.

        ENDLOOP.

      ENDIF.

      APPEND itab_zycit031.

      itab_zycie033-waers = /pws/zycie006-waers.

      itab_zycie033-rmwwr = itab_zycit031-wrbtr + itab_zycie033-rmwwr.

    ENDLOOP.

  ELSEIF /pws/zycie006-tpfatura EQ '03'.

    LOOP AT itab_zycit003.

      READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

      PERFORM retorna_decimais USING /pws/zycie006-waers

                            CHANGING itab_contas_aux-wrbtr.

      CLEAR: itab_zycit031.

      itab_zycit031-tcode  = itab_zycie033-tcode   .

      itab_zycit031-tabela = itab_zycie033-tabela  .

      itab_zycit031-cpochv = itab_zycie033-cpochv  .

      itab_zycit031-ebeln  = itab_zycit003-ebeln   .

      itab_zycit031-ebelp  = itab_zycit003-ebelp   .

      itab_zycit031-menge  = itab_zycit003-qtd_iten.

      itab_zycit031-meins  = itab_zycit003-meins   .

      itab_zycit031-mwskz  = itab_zycie033-mwskz   .

      itab_zycit031-wrbtr  = itab_contas_aux-wrbtr .

      READ TABLE itab_zycit030 WITH KEY

                                codigo = 'SEGURO'.

      itab_zycit031-lgort = itab_zycit030-kschl.

      IF NOT itab_fat[] IS INITIAL.

        itab_zycit031-sernp = 'X'.

      ELSE.

        LOOP AT itab_zycit263 WHERE ebeln EQ itab_zycit003-ebeln

                                AND ebelp EQ itab_zycit003-ebelp

                                AND vlseg_fat > 0.

          itab_zycit031-sernp = 'X'.

          EXIT.

        ENDLOOP.

      ENDIF.

      APPEND itab_zycit031.

      itab_zycie033-waers = /pws/zycie006-waers.

      itab_zycie033-rmwwr = itab_zycit031-wrbtr + itab_zycie033-rmwwr.

    ENDLOOP.

  ELSEIF /pws/zycie006-tpfatura EQ '01'.

    DESCRIBE TABLE itab_rateio_parc LINES v_line.

    LOOP AT itab_zycit003.

      READ TABLE itab_contas_aux WITH KEY ebeln = itab_zycit003-ebeln

                                          ebelp = itab_zycit003-ebelp.

      READ TABLE itab_ivaped WITH KEY ebeln = itab_zycit003-ebeln

                                      ebelp = itab_zycit003-ebelp.

      PERFORM retorna_decimais USING /pws/zycie006-waers

                            CHANGING itab_contas_aux-wrbtr.

      CLEAR: itab_zycit031.

      itab_zycit031-tcode  = itab_zycie033-tcode  .

      itab_zycit031-tabela = itab_zycie033-tabela .

      itab_zycit031-cpochv = itab_zycie033-cpochv .

      itab_zycit031-ebeln  = itab_zycit003-ebeln  .

      itab_zycit031-ebelp  = itab_zycit003-ebelp  .

      itab_zycit031-wrbtr  = itab_contas_aux-wrbtr.

      v_vlfr =   itab_zycit003-vlfre_aux .

      v_vlsg =   itab_zycit003-vlseg_aux.

      itab_zycie033-rmwwr = itab_zycit031-wrbtr + itab_zycie033-rmwwr.

      itab_zycit031-wrbtr = itab_zycit031-wrbtr - v_vlfr.

      IF /pws/zycit031-inco1_ci EQ 'CIF'.

        itab_zycit031-wrbtr = itab_zycit031-wrbtr - v_vlsg.

      ENDIF.

      itab_zycit031-menge  = itab_zycit003-qtd_iten.

      itab_zycit031-meins  = itab_zycit003-meins.

      itab_zycit031-mwskz  = itab_ivaped-mwskz.

      APPEND itab_zycit031.

      itab_zycie033-waers = /pws/zycie006-waers.

      IF NOT v_vlfr IS INITIAL.

        READ TABLE itab_zycit030 WITH KEY codigo = 'FRETEI'.

        itab_zycit031-wrbtr = v_vlfr.

        itab_zycit031-lgort = itab_zycit030-kschl.

        APPEND itab_zycit031.

      ENDIF.

      IF NOT v_vlsg IS INITIAL AND /pws/zycit031-inco1_ci EQ 'CIF'.

        READ TABLE itab_zycit030 WITH KEY codigo = 'SEGURO'.

        itab_zycit031-wrbtr = v_vlsg.

        itab_zycit031-lgort = itab_zycit030-kschl.

        APPEND itab_zycit031.

      ENDIF.

    ENDLOOP.

  ENDIF.

  APPEND itab_zycie033.

  IF NOT itab_zycit031[] IS INITIAL.

    SELECT ebeln ebelp bprme twrkz FROM ekpo INTO TABLE itab_ekpo

      FOR ALL ENTRIES IN itab_zycit031

      WHERE ebeln = itab_zycit031-ebeln

        AND ebelp = itab_zycit031-ebelp.

  ENDIF.

  LOOP AT itab_zycit031.

    READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                       ebelp = itab_zycit031-ebelp.

    IF sy-subrc EQ 0.

      v_cont = v_cont + 1.

      itab_itemdata-invoice_doc_item = v_cont             .

      itab_itemdata-po_number        = itab_zycit031-ebeln.

      itab_itemdata-cond_type        = itab_zycit031-lgort.

      itab_itemdata-po_item          = itab_zycit031-ebelp.

      itab_itemdata-tax_code         = itab_zycie033-mwskz.

      itab_itemdata-item_amount      = itab_zycit031-wrbtr.

      itab_itemdata-quantity         = itab_zycit031-menge.

      itab_itemdata-de_cre_ind       = itab_zycit031-sernp.

      itab_itemdata-po_unit          = itab_zycit031-meins.

      itab_itemdata-po_unit_iso      = itab_zycit031-meins.

      itab_itemdata-po_pr_uom        = itab_ekpo-bprme    .

      itab_itemdata-po_pr_uom_iso    = itab_ekpo-bprme    .

      APPEND itab_itemdata.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_ekpo WHERE NOT twrkz IS initial.

  ENDLOOP.

  IF sy-subrc = 0.

    IF NOT itab_ekpo[] IS INITIAL.

      SELECT * FROM ekkn INTO TABLE itab_ekkn_mult

        FOR ALL ENTRIES IN itab_ekpo

        WHERE ebeln = itab_ekpo-ebeln AND

              ebelp = itab_ekpo-ebelp.

    ENDIF.

    LOOP AT itab_zycit031.

      READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                    ebelp = itab_zycit031-ebelp

                                    twrkz = 'X'.

      LOOP AT itab_ekpo WHERE ebeln = itab_zycit031-ebeln AND

                              ebelp = itab_zycit031-ebelp AND

                              NOT twrkz IS initial.

      ENDLOOP.

      IF sy-subrc EQ 0.

        CLEAR v_indice.

        LOOP AT itab_ekkn_mult WHERE ebeln = itab_zycit031-ebeln AND

                                     ebelp = itab_zycit031-ebelp.

          v_indice = v_indice + 1.

        ENDLOOP.

        CLEAR:  v_cont2, v_quantity, v_amount.

        LOOP AT itab_ekkn_mult WHERE ebeln = itab_zycit031-ebeln AND

                                    ebelp = itab_zycit031-ebelp.

          v_cont2 = v_cont2 + 1.

          READ TABLE itab_itemdata

                    WITH KEY po_number = itab_zycit031-ebeln

                             po_item   = itab_zycit031-ebelp.

          IF v_cont2 = v_indice.

            v_item_amount =  itab_zycit031-wrbtr - v_amount.

            itab_account-quantity = itab_zycit031-menge -

                   v_quantity.

            itab_account-item_amount = v_item_amount.

          ELSE.

            v_item_amount2 = itab_zycit031-wrbtr

                    /  100 * itab_ekkn_mult-vproz .

            itab_account-quantity = itab_zycit031-menge

                    /  100 * itab_ekkn_mult-vproz .

            v_quantity = v_quantity + itab_account-quantity.

            itab_account-item_amount = v_item_amount2.

            v_amount = v_amount + itab_account-item_amount .

          ENDIF.

         itab_account-invoice_doc_item = itab_itemdata-invoice_doc_item.

          itab_account-serial_no        = itab_ekkn_mult-zekkn.

          IF itab_zycie033-mwskz IS INITIAL.

            SELECT SINGLE mwskz FROM ekpo

                INTO itab_zycie033-mwskz

                WHERE ebeln EQ itab_zycit003-ebeln

                  AND ebelp EQ itab_zycit003-ebelp.

          ENDIF.

          itab_account-tax_code         = itab_zycie033-mwskz .

          itab_account-po_unit          = itab_zycit031-meins .

          itab_account-gl_account       = itab_ekkn_mult-sakto.

          itab_account-costcenter       = itab_ekkn_mult-kostl.

          itab_account-asset_no         = itab_ekkn_mult-anln1.

          itab_account-sub_number       = itab_ekkn_mult-anln2.

          itab_account-orderid          = itab_ekkn_mult-aufnr.

          itab_account-bus_area         = itab_ekkn_mult-gsber.

          itab_account-profit_ctr       = itab_ekkn_mult-prctr.

          itab_account-wbs_elem         = itab_ekkn_mult-ps_psp_pnr.

          APPEND itab_account.

        ENDLOOP.

      ENDIF.

    ENDLOOP.

  ENDIF.

  READ TABLE itab_zycie033 INDEX 1.

  wa_headerdata-invoice_ind  = 'X'.

  wa_headerdata-pmnttrms   = itab_zycie033-zterm.

  wa_headerdata-bline_date = itab_zycie033-zfbdt.

  wa_headerdata-doc_date     = itab_zycie033-bldat.

  wa_headerdata-pstng_date   = itab_zycie033-budat.

  wa_headerdata-ref_doc_no   = itab_zycie033-bktxt.

  wa_headerdata-comp_code    = itab_zycie033-bukrs.

  wa_headerdata-currency     = itab_zycie033-waers.

  wa_headerdata-gross_amount = itab_zycie033-rmwwr.

  wa_headerdata-header_txt   = wa_zycbt007-bktxt.

  wa_headerdata-diff_inv = itab_zycie033-lifnr.

  wa_headerdata-doc_type     = wa_zycbt011-blart.

  wa_headerdata-pmnt_block   = 'A'.

  wa_headerdata-calc_tax_ind = 'X'.

  v_invoice = 'X'.

  v_creditmemo = 'X'.

  LOOP AT itab_itemdata.

    READ TABLE itab_zycit003 WITH KEY ebeln = itab_itemdata-po_number

                                      ebelp = itab_itemdata-po_item.

    itab_itens_iva-bedat = itab_zycie033-bldat.

    itab_itens_iva-bewae = /pws/zycie006-waers.

    itab_itens_iva-bpumn = '1'.

    itab_itens_iva-bpumz = '1'.

    itab_itens_iva-bsmng = itab_itemdata-quantity.

    itab_itens_iva-budat = itab_zycie033-budat.

    itab_itens_iva-bukrs = /pws/zycie006-bukrs.

    itab_itens_iva-ebeln = itab_itemdata-po_number.

    itab_itens_iva-ebelp = itab_itemdata-po_item.

    itab_itens_iva-matnr = itab_zycit003-matnr.

    itab_itens_iva-meins = itab_itemdata-po_unit.

    itab_itens_iva-umren = '1'.

    itab_itens_iva-umrez = '1'.

    itab_itens_iva-waers = /pws/zycie006-waers.

    itab_itens_iva-wepos = 'X'.

    itab_itens_iva-werks = itab_zycit003-werks.

    itab_itens_iva-eindt = itab_zycie033-bldat.

    itab_itens_iva-mwskz = itab_zycie033-mwskz.

    itab_itens_iva-gjahr = itab_zycie033-bldat(4).

    itab_itens_iva-kokrs = /pws/zycie006-bukrs.

    itab_itens_iva-menge = itab_itemdata-quantity.

    itab_itens_iva-mlmaa = 'X'.

    itab_itens_iva-selkz = 'X'.

    itab_itens_iva-wrbtr = itab_itemdata-item_amount.

    itab_itens_iva-hswae = /pws/zycie006-waers.

    itab_itens_iva-shkzg = 'S'.

    IF NOT itab_itemdata-cond_type IS INITIAL.

      itab_itens_iva-kschl = itab_itemdata-cond_type.

      itab_itens_iva-lifnr = /pws/zycie006-lifnr.

    ELSE.

      itab_itens_iva-inco1 = /pws/zycit031-inco1_ci.

    ENDIF.

    APPEND itab_itens_iva.

  ENDLOOP.

  CLEAR: v_vlsg.

  v_kursf = 1.

  CALL FUNCTION 'MR_CALCULATE_TAX_DOCUMENT'

    EXPORTING

      i_bukrs           = /pws/zycie006-bukrs

      i_hswae           = /pws/zycbt007-waersb

      i_waers           = /pws/zycie006-waers

      i_xmwst           = 'X'

      i_glvor           = 'RMRP'

      i_budat           = itab_zycie033-bldat

      i_kursf           = v_kursf

      i_bldat           = itab_zycie033-bldat

      i_zbd1p           = v_zbd1p

      i_wskto           = v_vlsg

      i_rmwwr           = v_vlsg

      i_xrech           = 'X'

      i_lifnr           = /pws/zycie006-lifnr

      i_wwert           = itab_zycie033-bldat

    TABLES

      t_drseg           = itab_itens_iva

      t_bset            = itab_retorno

   EXCEPTIONS

      user_exit         = 1

      OTHERS            = 2

            .

  IF sy-subrc <> 0.

  ENDIF.

  wa_headerdata-gross_amount = wa_headerdata-gross_amount +

                                             itab_retorno-hwste.

  CALL FUNCTION 'BAPI_INCOMINGINVOICE_CREATE'

       EXPORTING

            headerdata       = wa_headerdata

       IMPORTING

            invoicedocnumber = v_belnr_mr1m

            fiscalyear       = v_gjahr

       TABLES

            itemdata         = itab_itemdata

            accountingdata   = itab_account

            return           = itab_return.

  IF NOT  v_belnr_mr1m IS INITIAL.

    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

         EXPORTING

              wait = 'X'.

    MESSAGE i010 WITH v_belnr_mr1m.

    CLEAR: v_awkey.

    CONCATENATE v_belnr_mr1m v_gjahr INTO v_awkey.

    SELECT SINGLE belnr FROM bkpf INTO v_doc_miro

             WHERE   awtyp EQ 'RMRP'

               AND   awkey EQ v_awkey.

    IF v_parcela = 'X'.

      /pws/zycie006-statusp = 'C'.

      itab_zycit132-miro = 'X'.

      itab_zycit132-status = 'C'.

      itab_zycit132-belnr_mr1m = v_belnr_mr1m.

      itab_zycit132-belnr_p    = v_doc_miro.

      itab_zycit132-dt_belnrp  = sy-datum.

      itab_zycit132-hr_belnrp  = sy-uzeit.

      MODIFY itab_zycit132 TRANSPORTING  belnr_mr1m  belnr_p

                                         dt_belnrp hr_belnrp

                                         miro status

                          WHERE belnr_p EQ space.

    ELSE.

      /pws/zycie006-statusp_mr1m = 'X'.

      /pws/zycie006-statusp = 'C'.

      /pws/zycie006-belnr_mr1m = v_belnr_mr1m.

      /pws/zycie006-belnr_p    = v_doc_miro.

      /pws/zycie006-dt_belnrp  = sy-datum.

      /pws/zycie006-hr_belnrp  = sy-uzeit.

    ENDIF.

    MODIFY /pws/zycit006 FROM /pws/zycie006.

  ELSE.

    LOOP AT itab_return.

      CONCATENATE  itab_return-id itab_return-number

                   itab_return-message INTO v_mensagem

                  SEPARATED BY space.

      MESSAGE i061 WITH v_mensagem+0(50)

                        v_mensagem+50(50)

                        v_mensagem+100(50)

                        v_mensagem+150(50).

    ENDLOOP.

  ENDIF.

ENDFORM.

FORM estorn_miro_la.

  DATA: v_belnr_ant LIKE /pws/zycie006-belnr_p.

  PERFORM get_parameters_mrm1_receb.

  itab_zycie033-tcode  = 'MR8M'.

  itab_zycie033-cpochv = /pws/zycie006-nrseq.

  itab_zycie033-bukrs  = /pws/zycie006-bukrs.

  IF v_parcela = 'X'.

    itab_zycie033-tabela = '/PWS/ZYCIT132'.

    /pws/zycie006-belnr_mr1m =

    itab_zycie033-belnr  = itab_zycit132-belnr_mr1m.

    /pws/zycie006-dt_mr1m =

    itab_zycie033-budat  = itab_zycit132-dt_belnrp.

    itab_zycie033-gjahr  = itab_zycit132-dt_belnrp(4).

  ELSE.

    itab_zycie033-tabela = '/PWS/ZYCIT006'.

    /pws/zycie006-belnr_mr1m =

    itab_zycie033-belnr  = /pws/zycie006-belnr_mr1m.

    /pws/zycie006-dt_mr1m =

    itab_zycie033-budat  = /pws/zycie006-dt_belnrp.

    itab_zycie033-gjahr  = /pws/zycie006-dt_belnrp(4).

  ENDIF.

  v_belnr_ant          = itab_zycie033-belnr.

  itab_zycie033-stgrd  = /pws/zycbt007-percorr.

  IF /pws/zycbt007 IS INITIAL.

    SELECT SINGLE *

      FROM /pws/zycbt007

      WHERE bukrs EQ /pws/zycie006-bukrs.

  ENDIF.

  SELECT SINGLE *

  FROM marv

  WHERE bukrs EQ /pws/zycie006-bukrs.

  IF ( marv-vmmon EQ /pws/zycie006-dt_mr1m+04(02) AND

       marv-vmgja EQ /pws/zycie006-dt_mr1m+0(4) ) OR

     ( marv-lfmon EQ /pws/zycie006-dt_mr1m+04(02) AND

       marv-lfgja EQ /pws/zycie006-dt_mr1m+0(4) ).

    itab_zycie033-budat  = /pws/zycie006-dt_mr1m.

    itab_zycie033-stgrd  = /pws/zycbt007-percorr.

  ELSE.

    itab_zycie033-budat  = /pws/zycie006-dt_mr1m.

    itab_zycie033-stgrd  = /pws/zycbt007-perencer .

  ENDIF.

  APPEND itab_zycie033.

  CALL FUNCTION '/PWS/ZYCI_TRANSACAO_MR8M'

       EXPORTING

            v_modo          = v_modo_bi

       TABLES

            t_dados         = itab_zycie033

            t_campo         = itab_zycit034

            t_zycit032      = itab_zycit032

       EXCEPTIONS

            campo_em_branco = 1

            OTHERS          = 2.

  IF sy-subrc = 0.

    IF v_parcela = 'X'.

      READ TABLE itab_zycit032 WITH KEY tcode  = 'MR8M'

                                        tabela = '/PWS/ZYCIT132'

                                        cpochv = /pws/zycie006-nrseq

                                        tpmsg  = 'S'.

    ELSE.

      READ TABLE itab_zycit032 WITH KEY tcode  = 'MR8M'

                                        tabela = '/PWS/ZYCIT006'

                                        cpochv = /pws/zycie006-nrseq

                                        tpmsg  = 'S'.

    ENDIF.

    IF sy-subrc EQ 0.

      PERFORM fill_date_f_51_docs_miro.

      MESSAGE i030 WITH v_belnr_ant.

      IF v_parcela = 'X'.

        CLEAR: itab_zycit132.

        MODIFY itab_zycit132 TRANSPORTING  belnr_mr1m  belnr_p

                                           dt_belnrp hr_belnrp

                                           miro status

                        WHERE belnr_mr1m EQ /pws/zycie006-belnr_mr1m.

      ENDIF.

      CLEAR: /pws/zycie006-statusp_mr1m, /pws/zycie006-belnr_mr1m,

             /pws/zycie006-dt_mr1m,

             /pws/zycie006-belnr_p, itab_zycit132-status.

      PERFORM clear_date_batch.

      CLEAR v_mr1m_ok.

    ELSE.

      v_erro = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI003I01

 

...

          WHERE nrseq = /pws/zycie006-nrseqre.

        SET PARAMETER ID '/PWS/ZYCBP374'

                     FIELD /pws/zycie006-nrseqre.

        AUTHORITY-CHECK OBJECT 'S_TCODE'

                    ID 'TCD' FIELD '/PWS/ZYCB109_E'.

        IF sy-subrc EQ 0.

          CALL TRANSACTION '/PWS/ZYCB109_E' AND SKIP FIRST SCREEN

.

        ELSE.

          MESSAGE e015 WITH text-105 text-153.

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

        ENDIF.

      ELSEIF v_campo EQ '/PWS/ZYCIE006-BELNR_MR1M' AND

        NOT v_valor IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt108

          WHERE bukrs = /pws/zycie006-bukrs

            AND belnr = /pws/zycie006-nrseq.

        i_belnr = v_valor.

        i_bukrs = /pws/zycie006-bukrs.

        IF NOT /pws/zycie006-dtlanc IS INITIAL.

          CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

               EXPORTING

                    v_bukrs                = i_bukrs

                    v_date                 = /pws/zycie006-dtlanc

               IMPORTING

                    v_year                 = i_gjahr

               EXCEPTIONS

                    variante_de_exercicio  = 1

                    data_nao_encontrada    = 2

                    empresa_nao_encontrada = 3

                    period_in_not_valid    = 4

                    period_not_assigned    = 5

                    version_undefined      = 6

                    OTHERS                 = 7.

          IF sy-subrc <> 0.

            i_gjahr = /pws/zycie006-dtlanc+0(4).

            SET PARAMETER ID 'GJR' FIELD i_gjahr.

          ENDIF.

* << Fim da inclusão

        ENDIF.

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

        SET PARAMETER ID 'RBN' FIELD i_belnr.

        SET PARAMETER ID 'GJR' FIELD i_gjahr.

        AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'MIR4'.

        IF sy-subrc EQ 0.

          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.

        ELSE.

          MESSAGE e261(sf) WITH 'MIR4'.

        ENDIF.

* << Fim da inclusão

      ENDIF.

    WHEN 'DATE'.

      PERFORM alt_dt_venc_fat.

    WHEN 'FRETECLP'.

      v_freteclp = 'S'.

  ENDCASE.

ENDMODULE.

...

 

...

      /pws/zycie132-nrfat = /pws/zycie006-nrfat.

      /pws/zycie132-dt_belnrp = itab_zycit132-dt_belnrp.

      /pws/zycie132-hr_belnrp = itab_zycit132-hr_belnrp.

    ENDIF.

    READ TABLE itab_zycit132 INDEX tc_fat_parc-current_line.

    IF sy-subrc = 0.

      /pws/zycie132-dtvencto = itab_zycit132-dtvencto.

    ENDIF.

    /pws/zycie132-dt_belnrp = itab_zycit132-dt_belnrp.

    /pws/zycie132-hr_belnrp = itab_zycit132-hr_belnrp.

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

    /pws/zycie132-miro = itab_zycit132-miro.

    /pws/zycie132-belnr_mr1m = itab_zycit132-belnr_mr1m.

* << Fim da inclusão

    MOVE-CORRESPONDING /pws/zycie132 TO itab_zycit132.

    itab_zycit132-mark = v_mark.

    MODIFY itab_zycit132 INDEX tc_fat_parc-current_line.

    IF sy-subrc NE 0.

      APPEND itab_zycit132.

    ENDIF.

    v_nrparc_ant = /pws/zycie132-nrparc.

  ENDIF.

ENDMODULE.

...

 

...

        IF sy-subrc EQ 0.

          SET PARAMETER ID '/PWS/ZYCBP374'

                       FIELD /pws/zycie132-nrseqre.

          AUTHORITY-CHECK OBJECT 'S_TCODE'

                      ID 'TCD' FIELD '/PWS/ZYCB109_E'.

          IF sy-subrc EQ 0.

            CALL TRANSACTION '/PWS/ZYCB109_E' AND SKIP FIRST SCREEN

  .

          ELSE.

            MESSAGE e015 WITH text-105 text-153.

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

          ENDIF.

* << Fim da inclusão

          ENDIF.

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

      ELSEIF v_campo EQ '/PWS/ZYCIE132-BELNR_MR1M' AND

        NOT v_valor IS INITIAL.

        SELECT SINGLE * FROM /pws/zycbt108

          WHERE bukrs = /pws/zycie006-bukrs

            AND belnr = /pws/zycie006-nrseq.

        i_belnr = v_valor.

        i_bukrs = /pws/zycie006-bukrs.

        i_gjahr = /pws/zycbt108-bldat+0(4).

        IF NOT /pws/zycie006-dtlanc IS INITIAL.

          i_gjahr = /pws/zycie006-dtlanc+0(4).

        ENDIF.

        IF NOT /pws/zycie006-dtlanc IS INITIAL.

          CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

               EXPORTING

                    v_bukrs                = i_bukrs

                    v_date                 = /pws/zycie006-dtlanc

               IMPORTING

                    v_year                 = i_gjahr

               EXCEPTIONS

                    variante_de_exercicio  = 1

                    data_nao_encontrada    = 2

                    empresa_nao_encontrada = 3

                    period_in_not_valid    = 4

                    period_not_assigned    = 5

                    version_undefined      = 6

                    OTHERS                 = 7.

          IF sy-subrc <> 0.

            i_gjahr = /pws/zycie006-dtlanc+0(4).

            SET PARAMETER ID 'GJR' FIELD i_gjahr.

          ENDIF.

        ENDIF.

        SET PARAMETER ID 'RBN' FIELD i_belnr.

        SET PARAMETER ID 'GJR' FIELD i_gjahr.

        AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'MIR4'.

        IF sy-subrc EQ 0.

          CALL TRANSACTION 'MIR4' AND SKIP FIRST SCREEN.

        ELSE.

          MESSAGE e261(sf) WITH 'MIR4'.

* << Fim da inclusão

        ENDIF.

      ENDIF.

  ENDCASE.

ENDMODULE.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003O01

 

...

            screen-input = 0.

          ENDIF.

          MODIFY SCREEN.

        ENDIF.

        IF NOT itab_zycit132[] IS INITIAL AND

              ( screen-name EQ '/PWS/ZYCIE006-DTVENCTO' OR

                screen-name EQ '/PWS/ZYCIE006-DTBASE' OR

                screen-name EQ '/PWS/ZYCIE006-NRSEQ_PGFAT' OR

                screen-name EQ '/PWS/ZYCIE006-NRSEQRE' OR

                screen-name EQ '/PWS/ZYCIE006-BELNR_P' OR

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

                screen-name EQ '/PWS/ZYCIE006-BELNR_MR1M' OR

                screen-name EQ 'TEXT_MR1M' OR

* << Fim da inclusão

                screen-name EQ '/PWS/ZYCIE006-NRSEQ_PGFATX' OR

                screen-name EQ 'V_TEXTO' ).

          screen-invisible = 1.

          screen-input = 0.

        ELSEIF  ( screen-name EQ '/PWS/ZYCIE006-DTVENCTO' OR

                screen-name EQ '/PWS/ZYCIE006-DTBASE' OR

                screen-name EQ '/PWS/ZYCIE006-NRSEQ_PGFAT' OR

                screen-name EQ '/PWS/ZYCIE006-BELNR_P' OR

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

                screen-name EQ '/PWS/ZYCIE006-BELNR_MR1M' OR

                screen-name EQ 'TEXT_MR1M' OR

* << Fim da inclusão

                screen-name EQ '/PWS/ZYCIE006-NRSEQ_PGFATX' OR

                screen-name EQ 'V_TEXTO' ).

          screen-invisible = 0.

        ENDIF.

        IF NOT /pws/zycie006-belnr_p IS INITIAL.

          IF screen-name = '/PWS/ZYCIE006-ZTERM'.

            screen-input = 0.

            MODIFY SCREEN.

          ENDIF.

        ENDIF.

...

 

...

          READ TABLE itab_zycit003 INTO /pws/zycit003 INDEX 1.

          SELECT SINGLE *

            FROM /pws/zycit042

            WHERE nrseq  EQ /pws/zycit003-nrseq

              AND docnum NE ''.

          IF sy-subrc EQ 0.

            screen-input = 0.

            MODIFY SCREEN.

          ENDIF.

        ENDIF.

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

        IF ( screen-name EQ '/PWS/ZYCIE006-BELNR_MR1M' OR

             screen-name EQ 'TEXT_MR1M' ) AND

             /pws/zycit477 IS INITIAL.

          screen-active = 0 .

          screen-invisible = 1 .

          MODIFY SCREEN.

        ENDIF.

        IF  screen-name EQ '/PWS/ZYCIE006-IVA'  AND

             ( /pws/zycit477 IS INITIAL  OR

             /pws/zycie006-tpfatura EQ '01' OR

             /pws/zycie006-tpfatura IS INITIAL ).

          screen-active = 0 .

          screen-invisible = 1 .

          MODIFY SCREEN.

        ENDIF.

* << Fim da inclusão

      ENDLOOP.

      IF /pws/zycie006-vlmerc IS INITIAL AND

        /pws/zycie006-vlfre IS INITIAL AND

        /pws/zycie006-vlseg IS INITIAL.

        CLEAR /pws/zycie006-vltotal.

      ENDIF.

 

...

 

...

 

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

     /pws/zycie006-tpfatura EQ '04' .

    MOVE 'X' TO /pws/zycie006-vinserv.

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

  ENDIF.

  IF ( /pws/zycie006-tpfatura EQ '02' OR

       /pws/zycie006-tpfatura EQ '03' ) AND

     /pws/zycie006-iva IS INITIAL.

    /pws/zycie006-iva = /pws/zycit000-iva.

* << Fim da inclusão

  ENDIF.

ENDMODULE.

 

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003X01

 

...

 

* >> Início da inclusão:

 tables /pws/zycit477.

* << Fim da inclusão

data: begin of common part a.

* >> Início da inclusão:

DATA: BEGIN OF itab_rateio_parc OCCURS 0.

DATA: nrparc TYPE /pws/zycit132-nrparc,

      perc   TYPE p DECIMALS 2.

DATA: END OF itab_rateio_parc.

DATA: BEGIN OF itab_komk OCCURS 0.

        INCLUDE STRUCTURE komk.

DATA: END OF itab_komk.

DATA: BEGIN OF itab_komv OCCURS 0.

        INCLUDE STRUCTURE komv.

DATA: ebeln LIKE ekko-ebeln.

DATA: END OF itab_komv.

* << Fim da inclusão

...

 

 

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

Modificações efetuadas em TABD /PWS/ZYCIE006

 

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

 

VLFRE_CLP    WRBTR                         CURR    13

WAERS_CLP    WAERS                         CUKY     5

*Inicio da Inclusão:

IVA          /PWS/ZYCIL500 T007A           CHAR     2

*Fim da Inclusão:

 

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

Modificações efetuadas em TABD /PWS/ZYCIE132

 

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

 

...

ZTERM       DZTERM        T052         CHAR     4

NRSEQRE     /PWS/ZYCBL222              CHAR    10

*Inicio da Inclusão:

MIRO        CHAR01                     CHAR     1

BELNR_MR1M  RE_BELNR                   CHAR    10

*Fim da Inclusão:

 

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

Modificações efetuadas em TABD /PWS/ZYCIT006

 

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

 

...

VLFRE_CLP        WRBTR                         CURR    13

WAERS_CLP        WAERS                         CUKY     5

*Inicio da Inclusão:

IVA              /PWS/ZYCIL500                 CHAR     2

*Fim da Inclusão:

 

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

Modificações efetuadas em TABD /PWS/ZYCIT132

 

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

 

...

ZTERM           DZTERM                     CHAR     4

NRSEQRE         /PWS/ZYCBL222              CHAR    10

*Inicio da Inclusão:

MIRO            CHAR01                     CHAR     1

BELNR_MR1M      RE_BELNR                   CHAR    10

*Fim da Inclusão:

 

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

Modificações efetuadas em TABL /PWS/ZYCIT477

*Criar tabela:

 

Características gerais:

 

Nome da tabela     /PWS/ZYCIT477

Descrição breve    CI - CONTABILIZAÇÃO MIRO AMERICA LATINA

Ctg.tabela         Tabela transparente

Arm.bff.permitido

AtualTab.permitida X

Classe de entrega  A

 

Campos:

 

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

 

MANDT      X   MANDT                 X CLNT     3

LAND       X   LAND1                 X CHAR     3

 

 

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

Modificações efetuadas em TOBJ /PWS/ZYCIT477S

 

Gerar tela de atualização para a tabela /pws/zycit0477

 

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

Modificações efetuadas em TRAN /PWS/ZYCIT477

 

Criar Transação:

 

Tipo de transação:    Transação com parâmetro(Transação de parâmetro)

Código de transação:  /PWS/ZYCIT477

Cl.desenvolvimento:   /PWS/ZYCI

Texto da transação:   Países que utilizam fatura por MIRO

Transação:            SM30

Omitir:               X

 

 

Valores propostos:

 

Nome do campo da tela         Valor

 

VIEWNAME                /PWS/ZYCIT477

UPDATE_LTD                X