CE PLUS - Nota 008195

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: Valores Mantidos no Exterior

Data/Hora da Publicação: 13/03/2009 00:00:00

Data/Hora Última Alteração: 18/02/2011 17:40:55

Descrição da Nota: VALORES MANTIDOS NO EXTERIOR - BAIXA DE COMISSÃO DE AGENTE CG NA ROTINA

Sintoma

Desenvolvimento Adicional

 

 

Solução

Desenvolvimento Adicional

 

Versões Tratadas

7.0


Pré-Requisitos

Produto:

Nota

Descrição

VALORES MANTIDOS NO EXTERIOR - DEVOLUÇÃO

VALORES MANTIDOS NO EXTERIOR - DISPONIBILIDADE NO EXTERIOR

VALORES MANTIDOS NO EXTERIOR - SALDO DISPONIBILIDADE - VLSLF NEGATIVO

LIQUIDAÇÃO - DA - CHECK DOS DOCUMENTOS - ESTORNO DAS FATURAS

LIQUIDAÇÃO - PONTO DE EXIT LIQ031 - EVITA PROVISÃO DE JUROS

LIQUIDAÇÃO - ESTORNO DAS PROVISÕES E CALCULO.

EXIT VINCULAÇÃO / LIQUIDAÇÃO - ALTERAÇÃO DOCUMENTOS CONTÁBEIS

VALORES MANTIDOS NO EXTERIOR - EXIT VME001

Informações Complementares

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

Nota Número 08195 Data: 13/03/2009 Hora: 18:23:55

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

 

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

Nota Número              : 08195

Categoria                : Melhoria

Prioridade               : Alta

Versão PW.CE             : 7.0

Pacote                   : 00008

Agrupamento              : 00088

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

Referência às notas relacionadas:

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

 

01499  - 00008 - 6.0    - 00023  - EXIT VINCULAÇÃO / LIQUIDAÇÃO - ALTERAÇÃO DOCUMENTOS CONTÁBEIS

03678  - 00007 - 7.0    - 00001  - LIQUIDAÇÃO - DA - CHECK DOS DOCUMENTOS - ESTORNO DAS FATURAS

03807  - 00006 - 7.0    - 00001  - LIQUIDAÇÃO - ESTORNO DAS PROVISÕES E CALCULO.

05967  - 00005 - 7.0    - 00004  - VALORES MANTIDOS NO EXTERIOR - EXIT VME001

06218  - 00004 - 7.0    - 00005  - VALORES MANTIDOS NO EXTERIOR - DISPONIBILIDADE NO EXTERIOR

06371  - 00003 - 7.0    - 00005  - VALORES MANTIDOS NO EXTERIOR - DEVOLUÇÃO

07188  - 00002 - 7.0    - 00006  - VALORES MANTIDOS NO EXTERIOR - SALDO DISPONIBILIDADE - VLSLF NEGA

07882  - 00001 - 7.0    - 00008  - LIQUIDAÇÃO - PONTO DE EXIT LIQ031 - EVITA PROVISÃO DE JUROS

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

VALORES MANTIDOS NO EXTERIOR - BAIXA DE COMISSÃO DE AGENTE CG NA ROTINA

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

Palavras Chave:

VALORES MANTIDOS NO EXTERIOR - BAIXA DE COMISSÃO DE AGENTE CG NA ROTINA

 

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

Objetos da nota:

REPS /PWS/MZYCB004F01

REPS /PWS/MZYCB004F02

REPS /PWS/MZYCB034F01

REPS /PWS/MZYCB034TOP

REPT /PWS/SAPMZYCB034

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F01

 

...

                     and codmod    = 'E'

                     and liquid    = 'X'.

          if sy-tcode ne c_transacao_c.

            perform estorna_diferenca_juros.

          endif.

          perform busca_liquidacoes.

          perform provisiona_diferenca_juros.

        endif.

      endif.

    endif.

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

    if itab_zycbt226 is initial.

* << Fim da inclusão

      if wa_zycbt007-liq_com_cg ne 'RP'.

        perform estorna_comissao.

      endif.

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

    endif.

* << Fim da inclusão

    perform atualiza_tabelas_transp2.

    if wa_zycbt007-liq_com_cg ne 'RP'.

      perform liquida_comissao_agente.

    endif.

...

 

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB004F02

 

...

        endif.

      when 'ZUONR'.

        if itab_zyglt321-cpocb = 'NRCONTR'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrcontr.

        elseif itab_zyglt321-cpocb = 'NRSEQ'.

          itab_zycbe033-d_zuonr = /pws/zycbe001-nrseqc.

        elseif itab_zyglt321-cpocb is initial and

               not itab_zyglt321-descr is initial.

          itab_zycbe033-d_zuonr = itab_zyglt321-descr.

        endif.

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

        itab_zycbe033-c_zuonr = itab_zycbe033-d_zuonr.

* << Fim da inclusão

      when 'ZTERM'.

        if itab_zyglt321-cpocb = 'ZTERM'.

          itab_zycbe033-zterm = itab_zycbt017-zterm.

        endif.

    endcase.

  endloop.

  if not wa_zycbt011-agums is initial.

    itab_zycbe033-agums = wa_zycbt011-agums.

  endif.

  if itab_zycbe033-d_sgtxt is initial.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCB034F01

 

...

    PERFORM limpa_dados_bi.

    PERFORM doc_op USING ' '

                   CHANGING v_belnr_est_f02

                            v_dtlancto_est_f02.

    PERFORM limpa_dados_bi.

    PERFORM doc_desm_liq_and.

    PERFORM limpa_dados_bi.

    PERFORM doc_desm_cliente.

    PERFORM limpa_dados_bi.

    PERFORM doc_compensacao.

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

    if wa_zycbt007-liq_com_cg ne 'RP'.

      perform limpa_dados_bi.

          call function '/PWS/ZYCB_ENQUEUE_CONTAS'

         exporting

              i_bloqueia    = ' '

         tables

              itab_zycbt224 = itab_zycbe224

         exceptions

              zycbe224_null = 1

              erro_bloqueio = 2

              others        = 3.

    if sy-subrc <> 0.

* << Fim da inclusão

  ENDIF.

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

      perform liquida_comissao_agente.

    endif.

  endif.

* << Fim da inclusão

  IF <fs_op>-tipo_op = 'P'.

    PERFORM limpa_dados_bi.

    PERFORM doc_op USING ' '

                   CHANGING v_belnr_est_f02

...

 

...

            CLEAR v_wrbtr.

            <fs_op>-nrseq    = v_novo_nrseq.

            <fs_op>-belnr_op = wa_zycbt032-belnr.

            IF <fs_op>-tipo_op = 'E'.

              <fs_op>-status   = 'I'.

              PERFORM atualiza_saldos_sml USING ' '.

              READ TABLE itab_zycbt030 INTO wa_zycbt030 WITH KEY

                    nrinvoic = <fs_op>-nrinvoic

                    nrparcf  = <fs_op>-nrparcf

                    gsberf   = <fs_op>-gsberf.

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

              IF sy-subrc = 0

                AND wa_zycbt030-vlsltrans > 0 and v_wrbtr > 0.

* << Fim da exclusão

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

              if sy-subrc = 0.

                if sy-tcode+13(3) = 'SML' and v_wrbtr > 0.

* << Fim da inclusão

                wa_zycbt030-vlsltrans = wa_zycbt030-vlsltrans -

                                        v_wrbtr.

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

                else.

                  wa_zycbt030-vlsltrans = wa_zycbt030-vlsltrans -

                                          <fs_op>-vlr_exterior.

                endif.

* << Fim da inclusão

                IF wa_zycbt030-vlsltrans < 0.

                  v_wrbtr = wa_zycbt030-vlsltrans * ( -1 ).

...

 

...

  DATA:

    v_dt_taxa    TYPE d,

    wa_zycet001  TYPE t_s_zycet001,

    wa_zycit054  TYPE t_s_zycit054,

    wa_zycet047  TYPE t_s_zycet047,

    wa_zycet048  TYPE t_s_zycet048,

    wa_bkpf      TYPE t_s_bkpf,

    v_op(30)     TYPE c,

    v_cli(23)    TYPE c,

    v_liqand(27) TYPE c.

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

  if <fs_op>-waers = wa_zycbt007-waersb.

    p_kursf = '1.00000'.

    exit.

  endif.

* << Fim da inclusão

  READ TABLE itab_zycbt089 INTO wa_zycbt089

    WITH KEY bukrs = p_bukrs.

  READ TABLE itab_zycbt007 INTO wa_zycbt007

    WITH KEY bukrs = p_bukrs.

  CHECK NOT p_dtlanc IS INITIAL.

  IF NOT wa_zycbt007 IS INITIAL AND

     NOT wa_zycbt089 IS INITIAL.

    CASE p_tpcontab.

      WHEN 'O'.

        v_op = c_dtlanc.

...

 

...

    value(p_codeven)   TYPE /pws/zycbt011-codeven

    value(p_bukrs)     TYPE t001-bukrs

    value(p_waersde)   TYPE tcurr-fcurr

    value(p_waerspara) TYPE tcurr-tcurr

    value(p_dtbase)    TYPE d

  CHANGING

    p_kursf TYPE tcurr-ukurs.

  FIELD-SYMBOLS:

    <fs_zycbt009> TYPE t_s_zycbt009,

    <fs_zycbt011> TYPE t_s_zycbt011.

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

  if <fs_op>-waers = wa_zycbt007-waersb.

    p_kursf = '1.00000'.

    exit.

  endif.

* << Fim da inclusão

  READ TABLE itab_zycbt011

    WITH TABLE KEY

      codeven = p_codeven

      codmod  = c_modulo

      bukrs   = p_bukrs

    ASSIGNING <fs_zycbt011>.

  IF sy-subrc = 0.

    READ TABLE itab_zycbt009

      WITH TABLE KEY

        codpadr = <fs_zycbt011>-ctmoed

...

 

...

              periodo_fechado = 2

              OTHERS          = 3.

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY

        tcode  = 'F-30'

        tabela = '/PWS/ZYCBT226'

        cpochv = wa_zycbe033-cpochv

        tpmsg  = 'S'

        INTO wa_zycbt032.

      IF sy-subrc EQ 0.

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

        if sy-tcode+13(3) ne 'SML'.

          <fs_zycbt030>-vlsltrans = <fs_zycbt030>-vlsltrans -

                                    wa_zycbe033-wrbtr.

        endif.

* << Fim da inclusão

        <fs_zycbt030>-belnr6    = wa_zycbt032-belnr.

        <fs_zycbt030>-budat     = wa_zycbe033-budat.

        IF <fs_zycbt030>-belnr_t IS INITIAL.

          <fs_zycbt030>-belnr_t = <fs_zycbt030>-belnr6.

          <fs_zycbt030>-budat_t = <fs_zycbt030>-budat.

        ENDIF.

        UPDATE /pws/zycbt030

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

          SET

* << Fim da exclusão

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

          set   vlsltrans = <fs_zycbt030>-vlsltrans

* << Fim da inclusão

                belnr6    = <fs_zycbt030>-belnr6

                budat     = <fs_zycbt030>-budat

                belnr_t   = <fs_zycbt030>-belnr_t

                budat_t   = <fs_zycbt030>-budat_t

          WHERE nrinvoic  = <fs_zycbt030>-nrinvoic

            AND nrparcf   = <fs_zycbt030>-nrparcf

            AND gsberf    = <fs_zycbt030>-gsberf.

        <fs_op>-belnr_desm_cli = wa_zycbt032-belnr.

        UPDATE /pws/zycbt226

          SET   belnr_desm_cli = <fs_op>-belnr_desm_cli

...

 

...

                   CHANGING v_belnr_est_f02

                            v_dtlancto_est_f02.

    PERFORM limpa_dados_bi.

    PERFORM estorno USING 'OC'

                          v_belnr_est_f02

                          v_dtlancto_est_f02.

    PERFORM limpa_dados_bi.

    PERFORM estorno USING 'OM'

                          v_belnr_est_f02

                          v_dtlancto_est_f02.

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

  endif.

  if wa_zycbt007-liq_com_cg ne 'RP'.

    perform estorna_comissao.

* << Fim da inclusão

  ENDIF.

  PERFORM bloqueia_contas USING    ' '

                          CHANGING v_excecao.

  PERFORM apaga_registros.

ENDFORM.

FORM estorno

  USING value(p_processo)         TYPE c

        value(p_belnr_est_f02)    TYPE /pws/zycbt226-belnr_op

        value(p_dtlancto_est_f02) TYPE /pws/zycbt226-dtlancto.

  DATA: wa_zycbt032        TYPE t_s_zycbt032,

...

 

...

           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.

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

    read table itab_zycbe033 into wa_zycbe033 index 1.

* << Fim da inclusão

    IF sy-subrc = 0.

      READ TABLE itab_zycbt032 WITH KEY

        tcode  = 'F-30'

        tabela = '/PWS/ZYCBT226'

        cpochv = wa_zycbe033-cpochv

        tpmsg  = 'S'

        INTO wa_zycbt032.

      IF sy-subrc EQ 0 OR

         v_adm    EQ 'X'.

        wa_cont-belnr    = wa_zycbt032-belnr.

...

 

...

  IF sy-subrc NE 0.

    PERFORM define_taxa_cambio

      USING 'O'

        'X'

        v_codeven

        <fs_op>-bukrs

        <fs_op>-dtlancto

        <fs_op>-nrinvoic

      CHANGING

        wa_zycbe033-kursf.

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

  elseif <fs_op>-waers = wa_zycbt007-waersb.

    wa_zycbe033-kursf = '1.00000'.

* << Fim da inclusão

  ENDIF.

  PERFORM verifica_campo_vazio USING wa_zycbe033-kursf

                                     'KURSF'

                                     'Taxa de Câmbio'(019).

  READ TABLE itab_zycbt011 INTO wa_zycbt011

    WITH KEY

      codeven = v_codeven

      codmod  = c_modulo

      bukrs   = <fs_op>-bukrs.

  IF sy-subrc NE 0.

...

 

...

  IF sy-subrc = 0.

    wa_zycbe033-blart  = wa_zycbt011-blart.

  ENDIF.

  wa_zycbe033-wrbtr = <fs_op>-vlr_exterior.

  v_lancto_multiplo = space.

  wa_zycbe033-newbs   = '50'.

  wa_zycbe033-agkoa   = 'S'.

  CLEAR wa_zycbe033-umskz.

  v_banco = <fs_op>-bco_me.

  SHIFT v_banco LEFT DELETING LEADING '0'.

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

  if <fs_op>-conta_contab is initial.

* << Fim da inclusão

  CALL FUNCTION '/PWS/ZYGL_READ_ACCOUNT_NUMBER'

       EXPORTING

            bukrs           = <fs_op>-bukrs

            ktosl           = 'FBK'

            codaux1         = v_banco

            codaux2         = <fs_op>-waers

       TABLES

            account         = itab_zyglt316

       EXCEPTIONS

            key_not_found   = 1

            rules_not_found = 2

            OTHERS          = 3.

  IF sy-subrc = 0.

  ELSE.

  ENDIF.

  READ TABLE itab_zyglt316 INTO wa_zyglt316 INDEX 1.

  IF sy-subrc = 0.

    wa_zycbe033-d_newko = wa_zyglt316-konts.

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

    endif.

  else.

    wa_zycbe033-d_newko = <fs_op>-conta_contab.

* << Fim da inclusão

  ENDIF.

  PERFORM preenche_contas_bloqueio USING  sy-mandt

                                          <fs_op>-bukrs

                                          wa_zycbe033-agkoa

                                          wa_zycbe033-d_newko

                                          'S'.

  IF v_desm_liqand = 'X'.

    LOOP AT itab_zycbt225 INTO wa_zycbt225

      WHERE nrseq = <fs_op>-nrseq.

      READ TABLE itab_zycbt209 INTO wa_zycbt209

...

 

...

        SET   saldo    = wa_zycbt209-saldo

        WHERE bukrs    = wa_zycbt209-bukrs

          AND nrinvoic = wa_zycbt209-nrinvoic

          AND belnr    = wa_zycbt209-belnr

          AND dtincl   = wa_zycbt209-dtincl

          AND nrparcf  = wa_zycbt209-nrparcf

          AND gsberf   = wa_zycbt209-gsberf.

    ENDLOOP.

  ENDIF.

ENDFORM.

* >> Início da inclusão:

form liquida_comissao_agente.

  clear: itab_selreg,

         itab_zycet010,

         itab_zycet013.

  refresh: itab_zycet010,

           itab_zycet013.

  select single * from /pws/zycbt017

                  into itab_zycbt017_cg

           where nrinvoic eq <fs_op>-nrinvoic

             and nrparcf  eq <fs_op>-nrparcf.

  select single * from /pws/zycbt037

                  into itab_zycbt037_cg

           where parvw eq itab_zycbt017_cg-parvw.

  if sy-subrc ne 0.

    if itab_zycbt017_cg-parvw eq 'AD' or

       itab_zycbt017_cg-parvw eq 'DA'.

      select single * from /pws/zycbt037

                  into itab_zycbt037_cg

          where parvw eq 'AD' or

                parvw eq 'DA'.

    endif.

  endif.

  check itab_zycbt037_cg-codpad eq 'G'

     or itab_zycbt037_cg-codpad eq 'D'.

  select single * from /pws/zycet037

         where bukrs eq <fs_op>-bukrs.

  if sy-subrc ne   0.

    select single * from /pws/zycet037

           where bukrs eq space.

  endif.

  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 <fs_op>-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,

              <fs_op>-nrseq           to itab_selreg-docto,

              itab_zycet010-dtlanc    to itab_selreg-dtlanc,

              itab_zycet010-dtvencto  to itab_selreg-dtvencto,

              itab_zycet010-vlcomis   to itab_selreg-vlme,

              itab_zycet010-lifnr     to itab_selreg-lifnr,

              itab_zycbt037_cg-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.

      endif.

    endloop.

  else.

    select *

          into table itab_zycet013

          from /pws/zycet013

          where nrseq   eq <fs_op>-nrinvoic

            and gsber   eq <fs_op>-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,

              <fs_op>-nrseq           to itab_selreg-docto,

              itab_zycet013-dtlanc    to itab_selreg-dtlanc,

              itab_zycet013-vlme      to itab_selreg-vlme,

              itab_zycet013-lifnr     to itab_selreg-lifnr,

              itab_zycbt037_cg-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.

      endif.

    endloop.

  endif.

endform.

form liquida_comis_trans .

  data: v_chave(50),

        v_erro_f28(1),

        v_aux,

        v_status_f30(1) value 'E',

        v_budat           type bkpf-budat.

  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'.

      wa_zycbe033-newbs   = '40'.

    else.

      wa_zycbe033-newbs = '50'.

    endif.

    if wa_zycbt007-comis = 'C'.

      wa_zycbe033-d_newko = itab_zycbt012a-saknr1.

    else.

      wa_zycbe033-d_newko = itab_zycbt012-saknr2.

    endif.

    perform verify_null_field using wa_zycbe033-d_newko

                                             'KONTO'

                                             text-016.

    wa_zycbe033-agkoa   = 'D'.

    wa_zycbe033-agkon = itab_zycbt017_cg-kunag.

    perform verify_null_field using wa_zycbe033-agkon

                                             'AGKON'

                                             text-042.

    perform dados_batch .

    concatenate itab_aux-nrinvoic itab_aux-vbeln itab_aux-gsberf

    into v_chave.

    wa_zycbe033-cpochv  = v_chave.

    perform valor_baixar_comissao.

    v_valorc = wa_zycbe033-wrbtr.

    perform verify_null_field using itab_aux-belnr6

                                            'BELNR'

                                          text-044.

    wa_zycbe033-belnr  = itab_aux-belnr6.

    clear v_year.

    call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         exporting

              v_bukrs                = <fs_op>-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 budat from bkpf

                    into v_budat

       where bukrs = <fs_op>-bukrs

         and belnr = itab_aux-belnr6

         and gjahr = v_year.

    wa_zycbe033-dtdocto = v_budat.

    if wa_zycbe033-wrbtr gt 0.

      append wa_zycbe033 to itab_zycbe033.

    endif.

  endloop.

  loop at itab_zycbt034 into wa_zycbt034.

    perform message_store using

      '/PWS/ZYCBM'

      'W'

      wa_zycbt034-descricao

      space

      space

      space

      '016'.

  endloop.

  append wa_zycbt034 to itab_zycbt034.

  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  = v_trans

                                          tabela = '/PWS/ZYCET010'

                                          cpochv = v_chave

                                          tpmsg  = 'S'

                                          into wa_zycbt032.

        if sy-subrc = 0.

          wa_zycbt030-belnr6 = wa_zycbt032-belnr.

          read table itab_zycbe033 into wa_zycbe033

                            with key cpochv = v_chave.

          wa_zycbt030-budat  = wa_zycbe033-budat.

          modify /pws/zycbt030  from wa_zycbt030.

          update /pws/zycbt030 set: belnr6 = wa_zycbt032-belnr

                               budat  = wa_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 <fs_op>-status <> 'E'.

              itab_zycet010-status  = 'C'.

              itab_zycet010-belnr_p = wa_zycbt032-belnr.

              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   = wa_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 <fs_op>-status <> 'E'.

              itab_zycet013-status  = 'C'.

              itab_zycet013-belnr_c = wa_zycbt032-belnr.

              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   = wa_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 wa_zycbt032 to itab_zycbt032a.

          move wa_zycbe033-budat to itab_zycbt032a-budat.

          append itab_zycbt032a.

          clear itab_doc_f02.

          move wa_zycbt032-belnr to itab_doc_f02-docto.

          append itab_doc_f02.

          v_status_f30 = 'S'.

          if v_vinculacao is initial.

            commit work.

          endif.

          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    = wa_zycbt032-belnr.

          itab_contabil-bukrs    = <fs_op>-bukrs.

          itab_contabil-msg      = text-062.

          append itab_contabil.

          v_aux = '1'.

          read table itab_zycbe033  into wa_zycbe033

              with key cpochv = v_chave.

          itab_zycbt077-belnr = wa_zycbt032-belnr.

          itab_zycbt077-bukrs = wa_zycbe033-bukrs.

          itab_zycbt077-gjahr = wa_zycbe033-budat(4).

          itab_zycbt077-status = 'C'.

          itab_zycbt077-tcode = wa_zycbt032-tcode.

          concatenate '004' itab_selreg-codp into

                itab_zycbt077-codeven.

          itab_zycbt077-codmod = 'E'.

          itab_zycbt077-gsberf = itab_aux-gsberf.

          itab_zycbt077-nrinvoic = itab_aux-nrinvoic.

          itab_zycbt077-nrparcf  = itab_aux-nrparcf.

          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-063.

          append itab_contabil.

        endif.

      endloop.

      if v_aux eq '1'.

        clear v_aux.

      else.

        clear v_erro_f28.

        loop at itab_zycbt032 into wa_zycbt032.

          message i015 with wa_zycbt032-msg+0(50)

                  wa_zycbt032-msg+50(50).

        endloop.

      endif.

      if v_status_f30 eq 'S'.

        perform executa_clearing_agente.

      endif.

    else.

      loop at itab_zycbt034 into wa_zycbt034.

        message i016 with wa_zycbt034-descricao.

      endloop.

    endif.

  endif.

endform.

form clear_date_batch.

  clear:

    itab_zycbt034,

    itab_zycbe033,

    itab_zycbt032,

    itab_zycbt036.

  refresh:

    itab_zycbt034,

    itab_zycbe033,

    itab_zycbt032,

    itab_zycbt036.

endform.

form get_parameters_comissao .

  data: v_codeven like /pws/zycbt011-codeven,

        v_codaux  like /pws/zycbt012-codaux,

        v_nrseq   like /pws/zycet010-nrseq.

  v_trans = 'F-30'.

  v_nrseq = <fs_op>-nrinvoic+0(10).

  concatenate '004' itab_selreg-codp 'O' into v_codeven.

  select * from /pws/zyglt321

    into table itab_zyglt321_cg

    where ktosl   = 'DSE'  and

          codeven = v_codeven.

  v_codaux    = itab_selreg-lifnr.

  clear wa_zycbt011.

  select single * from /pws/zycbt011

         into wa_zycbt011

         where codeven = v_codeven

           and codmod  = 'E'.

  refresh: itab_zycbt012.

  select * from /pws/zycbt012

           into table itab_zycbt012

           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 verifica_rateio1 .

  data: v_s_kwert like /pws/zycbt030-kwert.

  clear:    itab_aux.

  refresh:  itab_aux.

  loop at itab_zycbt030 into wa_zycbt030

       where nrinvoic = <fs_op>-nrinvoic

         and nrparcf  = <fs_op>-nrparcf

         and gsberf   = <fs_op>-gsberf.

    move  wa_zycbt030 to itab_zycbt030_cg.

    select single * from /pws/zycet002

      where nrseq    = itab_zycbt030_cg-nrinvoic

        and vbeln_vf = itab_zycbt030_cg-vbeln.

    if /pws/zycet002-shkzg = 'X'.

      v_s_kwert = v_s_kwert - itab_zycbt030_cg-kwert.

      itab_zycbt030_cg-flag = 'X'.

      modify itab_zycbt030_cg.

    else.

      select single * from /pws/zycet020

        where auart eq /pws/zycet002-auart.

      if /pws/zycet020-tipodoc = 'OC'.

        v_s_kwert = v_s_kwert - itab_zycbt030_cg-kwert.

        itab_zycbt030_cg-flag = 'X'.

        modify itab_zycbt030_cg.

      else.

        v_s_kwert = v_s_kwert + itab_zycbt030_cg-kwert.

      endif.

    endif.

    itab_zycbt030_cg-s_kwert = v_s_kwert .

    itab_aux-valor =

      ( itab_zycbt030_cg-kwert / itab_zycbt030_cg-s_kwert )

      * itab_selreg-vlme.

    move:

         itab_zycbt030_cg-nrinvoic to itab_aux-nrinvoic,

         itab_zycbt030_cg-nrparcf  to itab_aux-nrparcf,

         itab_zycbt030_cg-vbeln    to itab_aux-vbeln,

         itab_zycbt030_cg-gsberf   to itab_aux-gsberf,

         itab_zycbt030_cg-flag     to itab_aux-flag,

         itab_zycbt030_cg-budat    to itab_aux-budat.

    if itab_zycbt030_cg-belnr6 is initial.

      move itab_zycbt030_cg-belnr to itab_aux-belnr6.

    else.

      move itab_zycbt030_cg-belnr6 to itab_aux-belnr6.

    endif.

    append itab_aux.

  endloop.

  itab_zycbt030_cg-s_kwert = v_s_kwert.

  modify itab_zycbt030_cg transporting s_kwert

                       where nrinvoic = <fs_op>-nrinvoic

                         and nrparcf  = <fs_op>-nrparcf

                         and gsberf   = <fs_op>-gsberf.

endform.

form verify_null_field using value(p_field)

                             value(p_fieldname)

                             value(p_description).

  if p_field is initial.

    wa_zycbt034-campo = p_fieldname.

    wa_zycbt034-descricao = p_description.

    append wa_zycbt034 to  itab_zycbt034 .

  endif.

endform.

form dados_batch .

  wa_zycbe033-zterm   = space.

  wa_zycbe033-tcode   = v_trans.

  wa_zycbe033-tabela  = '/PWS/ZYCET010'.

  wa_zycbe033-cpochv  = itab_selreg-nrchave.

  v_dtpagto           = <fs_op>-dtlancto.

  wa_zycbe033-budat   = v_dtpagto.

  if wa_zycbt007-fdtdoc      = 'D'.

    wa_zycbe033-bldat   = sy-datum.

    wa_zycbe033-d_valut = sy-datum.

  else.

    wa_zycbe033-bldat   = wa_zycbe033-budat.

    wa_zycbe033-d_valut = wa_zycbe033-budat.

  endif.

  loop at itab_zyglt321_cg into wa_zyglt321_cg.

    case wa_zyglt321_cg-cpor3.

      when 'SGTXT'.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-c_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-augtx    = <fs_op>-nrseq.

          when 'REF_OP'.

            wa_zycbe033-d_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-c_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-augtx    = <fs_op>-ref_op.

        endcase.

      when 'XBLNR'.

        clear: v_ms.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-xblnr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-xblnr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-xblnr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-xblnr = <fs_op>-ref_op.

          when 'NRINVOIC+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nrinvoic v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NREMB+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nremb v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NRSEQ+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-nrseq v_ms

                    into wa_zycbe033-xblnr separated by space.

            when'REF_OP+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-ref_op v_ms

                    into wa_zycbe033-xblnr separated by space.

        endcase.

      when 'ZFBDT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-zfbdt = <fs_op>-dtlancto.

          when  'DTINCL'.

            wa_zycbe033-zfbdt = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-zfbdt = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-zfbdt = itab_selreg-dtvencto.

        endcase.

      when 'VALUT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtbl.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtinvoic.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtvencto.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-d_valut = <fs_op>-dtlancto.

            wa_zycbe033-c_valut = <fs_op>-dtlancto.

          when  'DTLINCL'.

            wa_zycbe033-d_valut = <fs_op>-dtincl.

            wa_zycbe033-c_valut = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-d_valut = itab_selreg-dtlanc.

            wa_zycbe033-c_valut = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-d_valut = itab_selreg-dtvencto.

            wa_zycbe033-c_valut = itab_selreg-dtvencto.

        endcase.

      when 'ZUONR'.

        case wa_zyglt321_cg-cpocb.

          when 'NRINVOIC'.

            wa_zycbe033-d_zuonr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_zuonr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_zuonr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-d_zuonr = <fs_op>-ref_op.

        endcase.

      when 'ZTERM'.

        if wa_zyglt321_cg-cpocb = 'ZTERM'.

          wa_zycbe033-zterm = itab_zycbt017_cg-zterm.

        endif.

    endcase.

  endloop.

  wa_zycbe033-bktxt = wa_zycbt007-bktxt.

  wa_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

  wa_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

  wa_zycbe033-augtx   = wa_zycbt011-txtdesc.

  perform verify_null_field using <fs_op>-bukrs

                                         'BUKRS'

                                       text-048.

  wa_zycbe033-bukrs  = <fs_op>-bukrs.

  perform verify_null_field using itab_zycbt017_cg-waers

                                         'WAERS'

                                       text-049.

  wa_zycbe033-waers  = itab_zycbt017_cg-waers.

  perform verifica_data.

  perform define_cambio using v_databl

                              <fs_op>-waers

                              wa_zycbt007-waersb

                              wa_zycbe033-kursf.

  perform verify_null_field using wa_zycbe033-kursf

                                  'TXCAMB'

                                  text-051.

  perform verify_null_field using wa_zycbt011-blart

                                            'BLART'

                                          text-050.

  wa_zycbe033-blart  = wa_zycbt011-blart.

  wa_zycbe033-zfbdt = v_dtpagto.

  wa_zycbe033-d_gsber = itab_zycbt017_cg-gsberf.

  wa_zycbe033-c_gsber = <fs_op>-gsberf.

  perform verifica_pais_filial using <fs_op>-bukrs

                                     <fs_op>-j_1bbranch.

  wa_zycbe033-brnch   = <fs_op>-j_1bbranch.

endform.

form verifica_data.

  data v_belnr like /pws/zycbt030-belnr.

  if wa_zycbt007-dtliquid = 'DTEMB'.

    select single * from /pws/zycbt017

                    into itab_zycbt017_cg

      where nrinvoic eq <fs_op>-nrinvoic

        and nrparcf  eq <fs_op>-nrparcf

        and gsberf   eq <fs_op>-gsberf.

    v_databl = itab_zycbt017_cg-dtbl.

  elseif wa_zycbt007-dtliquid eq 'TXFAT'.

    select single dtemb

         from /pws/zycet001

         into v_dtemb

         where nrseq eq <fs_op>-nrinvoic.

    select single belnr

           from /pws/zycbt030

           into v_belnr

            where nrinvoic eq <fs_op>-nrinvoic and

                  gsberf   eq <fs_op>-gsberf   and

                  nrparcf  eq <fs_op>-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                = <fs_op>-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 wa_zycbe033-kursf

        where bukrs = itab_zycbt006-bukrs and

              belnr = v_belnr             and

              gjahr = v_year.

    endif.

    clear v_databl.

  else.

    v_databl = v_dtpagto.

  endif.

endform.

form define_cambio using    value(p_data)

                            value(p_moedae)

                            value(p_moedal)

                                  p_kursf.

  if <fs_op>-waers = wa_zycbt007-waersb.

    p_kursf = '1.00000'.

    exit.

  endif.

  select single codpadr kurst

    into (wa_zycbt009-codpadr , wa_zycbt009-kurst)

    from  /pws/zycbt009

    where codpadr = wa_zycbt011-ctmoed.

  call function '/PWS/ZYCB_MONTANTE_CONVERTE'

       exporting

            i_montante                 = '1'

            i_demoeda                  = p_moedae

            i_paramoeda                = p_moedal

            i_ctmoeda                  = wa_zycbt009-kurst

            i_dtbase                   = p_data

       importing

            e_txc                      = p_kursf

       exceptions

            i_demoeda_nao_encontrado   = 1

            i_paramoeda_nao_encontrado = 2

            i_ctmoeda_nao_encontrado   = 3

            i_dtbase_nao_encontrada    = 4

            taxa_nao_encontrada        = 5

            fator_nao_encontrado       = 6

            i_montante_nao_encontrado  = 7

            others                     = 8.

endform.

form valor_baixar_comissao.

  clear: v_vlcomis, v_saliq, v_some.

  read table itab_zycbt030 into wa_zycbt030 with key

             nrinvoic = itab_aux-nrinvoic

             nrparcf  = itab_aux-nrparcf

             vbeln    = itab_aux-vbeln

             gsberf   = itab_aux-gsberf.

  read table itab_zycbt017 into itab_zycbt017_cg

                           with key nrinvoic = <fs_op>-nrinvoic

                                    nrparcf  = <fs_op>-nrparcf

                                    gsberf   = <fs_op>-gsberf.

  select * from /pws/zycbt006

    into table itab_zycbt006_pagos

     where nrinvoic = <fs_op>-nrinvoic and

           nrparcf  = <fs_op>-nrparcf  and

           gsberf   = <fs_op>-gsberf.                   "#EC CI_NOFIRST

  loop at itab_zycbt006_pagos where nrinvoic = <fs_op>-nrinvoic

                               and   nrparcf = <fs_op>-nrparcf

                               and  gsberf   = <fs_op>-gsberf.

    v_some = v_some + itab_zycbt006_pagos-vlme.

  endloop.

  v_saliq = itab_zycbt017_cg-vlavinc -

            v_some -

            itab_zycbt006_pagos-vlme.

  if v_saliq = 0.

    if itab_aux-valor = 0.

      clear v_year.

      call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           exporting

                v_bukrs                = <fs_op>-bukrs

                v_date                 = wa_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  = <fs_op>-kunag

             and   bukrs  = <fs_op>-bukrs.

      if sy-subrc = 0.

        wa_zycbe033-wrbtr = bsid-wrbtr.

      else.

        wa_zycbe033-wrbtr  = itab_aux-valor.

      endif.

    else.

      wa_zycbe033-wrbtr  = itab_aux-valor.

    endif.

  else.

    wa_zycbe033-wrbtr  = itab_aux-valor.

  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.

  wa_zycbe033-tcode  = 'F-30'.

  wa_zycbe033-tabela = '/PWS/ZYCBT226'.

  wa_zycbe033-cpochv = v_cpochv.

  perform verify_null_field using v_dtpagto

                                  'DTPAGTO'

                                  text-003.

  wa_zycbe033-budat  = v_dtpagto.

  perform verify_null_field using wa_zycbt011-blart

                                            'BLART'

                                          text-050.

  wa_zycbe033-blart   = wa_zycbt011-blart.

  wa_zycbe033-bktxt   = wa_zycbt007-bktxt.

  wa_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

  wa_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

  perform verifica_data.

  perform define_cambio using v_databl

                              <fs_op>-waers

                              wa_zycbt007-waersb

                              wa_zycbe033-kursf.

  perform verify_null_field using wa_zycbe033-kursf

                                  'TXCAMB'

                                  text-051.

  if wa_zycbt007-fdtdoc   = 'D'.

    wa_zycbe033-bldat   = sy-datum.

    wa_zycbe033-d_valut = sy-datum.

  else.

    wa_zycbe033-bldat   = wa_zycbe033-budat.

    wa_zycbe033-d_valut = wa_zycbe033-budat.

  endif.

  loop at itab_zyglt321_cg into wa_zyglt321_cg.

    case wa_zyglt321_cg-cpor3.

      when 'SGTXT'.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-c_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-augtx    = <fs_op>-nrseq.

          when 'REF_OP'.

            wa_zycbe033-d_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-c_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-augtx    = <fs_op>-ref_op.

        endcase.

      when 'XBLNR'.

        clear: v_ms.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-xblnr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-xblnr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-xblnr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-xblnr = <fs_op>-ref_op.

          when 'NRINVOIC+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nrinvoic v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NREMB+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nremb v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NRSEQ+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-nrseq v_ms

                    into wa_zycbe033-xblnr separated by space.

            when'REF_OP+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-ref_op v_ms

                    into wa_zycbe033-xblnr separated by space.

        endcase.

      when 'ZFBDT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-zfbdt = <fs_op>-dtlancto.

          when  'DTINCL'.

            wa_zycbe033-zfbdt = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-zfbdt = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-zfbdt = itab_selreg-dtvencto.

        endcase.

      when 'VALUT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtbl.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtinvoic.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtvencto.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-d_valut = <fs_op>-dtlancto.

            wa_zycbe033-c_valut = <fs_op>-dtlancto.

          when  'DTLINCL'.

            wa_zycbe033-d_valut = <fs_op>-dtincl.

            wa_zycbe033-c_valut = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-d_valut = itab_selreg-dtlanc.

            wa_zycbe033-c_valut = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-d_valut = itab_selreg-dtvencto.

            wa_zycbe033-c_valut = itab_selreg-dtvencto.

        endcase.

      when 'ZUONR'.

        case wa_zyglt321_cg-cpocb.

          when 'NRINVOIC'.

            wa_zycbe033-d_zuonr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_zuonr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_zuonr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-d_zuonr = <fs_op>-ref_op.

        endcase.

      when 'ZTERM'.

        if wa_zyglt321_cg-cpocb = 'ZTERM'.

          wa_zycbe033-zterm = itab_zycbt017_cg-zterm.

        endif.

    endcase.

  endloop.

  perform verify_null_field using <fs_op>-bukrs

                                         'BUKRS'

                                       text-048.

  wa_zycbe033-bukrs  = <fs_op>-bukrs.

  perform verify_null_field using itab_zycbt017_cg-waers

                                         'WAERS'

                                       text-049.

  wa_zycbe033-waers  = itab_zycbt017_cg-waers.

  wa_zycbe033-augtx   = wa_zycbt011-txtdesc.

  wa_zycbe033-c_gsber = <fs_op>-gsberf.

  wa_zycbe033-d_gsber = <fs_op>-gsberf.

  if wa_zycbt007-comis = 'A' or wa_zycbt007-comis = ' '.

    wa_zycbe033-agkon = itab_selreg-lifnr.

    wa_zycbe033-agkoa = 'K'.

  else.

    wa_zycbe033-agkoa = 'S'.

    wa_zycbe033-agkon = itab_zycbt012a-saknr1.

  endif.

  if wa_zycbt007-liq_trans eq 'R'.

    wa_zycbe033-d_newko = itab_zycbt012-saknr2.

    wa_zycbe033-newbs   = '50'.

    wa_zycbe033-agkon   = itab_selreg-lifnr.

    wa_zycbe033-agkoa   = 'K'.

    wa_zycbe033-wrbtr   = v_valorc.

    wa_zycbe033-belnr = itab_zycet010-belnr.

    clear v_year.

    call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         exporting

              v_bukrs                = <fs_op>-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 wa_zycbe033 to itab_zycbe033.

  if <fs_op>-status ne 'E'.

    wa_zycbt036-tcode   = 'F-30'.

    wa_zycbt036-tabela  = '/PWS/ZYCBT226'.

    wa_zycbt036-cpochv  = v_cpochv.

    if /pws/zycet037-comis_provisao is initial or

       /pws/zycet037-comis_provisao eq 0.

      wa_zycbt036-belnr   = itab_zycet010-belnr.

      clear v_year.

      call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           exporting

                v_bukrs                = <fs_op>-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.

      wa_zycbt036-belnr   = itab_zycet013-belnr.

      clear v_year.

      call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           exporting

                v_bukrs                = <fs_op>-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 = <fs_op>-bukrs

           and belnr = itab_zycet013-belnr

           and gjahr = v_year.

    endif.

    wa_zycbt036-dtdocto = bkpf-budat.

    append wa_zycbt036 to itab_zycbt036  .

  endif.

  if wa_zycbt007-liq_trans ne 'R'.

    loop at itab_zycbt032a where tpmsg = 'S'.

      wa_zycbt036-tcode  = 'F-30'.

      wa_zycbt036-tabela = '/PWS/ZYCBT226'.

      wa_zycbt036-cpochv = v_cpochv.

      wa_zycbt036-belnr  = itab_zycbt032a-belnr.

      clear v_year.

      call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           exporting

                v_bukrs                = <fs_op>-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 = <fs_op>-bukrs

           and belnr = itab_zycbt032a-belnr

           and gjahr = v_year.

      wa_zycbt036-dtdocto = bkpf-budat.

      append wa_zycbt036 to 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 into wa_zycbt032

                                   with key tcode  = 'F-30'

                                            tabela = '/PWS/ZYCBT226'

                                            cpochv = v_cpochv

                                            tpmsg  = 'S'.

      if sy-subrc = 0.

        if /pws/zycet037-comis_provisao is initial or

           /pws/zycet037-comis_provisao eq 0.

          if <fs_op>-status <> 'E'.

            itab_zycet010-belnr51 = wa_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   = wa_zycbt032-belnr.

            itab_zycet010-dtlanc  = wa_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 <fs_op>-status <> 'E'.

            itab_zycet013-belnr_cl = wa_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    = wa_zycbt032-belnr.

            itab_zycet013-dtlanc   = wa_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.

        update /pws/zycbt226 set status = <fs_op>-status

                   where nrseq    = <fs_op>-nrseq

                     and nrinvoic = <fs_op>-nrinvoic

                     and nrparcf  = <fs_op>-nrparcf

                     and gsberf   = <fs_op>-gsberf.

        commit work.

      endif.

    endif.

    perform message_store

    using '/PWS/ZYCBM'

          'I'

          'DOC. CLEARING DE AGENTE.'(065)

          '-'

          <fs_op>-nrinvoic

          space

          '061'.

    perform message_store

    using wa_zycbt032-msgid

          wa_zycbt032-tpmsg

          wa_zycbt032-msgv1

          wa_zycbt032-msgv2

          wa_zycbt032-msgv3

          wa_zycbt032-msgv4

          wa_zycbt032-nrmsg.

  endif.

endform.

form fill_date_f30_comissao .

  data: v_chave(50), v_erro_f28(1), v_aux,

        v_status_f30(1) value 'E',

        v_vlslliq  like /pws/zycbt030-vlslliq.

  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'.

        wa_zycbe033-newbs   = '40'.

      else.

        wa_zycbe033-newbs   = '21'.

      endif.

    else.

      if wa_zycbt007-comis = 'C'.

        wa_zycbe033-newbs   = '50'.

      else.

        wa_zycbe033-newbs = '31'.

      endif.

    endif.

    if wa_zycbt007-comis = 'C'.

      wa_zycbe033-d_newko = itab_zycbt012a-saknr1.

    else.

      wa_zycbe033-d_newko = itab_selreg-lifnr.

    endif.

    perform verify_null_field using wa_zycbe033-d_newko

                                             'KONTO'

                                             text-016.

    wa_zycbe033-agkoa   = 'D'.

    wa_zycbe033-agkon = itab_zycbt017_cg-kunag.

    perform verify_null_field using wa_zycbe033-agkon

                                             'AGKON'

                                             text-042.

    perform dados_batch.

    concatenate itab_aux-nrinvoic

                itab_aux-nrparcf

                itab_aux-vbeln itab_aux-gsberf into v_chave.

    wa_zycbe033-cpochv  = v_chave.

    perform valor_baixar_comissao.

    perform verify_null_field using itab_aux-belnr6

                                            'BELNR'

                                          text-044.

    wa_zycbe033-belnr  = itab_aux-belnr6.

    clear v_year.

    call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

         exporting

              v_bukrs                = <fs_op>-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 = <fs_op>-bukrs

         and belnr = itab_aux-belnr6

         and gjahr = v_year.

    wa_zycbe033-dtdocto = bkpf-budat.

    if wa_zycbe033-wrbtr gt 0.

      append wa_zycbe033 to itab_zycbe033.

    endif.

  endloop.

  loop at itab_zycbt034 into wa_zycbt034.

    perform message_store using

      '/PWS/ZYCBM'

      'W'

      wa_zycbt034-descricao

      space

      space

      space

      '016'.

  endloop.

  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 into wa_zycbt032

                                 with key tcode  = v_trans

                                          tabela = '/PWS/ZYCBT226'

                                          cpochv = v_chave

                                          tpmsg  = 'S'.

        if sy-subrc = 0.

          wa_zycbt030-belnr6 = wa_zycbt032-belnr.

          read table itab_zycbe033 into wa_zycbe033

               with key cpochv = v_chave.

          wa_zycbt030-budat  = wa_zycbt030-budat.

          clear v_vlslliq.

          v_vlslliq = wa_zycbt030-vlslliq - itab_zycbt017_cg-vlcomis.

          wa_zycbt030-vlslliq = v_vlslliq.

          modify itab_zycbt030 from wa_zycbt030

               transporting belnr6 budat vlslliq

                 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 = wa_zycbt032-belnr

                               budat  = wa_zycbe033-budat

                               vlslliq = v_vlslliq

                      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 <fs_op>-status <> 'E'.

              itab_zycet010-status  = 'C'.

              itab_zycet010-belnr_p = wa_zycbt032-belnr.

              itab_zycet010-dtpagto = v_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   = wa_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 <fs_op>-status <> 'E'.

              itab_zycet013-status  = 'C'.

              itab_zycet013-belnr_c = wa_zycbt032-belnr.

              itab_zycet013-dtpagto = v_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   = wa_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 wa_zycbt032 to itab_zycbt032a.

          move wa_zycbe033-budat to itab_zycbt032a-budat.

          append itab_zycbt032a.

          v_status_f30 = 'S'.

          perform message_store

        using '/PWS/ZYCBM'

              'I'

              'DOC. COMISSÃO DE AGENTE.'(064)

              '-'

              <fs_op>-nrinvoic

              space

              '061'.

          perform message_store

          using wa_zycbt032-msgid

                wa_zycbt032-tpmsg

                wa_zycbt032-msgv1

                wa_zycbt032-msgv2

                wa_zycbt032-msgv3

                wa_zycbt032-msgv4

                wa_zycbt032-nrmsg.

        endif.

      endloop.

      if v_status_f30 eq 'S'.

        perform executa_clearing_agente.

      endif.

    elseif sy-subrc eq 1.

      loop at itab_zycbt034 into wa_zycbt034.

        perform message_store

          using '/PWS/ZYCBM'

                'E'

                'Campo não está preenchido.'(m13)

                wa_zycbt034-campo

                '-'

                wa_zycbt034-descricao

                '061'.

      endloop.

    else.

      loop at itab_zycbt032 into wa_zycbt032

        where tcode  = 'F-30'

          and tabela = '/PWS/ZYCBT226'

          and cpochv = wa_zycbe033-cpochv

          and tpmsg  = 'E'.

        perform message_store

          using wa_zycbt032-msgid

                wa_zycbt032-tpmsg

                wa_zycbt032-msgv1

                wa_zycbt032-msgv2

                wa_zycbt032-msgv3

                wa_zycbt032-msgv4

                wa_zycbt032-nrmsg.

      endloop.

    endif.

  endif.

endform.

form verifica_pais_filial using p_bukrs

                                p_brnch.

  select single adrnr from j_1bbranch into j_1bbranch-adrnr

                where bukrs  = p_bukrs

                  and branch = p_brnch.

  if sy-subrc = 0.

    select single country from adrc into adrc-country

                  where addrnumber = j_1bbranch-adrnr.

    if sy-subrc = 0 and

       adrc-country ne 'BR' and adrc-country ne 'TW'.

      clear p_brnch.

    endif.

  endif.

endform.

form estorna_comissao.

  clear:   itab_selreg,

           itab_zycet010,

           itab_zycet013.

  refresh: itab_zycet010,

           itab_zycet013.

  select single * from /pws/zycbt017

            into itab_zycbt017_cg

         where nrinvoic eq <fs_op>-nrinvoic

           and nrparcf  eq <fs_op>-nrparcf.

  select single * from /pws/zycbt037

           into itab_zycbt037_cg

         where parvw eq itab_zycbt017_cg-parvw.         "#EC CI_NOFIRST

  if sy-subrc ne 0.

    if itab_zycbt017_cg-parvw eq 'AD' or

       itab_zycbt017_cg-parvw eq 'DA'.

      select single * from /pws/zycbt037

               into itab_zycbt037_cg

          where parvw eq 'AD' or

                parvw eq 'DA'.                          "#EC CI_NOFIRST

    endif.

  endif.

  check itab_zycbt037_cg-codpad eq 'G'

     or itab_zycbt037_cg-codpad eq 'D'.

  select single * from /pws/zycet037

         where bukrs eq <fs_op>-bukrs.

  if sy-subrc ne   0.

    select single * from /pws/zycet037

           where bukrs eq space.

  endif.

  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 <fs_op>-nrinvoic

          and ( dtpagto ne '        ' or

                  dtpagto ne '00000000' ).

    loop at itab_zycet010.

      move: itab_zycet010-nrseq     to itab_selreg-nrchave,

            <fs_op>-nrseq           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,

            itab_zycbt037_cg-codpad to itab_selreg-codp.

      append itab_selreg.

      perform fill_date6_f22_comissao.

    endloop.

  else.

    select *

          into table itab_zycet013

          from /pws/zycet013

          where nrseq eq <fs_op>-nrinvoic

            and gsber eq <fs_op>-gsberf

            and ( dtpagto ne '        ' or

                  dtpagto ne '00000000' ).

    loop at itab_zycet013.

      move: itab_zycet013-nrseq     to itab_selreg-nrchave,

            <fs_op>-nrseq           to itab_selreg-docto,

            itab_zycet013-vlme      to itab_selreg-vlme,

            itab_zycet013-lifnr     to itab_selreg-lifnr,

            itab_zycbt037_cg-codpad to itab_selreg-codp.

      append itab_selreg.

      perform fill_date6_f22_comissao.

    endloop.

  endif.

endform.

form fill_date6_f22_comissao.

  clear: itab_zycbt032a, itab_zycbt036.

  refresh: itab_zycbt032a, itab_zycbt036.

  perform clear_date_batch.

  perform get_parameters_comissao.

  perform verifica_rateio1.

  if wa_zycbt007-comis = 'C'.

    read table itab_zycbt012a with key chlanc = 'C'.

  endif.

  loop at itab_aux.

    wa_zycbe033-tcode  = 'F-22'.

    wa_zycbe033-tabela = '/PWS/ZYCBT226'.

    concatenate itab_aux-nrinvoic itab_aux-vbeln

                itab_aux-gsberf into v_cpochv.

    wa_zycbe033-cpochv = v_cpochv.

    perform verifica_pais_filial using <fs_op>-bukrs

                                       <fs_op>-j_1bbranch.

    wa_zycbe033-brnch = <fs_op>-j_1bbranch.

    perform get_parameters_003.

    perform verifica_taxa_original.

    wa_zycbe033-kursf = v_taxa.

    perform verify_null_field using wa_zycbe033-kursf

                                    'TXCAMB'

                                    text-051.

    wa_zycbe033-d_gsber = <fs_op>-gsberf.

    wa_zycbe033-augtx   = wa_zycbt011-txtdesc.

    wa_zycbe033-d_sgtxt = wa_zycbt011-txtdesc.

    wa_zycbe033-c_sgtxt = wa_zycbt011-txtdesc.

    wa_zycbe033-wrbtr = itab_aux-valor.

    perform verify_null_field using wa_zycbe033-wrbtr

                                    'WRBTR'

                                    text-007.

    loop at itab_zyglt321_cg into wa_zyglt321_cg.

      case wa_zyglt321_cg-cpor3.

        when 'SGTXT'.

          case  wa_zyglt321_cg-cpocb .

            when 'NRINVOIC'.

              wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nrinvoic.

              wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nrinvoic.

              wa_zycbe033-augtx    = itab_zycbt017_cg-nrinvoic.

            when 'NREMB'.

              wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nremb.

              wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nremb.

              wa_zycbe033-augtx    = itab_zycbt017_cg-nremb.

            when 'NRSEQ'.

              wa_zycbe033-d_sgtxt  = <fs_op>-nrseq.

              wa_zycbe033-c_sgtxt  = <fs_op>-nrseq.

              wa_zycbe033-augtx    = <fs_op>-nrseq.

            when 'REF_OP'.

              wa_zycbe033-d_sgtxt  = <fs_op>-ref_op.

              wa_zycbe033-c_sgtxt  = <fs_op>-ref_op.

              wa_zycbe033-augtx    = <fs_op>-ref_op.

          endcase.

        when 'XBLNR'.

          clear: v_ms.

          case  wa_zyglt321_cg-cpocb .

            when 'NRINVOIC'.

              wa_zycbe033-xblnr  = itab_zycbt017_cg-nrinvoic.

            when 'NREMB'.

              wa_zycbe033-xblnr = itab_zycbt017_cg-nremb.

            when 'NRSEQ'.

              wa_zycbe033-xblnr = <fs_op>-nrseq.

              when'REF_OP'.

              wa_zycbe033-xblnr = <fs_op>-ref_op.

            when 'NRINVOIC+MS'.

              concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

              concatenate itab_zycbt017_cg-nrinvoic v_ms

                      into wa_zycbe033-xblnr separated by space.

            when 'NREMB+MS'.

              concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

              concatenate itab_zycbt017_cg-nremb v_ms

                      into wa_zycbe033-xblnr separated by space.

            when 'NRSEQ+MS'.

              concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

              concatenate <fs_op>-nrseq v_ms

                      into wa_zycbe033-xblnr separated by space.

              when'REF_OP+MS'.

              concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

              concatenate <fs_op>-ref_op v_ms

                      into wa_zycbe033-xblnr separated by space.

          endcase.

        when 'ZFBDT'.

          case wa_zyglt321_cg-cpocb.

            when 'DTBL'.

              wa_zycbe033-zfbdt = itab_zycbt017_cg-dtbl.

            when  'DTINVOIC'.

              wa_zycbe033-zfbdt = itab_zycbt017_cg-dtinvoic.

            when  'DTVENCTO'.

              wa_zycbe033-zfbdt = itab_zycbt017_cg-dtvencto.

            when  'DTLANC'.

              wa_zycbe033-zfbdt = <fs_op>-dtlancto.

            when  'DTINCL'.

              wa_zycbe033-zfbdt = <fs_op>-dtincl.

            when 'DTLANC1'.

              wa_zycbe033-zfbdt = itab_selreg-dtlanc.

            when 'DTVENCTO1'.

              wa_zycbe033-zfbdt = itab_selreg-dtvencto.

          endcase.

        when 'VALUT'.

          case wa_zyglt321_cg-cpocb.

            when 'DTBL'.

              wa_zycbe033-d_valut = itab_zycbt017_cg-dtbl.

              wa_zycbe033-c_valut = itab_zycbt017_cg-dtbl.

            when  'DTINVOIC'.

              wa_zycbe033-d_valut = itab_zycbt017_cg-dtinvoic.

              wa_zycbe033-c_valut = itab_zycbt017_cg-dtinvoic.

            when  'DTVENCTO'.

              wa_zycbe033-d_valut = itab_zycbt017_cg-dtvencto.

              wa_zycbe033-c_valut = itab_zycbt017_cg-dtvencto.

            when  'DTLANC'.

              wa_zycbe033-d_valut = <fs_op>-dtlancto.

              wa_zycbe033-c_valut = <fs_op>-dtlancto.

            when  'DTLINCL'.

              wa_zycbe033-d_valut = <fs_op>-dtincl.

              wa_zycbe033-c_valut = <fs_op>-dtincl.

            when 'DTLANC1'.

              wa_zycbe033-d_valut = itab_selreg-dtlanc.

              wa_zycbe033-c_valut = itab_selreg-dtlanc.

            when 'DTVENCTO1'.

              wa_zycbe033-d_valut = itab_selreg-dtvencto.

              wa_zycbe033-c_valut = itab_selreg-dtvencto.

          endcase.

        when 'ZUONR'.

          case wa_zyglt321_cg-cpocb.

            when 'NRINVOIC'.

              wa_zycbe033-d_zuonr  = itab_zycbt017_cg-nrinvoic.

            when 'NREMB'.

              wa_zycbe033-d_zuonr = itab_zycbt017_cg-nremb.

            when 'NRSEQ'.

              wa_zycbe033-d_zuonr = <fs_op>-nrseq.

              when'REF_OP'.

              wa_zycbe033-d_zuonr = <fs_op>-ref_op.

          endcase.

        when 'ZTERM'.

          if wa_zyglt321_cg-cpocb = 'ZTERM'.

            wa_zycbe033-zterm = itab_zycbt017_cg-zterm.

          endif.

      endcase.

    endloop.

    wa_zycbe033-bldat = <fs_op>-dtlancto.

    wa_zycbe033-budat = <fs_op>-dtlancto.

    wa_zycbe033-d_newko = itab_zycbt017_cg-kunag.

    perform verify_null_field using wa_zycbe033-d_newko

                                   'KONTO'

                                   text-116.

    if wa_zycbt007-comis = 'C'.

      wa_zycbe033-c_newko = itab_zycbt012a-saknr1.

    else.

      wa_zycbe033-c_newko = itab_selreg-lifnr.

    endif.

    perform verify_null_field using wa_zycbe033-c_newko

                                   'KONTO'

                                   text-117.

    if wa_zycbt007-comis eq 'A'.

      if itab_aux-flag <> 'X'.

        wa_zycbe033-newbs  = '01'.

        wa_zycbe033-newbs1 = '31'.

      else.

        wa_zycbe033-newbs  = '11'.

        wa_zycbe033-newbs1 = '21'.

      endif.

    else.

      if itab_aux-flag <> 'X'.

        wa_zycbe033-newbs  = '01'.

        wa_zycbe033-newbs1 = '50'.

      else.

        wa_zycbe033-newbs  = '11'.

        wa_zycbe033-newbs1 = '40'.

      endif.

    endif.

    append wa_zycbe033 to itab_zycbe033.

    loop at itab_zycbt034 into wa_zycbt034.

      perform message_store using

        '/PWS/ZYCBM'

        'W'

        wa_zycbt034-descricao

        space

        space

        space

        '016'.

    endloop.

    if itab_zycbt034 is initial.

      call function '/PWS/ZYCB_TRANSACAO_F_22B'

           exporting

                v_modo          = v_modo_bi

           tables

                t_dados         = itab_zycbe033

                t_campo         = itab_zycbt034

                t_zycbt032      = itab_zycbt032

           exceptions

                campo_em_branco = 1

                others          = 2.

      if sy-subrc = 0.

        read table itab_zycbt032  with key tcode  = 'F-22'

                                        tabela = '/PWS/ZYCBT226'

                                        cpochv = v_cpochv

                                        tpmsg  = 'S'

                                        into wa_zycbt032.

        if sy-subrc = 0.

          move wa_zycbt032 to itab_zycbt032a.

          itab_zycbt032a-budat = wa_zycbe033-budat.

          append itab_zycbt032a.

          itab_contabil-nrinvoic = wa_zycbt030-nrinvoic.

          itab_contabil-nrparcf  = wa_zycbt030-nrparcf.

          itab_contabil-vbeln    = wa_zycbt030-vbeln.

          itab_contabil-gsberf   = wa_zycbt030-gsberf.

          itab_contabil-docto    = wa_zycbt032-belnr.

          itab_contabil-dtdocto  = wa_zycbe033-budat.

          itab_contabil-bukrs    = itab_zycbt006-bukrs.

          itab_contabil-msg      = text-119.

          append itab_contabil.

          itab_zycbt077-belnr = wa_zycbt032-belnr.

          itab_zycbt077-bukrs = wa_zycbe033-bukrs.

          itab_zycbt077-gjahr = wa_zycbe033-budat(4).

          itab_zycbt077-status = 'E'.

          itab_zycbt077-tcode = wa_zycbt032-tcode.

          concatenate '004' itab_selreg-codp into

                itab_zycbt077-codeven.

          itab_zycbt077-codmod = 'E'.

          itab_zycbt077-nrinvoic = itab_aux-nrinvoic.

          itab_zycbt077-nrparcf  = itab_aux-nrparcf.

          itab_zycbt077-vbeln    = itab_aux-vbeln.

          itab_zycbt077-gsberf   = itab_aux-gsberf.

          itab_zycbt077-dtpagto  = v_dtpagto.

          perform message_store

  using '/PWS/ZYCBM'

        'I'

        'DOC.ESTORNO COMISSÃO DE AGENTE.'(066)

        '-'

        <fs_op>-nrinvoic

        space

        '061'.

          perform message_store

            using wa_zycbt032-msgid

                  wa_zycbt032-tpmsg

                  wa_zycbt032-msgv1

                  wa_zycbt032-msgv2

                  wa_zycbt032-msgv3

                  wa_zycbt032-msgv4

                  wa_zycbt032-nrmsg.

          perform executa_clearing_cliente.

        else.

          loop at itab_zycbt032 into wa_zycbt032

           where tcode  = 'F-30'

             and tabela = '/PWS/ZYCBT226'

             and cpochv = wa_zycbe033-cpochv

             and tpmsg  = 'E'.

            perform message_store

              using wa_zycbt032-msgid

                    wa_zycbt032-tpmsg

                    wa_zycbt032-msgv1

                    wa_zycbt032-msgv2

                    wa_zycbt032-msgv3

                    wa_zycbt032-msgv4

                    wa_zycbt032-nrmsg.

          endloop.

        endif.

      elseif sy-subrc = 1.

        loop at itab_zycbt034 into wa_zycbt034.

          perform message_store

            using '/PWS/ZYCBM'

                  'E'

                  'Campo não está preenchido.'(m13)

                  wa_zycbt034-campo

                  '-'

                  wa_zycbt034-descricao

                  '061'.

        endloop.

      endif.

      call function '/PWS/ZYCB_ENQUEUE_CONTAS'

           exporting

                i_bloqueia    = 'X'

           tables

                itab_zycbt224 = itab_zycbe224

           exceptions

                zycbe224_null = 1

                erro_bloqueio = 2

                others        = 3.

      if sy-subrc <> 0.

        exit.

      endif.

    endif.

  endloop.

endform.

form local_negocio.

  clear wa_t001w.

  select single * from t001w into wa_t001w

    where werks = <fs_op>-werks.

endform.

form get_parameters_003.

  wa_zycbe033-bktxt  = wa_zycbt007-bktxt.

  perform verify_null_field using <fs_op>-bukrs

                                  'BUKRS'

                                  text-004.

  wa_zycbe033-bukrs  = <fs_op>-bukrs.

  perform verify_null_field using <fs_op>-waers

                                  'WAERS'

                                  text-005.

  wa_zycbe033-waers  = <fs_op>-waers.

  perform verify_null_field using wa_zycbt011-blart

                                  'BLART'

                                  text-006.

  wa_zycbe033-blart  = wa_zycbt011-blart.

endform.

form verifica_taxa_original.

  clear v_year.

  call function '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

       exporting

            v_bukrs                = <fs_op>-bukrs

            v_date                 = <fs_op>-dtlancto

       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.

  if /pws/zycet037-comis_provisao is initial or

     /pws/zycet037-comis_provisao eq 0.

    select single * from bkpf

      where bukrs eq <fs_op>-bukrs

        and belnr eq itab_zycet010-belnr

        and gjahr eq v_year.

  else.

    select single * from bkpf

      where bukrs eq <fs_op>-bukrs

        and belnr eq itab_zycet013-belnr

        and gjahr eq v_year.

  endif.

  v_taxa = bkpf-kursf.

endform.

form executa_clearing_cliente.

  perform clear_date_batch.

  wa_zycbe033-tcode  = 'F-30'.

  wa_zycbe033-tabela = '/PWS/ZYCBT226'.

  wa_zycbe033-cpochv = v_cpochv.

  v_dtpagto           = <fs_op>-dtlancto.

  perform verify_null_field using v_dtpagto

                                  'DTPAGTO'

                                  text-003.

  wa_zycbe033-budat  = v_dtpagto.

  perform verify_null_field using wa_zycbt011-blart

                                            'BLART'

                                          text-050.

  wa_zycbe033-blart  = wa_zycbt011-blart.

  perform verifica_data.

  perform define_cambio using v_databl

                              <fs_op>-waers

                              wa_zycbt007-waersb

                              wa_zycbe033-kursf.

  perform verify_null_field using wa_zycbe033-kursf

                                  'TXCAMB'

                                  text-051.

  if wa_zycbt007-fdtdoc   = 'D'.

    wa_zycbe033-bldat   = sy-datum.

    wa_zycbe033-d_valut = sy-datum.

  else.

    wa_zycbe033-bldat   = wa_zycbe033-budat.

    wa_zycbe033-d_valut = wa_zycbe033-budat.

  endif.

  loop at itab_zyglt321_cg into wa_zyglt321_cg.

    case wa_zyglt321_cg-cpor3.

      when 'SGTXT'.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nrinvoic.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-c_sgtxt  = itab_zycbt017_cg-nremb.

            wa_zycbe033-augtx    = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-c_sgtxt  = <fs_op>-nrseq.

            wa_zycbe033-augtx    = <fs_op>-nrseq.

          when 'REF_OP'.

            wa_zycbe033-d_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-c_sgtxt  = <fs_op>-ref_op.

            wa_zycbe033-augtx    = <fs_op>-ref_op.

        endcase.

      when 'XBLNR'.

        clear: v_ms.

        case  wa_zyglt321_cg-cpocb .

          when 'NRINVOIC'.

            wa_zycbe033-xblnr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-xblnr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-xblnr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-xblnr = <fs_op>-ref_op.

          when 'NRINVOIC+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nrinvoic v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NREMB+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate itab_zycbt017_cg-nremb v_ms

                    into wa_zycbe033-xblnr separated by space.

          when 'NRSEQ+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-nrseq v_ms

                    into wa_zycbe033-xblnr separated by space.

            when'REF_OP+MS'.

            concatenate sy-uzeit+2(2) ':' sy-uzeit+4(2) into v_ms.

            concatenate <fs_op>-ref_op v_ms

                    into wa_zycbe033-xblnr separated by space.

        endcase.

      when 'ZFBDT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-zfbdt = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-zfbdt = <fs_op>-dtlancto.

          when  'DTINCL'.

            wa_zycbe033-zfbdt = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-zfbdt = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-zfbdt = itab_selreg-dtvencto.

        endcase.

      when 'VALUT'.

        case wa_zyglt321_cg-cpocb.

          when 'DTBL'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtbl.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtbl.

          when  'DTINVOIC'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtinvoic.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtinvoic.

          when  'DTVENCTO'.

            wa_zycbe033-d_valut = itab_zycbt017_cg-dtvencto.

            wa_zycbe033-c_valut = itab_zycbt017_cg-dtvencto.

          when  'DTLANC'.

            wa_zycbe033-d_valut = <fs_op>-dtlancto.

            wa_zycbe033-c_valut = <fs_op>-dtlancto.

          when  'DTLINCL'.

            wa_zycbe033-d_valut = <fs_op>-dtincl.

            wa_zycbe033-c_valut = <fs_op>-dtincl.

          when 'DTLANC1'.

            wa_zycbe033-d_valut = itab_selreg-dtlanc.

            wa_zycbe033-c_valut = itab_selreg-dtlanc.

          when 'DTVENCTO1'.

            wa_zycbe033-d_valut = itab_selreg-dtvencto.

            wa_zycbe033-c_valut = itab_selreg-dtvencto.

        endcase.

      when 'ZUONR'.

        case wa_zyglt321_cg-cpocb.

          when 'NRINVOIC'.

            wa_zycbe033-d_zuonr  = itab_zycbt017_cg-nrinvoic.

          when 'NREMB'.

            wa_zycbe033-d_zuonr = itab_zycbt017_cg-nremb.

          when 'NRSEQ'.

            wa_zycbe033-d_zuonr = <fs_op>-nrseq.

            when'REF_OP'.

            wa_zycbe033-d_zuonr = <fs_op>-ref_op.

        endcase.

      when 'ZTERM'.

        if wa_zyglt321_cg-cpocb = 'ZTERM'.

          wa_zycbe033-zterm = itab_zycbt017_cg-zterm.

        endif.

    endcase.

  endloop.

  perform verify_null_field using <fs_op>-bukrs

                                         'BUKRS'

                                       text-048.

  wa_zycbe033-bukrs  = <fs_op>-bukrs.

  perform verify_null_field using itab_zycbt017_cg-waers

                                         'WAERS'

                                       text-049.

  wa_zycbe033-waers  = itab_zycbt017_cg-waers.

  wa_zycbe033-augtx   = wa_zycbt011-txtdesc.

  wa_zycbe033-d_sgtxt = wa_zycbe033-augtx.

  wa_zycbe033-bktxt   = wa_zycbt007-bktxt.

  wa_zycbe033-c_gsber = <fs_op>-gsberf.

  wa_zycbe033-d_gsber = <fs_op>-gsberf.

  wa_zycbe033-agkon = itab_zycbt017_cg-kunag.

  wa_zycbe033-agkoa = 'D'.

  perform verifica_pais_filial using <fs_op>-bukrs

                                     <fs_op>-j_1bbranch.

  wa_zycbe033-brnch = <fs_op>-j_1bbranch.

  append wa_zycbe033 to itab_zycbe033.

  wa_zycbt036-tcode  = 'F-30'.

  wa_zycbt036-tabela = '/PWS/ZYCBT226'.

  wa_zycbt036-cpochv = v_cpochv.

  wa_zycbt036-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 = <fs_op>-bukrs

       and belnr = wa_zycbt036-belnr

       and gjahr = v_year.

  wa_zycbt036-dtdocto = bkpf-budat.

  append wa_zycbt036 to itab_zycbt036  .

  v_belnr6 = itab_aux-belnr6.

  read table itab_zycbt032a with key

            cpochv = v_cpochv.

  wa_zycbt036-tcode  = 'F-30'.

  wa_zycbt036-tabela = '/PWS/ZYCBT226'.

  wa_zycbt036-cpochv = v_cpochv.

  wa_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 = wa_zycbt036-belnr

       and gjahr = v_year.

  wa_zycbt036-dtdocto = bkpf-budat.

  append wa_zycbt036 to itab_zycbt036  .

  if itab_zycbt034 is initial.

    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.

    if sy-subrc = 0.

      read table itab_zycbt032 with key tcode  = 'F-30'

                                            tabela = '/PWS/ZYCBT226'

                                            cpochv = v_cpochv

                                            tpmsg  = 'S'

                                            into wa_zycbt032.

      if sy-subrc = 0.

        wa_zycbt030-belnr6 = wa_zycbt032-belnr.

        wa_zycbt030-budat  = wa_zycbe033-budat.

        modify itab_zycbt030 from wa_zycbt030

               transporting belnr6 budat

               where nrinvoic = itab_aux-nrinvoic and

                     nrparcf  = itab_aux-nrparcf  and

                     vbeln    = itab_aux-vbeln    and

                     gsberf   = itab_aux-gsberf.

        modify itab_zycbt030 from wa_zycbt030

               transporting belnr6 budat

               where belnr6 = v_belnr6.

        modify /pws/zycbt030 from table itab_zycbt030.

        commit work.

        itab_aux-belnr6 = wa_zycbt032-belnr.

        itab_aux-budat  = wa_zycbe033-budat.

        modify itab_aux transporting belnr6

               where belnr6 = v_belnr6.

        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    = wa_zycbt032-belnr.

        itab_contabil-dtdocto  = wa_zycbe033-budat.

        itab_contabil-bukrs    = itab_zycbt006-bukrs.

        itab_contabil-msg      = text-111.

        append itab_contabil.

        itab_zycbt077-belnr = wa_zycbt032-belnr.

        itab_zycbt077-bukrs = wa_zycbe033-bukrs.

        itab_zycbt077-gjahr = wa_zycbe033-budat(4).

        itab_zycbt077-status = 'E'.

        itab_zycbt077-tcode = wa_zycbt032-tcode.

        concatenate '004' itab_selreg-codp into

              itab_zycbt077-codeven.

        itab_zycbt077-codmod = 'E'.

        itab_zycbt077-gsberf = itab_zycbt006-gsberf.

        itab_zycbt077-nrinvoic = itab_aux-nrinvoic.

        itab_zycbt077-nrparcf  = itab_aux-nrparcf.

        itab_zycbt077-vbeln    = itab_aux-vbeln.

        itab_zycbt077-gsberf   = itab_aux-gsberf.

        itab_zycbt077-dtpagto  = v_dtpagto.

        perform message_store

      using '/PWS/ZYCBM'

            'I'

            'DOC. CLEARING DE CLIENTE.'(067)

            '-'

            <fs_op>-nrinvoic

            space

            '061'.

        perform message_store

        using wa_zycbt032-msgid

              wa_zycbt032-tpmsg

              wa_zycbt032-msgv1

              wa_zycbt032-msgv2

              wa_zycbt032-msgv3

              wa_zycbt032-msgv4

              wa_zycbt032-nrmsg.

      else.

        loop at itab_zycbt032 into wa_zycbt032

          where tcode  = 'F-30'

            and tabela = '/PWS/ZYCBT226'

            and cpochv = wa_zycbe033-cpochv

            and tpmsg  = 'E'.

          perform message_store

            using wa_zycbt032-msgid

                  wa_zycbt032-tpmsg

                  wa_zycbt032-msgv1

                  wa_zycbt032-msgv2

                  wa_zycbt032-msgv3

                  wa_zycbt032-msgv4

                  wa_zycbt032-nrmsg.

        endloop.

      endif.

    else.

      loop at itab_zycbt034 into wa_zycbt034.

        perform message_store

          using '/PWS/ZYCBM'

                'E'

                'Campo não está preenchido.'(m13)

                wa_zycbt034-campo

                '-'

                wa_zycbt034-descricao

                '061'.

      endloop.

    endif.

    call function '/PWS/ZYCB_ENQUEUE_CONTAS'

         exporting

              i_bloqueia    = 'X'

         tables

              itab_zycbt224 = itab_zycbe224

         exceptions

              zycbe224_null = 1

              erro_bloqueio = 2

              others        = 3.

    if sy-subrc <> 0.

      exit.

    endif.

  endif.

endform.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCB034TOP

 

...

TABLES:

        /pws/zycbe226,

        /pws/zycbe238,

        /pws/zycbe239,

        /pws/zycbe240,

        /pws/zycbe242,

        /pws/zycbe017,

        /pws/zycbe017a,

        /pws/zycbt030,

        skb1,

* >> Início da inclusão:

        bsid,

        bkpf,

        j_1bbranch,

        adrc,

        /pws/zycet002,

        /pws/zycet020,

       /pws/zycet037,

* << Fim da inclusão

        /pws/zycbt089.

CONTROLS:

  ts_70        TYPE TABSTRIP,

  ts_principal TYPE TABSTRIP,

  tc_op        TYPE TABLEVIEW USING SCREEN '0110',

  tc_30        TYPE TABLEVIEW USING SCREEN '0120',

  tc_70        TYPE TABLEVIEW USING SCREEN '0131',

  tc_contrato  TYPE TABLEVIEW USING SCREEN '0132',

  tc_00        TYPE TABLEVIEW USING SCREEN '0150',

  tc_rendimentos TYPE TABLEVIEW USING SCREEN '0140',

...

 

...

      itab_contrato_ant   TYPE t_t_contrato,

      itab_doctos         TYPE t_t_doctos,

      itab_rendimentos_ant TYPE t_t_rendimentos,

      itab_contabilizacoes TYPE t_t_contabilizacoes.

DATA: BEGIN OF itab_zycbt005 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt005.

DATA: END OF itab_zycbt005.

DATA: BEGIN OF itab_zycbt006 OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt006.

DATA: END OF itab_zycbt006.

* >> Início da inclusão:

DATA: BEGIN OF itab_selreg OCCURS 100,

            nrchave(10) TYPE c,

            docto(10)   TYPE c,

            DTLANC      LIKE /PWS/ZYCET010,

            dtvencto    LIKE /pws/zycbt004-dtvencto,

            vlme        LIKE /pws/zycbt004-vlme,

            dtinicio    LIKE /pws/zycbt113-dtinicio,

            lifnr       LIKE /pws/zycbt119-lifnr,

            codp        LIKE /pws/zycbt037-codpad,

 END OF itab_selreg,

 BEGIN OF itab_aux OCCURS 10,

            nrinvoic  LIKE /pws/zycbt030-nrinvoic,

            nrparcf   LIKE /pws/zycbt030-nrparcf,

            vbeln     LIKE /pws/zycbt030-vbeln,

            gsberf    LIKE /pws/zycbt030-gsberf,

            valor     LIKE /pws/zycbt030-kwert,

            belnr6    LIKE /pws/zycbt030-belnr,

            budat     LIKE /pws/zycbt030-budat,

            flag(1)   TYPE c,

 END OF itab_aux.

DATA: itab_zycbt012 LIKE /pws/zycbt012 OCCURS 10 WITH HEADER LINE.

DATA: BEGIN OF itab_zycet010 OCCURS 1.

        INCLUDE STRUCTURE /pws/zycet010.

DATA: END OF itab_zycet010.

DATA: BEGIN OF itab_zycet013 OCCURS 1.

        INCLUDE STRUCTURE /pws/zycet013.

DATA: END OF itab_zycet013.

DATA: BEGIN OF itab_zycbt017_cg OCCURS 1.

          INCLUDE STRUCTURE /pws/zycBt017.

DATA: END OF itab_zycbt017_CG.

DATA: BEGIN OF itab_zycbt037_cg OCCURS 1.

          INCLUDE STRUCTURE /pws/zycBt037.

DATA: END OF itab_zycbt037_CG.

DATA: BEGIN OF itab_erro OCCURS 0,

         vbeln  LIKE /pws/zycbt030-vbeln,

         msg    LIKE /pws/zycbt032-msg,

       END OF itab_erro.

DATA: BEGIN OF itab_zycbt032a OCCURS 10.

        INCLUDE STRUCTURE /pws/zycbt032.

DATA budat  LIKE /pws/zycbe033-budat.

DATA: END OF itab_zycbt032a.

DATA: BEGIN OF itab_zycbt012a OCCURS 2.

        INCLUDE STRUCTURE /pws/zycbt012.

DATA: END OF itab_zycbt012a.

DATA: v_valorc     LIKE /pws/zycbt017-vlcomis,

      v_vlcomis    LIKE /pws/zycbt017-vlcomis,

      v_saliq      LIKE /pws/zycbt006-vlme,

      v_some       LIKE /pws/zycbt006-vlme,

      v_year       LIKE bkpf-gjahr,

      v_dtpagto    LIKE /pws/zycbe006-dtpagto,

      v_cpochv     LIKE /pws/zycbe033-cpochv,

      v_gjahr      LIKE bsid-gjahr,

      v_belnr6     LIKE /pws/zycbt030-belnr6,

      v_taxa       LIKE bkpf-kursf,

      v_dtemb      LIKE /pws/zycet001-dtemb,

      v_ms(5)      TYPE c,

      v_trans(4),

      v_databl     LIKE /pws/zycbe005-dtvincul,

      v_vinculacao TYPE c.

DATA: BEGIN OF itab_doc_f02 OCCURS 0,

      docto  LIKE /pws/zycbt005-belnr,

      f02(1) TYPE c,

      END OF itab_doc_f02.

DATA: BEGIN OF itab_contabil OCCURS 0,

        nrinvoic LIKE /pws/zycbt030-nrinvoic,

        nrparcf  LIKE /pws/zycbt030-nrparcf,

        vbeln    LIKE /pws/zycbt030-vbeln,

        gsberf   LIKE /pws/zycbt030-gsberf,

        docto    LIKE /pws/zycbt030-belnr,

        msg      LIKE /pws/zycbt032-msg,

        dtdocto  LIKE /pws/zycbt030-budat,

        bukrs    LIKE /pws/zycbe033-bukrs,

      END OF itab_contabil.

DATA: BEGIN OF itab_zycbt077 OCCURS 1.

        INCLUDE STRUCTURE /pws/zycbt077.

DATA: END OF itab_zycbt077.

DATA: wa_zycbt011    LIKE /pws/zycbt011,

      wa_zycbt009    LIKE /pws/zycbt009,

      wa_zycbt034    TYPE t_s_zycbt034,

      wa_zycbe033    TYPE t_s_zycbe033,

      wa_zycbt036    TYPE t_s_zycbt036,

      wa_zycbt032    TYPE t_s_zycbt032,

      wa_t001w       LIKE t001w,

      itab_zycbt013  LIKE /pws/zycbt013 OCCURS 10 WITH HEADER LINE,

      itab_zyglt321_cg TYPE STANDARD TABLE OF /pws/zyglt321,

      wa_zyglt321_cg   LIKE LINE OF itab_zyglt321.

DATA: BEGIN OF itab_zycbt006_pagos OCCURS 0.

        INCLUDE STRUCTURE /pws/zycbt006.

DATA: END OF itab_zycbt006_pagos.

DATA: BEGIN OF itab_zycbt030_CG OCCURS 10.

        INCLUDE STRUCTURE /pws/zycbt030.

DATA:

      bukrs   TYPE bkpf-bukrs,

      gjahr   TYPE bkpf-gjahr,

      zterm   LIKE /pws/zycbt017-zterm,

      v_belnr LIKE /pws/zycbt030-belnr,

      s_kwert LIKE /pws/zycbt030-kwert,

      v_kwert LIKE /pws/zycbt030-kwert,

      v_kwert2 LIKE /pws/zycbt030-kwert,

      belnr7  LIKE /pws/zycbt030-belnr,

      flag(1) TYPE c,

      belnr_d LIKE /pws/zycbt030-belnr,

      status_d(1),

      v_duplica(1) TYPE c,

      END OF itab_zycbt030_CG.

* << Fim da inclusão

DATA: wa_zycbt007  TYPE t_s_zycbt007,

      wa_zyglt009  TYPE t_s_zyglt009,

      wa_zycbt089  TYPE t_s_zycbt089,

      wa_controle  TYPE t_controle,

      wa_fat       TYPE t_s_zycbt017,

      wa_zycbt030  TYPE t_s_zycbt030,

      wa_zycbt209       TYPE t_s_zycbt209.

FIELD-SYMBOLS: <fs_op>  TYPE t_s_zycbe226.

DATA:

  v_text_sld_exterior(24) TYPE c,

...

 

 

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

Modificações efetuadas em REPT /PWS/SAPMZYCB034

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 061

 

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: 062

 

Texto: (15 caracteres)

"Comissão Agente"

 

Comprimento máximo: 15

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 063

 

Texto: (22 caracteres)

"Comissão não Liquidada"

 

Comprimento máximo: 22

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 064

 

Texto: (24 caracteres)

"DOC. COMISSÃO DE AGENTE."

 

Comprimento máximo: 24

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 065

 

Texto: (24 caracteres)

"DOC. CLEARING DE AGENTE."

 

Comprimento máximo: 24

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 066

 

Texto: (31 caracteres)

"DOC.ESTORNO COMISSÃO DE AGENTE."

 

Comprimento máximo: 31

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 067

 

Texto: (25 caracteres)

"DOC. CLEARING DE CLIENTE."

 

Comprimento máximo: 25

 

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

Incluído símbolo de texto:

 

Idioma: PT

 

Símbolo: 100

 

Texto: (51 caracteres)

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

 

Comprimento máximo: 51