CE PLUS - Nota 002754

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Vinculação

Data/Hora da Publicação: 26/12/2006 00:00:00

Data/Hora Última Alteração: 18/02/2011 15:43:56

Descrição da Nota: VINCULAÇÃO - CONTABILIZAÇÃO DA COMISSÃO DE AGENTE CONTA GRÁFICA

Sintoma

Ao gerar a vinculação/liquidação automática de contratos de câmbio pronto, não está sendo realizada

a contabilização da comissão de agente - conta gráfica.

 

 

Solução

O programa passou a contabilizar de forma correta a comissão de agente - conta gráfica ao efetuar a

liquidação automática de contratos de câmbio pronto.

 

Versões Tratadas

6.0

Informações Complementares

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

Nota Número 02754 Data: 26/12/2006 Hora: 10:58:59

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

 

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

Nota Número              : 02754

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00026

Agrupamento              : 00145

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

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

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

VINCULAÇÃO - CONTABILIZAÇÃO DA COMISSÃO DE AGENTE CONTA GRÁFICA

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

Palavras Chave:

VINCULAÇÃO CONTABILIZAÇÃO COMISSÃO AGENTE CONTA GRÁFICA

 

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

Objetos da nota:

REPS /PWS/MZYCB009F07

REPS /PWS/MZYCB009TOP

REPT /PWS/SAPMZYCB009

 

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

Modificações efetuadas em REPS /PWS/MZYCB009F07

 

...

  ENDIF.

  IF wa_zycbt089-est_variacao IS INITIAL.

    PERFORM seleciona_zycbt030_b.

    PERFORM seleciona_zycbt045.

    PERFORM fill_date1_f30_cp.

  ELSE.

    MOVE text-038 TO v_flag_mod.

    PERFORM seleciona_paga_documento USING v_flag_mod.

    PERFORM grava_liquidacao.

    PERFORM save_changes.

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

    IF WA_ZYCBT007-LIQ_COM_CG NE 'RP'.

      PERFORM LIQUIDA_COMISSAO_DE_AGENTE.

* << Fim da inclusão

  ENDIF.

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

  ENDIF.

* << Fim da inclusão

  PERFORM grava_contabilizacao.

  IF NOT itab_erro[] IS INITIAL.

    EXPORT itab_erro TO MEMORY ID '001'.

    SUBMIT /pws/zycbr128 AND RETURN.

    REFRESH itab_erro.

  ENDIF.

...

 

...

          APPEND itab_erro.

        ENDLOOP.

      ENDIF.

    ENDIF.

  ELSE.

    LOOP AT itab_zycbt034.

      MESSAGE i016 WITH itab_zycbt034-descricao.

    ENDLOOP.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

FORM liquida_comissao_de_agente .

  LOOP AT itab_zycbt006.

    CLEAR: itab_contabil,

           itab_zycet010,

           itab_zycet013.

    REFRESH: itab_zycet010,

             itab_zycet013.

    SELECT SINGLE *

      FROM /pws/zycbt017

      WHERE nrinvoic EQ itab_zycbt006-nrinvoic

        AND nrparcf  EQ itab_zycbt006-nrparcf.

    IF /pws/zycet037-bukrs IS INITIAL.

      SELECT SINGLE *

      FROM     /pws/zycet037

      WHERE    bukrs EQ /pws/zycbe001-bukrs.

    ENDIF.

    SELECT SINGLE * FROM /pws/zycbt037

             WHERE parvw EQ /pws/zycbt017-parvw.

    IF sy-subrc NE 0.

      IF /pws/zycbt017-parvw EQ 'AD' OR

         /pws/zycbt017-parvw EQ 'DA'.

        SELECT SINGLE * FROM /pws/zycbt037

            WHERE parvw EQ 'AD' OR

                  parvw EQ 'DA'.

      ENDIF.

    ENDIF.

    CHECK /pws/zycbt037-codpad EQ 'G' OR /pws/zycbt037-codpad EQ 'D'.

    IF /pws/zycet037-comis_provisao IS INITIAL OR

       /pws/zycet037-comis_provisao EQ 0.

      SELECT *

            INTO TABLE itab_zycet010

            FROM /pws/zycet010

            WHERE nrseq   EQ itab_zycbt006-nrinvoic

              AND ( dtpagto  IS NULL

                    OR  dtpagto EQ '        '

                    OR  dtpagto EQ '00000000' ).

      LOOP AT itab_zycet010.

        IF NOT itab_zycet010-belnr IS INITIAL.

          MOVE: itab_zycet010-nrseq     TO itab_selreg-nrchave,

                itab_zycbt006-nrseqc    TO itab_selreg-docto,

                itab_zycet010-dtvencto  TO itab_selreg-dtvencto,

                itab_zycet010-vlcomis   TO itab_selreg-vlme,

                itab_zycet010-lifnr     TO itab_selreg-lifnr,

                /pws/zycbt037-codpad    TO itab_selreg-codp.

          APPEND itab_selreg.

          IF wa_zycbt007-liq_trans EQ 'R'.

            PERFORM liquida_comis_trans.

          ELSE.

            PERFORM fill_date_f30_comissao.

          ENDIF.

        ELSE.

          MOVE: itab_zycet010-nrseq TO itab_erro-vbeln,

                text-389            TO itab_erro-msg.

          APPEND itab_erro.

        ENDIF.

      ENDLOOP.

    ELSE.

      SELECT *

            INTO TABLE itab_zycet013

            FROM /pws/zycet013

            WHERE nrseq   EQ itab_zycbt006-nrinvoic

              AND gsber   EQ itab_zycbt006-gsberf

              AND ( dtpagto  IS NULL

                    OR  dtpagto EQ '        '

                    OR  dtpagto EQ '00000000' ).

      LOOP AT itab_zycet013.

        IF NOT itab_zycet013-belnr IS INITIAL.

          MOVE: itab_zycet013-nrseq     TO itab_selreg-nrchave,

                itab_zycbt006-nrseqc    TO itab_selreg-docto,

                itab_zycet013-vlme      TO itab_selreg-vlme,

                itab_zycet013-lifnr     TO itab_selreg-lifnr,

                /pws/zycbt037-codpad    TO itab_selreg-codp.

          APPEND itab_selreg.

          IF wa_zycbt007-liq_trans EQ 'R'.

            PERFORM liquida_comis_trans.

          ELSE.

            PERFORM fill_date_f30_comissao.

          ENDIF.

        ELSE.

          MOVE: itab_zycet013-nrseq TO itab_erro-vbeln,

                text-389            TO itab_erro-msg.

          APPEND itab_erro.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDLOOP.

  IF NOT itab_contabil[] IS INITIAL.

    EXPORT itab_contabil TO MEMORY ID '040'.

    EXPORT text-394 TO MEMORY ID '050'.

    SUBMIT /pws/zycbr040 AND RETURN.

    REFRESH itab_contabil.

  ENDIF.

  IF NOT itab_erro[] IS INITIAL.

    EXPORT itab_erro TO MEMORY ID '001'.

    SUBMIT /pws/zycbr126 AND RETURN.

    REFRESH itab_erro.

  ENDIF.

ENDFORM.

FORM liquida_comis_trans .

  DATA:

    v_chave(50)     TYPE C,

    v_erro_f28(1)   TYPE C,

    v_aux           TYPE C,

    v_status_f30(1) TYPE C VALUE 'E'.

  PERFORM clear_date_batch.

  CLEAR: itab_zycbt032a, itab_zycbt036.

  REFRESH: itab_zycbt032a, itab_zycbt036.

  PERFORM get_parameters_comissao.

  IF wa_zycbt007-comis = 'C'.

    READ TABLE itab_zycbt012a WITH KEY chlanc = 'C'.

  ENDIF.

  PERFORM verifica_rateio1.

  LOOP AT itab_aux.

    CLEAR v_chave.

    IF itab_aux-flag NE 'X'.

      itab_zycbe033-newbs   = '40'.

    ELSE.

      itab_zycbe033-newbs = '50'.

    ENDIF.

    IF wa_zycbt007-comis = 'C'.

      itab_zycbe033-d_newko = itab_zycbt012a-saknr1.

    ELSE.

      itab_zycbe033-d_newko = itab_zycbt012-saknr2.

    ENDIF.

    PERFORM verify_null_field USING itab_zycbe033-d_newko

                                             'KONTO'

                                             text-011.

    itab_zycbe033-agkoa   = 'D'.

    itab_zycbe033-agkon = /pws/zycbt017-kunag.

    PERFORM verify_null_field USING itab_zycbe033-agkon

                                             'AGKON'

                                             text-014.

    PERFORM dados_batch_comis.

    CONCATENATE itab_aux-nrinvoic itab_aux-vbeln itab_aux-gsberf

    INTO v_chave.

    itab_zycbe033-cpochv  = v_chave.

    PERFORM valor_baixar_comissao.

    v_valorc = itab_zycbe033-wrbtr.

    PERFORM verify_null_field USING itab_aux-belnr6

                                            'BELNR'

                                          text-044.

    itab_zycbe033-belnr  = itab_aux-belnr6.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

      EXPORTING

        v_bukrs                = itab_zycbt006-bukrs

        v_date                 = itab_zycet010-dtlanc

      IMPORTING

        v_year                 = v_year

      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.

    SELECT SINGLE * FROM bkpf

       WHERE bukrs = itab_zycbt006-bukrs

         AND belnr = itab_aux-belnr6

         AND gjahr = v_year.

    itab_zycbe033-dtdocto = bkpf-budat.

    IF itab_zycbe033-wrbtr GT 0.

      APPEND itab_zycbe033.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

    erro_bi = 'X'.

  ENDLOOP.

  CLEAR sy-subrc.

  IF itab_zycbt034 IS INITIAL.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'

      EXPORTING

        v_modo          = v_modo_bi

      TABLES

        t_dados         = itab_zycbe033

        t_campo         = itab_zycbt034

        t_zycbt032      = itab_zycbt032

      EXCEPTIONS

        campo_em_branco = 1

        periodo_fechado = 2

        OTHERS          = 3.

    CLEAR v_erro_f28.

    IF sy-subrc = 0.

      CLEAR v_aux.

      LOOP AT itab_aux.

        CONCATENATE itab_aux-nrinvoic

        itab_aux-nrparcf

        itab_aux-vbeln itab_aux-gsberf

        INTO v_chave.

        READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                          tabela = '/PWS/ZYCET010'

                                          cpochv = v_chave

                                          tpmsg  = 'S'.

        IF sy-subrc = 0.

          itab_zycbt030-belnr6 = itab_zycbt032-belnr.

          READ TABLE itab_zycbe033 WITH KEY cpochv = v_chave.

          itab_zycbt030-budat  = itab_zycbe033-budat.

          MODIFY itab_zycbt030 TRANSPORTING belnr6 budat

                 WHERE nrinvoic = itab_aux-nrinvoic

                   AND nrparcf  = itab_aux-nrparcf

                   AND vbeln    = itab_aux-vbeln

                   AND gsberf   = itab_aux-gsberf.

          UPDATE /pws/zycbt030 SET: belnr6 = itab_zycbt032-belnr

                              budat  = itab_zycbe033-budat

                      WHERE nrinvoic = itab_aux-nrinvoic

                        AND nrparcf  = itab_aux-nrparcf

                        AND vbeln    = itab_aux-vbeln

                        AND gsberf   = itab_aux-gsberf.

          IF /pws/zycet037-comis_provisao IS INITIAL OR

             /pws/zycet037-comis_provisao EQ 0.

            IF v_subrc EQ 0.

              itab_zycet010-status  = 'C'.

              itab_zycet010-belnr_p = itab_zycbt032-belnr.

              itab_zycet010-dtpagto = itab_zycbt006-dtpagto.

              MODIFY itab_zycet010 TRANSPORTING status belnr_p dtpagto

                       WHERE nrseq    = itab_zycet010-nrseq

                         AND lifnr    = itab_zycet010-lifnr

                         AND dtvencto = itab_zycet010-dtvencto.

            ELSE.

              itab_zycet010-belnr   = itab_zycbt032-belnr.

              itab_zycet010-status  = space.

              itab_zycet010-dtpagto = '00000000'.

              MODIFY itab_zycet010 TRANSPORTING belnr status dtpagto

                       WHERE nrseq    = itab_zycet010-nrseq

                         AND lifnr    = itab_zycet010-lifnr

                         AND dtvencto = itab_zycet010-dtvencto.

            ENDIF.

            MODIFY /pws/zycet010 FROM itab_zycet010.

          ELSE.

            IF v_subrc EQ 0.

              itab_zycet013-status  = 'C'.

              itab_zycet013-belnr_c = itab_zycbt032-belnr.

              itab_zycet013-dtpagto = itab_zycbt006-dtpagto.

              MODIFY itab_zycet013 TRANSPORTING status

                                                belnr_c

                                                dtpagto

                       WHERE nrseq    = itab_zycet013-nrseq

                         AND lifnr    = itab_zycet013-lifnr

                         AND gsber    = itab_zycet013-gsber

                         AND prctr    = itab_zycet013-prctr.

            ELSE.

              itab_zycet013-belnr   = itab_zycbt032-belnr.

              itab_zycet013-status  = space.

              itab_zycet013-dtpagto = '00000000'.

              MODIFY itab_zycet013 TRANSPORTING status

                                                belnr

                                                dtpagto

                       WHERE nrseq    = itab_zycet013-nrseq

                         AND lifnr    = itab_zycet013-lifnr

                         AND gsber    = itab_zycet013-gsber

                         AND prctr    = itab_zycet013-prctr.

            ENDIF.

            MODIFY /pws/zycet013 FROM itab_zycet013.

          ENDIF.

          MOVE itab_zycbt032 TO itab_zycbt032a.

          MOVE itab_zycbe033-budat TO itab_zycbt032a-budat.

          APPEND itab_zycbt032a.

          CLEAR itab_doc_f02.

          MOVE itab_zycbt032-belnr TO itab_doc_f02-docto.

          APPEND itab_doc_f02.

          v_status_f30 = 'S'.

          COMMIT WORK.

          itab_contabil-nrinvoic = itab_aux-nrinvoic.

          itab_contabil-nrparcf  = itab_aux-nrparcf.

          itab_contabil-vbeln    = itab_aux-vbeln.

          itab_contabil-gsberf   = itab_aux-gsberf.

          itab_contabil-docto    = itab_zycbt032-belnr.

          itab_contabil-dtdocto  = itab_zycbt006-dtpagto.

          itab_contabil-bukrs    = itab_zycbt006-bukrs.

          itab_contabil-msg      = text-390.

          APPEND itab_contabil.

          v_aux = '1'.

          READ TABLE itab_zycbe033 WITH KEY cpochv = v_chave.

          itab_zycbt077-belnr = itab_zycbt032-belnr.

          itab_zycbt077-bukrs = itab_zycbe033-bukrs.

          itab_zycbt077-gjahr = itab_zycbe033-budat(4).

          itab_zycbt077-status = 'C'.

          itab_zycbt077-tcode = itab_zycbt032-tcode.

          CONCATENATE '004' itab_selreg-codp INTO

                itab_zycbt077-codeven.

          itab_zycbt077-codmod = 'E'.

          itab_zycbt077-nrseqc = /pws/zycbe005-nrseqc.

          itab_zycbt077-gsberf = itab_aux-gsberf.

          itab_zycbt077-dtvincul = /pws/zycbe005-dtvincul.

          itab_zycbt077-nrinvoic = itab_aux-nrinvoic.

          itab_zycbt077-nrparcf  = itab_aux-nrparcf.

          itab_zycbt077-dtpagto  = itab_zycbt006-dtpagto.

          itab_zycbt077-vbeln    = itab_aux-vbeln.

        ELSE.

          v_erro_f28 = 'X'.

          itab_contabil-nrinvoic = itab_aux-nrinvoic.

          itab_contabil-nrparcf  = itab_aux-nrparcf.

          itab_contabil-vbeln    = itab_aux-vbeln.

          itab_contabil-gsberf   = itab_aux-gsberf.

          itab_contabil-msg      = text-391.

          APPEND itab_contabil.

        ENDIF.

      ENDLOOP.

      IF v_aux EQ '1'.

        CLEAR v_aux.

      ELSE.

        CLEAR v_erro_f28.

        LOOP AT itab_zycbt032.

          MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                  itab_zycbt032-msg+50(50).

        ENDLOOP.

      ENDIF.

      IF v_status_f30 EQ 'S'.

        PERFORM executa_clearing_agente.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      erro_bi = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.

FORM executa_clearing_agente .

  PERFORM clear_date_batch.

  CLEAR itab_zycbt036.

  REFRESH itab_zycbt036.

  CONCATENATE itab_selreg-nrchave

              itab_selreg-lifnr

         INTO v_cpochv.

  itab_zycbe033-tcode  = 'F-30'.

  itab_zycbe033-tabela = '/PWS/ZYCBT006'.

  itab_zycbe033-cpochv = v_cpochv.

  PERFORM verify_null_field USING itab_zycbt006-dtpagto

                                 'DTPAGTO'

                                  text-003.

  itab_zycbe033-budat  = itab_zycbt006-dtpagto.

  PERFORM verify_null_field USING wa_zycbt011-blart

                                            'BLART'

                                          text-050.

  itab_zycbe033-blart   = wa_zycbt011-blart.

  itab_zycbe033-bktxt   = wa_zycbt007-bktxt.

  itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

  itab_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

  PERFORM verifica_data_taxa.

  PERFORM define_cambio USING v_databl

                              itab_zycbt006-waers

                              wa_zycbt007-waersb

                              itab_zycbe033-kursf.

  PERFORM verify_null_field USING itab_zycbe033-kursf

                                  'TXCAMB'

                                  text-051.

  IF wa_zycbt007-fdtdoc   = 'D'.

    itab_zycbe033-bldat   = sy-datum.

    itab_zycbe033-d_valut = sy-datum.

  ELSE.

    itab_zycbe033-bldat   = itab_zycbe033-budat.

    itab_zycbe033-d_valut = itab_zycbe033-budat.

  ENDIF.

  LOOP AT itab_zycbt013.

    CASE itab_zycbt013-cpor3.

      WHEN 'XBLNR'.

        CASE itab_zycbt013-cpocb.

          WHEN 'NRCONTR'.

            itab_zycbe033-xblnr = itab_zycbt006-nrcontr.

          WHEN 'NRSEQC'.

            itab_zycbe033-xblnr = itab_zycbt006-nrseqc.

          WHEN 'NRINVOIC'.

            itab_zycbe033-xblnr = itab_zycbt006-nrinvoic.

        ENDCASE.

      WHEN 'ZUONR'.

        CASE itab_zycbt013-cpocb.

          WHEN 'NRCONTR'.

            itab_zycbe033-d_zuonr = itab_zycbt006-nrcontr.

            itab_zycbe033-c_zuonr = itab_zycbt005-nrinvoic.

          WHEN 'NRSEQC'.

            itab_zycbe033-d_zuonr = itab_zycbt006-nrseqc.

            itab_zycbe033-c_zuonr = itab_zycbt006-nrseqc.

          WHEN 'NRINVOIC'.

            itab_zycbe033-d_zuonr = itab_zycbt006-nrinvoic.

            itab_zycbe033-c_zuonr = itab_zycbt006-nrinvoic.

        ENDCASE.

    ENDCASE.

  ENDLOOP.

  PERFORM verify_null_field USING itab_zycbt006-bukrs

                                         'BUKRS'

                                       text-004.

  itab_zycbe033-bukrs  = itab_zycbt006-bukrs.

  PERFORM verify_null_field USING /pws/zycbt017-waers

                                         'WAERS'

                                       text-049.

  itab_zycbe033-waers  = /pws/zycbt017-waers.

  IF itab_zycbt006-ftxt IS INITIAL.

    itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

  ELSE.

    itab_zycbe033-augtx   = itab_zycbt006-txtinf.

  ENDIF.

  itab_zycbe033-c_gsber = itab_zycbt006-gsberf.

  itab_zycbe033-d_gsber = itab_zycbt006-gsberf.

  IF wa_zycbt007-comis = 'A' OR wa_zycbt007-comis = ' '.

    itab_zycbe033-agkon = itab_selreg-lifnr.

    itab_zycbe033-agkoa = 'K'.

  ELSE.

    itab_zycbe033-agkoa = 'S'.

    itab_zycbe033-agkon = itab_zycbt012a-saknr1.

  ENDIF.

  IF wa_zycbt007-liq_trans EQ 'R'.

    itab_zycbe033-d_newko = itab_zycbt012-saknr2.

    itab_zycbe033-newbs   = '50'.

    itab_zycbe033-agkon   = itab_selreg-lifnr.

    itab_zycbe033-agkoa   = 'K'.

    itab_zycbe033-wrbtr   = v_valorc.

    itab_zycbe033-belnr = itab_zycet010-belnr.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

      EXPORTING

        v_bukrs                = itab_zycbt006-bukrs

        v_date                 = itab_zycet010-dtlanc

      IMPORTING

        v_year                 = v_year

      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.

    SELECT SINGLE * FROM bkpf

       WHERE bukrs = itab_zycbt006-bukrs

         AND belnr = itab_zycet010-belnr

         AND gjahr = v_year.

  ENDIF.

  APPEND itab_zycbe033.

  IF v_subrc EQ 0.

    itab_zycbt036-tcode   = 'F-30'.

    itab_zycbt036-tabela  = '/PWS/ZYCBT006'.

    itab_zycbt036-cpochv  = v_cpochv.

    IF /pws/zycet037-comis_provisao IS INITIAL OR

       /pws/zycet037-comis_provisao EQ 0.

      itab_zycbt036-belnr   = itab_zycet010-belnr.

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

        EXPORTING

          v_bukrs                = itab_zycbt006-bukrs

          v_date                 = itab_zycet010-dtlanc

        IMPORTING

          v_year                 = v_year

        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.

      SELECT SINGLE * FROM bkpf

         WHERE bukrs = itab_zycbt006-bukrs

           AND belnr = itab_zycet010-belnr

           AND gjahr = v_year.

    ELSE.

      itab_zycbt036-belnr   = itab_zycet013-belnr.

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

        EXPORTING

          v_bukrs                = itab_zycbt006-bukrs

          v_date                 = itab_zycet013-dtlanc

        IMPORTING

          v_year                 = v_year

        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.

      SELECT SINGLE * FROM bkpf

         WHERE bukrs = itab_zycbt006-bukrs

           AND belnr = itab_zycet013-belnr

           AND gjahr = v_year.

    ENDIF.

    itab_zycbt036-dtdocto = bkpf-budat.

    APPEND itab_zycbt036.

  ENDIF.

  IF wa_zycbt007-liq_trans NE 'R'.

    LOOP AT itab_zycbt032a WHERE tpmsg = 'S'.

      itab_zycbt036-tcode  = 'F-30'.

      itab_zycbt036-tabela = '/PWS/ZYCBT006'.

      itab_zycbt036-cpochv = v_cpochv.

      itab_zycbt036-belnr  = itab_zycbt032a-belnr.

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

        EXPORTING

          v_bukrs                = itab_zycbt006-bukrs

          v_date                 = itab_zycbt032a-budat

        IMPORTING

          v_year                 = v_year

        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.

      SELECT SINGLE * FROM bkpf

         WHERE bukrs = itab_zycbt006-bukrs

           AND belnr = itab_zycbt032a-belnr

           AND gjahr = v_year.

      itab_zycbt036-dtdocto = bkpf-budat.

      APPEND itab_zycbt036.

    ENDLOOP.

  ENDIF.

  IF itab_zycbt034 IS INITIAL.

    IF wa_zycbt007-liq_trans EQ 'R'.

      CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'

        EXPORTING

          v_modo          = v_modo_bi

        TABLES

          t_dados         = itab_zycbe033

          t_campo         = itab_zycbt034

          t_zycbt032      = itab_zycbt032

          t_zycbt036      = itab_zycbt036

        EXCEPTIONS

          campo_em_branco = 1

          periodo_fechado = 2

          OTHERS          = 3.

    ELSE.

      CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30'

        EXPORTING

          v_modo          = v_modo_bi

        TABLES

          t_dados         = itab_zycbe033

          t_campo         = itab_zycbt034

          t_zycbt032      = itab_zycbt032

          t_zycbt036      = itab_zycbt036

        EXCEPTIONS

          campo_em_branco = 1

          periodo_fechado = 2

          OTHERS          = 3.

    ENDIF.

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                            tabela = '/PWS/ZYCBT006'

                                            cpochv = v_cpochv

                                            tpmsg  = 'S'.

      IF sy-subrc = 0.

        IF /pws/zycet037-comis_provisao IS INITIAL OR

           /pws/zycet037-comis_provisao EQ 0.

          IF v_subrc EQ 0.

            itab_zycet010-belnr51 = itab_zycbt032-belnr.

            MODIFY itab_zycet010 TRANSPORTING belnr51

                     WHERE nrseq    = itab_zycet010-nrseq

                       AND lifnr    = itab_zycet010-lifnr

                       AND dtvencto = itab_zycet010-dtvencto.

          ELSE.

            itab_zycet010-belnr   = itab_zycbt032-belnr.

            itab_zycet010-dtlanc  = itab_zycbe033-budat.

            itab_zycet010-status  = space.

            itab_zycet010-dtpagto = '00000000'.

            itab_zycet010-belnr51 = space.

            itab_zycet010-belnr_p = space.

            MODIFY itab_zycet010 TRANSPORTING belnr

                                              dtlanc

                                              status

                                              dtpagto

                                              belnr51

                                              belnr_p

                   WHERE nrseq    = itab_zycet010-nrseq AND

                         lifnr    = itab_zycet010-lifnr AND

                         dtvencto = itab_zycet010-dtvencto.

          ENDIF.

          MODIFY /pws/zycet010 FROM itab_zycet010.

        ELSE.

          IF v_subrc EQ 0.

            itab_zycet013-belnr_cl = itab_zycbt032-belnr.

            MODIFY itab_zycet013 TRANSPORTING belnr_cl

                     WHERE nrseq   = itab_zycet013-nrseq

                       AND gsber   = itab_zycet013-gsber

                       AND lifnr   = itab_zycet013-lifnr

                       AND prctr   = itab_zycet013-prctr.

          ELSE.

            itab_zycet013-belnr    = itab_zycbt032-belnr.

            itab_zycet013-dtlanc  = itab_zycbe033-budat.

            itab_zycet013-status   = space.

            itab_zycet013-dtpagto  = '00000000'.

            itab_zycet013-belnr_cl = space.

            itab_zycet013-belnr_c  = space.

            MODIFY itab_zycet013 TRANSPORTING belnr

                                              dtlanc

                                              status

                                              dtpagto

                                              belnr_cl

                                              belnr_c

                     WHERE nrseq = itab_zycet013-nrseq

                       AND gsber = itab_zycet013-gsber

                       AND lifnr = itab_zycet013-lifnr

                       AND prctr = itab_zycet013-prctr.

          ENDIF.

          MODIFY /pws/zycet013 FROM itab_zycet013.

        ENDIF.

        IF v_subrc EQ 0.

          itab_zycbt006-vlcomis = /pws/zycbt017-vlcomis.

        ELSE.

          itab_zycbt006-vlcomis = space.

        ENDIF.

        UPDATE /pws/zycbt006 SET vlcomis = itab_zycbt006-vlcomis

                   WHERE nrseqc   = itab_zycbt006-nrseqc

                     AND nrinvoic = itab_zycbt006-nrinvoic

                     AND nrparcf  = itab_zycbt006-nrparcf

                     AND gsberf   = itab_zycbt006-gsberf

                     AND dtvincul = itab_zycbt006-dtvincul

                     AND dtpagto  = itab_zycbt006-dtpagto.

        COMMIT WORK.

        itab_contabil-vbeln    = itab_zycbt006-nrinvoic.

        itab_contabil-nrparcf  = itab_zycbt006-nrparcf.

        itab_contabil-gsberf   = itab_zycbt006-gsberf.

        itab_contabil-docto    = itab_zycbt032-belnr.

        itab_contabil-dtdocto  = itab_zycbe033-budat.

        itab_contabil-bukrs    = itab_zycbt006-bukrs.

        itab_contabil-msg      = text-114.

        APPEND itab_contabil.

        itab_zycbt077-belnr = itab_zycbt032-belnr.

        itab_zycbt077-bukrs = itab_zycbe033-bukrs.

        itab_zycbt077-gjahr = itab_zycbe033-budat(4).

        IF v_subrc EQ 0.

          itab_zycbt077-status = 'C'.

        ELSE.

          itab_zycbt077-status = 'E'.

        ENDIF.

        itab_zycbt077-tcode = itab_zycbt032-tcode.

        CONCATENATE '004' itab_selreg-codp INTO

              itab_zycbt077-codeven.

        itab_zycbt077-codmod = 'C'.

        itab_zycbt077-nrseqc = /pws/zycbe005-nrseqc.

        itab_zycbt077-gsberf = itab_zycbt006-gsberf.

        itab_zycbt077-dtvincul = /pws/zycbe005-dtvincul.

        itab_zycbt077-nrinvoic = itab_zycbt006-nrinvoic.

        itab_zycbt077-nrparcf  = itab_zycbt006-nrparcf.

        itab_zycbt077-dtpagto  = itab_zycbt006-dtpagto.

        CLEAR itab_doc_f02.

        MOVE itab_zycbt032-belnr TO itab_doc_f02-docto.

        APPEND itab_doc_f02.

      ELSE.

        LOOP AT itab_zycbt032 WHERE tcode  = 'F-30'

                                AND tabela = '/PWS/ZYCBT006'

                                AND cpochv = v_cpochv.

          itab_erro-vbeln = itab_zycbt030-vbeln.

          itab_erro-msg   = itab_zycbt032-msg.

          APPEND itab_erro.

        ENDLOOP.

        IF sy-subrc EQ 0.

          itab_contabil-vbeln    = itab_zycbt006-nrinvoic.

          itab_contabil-nrparcf  = itab_zycbt006-nrparcf.

          itab_contabil-gsberf   = itab_zycbt006-gsberf.

          itab_contabil-msg      = text-395.

          APPEND itab_contabil.

        ENDIF.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDFORM.

FORM verifica_data_taxa .

  DATA v_belnr TYPE /pws/zycbt030-belnr.

  IF /pws/zycbe001-tpcontr(1) EQ 'C'.

    IF wa_zycbt007-dtliqcp EQ 'DTEMB'.

      SELECT SINGLE * FROM /pws/zycbt017

        WHERE nrinvoic EQ itab_zycbt006-nrinvoic

          AND nrparcf  EQ itab_zycbt006-nrparcf

          AND gsberf   EQ itab_zycbt006-gsberf.

      v_databl = /pws/zycbt017-dtbl.

    ELSE.

      v_databl = itab_zycbt006-dtpagto.

    ENDIF.

  ELSE.

    IF wa_zycbt007-dtliquid = 'DTEMB'.

      SELECT SINGLE * FROM /pws/zycbt017

        WHERE nrinvoic EQ itab_zycbt006-nrinvoic

          AND nrparcf  EQ itab_zycbt006-nrparcf

          AND gsberf   EQ itab_zycbt006-gsberf.

      v_databl = /pws/zycbt017-dtbl.

    ELSEIF wa_zycbt007-dtliquid EQ 'TXFAT'.

      SELECT SINGLE dtemb

           FROM /pws/zycet001

           INTO v_dtemb

           WHERE nrseq EQ itab_zycbt006-nrinvoic.

      SELECT SINGLE belnr

             FROM /pws/zycbt030

             INTO v_belnr

              WHERE nrinvoic EQ itab_zycbt006-nrinvoic AND

                    gsberf   EQ itab_zycbt006-gsberf   AND

                    nrparcf  EQ itab_zycbt006-nrparcf.

      IF NOT v_belnr IS INITIAL AND

         NOT v_dtemb IS INITIAL.

        CLEAR v_year.

        CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

          EXPORTING

            v_bukrs                = itab_zycbt006-bukrs

            v_date                 = v_dtemb

          IMPORTING

            v_year                 = v_year

          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.

        SELECT SINGLE kursf FROM bkpf INTO itab_zycbe033-kursf

          WHERE bukrs = itab_zycbt006-bukrs AND

                belnr = v_belnr             AND

                gjahr = v_year.

      ENDIF.

      CLEAR v_databl.

    ELSE.

      v_databl = itab_zycbt006-dtpagto.

    ENDIF.

  ENDIF.

ENDFORM.

FORM fill_date_f30_comissao .

  DATA: v_chave(50)     TYPE C,

        v_erro_f28(1)   TYPE C,

        v_aux(1)        TYPE C,

        v_status_f30(1) TYPE C VALUE 'E'.

  PERFORM clear_date_batch.

  CLEAR: itab_zycbt032a, itab_zycbt036.

  REFRESH: itab_zycbt032a, itab_zycbt036.

  PERFORM get_parameters_comissao.

  IF wa_zycbt007-comis = 'C'.

    READ TABLE itab_zycbt012a WITH KEY chlanc = 'C'.

  ENDIF.

  PERFORM verifica_rateio1.

  LOOP AT itab_aux.

    CLEAR v_chave.

    IF itab_aux-flag NE 'X'.

      IF wa_zycbt007-comis = 'C'.

        itab_zycbe033-newbs   = '40'.

      ELSE.

        itab_zycbe033-newbs   = '21'.

      ENDIF.

    ELSE.

      IF wa_zycbt007-comis = 'C'.

        itab_zycbe033-newbs   = '50'.

      ELSE.

        itab_zycbe033-newbs = '31'.

      ENDIF.

    ENDIF.

    IF wa_zycbt007-comis = 'C'.

      itab_zycbe033-d_newko = itab_zycbt012a-saknr1.

    ELSE.

      itab_zycbe033-d_newko = itab_selreg-lifnr.

    ENDIF.

    PERFORM verify_null_field USING itab_zycbe033-d_newko

                                             'KONTO'

                                             text-011.

    itab_zycbe033-agkoa   = 'D'.

    itab_zycbe033-agkon = /pws/zycbt017-kunag.

    PERFORM verify_null_field USING itab_zycbe033-agkon

                                             'AGKON'

                                             text-014.

    PERFORM dados_batch_comis.

    CONCATENATE itab_aux-nrinvoic

                itab_aux-nrparcf

                itab_aux-vbeln itab_aux-gsberf INTO v_chave.

    itab_zycbe033-cpochv  = v_chave.

    PERFORM valor_baixar_comissao.

    PERFORM verify_null_field USING itab_aux-belnr6

                                            'BELNR'

                                          text-044.

    itab_zycbe033-belnr  = itab_aux-belnr6.

    CLEAR v_year.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

      EXPORTING

        v_bukrs                = itab_zycbt006-bukrs

        v_date                 = itab_aux-budat

      IMPORTING

        v_year                 = v_year

      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.

    SELECT SINGLE * FROM bkpf

       WHERE bukrs = itab_zycbt006-bukrs

         AND belnr = itab_aux-belnr6

         AND gjahr = v_year.

    itab_zycbe033-dtdocto = bkpf-budat.

    IF itab_zycbe033-wrbtr GT 0.

      APPEND itab_zycbe033.

    ENDIF.

  ENDLOOP.

  LOOP AT itab_zycbt034.

    MESSAGE i016 WITH itab_zycbt034-descricao.

    erro_bi = 'X'.

  ENDLOOP.

  CLEAR sy-subrc.

  IF itab_zycbt034 IS INITIAL.

    CALL FUNCTION '/PWS/ZYCB_TRANSACAO_F_30_A'

      EXPORTING

        v_modo          = v_modo_bi

        v_vlt           = 'X'

      TABLES

        t_dados         = itab_zycbe033

        t_campo         = itab_zycbt034

        t_zycbt032      = itab_zycbt032

      EXCEPTIONS

        campo_em_branco = 1

        periodo_fechado = 2

        OTHERS          = 3.

    CLEAR v_erro_f28.

    IF sy-subrc = 0.

      CLEAR v_aux.

      LOOP AT itab_aux.

        CONCATENATE itab_aux-nrinvoic

                    itab_aux-nrparcf

                    itab_aux-vbeln itab_aux-gsberf

        INTO v_chave.

        READ TABLE itab_zycbt032 WITH KEY tcode  = 'F-30'

                                          tabela = '/PWS/ZYCET010'

                                          cpochv = v_chave

                                          tpmsg  = 'S'.

        IF sy-subrc = 0.

          itab_zycbt030-belnr6 = itab_zycbt032-belnr.

          READ TABLE itab_zycbe033 WITH KEY cpochv = v_chave.

          itab_zycbt030-budat  = itab_zycbe033-budat.

          MODIFY itab_zycbt030 TRANSPORTING belnr6 budat

                 WHERE nrinvoic = itab_aux-nrinvoic

                   AND nrparcf  = itab_aux-nrparcf

                   AND vbeln    = itab_aux-vbeln

                   AND gsberf   = itab_aux-gsberf.

          UPDATE /pws/zycbt030 SET: belnr6 = itab_zycbt032-belnr

                               budat  = itab_zycbe033-budat

                      WHERE nrinvoic = itab_aux-nrinvoic

                        AND nrparcf  = itab_aux-nrparcf

                        AND vbeln    = itab_aux-vbeln

                        AND gsberf   = itab_aux-gsberf.

          IF /pws/zycet037-comis_provisao IS INITIAL OR

             /pws/zycet037-comis_provisao EQ 0.

            IF v_subrc EQ 0.

              itab_zycet010-status  = 'C'.

              itab_zycet010-belnr_p = itab_zycbt032-belnr.

              itab_zycet010-dtpagto = itab_zycbt006-dtpagto.

              MODIFY itab_zycet010 TRANSPORTING status belnr_p dtpagto

                       WHERE nrseq    = itab_zycet010-nrseq

                         AND lifnr    = itab_zycet010-lifnr

                         AND dtvencto = itab_zycet010-dtvencto.

            ELSE.

              itab_zycet010-belnr   = itab_zycbt032-belnr.

              itab_zycet010-status  = space.

              itab_zycet010-dtpagto = '00000000'.

              MODIFY itab_zycet010 TRANSPORTING belnr status dtpagto

                       WHERE nrseq    = itab_zycet010-nrseq

                         AND lifnr    = itab_zycet010-lifnr

                         AND dtvencto = itab_zycet010-dtvencto.

            ENDIF.

            MODIFY /pws/zycet010 FROM itab_zycet010.

          ELSE.

            IF v_subrc EQ 0.

              itab_zycet013-status  = 'C'.

              itab_zycet013-belnr_c = itab_zycbt032-belnr.

              itab_zycet013-dtpagto = itab_zycbt006-dtpagto.

              MODIFY itab_zycet013 TRANSPORTING status

                                                belnr_c

                                                dtpagto

                       WHERE nrseq    = itab_zycet013-nrseq

                         AND lifnr    = itab_zycet013-lifnr

                         AND gsber    = itab_zycet013-gsber

                         AND prctr    = itab_zycet013-prctr.

            ELSE.

              itab_zycet013-belnr   = itab_zycbt032-belnr.

              itab_zycet013-status  = space.

              itab_zycet013-dtpagto = '00000000'.

              MODIFY itab_zycet013 TRANSPORTING status

                                                belnr

                                                dtpagto

                       WHERE nrseq    = itab_zycet013-nrseq

                         AND lifnr    = itab_zycet013-lifnr

                         AND gsber    = itab_zycet013-gsber

                         AND prctr    = itab_zycet013-prctr.

            ENDIF.

            MODIFY /pws/zycet013 FROM itab_zycet013.

          ENDIF.

          MOVE itab_zycbt032 TO itab_zycbt032a.

          MOVE itab_zycbe033-budat TO itab_zycbt032a-budat.

          APPEND itab_zycbt032a.

          v_status_f30 = 'S'.

          COMMIT WORK.

          itab_contabil-nrinvoic = itab_aux-nrinvoic.

          itab_contabil-nrparcf  = itab_aux-nrparcf.

          itab_contabil-vbeln    = itab_aux-vbeln.

          itab_contabil-gsberf   = itab_aux-gsberf.

          itab_contabil-docto    = itab_zycbt032-belnr.

          itab_contabil-dtdocto  = itab_zycbt006-dtpagto.

          itab_contabil-bukrs    = itab_zycbt006-bukrs.

          itab_contabil-msg      = text-388.

          APPEND itab_contabil.

          v_aux = '1'.

          READ TABLE itab_zycbe033 WITH KEY cpochv = v_chave.

          itab_zycbt077-belnr = itab_zycbt032-belnr.

          itab_zycbt077-bukrs = itab_zycbe033-bukrs.

          itab_zycbt077-gjahr = itab_zycbe033-budat(4).

          itab_zycbt077-status = 'C'.

          itab_zycbt077-tcode = itab_zycbt032-tcode.

          CONCATENATE '004' itab_selreg-codp INTO

                itab_zycbt077-codeven.

          itab_zycbt077-codmod = 'E'.

          itab_zycbt077-nrseqc = /pws/zycbe005-nrseqc.

          itab_zycbt077-gsberf = itab_aux-gsberf.

          itab_zycbt077-dtvincul = /pws/zycbe005-dtvincul.

          itab_zycbt077-nrinvoic = itab_aux-nrinvoic.

          itab_zycbt077-nrparcf  = itab_aux-nrparcf.

          itab_zycbt077-dtpagto  = itab_zycbt006-dtpagto.

          itab_zycbt077-vbeln    = itab_aux-vbeln.

        ELSE.

          v_erro_f28 = 'X'.

          itab_contabil-nrinvoic = itab_aux-nrinvoic.

          itab_contabil-nrparcf  = itab_aux-nrparcf.

          itab_contabil-vbeln    = itab_aux-vbeln.

          itab_contabil-gsberf   = itab_aux-gsberf.

          itab_contabil-msg      = text-391.

          APPEND itab_contabil.

        ENDIF.

      ENDLOOP.

      IF v_aux EQ '1'.

        CLEAR v_aux.

      ELSE.

        CLEAR v_erro_f28.

        LOOP AT itab_zycbt032.

          MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                  itab_zycbt032-msg+50(50).

        ENDLOOP.

      ENDIF.

      IF v_status_f30 EQ 'S'.

        PERFORM executa_clearing_agente.

      ENDIF.

    ELSE.

      LOOP AT itab_zycbt034.

        MESSAGE i016 WITH itab_zycbt034-descricao.

      ENDLOOP.

      erro_bi = 'X'.

    ENDIF.

  ENDIF.

ENDFORM.

FORM get_parameters_comissao .

  DATA: v_codeven TYPE /pws/zycbt011-codeven,

        v_codaux  TYPE  /pws/zycbt012-codaux,

        v_nrseq   TYPE /pws/zycet010-nrseq.

  PERFORM clear_date_batch.

  v_nrseq = itab_zycbt006-nrinvoic+0(10).

  REFRESH itab_zycbt013.

  SELECT * FROM /pws/zycbt013

         INTO TABLE itab_zycbt013

         WHERE tabela = '/PWS/ZYCET010'.

  IF wa_zycbt007-liq_trans EQ 'R'.

    CONCATENATE '003' /pws/zycbe005-tpcontr INTO v_codeven.

  ELSE.

    CONCATENATE '004' itab_selreg-codp INTO v_codeven.

  ENDIF.

  v_codaux    = itab_selreg-lifnr.

  CLEAR wa_zycbt011.

  SELECT SINGLE * FROM /pws/zycbt011

         INTO wa_zycbt011

         WHERE codeven = v_codeven

           AND codmod  = 'E'.

  IF wa_zycbt007-comis = 'C'.

    SELECT * FROM /pws/zycbt012

           INTO TABLE itab_zycbt012a

           WHERE codeven  = v_codeven AND

                 codmod   = 'E'  AND

                 tpcodaux = 'C'  AND

                 codaux   = v_codaux.

    IF sy-subrc NE 0.

      SELECT * FROM /pws/zycbt012

         INTO TABLE itab_zycbt012a

         WHERE codeven  = v_codeven AND

               codmod   = 'E'  AND

               tpcodaux = 'C'  AND

               codaux   = ' '.

    ENDIF.

  ENDIF.

ENDFORM.

FORM valor_baixar_comissao .

  CLEAR: v_vlcomis, v_saliq, v_some.

  IF NOT itab_zycbt006[] IS INITIAL

  AND itab_zycbt006[] IS INITIAL.

    SELECT * FROM /pws/zycbt006

     INTO TABLE itab_zycbt006_pagos

     FOR ALL ENTRIES IN itab_zycbt006

     WHERE nrinvoic = itab_zycbt006-nrinvoic AND

           nrparcf  = itab_zycbt006-nrparcf  AND

           gsberf   = itab_zycbt006-gsberf.

  ENDIF.

  READ TABLE itab_zycbt030 WITH KEY

             nrinvoic = itab_aux-nrinvoic

             nrparcf  = itab_aux-nrparcf

             vbeln    = itab_aux-vbeln

             gsberf   = itab_aux-gsberf.

  READ TABLE itab_zycbt017 WITH KEY nrinvoic = itab_zycbt006-nrinvoic

                                    nrparcf  = itab_zycbt006-nrparcf

                                    gsberf   = itab_zycbt006-gsberf.

  LOOP AT itab_zycbt006_pagos WHERE nrinvoic = itab_zycbt006-nrinvoic

                               AND   nrparcf  = itab_zycbt006-nrparcf

                               AND  gsberf   = itab_zycbt006-gsberf.

    v_some = v_some + itab_zycbt006_pagos-vlme.

  ENDLOOP.

  v_saliq = itab_zycbt017-vlavinc - v_some.

  IF v_saliq = 0.

    IF itab_aux-valor = 0.

      v_gjahr = itab_zycbt030-budat(4).

      CLEAR v_year.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

        EXPORTING

          v_bukrs                = itab_zycbt005-bukrs

          v_date                 = itab_zycbt030-budat

        IMPORTING

          v_year                 = v_year

        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.

      SELECT SINGLE wrbtr FROM bsid INTO bsid-wrbtr

             WHERE belnr  = itab_aux-belnr6

             AND   gjahr  = v_year

             AND   kunnr  = itab_zycbt005-kunnr

             AND   bukrs  = itab_zycbt005-bukrs.

      IF sy-subrc = 0.

        itab_zycbe033-wrbtr = bsid-wrbtr.

      ELSE.

        itab_zycbe033-wrbtr  = itab_aux-valor.

      ENDIF.

    ELSE.

      itab_zycbe033-wrbtr  = itab_aux-valor.

    ENDIF.

  ELSE.

    itab_zycbe033-wrbtr  = itab_aux-valor.

  ENDIF.

ENDFORM.

FORM verifica_rateio1 .

  CLEAR:    itab_aux.

  REFRESH:  itab_aux.

  LOOP AT itab_zycbt030

       WHERE nrinvoic = itab_zycbt006-nrinvoic

         AND nrparcf  = itab_zycbt006-nrparcf

         AND gsberf   = itab_zycbt006-gsberf.

    itab_aux-valor =

      ( itab_zycbt030-kwert / itab_zycbt030-s_kwert )

      * itab_selreg-vlme.

    MOVE:

         itab_zycbt030-nrinvoic TO itab_aux-nrinvoic,

         itab_zycbt030-nrparcf  TO itab_aux-nrparcf,

         itab_zycbt030-vbeln    TO itab_aux-vbeln,

         itab_zycbt030-gsberf   TO itab_aux-gsberf,

         itab_zycbt030-flag     TO itab_aux-flag,

         itab_zycbt030-budat    TO itab_aux-budat.

    IF itab_zycbt030-belnr6 IS INITIAL.

      MOVE itab_zycbt030-belnr TO itab_aux-belnr6.

    ELSE.

      MOVE itab_zycbt030-belnr6 TO itab_aux-belnr6.

    ENDIF.

    APPEND itab_aux.

  ENDLOOP.

ENDFORM.

FORM dados_batch_comis .

  itab_zycbe033-zterm   = space.

  itab_zycbe033-tcode   = 'F-30'.

  itab_zycbe033-tabela  = '/PWS/ZYCET010'.

  itab_zycbe033-cpochv  = itab_selreg-nrchave.

  itab_zycbe033-budat   = itab_zycbt006-dtpagto.

  IF /pws/zycbt007-fdtdoc      = 'D'.

    itab_zycbe033-bldat   = sy-datum.

    itab_zycbe033-d_valut = sy-datum.

  ELSE.

    itab_zycbe033-bldat   = itab_zycbe033-budat.

    itab_zycbe033-d_valut = itab_zycbe033-budat.

  ENDIF.

  LOOP AT itab_zycbt013.

    CASE itab_zycbt013-cpor3.

      WHEN 'XBLNR'.

        CASE itab_zycbt013-cpocb.

          WHEN 'NRSEQC'.

            itab_zycbe033-xblnr = itab_selreg-nrchave.

          WHEN 'NRINVOIC'.

            itab_zycbe033-xblnr = itab_selreg-nrchave.

          WHEN 'NRCONTR'.

            itab_zycbe033-xblnr = itab_zycbt006-nrcontr.

        ENDCASE.

      WHEN 'ZUONR'.

        CASE itab_zycbt013-cpocb.

          WHEN 'NRSEQC'.

            itab_zycbe033-d_zuonr = itab_selreg-nrchave.

            itab_zycbe033-c_zuonr = itab_selreg-nrchave.

          WHEN 'NRINVOIC'.

            itab_zycbe033-d_zuonr = itab_selreg-nrchave.

            itab_zycbe033-c_zuonr = itab_selreg-nrchave.

          WHEN 'NRCONTR'.

            itab_zycbe033-d_zuonr = itab_zycbt006-nrcontr.

            itab_zycbe033-c_zuonr = itab_zycbt006-nrcontr.

        ENDCASE.

    ENDCASE.

  ENDLOOP.

  itab_zycbe033-bktxt = wa_zycbt007-bktxt.

  itab_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

  itab_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

  itab_zycbe033-augtx   = wa_zycbt011-txtdesc.

  PERFORM verify_null_field USING itab_zycbt006-bukrs

                                         'BUKRS'

                                       text-004.

  itab_zycbe033-bukrs  = itab_zycbt006-bukrs.

  PERFORM verify_null_field USING /pws/zycbt017-waers

                                         'WAERS'

                                       text-005.

  itab_zycbe033-waers  = /pws/zycbt017-waers.

  PERFORM verifica_data_taxa.

  PERFORM define_cambio USING v_databl

                              itab_zycbt006-waers

                              wa_zycbt007-waersb

                              itab_zycbe033-kursf.

  PERFORM verify_null_field USING itab_zycbe033-kursf

                                  'TXCAMB'

                                  text-006.

  PERFORM verify_null_field USING wa_zycbt011-blart

                                            'BLART'

                                          text-080.

  itab_zycbe033-blart  = wa_zycbt011-blart.

  itab_zycbe033-zfbdt = itab_zycbt006-dtpagto.

  itab_zycbe033-d_gsber = /pws/zycbt017-gsberf.

  READ TABLE itab_zycbt005 WITH KEY

         nrinvoic = itab_zycbt006-nrinvoic

         nrparcf  = itab_zycbt006-nrparcf

         gsberf   = itab_zycbt006-gsberf.

  itab_zycbe033-d_prctr = itab_zycbt005-prctr.

  itab_zycbe033-d_fipos = itab_zycbt005-fipos.

  itab_zycbe033-c_gsber = itab_zycbt005-gsberf.

  itab_zycbe033-c_prctr = itab_zycbt005-prctr.

  itab_zycbe033-c_fipos = itab_zycbt005-fipos.

  PERFORM verifica_pais_filial USING itab_zycbt006-bukrs

                                     itab_zycbt005-j_1bbranch.

  itab_zycbe033-brnch   = itab_zycbt005-j_1bbranch.

  IF itab_selreg-codp <> 'G'.

    itab_zycbe033-d_kostl = itab_zycbt005-kostl.

    itab_zycbe033-c_kostl = itab_zycbt005-kostl.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB009TOP

 

...

         nrinvoic TYPE /pws/zycbe005-nrinvoic,

         nrparcf  TYPE /pws/zycbe005-nrparcf ,

         gsberf   TYPE /pws/zycbe005-gsberf  ,

         vldesvin TYPE /pws/zycbe005-vlvinc  ,

       END   OF t_desvincula                 .

DATA: itab_desvincula

        TYPE STANDARD TABLE OF t_desvincula

        WITH HEADER LINE                   ,

      wa_desvincula   TYPE t_desvincula    ,

      v_flag_estorno  TYPE c               .

* >> Início da inclusão:

TYPES:

  BEGIN OF t_s_aux,

    nrinvoic TYPE /pws/zycbt030-nrinvoic,

    nrparcf  TYPE /pws/zycbt030-nrparcf,

    vbeln    TYPE /pws/zycbt030-vbeln,

    gsberf   TYPE /pws/zycbt030-gsberf,

    valor    TYPE /pws/zycbt030-kwert,

    belnr6   TYPE /pws/zycbt030-belnr,

    budat    TYPE /pws/zycbt030-budat,

    flag(1)  TYPE c,

  END OF t_s_aux,

  BEGIN OF t_s_selreg,

    nrchave(10) TYPE c,

    docto(10)   TYPE c,

    dtvencto    TYPE d,

    vlme        TYPE /pws/zycbt004-vlme,

    dtinicio    TYPE d,

    lifnr       TYPE lfa1-lifnr,

    codp        TYPE /pws/zycbt037-codpad,

  END OF t_s_selreg,

  BEGIN OF t_s_doc_f02,

    docto  TYPE /pws/zycbt005-belnr,

    f02(1) TYPE c,

  END OF t_s_doc_f02,

  t_t_aux     TYPE STANDARD TABLE OF t_s_aux WITH DEFAULT KEY,

  t_t_selreg  TYPE STANDARD TABLE OF t_s_selreg WITH DEFAULT KEY,

  t_t_doc_f02 TYPE STANDARD TABLE OF t_s_doc_f02 WITH DEFAULT KEY.

* << Fim da inclusão

DATA: BEGIN OF itab_zycbt030_aux2 OCCURS 0,

        nrinvoic LIKE /pws/zycbt030-nrinvoic,

        nrparcf  LIKE /pws/zycbt030-nrparcf,

        vbeln    LIKE /pws/zycbt030-vbeln,

        gsberf   LIKE /pws/zycbt030-gsberf,

        belnr    LIKE /pws/zycbt030-belnr,

        budat    LIKE /pws/zycbt030-budat,

        campo(6),

        lugar,

        tpdev(2),

        bukrs    LIKE /pws/zycbt001-bukrs.

DATA: END OF itab_zycbt030_aux2.

DATA: BEGIN OF itab_modo OCCURS 0.

        INCLUDE STRUCTURE spopli.

DATA: END OF itab_modo.

* >> Início da inclusão:

DATA:

  itab_zycbt006_pagos TYPE STANDARD TABLE OF /pws/zycbt006

    WITH HEADER LINE,

  itab_zycbt012a TYPE STANDARD TABLE OF /pws/zycbt012

    WITH HEADER LINE,

  itab_doc_f02   TYPE t_t_doc_f02 WITH HEADER LINE,

  itab_aux       TYPE t_t_aux WITH HEADER LINE,

  itab_selreg    TYPE t_t_selreg WITH HEADER LINE.

* << Fim da inclusão

DATA: BEGIN OF itab_zycbt017_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt017.

DATA: v_fsaldo TYPE c,

END OF itab_zycbt017_aux.

DATA:  BEGIN OF itab_zycbt051_aux OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt051.

DATA:   mark(1),

       END OF itab_zycbt051_aux.

DATA:  BEGIN OF itab_zycbt051_aux2 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt051.

...

 

...

  v_index         TYPE i,

  v_index_parid   TYPE i,

  v_dtcalcjur     LIKE sy-datum,

  v_campo(25),

  v_valor(20),

  v_gjahr(4),

  i_belnr         LIKE bkpf-belnr,

  i_bukrs         LIKE bkpf-bukrs,

  i_gjahr         LIKE bkpf-gjahr,

  v_slvinc        LIKE /pws/zycbt001-slvinc,

* >> Início da inclusão:

  v_valorc        TYPE /pws/zycbt017-vlcomis,

  erro_bi(1)      TYPE c VALUE space,

* << Fim da inclusão

  v_tcode,

  v_slvinc_ant    LIKE /pws/zycbt001-slvinc,

  v_codeven_dev   LIKE /pws/zycbt011-codeven,

  v_ctgmedia      LIKE /pws/zycbt009-kurst,

  v_vldev         LIKE /pws/zycbt050-vldev,

  v_existe        TYPE c,

  v_nrseqcimp     LIKE /pws/zycbt053-nrseqc             ,

  rimcm1          LIKE indx-srtfd VALUE 'NRSEQC001',

  rimcm2          LIKE indx-srtfd VALUE 'ITABTRANS',

  rimcm3          LIKE indx-srtfd VALUE 'ITABVINCU',

...

 

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCB009

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 044

 

Texto: (19 caracteres)

"Número do Documento"

 

Comprimento máximo: 19

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 048

 

Texto: (7 caracteres)

"Empresa"

 

Comprimento máximo: 7

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 114

 

Texto: (30 caracteres)

"Clearing na Comissão de Agente"

 

Comprimento máximo: 30

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 388

 

Texto: (15 caracteres)

"Comissão Agente"

 

Comprimento máximo: 15

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 389

 

Texto: (51 caracteres)

"Comissão não Liquidada (Provisão não Contabilizada)"

 

Comprimento máximo: 51

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 390

 

Texto: (18 caracteres)

"Comissão de Agente"

 

Comprimento máximo: 18

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 391

 

Texto: (22 caracteres)

"Comissão não Liquidada"

 

Comprimento máximo: 22

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 392

 

Texto: (17 caracteres)

"Data de Pagamento"

 

Comprimento máximo: 17

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 393

 

Texto: (18 caracteres)

"Valor do Pagamento"

 

Comprimento máximo: 18

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 394

 

Texto: (39 caracteres)

"Data de captação não pode ser maior que"

 

Comprimento máximo: 39

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 395

 

Texto: (39 caracteres)

"Clearing Comissão Agente não executado."

 

Comprimento máximo: 39