CE PLUS - Nota 002962

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Mercadoria

Data/Hora da Publicação: 24/01/2007 00:00:00

Data/Hora Última Alteração: 22/02/2011 16:06:13

Descrição da Nota: DA PARA ESTORNAR PAGAMENTO ANTECIPADO NA FATURA

Sintoma

Quando "desassociamos" o pagamento antecipado no câmbio e tentamos estornar a

fatura no pwCe importação o sistema dá msg "fatura liquidada" e não estorna a fatura na importação

apesar de todo o processo no câmbio estar estornado/desassociado.

 

 

Solução

Feito o Desenvolvimento Adicional para tratar as faturas com pagamentos antecipado estornado.

 

Versões Tratadas

6.0


Pré-Requisitos

Produto:

Nota

Descrição

ESTORNO DE UMA FATURA, SE O MÊS DE LANÇAMENTO ORIGINAL ESTIVER FECHADO

ERRO AUTORIZAÇÃO BATCH INPUT MESMO PARAMETRIZADO NA /PWS/ZYGLT384

FATURA CAMPO FORMA DE PADAMENTO

NÃO ESTÁ FAZENDO VARIAÇÃO CAMBIAL DA DI

DECLARAÇÃO DE ESTRUTURA EM COMMON PART NA FATURA

TRATAMENTO PARA MOTIVO DE ESTORNO DA FB08 NA FATURA

MENSAGEM COM PAGAMENTO ANTECIPADO

ESTORNOS DA FATURA ATRAVÉS DE EXIT, PARA ATENDER ESPECÍFICO DO CLIENTE.

ESTORNO FATURA ELIMINADA POR FORA

Informações Complementares

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

Nota Número 02962 Data: 24/01/2007 Hora: 16:23:56

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

 

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

Nota Número              : 02962

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 6.0

Pacote                   : 00026

Agrupamento              : 00150

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

Referência às notas relacionadas:

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

 

01507  - 00001 - 6.0    - 00023  - NÃO ESTÁ FAZENDO VARIAÇÃO CAMBIAL DA DI

01530  - 00002 - 6.0    - 00023  - DECLARAÇÃO DE ESTRUTURA EM COMMON PART NA FATURA

01947  - 00003 - 6.0    - 00024  - ERRO AUTORIZAÇÃO BATCH INPUT MESMO PARAMETRIZADO NA /PWS/ZYGLT384

02033  - 00004 - 6.0    - 00024  - ESTORNO DE UMA FATURA, SE O MÊS DE LANÇAMENTO ORIGINAL ESTIVER FE

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

02339  - 00006 - 6.0    - 00025  - FATURA CAMPO FORMA DE PADAMENTO

02349  - 00007 - 6.0    - 00025  - ESTORNOS DA FATURA ATRAVÉS DE EXIT, PARA ATENDER ESPECÍFICO DO CL

02714  - 00008 - 6.0    - 00026  - MENSAGEM COM PAGAMENTO ANTECIPADO

02864  - 00009 - 6.0    - 00026  - ESTORNO FATURA ELIMINADA POR FORA

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

DA PARA ESTORNAR PAGAMENTO ANTECIPADO NA FATURA

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

Palavras Chave:

FATURA - PAG. ANTECIPADO - ESTORNO

 

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

Objetos da nota:

FUNC /PWS/ZYCI_TRANSACAO_F_43A

FUNC /PWS/ZYCI_TRANSACAO_F_51D

REPS /PWS/LZYCIGF2UXX

REPS /PWS/MZYCI003F01

REPS /PWS/MZYCI003F02

REPS /PWS/MZYCI003I01

REPS /PWS/MZYCI003TOP

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_TRANSACAO_F_43A

 

...

          PERFORM bdc_field USING 'BDC_OKCODE' 'ZK'.

          PERFORM bdc_screen USING 'SAPMF05A' '0332'.

          PERFORM bdc_field  USING:

                  'BSEG-FDLEV' t_dados-ebene,

                  'BSEG-FDTAG' v_data_tes_char,

                  'BDC_OKCODE' '/00'.

          IF NOT t_dados-bvtyp IS INITIAL.

            PERFORM bdc_field  USING: 'BSEG-BVTYP' t_dados-bvtyp.

          ENDIF.

        ELSE.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_F_43A

          IF v_linha NE v_index .

* << Fim da inclusão

          PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_F_43A

          ELSE.

            PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

          ENDIF.

* << Fim da inclusão

        ENDIF.

      ELSEIF t_contas-bschl EQ '40' OR t_contas-bschl EQ '50'.

        t_dados-d_prctr = t_dados-c_prctr = t_contas-d_prctr.

        PERFORM determina_string USING v_chave_debito

...

 

 

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

Modificações efetuadas em FUNC /PWS/ZYCI_TRANSACAO_F_51D

Criada a função:

 

FUNCTION /pws/zyci_transacao_f_51d.

*"----------------------------------------------------------------------

*"*"Interface local:

*"  IMPORTING

*"     VALUE(V_BELNR) LIKE  BKPF-BELNR OPTIONAL

*"     VALUE(V_MODO) LIKE  /PWS/ZYCBT039-MODO OPTIONAL

*"     REFERENCE(V_TOTLINE) TYPE  N OPTIONAL

*"     REFERENCE(V_REC) OPTIONAL

*"  TABLES

*"      T_DADOS STRUCTURE  /PWS/ZYCBE033

*"      T_CAMPO STRUCTURE  /PWS/ZYCBT034 OPTIONAL

*"      T_ZYCBT032 STRUCTURE  /PWS/ZYCIT032 OPTIONAL

*"      T_CONTAS STRUCTURE  /PWS/ZYCBE035 OPTIONAL

*"      T_DOC STRUCTURE  /PWS/ZYCBT036 OPTIONAL

*"  EXCEPTIONS

*"      CAMPO_EM_BRANCO

*"      PERIODO_FECHADO

*"----------------------------------------------------------------------

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

*  ASPEN Procwork

*  Módulo    : FI

*  Descrição : CÂMBIO - Função - Call transaction da transação F-51

*                       Os dados serão fornecidos pela tabela T_DADOS.

*                       O retorno será gravado na tabela T_ZYCBT032

*                       Se algum campo obrigatório não for preenchido

*                       ele será guardado na tabela T_CAMPO.

*                     - Compensa fornecedor MR1M, lancto por divisão.

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

*  Nome                    Data           Descrição

*  Robério Lacerda         06/10/00       Busca 1 documento para

*                                         compesação e entra com N

*                                         pernas de lançamento em

*                                         entrada rápida.

*  Ronaldo Pinto           20/11/01       Ajustes ano contábil

*  Jéssica M.              06/06/2004     Comentei o trecho do Campo

*                                         COBL_FIPOS que não estava

*                                         sendo utilizado .

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

* Variáveis

  DATA:

    v_string_debito        LIKE tbsl-faus1,

    v_string_credito       LIKE tbsl-faus1,

    v_chave_debito         LIKE tbsl-bschl VALUE '40',

    v_chave_credito        LIKE tbsl-bschl VALUE '50',

    v_chave                TYPE c,

    v_data_doc_char(10)    TYPE c,

    v_data_lanc_char(10)   TYPE c,

    v_data_val_char(10)    TYPE c,

    v_pep                  LIKE prps-posid,

    v_linha                TYPE i,

    v_cont(2) TYPE n,

    v_campo(15),

    v_bldat(10),                       " Data do doc. em caracter

    v_budat(10),                       " Data de lançto em caracter

    v_wrbtr(16),                       " Montante em caracter

    v_kursf(9),                        " Câmbio

    v_xpos(14),                        " Posição do nº doc

    v_taxam              LIKE bkpf-kursf,    " Taxa cambial média do dia

    v_nrmsg              TYPE i VALUE 0,

    v_transacao(4)       TYPE c,

    v_mode               TYPE c,

    v_update             TYPE c,

    v_msgid              LIKE t100-arbgb,

    v_msgno              LIKE t100-msgnr,

    v_koart              LIKE t001b-mkoar,

    v_ok(1)              VALUE 'N',

    v_monat              LIKE t001b-frpe1,

    v_bukrs              LIKE t001-bukrs,

    v_gjahr              LIKE t001b-frye1,

    v_valut(10),                       "Data valor em caracter

    v_lines              TYPE i,       "Linhas da itab.

    v_buzei              LIKE bseg-buzei,

    v_index              TYPE i,

    v_date               LIKE t009b-bdatj, "ano Contábil

    v_itens              TYPE i,       "Numero de Itens

    v_index_aux          TYPE i,

    t_contas_aux         LIKE t_contas OCCURS 0 WITH HEADER LINE,

    v_xpos_awkey(14),                  " Posição Data Lçto

    v_xpos1(14),                        " Posição do nº doc

    v_chavedoc(20),

    v_empresas(1).       " Flag para conta cadastrada.

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

* Processamento

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

  DESCRIBE TABLE t_dados LINES v_lines.

  LOOP AT t_dados.

    v_index = sy-tabix.

    IF sy-tabix EQ '01'.

      CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

           EXPORTING

                v_bukrs                = t_dados-bukrs

                v_date                 = t_dados-budat

           IMPORTING

                v_year                 = v_date

           EXCEPTIONS

                variante_de_exercicio  = 1

                data_nao_encontrada    = 2

                empresa_nao_encontrada = 3

                period_in_not_valid    = 4

                period_not_assigned    = 5

                version_undefined      = 6

                OTHERS                 = 7.

      IF sy-subrc <> 0.

        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

      ENDIF.

      CHECK t_dados-tcode = 'F-51'.

*   Testa se os campos da T_dados que serão usados estão preenchidos

      IF ( t_dados-bukrs = space ).

*     Preenche campo na tabela T_CAMPO

        t_campo-mandt = t_dados-mandt.

        t_campo-campo = 'BKPF-BUKRS'.

        t_campo-descricao = text-021.

        APPEND t_campo.

        RAISE campo_em_branco.

      ENDIF.

      WRITE: t_dados-bldat   TO v_bldat,

             t_dados-budat   TO v_budat,

             t_dados-wrbtr   TO v_wrbtr CURRENCY t_dados-waers,

             t_dados-bukrs   TO v_bukrs.

      v_gjahr = v_date.  "t_dados-budat+0(4).           "ano

      v_koart = 'K'.                          "tipo de conta: Fornecedor

      DATA: v_monat1(2) TYPE n.

 

      PERFORM period_determine USING t_dados-budat

                                     v_bukrs

                                     v_gjahr

                               CHANGING v_monat1.

 

      IF NOT v_monat1 IS INITIAL.

        MOVE v_monat1 TO v_monat.

      ELSE.

        v_monat = t_dados-budat+4(2).

      ENDIF.

 

      PERFORM check_periodo USING    v_koart

                                     v_monat

                                     v_bukrs

                                     v_gjahr

                            CHANGING v_budat

                                     v_ok.

      CONCATENATE '0' v_budat+3(2) INTO v_monat.

 

* Buscando Empresas com a mesma conta

      CLEAR v_empresas.

      PERFORM verifica_empresas USING t_dados-bukrs

                                      'UMBUCHNG'

                                      t_dados-d_newko

                                      t_dados-agkoa

                             CHANGING v_empresas.

 

*   Tela inicial - 0122

      PERFORM bdc_screen USING 'SAPMF05A' '0122'.

      PERFORM bdc_field USING:

              'BKPF-BLDAT'  v_bldat,                  "Data documento

              'BKPF-BLART'  'CA',                     "Tipo documento

              'BKPF-BUKRS'  v_bukrs,                  "Empresa

              'BKPF-BUDAT'  v_budat,                  "Data lançamento

              'BKPF-MONAT'  v_budat+3(2),             "Período

              'BKPF-WAERS'  t_dados-waers,            "Moeda

              'BKPF-XBLNR'  t_dados-xblnr,            "Referência

              'BKPF-BKTXT'  t_dados-bktxt,            "Texto cabeçalho

              'RF05A-AUGTX' t_dados-augtx,            "Texto compensação

              'BDC_OKCODE'  '=SL'.                    "Selecionar PA

    ENDIF.

 

*   Tela Selecionar Partidas em Aberto - 0710

    PERFORM bdc_screen USING 'SAPMF05A' '0710'.

    PERFORM bdc_field USING:

            'RF05A-AGKON' t_dados-d_newko,           "Fornecedor

            'RF05A-AGKOA' t_dados-agkoa,             "Tipo de Conta

            'BDC_OKCODE'  '=SLB'.                   "Processar PA

 

*  Tela 733

    PERFORM bdc_screen USING 'SAPMF05A' '0733'.

 

    DATA: v_belnrano(17) TYPE n.

    v_cont = 0.

 

    LOOP AT t_doc WHERE tcode  = t_dados-tcode

                          AND tabela = t_dados-tabela

                          AND cpochv = t_dados-cpochv

                          AND belnr  <> v_belnr.

      CLEAR v_belnrano.

 

      CONCATENATE t_doc-belnr t_doc-dtdocto(04) INTO v_belnrano.

      v_cont = v_cont + 1.

 

      CLEAR v_campo.

      CONCATENATE 'RF05A-FELDN(' v_cont ')' INTO v_campo.

 

      PERFORM bdc_field USING:

           v_campo           'BELNR'            . "Nº Documento

 

      CLEAR v_campo.

      CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.

 

      PERFORM bdc_field USING:

           v_campo            v_belnrano        . "Nº Docto Contábil

    ENDLOOP.

 

    PERFORM bdc_field USING:

            'BDC_OKCODE'        '=PA'            . "Partidas Abertas

 

*   Marcar tudo

    PERFORM bdc_screen USING 'SAPDF05X' '3100'.             "1106

    PERFORM bdc_field USING: 'BDC_OKCODE' '=OMX'.

*       Ativar

    PERFORM bdc_screen USING 'SAPDF05X' '3100'.             "1106

    PERFORM bdc_field USING: 'BDC_OKCODE' '=Z+'.

    PERFORM bdc_screen USING 'SAPDF05X' '3100'.

    PERFORM bdc_field  USING 'BDC_OKCODE'    '=AB'.

    IF v_lines EQ v_index.

* Tela para selecionar Empresa

      IF v_empresas EQ 'X'.

        PERFORM bdc_screen USING  'SAPMF05A'    '0701'.

        PERFORM bdc_field  USING: 'BDC_CURSOR'  'RF05A-BUKZ1(1)',

                                  'BDC_OKCODE'  '=PI'.

      ENDIF.

 

**       Tela - Posicionar conta contábil '700'

      PERFORM bdc_screen USING 'SAPMF05A' '0700'.

* Se não houver novas partidas, salvar a compensação.

      READ TABLE t_contas INDEX 1.

      IF sy-subrc NE 0.

        PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.

      ELSE.

        PERFORM bdc_field  USING:

            'RF05A-NEWKO' t_contas-d_newko,          "Conta contábil

            'RF05A-NEWBS' t_contas-bschl.            "Chave Lançamento

        PERFORM bdc_field USING 'BDC_OKCODE' '/00'.

        t_contas_aux[] = t_contas[].

      ENDIF.

    ELSE.

      if v_empresas eq 'X'.

        PERFORM bdc_screen USING  'SAPMF05A'    '0701'.

      else.

        PERFORM bdc_screen USING  'SAPMF05A'    '0700'.

      endif.

      PERFORM bdc_field  USING  'BDC_OKCODE'  '=SL'. "Selecionar PA

    ENDIF.

  ENDLOOP.

 

  LOOP AT t_contas.

    v_index = sy-tabix.

    v_index_aux = v_index + 1.

    v_buzei = sy-tabix.

*      if t_contas-bschl = v_chave_credito.

    IF t_contas-bschl EQ v_chave_debito.

      "Determina string de campos de débito

      PERFORM determina_string USING v_chave_debito

                                     t_dados-bukrs

                                     t_contas-d_newko

                            CHANGING v_string_debito.

    ELSEIF t_contas-bschl EQ v_chave_credito.

      "Determina a string de campos de crédito

      PERFORM determina_string USING v_chave_credito

                                   t_dados-bukrs

                                   t_contas-d_newko

                          CHANGING v_string_credito.

    ENDIF.

 

*     Verificando se campos obrigatórios estão preenchidos

    CLEAR itab_oculto.

    REFRESH itab_oculto.

    t_dados-d_prctr = t_dados-c_prctr = t_contas-d_prctr.

    IF t_contas-bschl EQ v_chave_debito.

      v_chave = 'D'.

      PERFORM trata_string_debito TABLES t_dados

                                         t_campo

                                         itab_oculto

                                  USING  v_string_debito.

    ELSEIF t_contas-bschl EQ v_chave_credito.

      v_chave = 'C'.

      PERFORM trata_string_credito TABLES t_dados

                                          t_campo

                                          itab_oculto

                                   USING  v_string_credito.

    ENDIF.

 

*       Tela - Criar item conta do razão - 0300

    IF t_dados-d_valut EQ '00000000'.

      WRITE: t_contas-d_valut TO v_data_val_char.   "Itens

    ELSE.

      WRITE: t_dados-d_valut TO v_data_val_char.    "Cabeçalho

    ENDIF.

    PERFORM bdc_screen USING 'SAPMF05A' '0300'.

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-BUPLA'

                                    chave = v_chave.

    IF sy-subrc = 0.

      PERFORM bdc_field  USING: 'BSEG-BUPLA'  t_dados-brnch.

    ENDIF.

    "WRBRT

    WRITE: t_contas-wrbtr TO v_wrbtr CURRENCY t_dados-waers.

    PERFORM bdc_field USING 'BSEG-WRBTR' v_wrbtr.

    "Data valor

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-VALUT'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'BSEG-VALUT' v_data_val_char.

    ENDIF.

    "Atribuição

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZUONR'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'BSEG-ZUONR' t_contas-d_zuonr.

    ENDIF.

    "Texto item

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-SGTXT'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'BSEG-SGTXT' t_contas-d_sgtxt.

    ENDIF.

    "Pedido

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-EBELN'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'BSEG-EBELN' t_dados-ebeln.

    ENDIF.

    "Item

    READ TABLE itab_oculto WITH KEY campo = 'BSEG-EBELP'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'BSEG-EBELP' t_dados-ebelp.

    ENDIF.

 

*       Ordem

    IF NOT t_contas-aufnr IS INITIAL.

      PERFORM bdc_field USING 'BSEG-AUFNR' t_contas-aufnr.

    ENDIF.

*      Verifica próxima conta

    CLEAR t_contas_aux.

    READ TABLE t_contas_aux INDEX v_index_aux.

    IF NOT t_contas_aux-d_newko IS INITIAL.

      PERFORM bdc_field  USING:

          'RF05A-NEWKO' t_contas_aux-d_newko,       "Conta contábil

          'RF05A-NEWBS' t_contas_aux-bschl.         "Chave Lançamento

    ENDIF.

    PERFORM bdc_field  USING 'BDC_OKCODE'  '/00'.

*     Tela - Classificacao '0002'

    PERFORM bdc_screen USING 'SAPLKACB' '0002'.

    "Divisao

    READ TABLE itab_oculto WITH KEY campo = 'COBL-GSBER'

                                    chave = v_chave.

    IF sy-subrc <> 0 AND NOT t_contas-d_gsber IS INITIAL.

      "Não está oculto

      PERFORM bdc_field USING 'COBL-GSBER' t_contas-d_gsber.

    ENDIF.

    "Centro de custo

    READ TABLE t_telas WITH KEY name = 'COBL-KOSTL'.

 

    READ TABLE itab_oculto WITH KEY campo = 'COBL-KOSTL'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'COBL-KOSTL' t_contas-d_kostl.

    ENDIF.

    "Centro de lucro

    READ TABLE itab_oculto WITH KEY campo = 'COBL-PRCTR'

                                    chave = v_chave.

    IF sy-subrc <> 0.                  "Não está oculto

      PERFORM bdc_field USING 'COBL-PRCTR' t_contas-d_prctr.

    ENDIF.

    IF NOT t_contas-aufnr IS INITIAL.

      PERFORM bdc_field USING 'COBL-AUFNR' t_contas-aufnr.

    ENDIF.

    PERFORM bdc_field  USING:

      'BDC_OKCODE'   '=ENTE'.

    DESCRIBE TABLE t_contas LINES v_linha.

    IF v_index NE v_linha.

*          perform bdc_screen using 'SAPMF05A' '0300'.

      PERFORM bdc_field  USING 'BDC_OKCODE'   '/00'.

    ELSE.

      PERFORM bdc_screen USING 'SAPMF05A' '0300'.

      PERFORM bdc_field  USING 'BDC_OKCODE'   '=BU'.      "Salva

      PERFORM bdc_screen USING 'SAPLKACB' '0002'.

      PERFORM bdc_field  USING 'BDC_OKCODE'   '/00'.

    ENDIF.

  ENDLOOP.

*   Limpa a itab_msg

  REFRESH itab_msg.

  CLEAR itab_msg.

*   Definição dos parâmetros p/ a sub-rotina CALL_TRANSACTION

  v_transacao = 'F-51'.

  v_update = 'S'.

  v_msgid = 'F5'.

  v_msgno = '312'.

  "Modo pode vir do programa de batch input.

  IF v_modo IS INITIAL.

    v_mode = 'N'.             "N - BACKGROUND      A - FOREGROUND

  ELSE.

    v_mode = v_modo.

  ENDIF.

*   Executa o Call Transaction e monta as mensagens de retorno

  PERFORM  call_transaction TABLES itab_msg

                                   itab_bdc

                                   t_zycbt032

                                   t_dados

                            USING  v_transacao

                                   v_mode

                                   v_update

                                   v_msgid

                                   v_msgno

                            CHANGING v_nrmsg.

  FREE:

    itab_bdc,

    itab_msg.

ENDFUNCTION.

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

              t_zycbt032      = itab_zycbt032

         EXCEPTIONS

              campo_em_branco = 1

              OTHERS          = 2.

    IF sy-subrc = 0.

      PERFORM atualiza_fb08_fat.

    ENDIF.

  ELSEIF sy-subrc EQ '4'.

    PERFORM atualiza_fb08_fat.

  ENDIF.

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

  PERFORM clear_date_batch.

* << Fim da inclusão

ENDFORM.

...

 

...

          WHERE belnr EQ /pws/zycie006-belnr_p

            AND gjahr EQ /pws/zycie006-dtincl+0(4)

            AND bukrs EQ /pws/zycie006-bukrs.

        SELECT SINGLE * FROM bsak

          WHERE bukrs EQ /pws/zycie006-bukrs

            AND lifnr EQ /pws/zycie006-lifnr

            AND belnr EQ itab_zycit132-belnr_p

            AND gjahr EQ /pws/zycie006-dtincl+0(4).

        IF ( sy-subrc = 0 AND itab_zycit132-status NE 'X' ) or

              not bkpf-STBLG is initial.

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

          IF itab_zycit132-status NE '2'.

* << Fim da inclusão

          itab_zycit132-compensado = 'X'.

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

            MODIFY itab_zycit132.

          ELSE.

            CLEAR itab_zycit132-compensado.

* << Fim da inclusão

          MODIFY itab_zycit132.

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

          ENDIF.

* << Fim da inclusão

        ELSE.

          CLEAR itab_zycit132-compensado.

          MODIFY itab_zycit132.

        ENDIF.

      ENDLOOP.

      LOOP AT itab_zycit132 WHERE compensado EQ 'X'.

      ENDLOOP.

      IF sy-subrc NE 0.

        REFRESH it_zycit270.

        LOOP AT itab_zycit132 WHERE status NE 'X'  AND

                                    NOT belnr_p IS initial.

          PERFORM hist_contabil.

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

          IF itab_zycit132-status NE '2'.

* << Fim da inclusão

          PERFORM reverse_document_fb08.

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

          ELSE.

            itab_zycit132-status = 'X'.

            itab_zycit132-eliminado = 'X'.

          ENDIF.

* << Fim da inclusão

          IF v_erro = 'X'.

            EXIT.

          ENDIF.

...

 

...

                       AND ebelp    = itab_zycit003-ebelp

                       AND codmod   = 'D'

                       AND origem   = 'FAT'

                       AND nrseqori = /pws/zycie006-nrseq.

            ENDLOOP.

          ENDIF.

        ENDIF.

      ENDIF.

    ELSE.

      IF NOT /pws/zycie006-statusp IS INITIAL

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

         AND /pws/zycie006-frpagto NE 'A'.

* << Fim da exclusão

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

         AND /pws/zycie006-frpagto NE 'A'

         AND v_pag_antecipado IS INITIAL.

* << Fim da inclusão

      SELECT SINGLE *

        FROM bkpf

        WHERE belnr EQ /pws/zycie006-belnr_p

          AND gjahr EQ /pws/zycie006-dtincl+0(4)

          AND bukrs EQ /pws/zycie006-bukrs.

        SELECT SINGLE * FROM bsak

          WHERE bukrs EQ /pws/zycie006-bukrs

            AND lifnr EQ /pws/zycie006-lifnr

            AND belnr EQ /pws/zycie006-belnr_p

            AND gjahr EQ /pws/zycie006-dtincl+0(4).

...

 

...

          REFRESH it_zycit270.

          PERFORM hist_contabil.

          PERFORM reverse_document_fb08.

        ELSE.

          MESSAGE s015 WITH text-043.

          EXIT.

        ENDIF.

      ENDIF.

      IF v_erro = 'X'.

        EXIT.

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

      ENDIF.

      IF NOT v_pag_antecipado IS INITIAL.

        PERFORM hist_contabil.

* << Fim da inclusão

      ENDIF.

      /pws/zycie006-eliminado = 'X'.

      MODIFY /pws/zycit006 FROM /pws/zycie006.

      UPDATE /pws/zycbt108 SET status   = 'E'

                      WHERE bukrs    = /pws/zycie006-bukrs

                        AND belnr    = /pws/zycie006-nrseq

                        AND gjahr    = /pws/zycie006-dtincl+0(4).

      UPDATE /pws/zycbt119 SET status   = 'E'

                    WHERE nrseq   = /pws/zycie006-nrseq_pgfat.

      IF NOT /pws/zycie006-nrseqre IS INITIAL.

...

 

...

        REFRESH it_zycit270.

        PERFORM hist_contabil.

        PERFORM reverse_document_fb08.

      ELSE.

        MESSAGE s015 WITH text-043.

        EXIT.

      ENDIF.

    ENDIF.

    IF v_erro = 'X'.

      EXIT.

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

    ENDIF.

    IF NOT v_pag_antecipado IS INITIAL.

      PERFORM hist_contabil.

* << Fim da inclusão

    ENDIF.

    /pws/zycie006-eliminado = 'X'.

    MODIFY /pws/zycit006 FROM /pws/zycie006.

    UPDATE /pws/zycbt108 SET status   = 'E'

                    WHERE bukrs    = /pws/zycie006-bukrs

                      AND belnr    = /pws/zycie006-nrseq

                      AND gjahr    = /pws/zycie006-dtincl+0(4).

    UPDATE /pws/zycbt119 SET status   = 'E'

                  WHERE nrseq   = /pws/zycie006-nrseq_pgfat.

    IF NOT /pws/zycie006-nrseqre IS INITIAL.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

 

* >> Início da inclusão:

FORM estorno_pag_antecipado.

  DATA itab_bseg TYPE bseg OCCURS 0 WITH HEADER LINE.

  CHECK NOT itab_zycit003[] IS INITIAL

    AND v_existe_di NE 'S'.

  SELECT * FROM /pws/zycbt117

       INTO TABLE itab_zycbt117

       FOR ALL ENTRIES IN itab_zycit003

       WHERE ebeln = itab_zycit003-ebeln

         AND status NE 'E'.

  IF sy-subrc EQ 0.

    IF itab_zycit132[] IS INITIAL.

      SELECT SINGLE *

        FROM /pws/zycbt108

        WHERE nrseq_pgfat EQ /pws/zycie006-nrseq_pgfat.

      IF sy-subrc EQ 0 AND

      ( /pws/zycbt108-slfat EQ /pws/zycbt108-slfatcc ) AND

      ( NOT /pws/zycbt108-belnr_lq IS INITIAL AND

        NOT /pws/zycbt108-belnr_as IS INITIAL ).

        v_pag_antecipado = 'X'.

        CLEAR v_ano.

        CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

             EXPORTING

                  v_bukrs                = /pws/zycie006-bukrs

                  v_date                 = /pws/zycie006-dt_belnrp

             IMPORTING

                  v_year                 = v_ano

             EXCEPTIONS

                  variante_de_exercicio  = 1

                  data_nao_encontrada    = 2

                  empresa_nao_encontrada = 3

                  period_in_not_valid    = 4

                  period_not_assigned    = 5

                  version_undefined      = 6

                  OTHERS                 = 7.

        IF sy-subrc NE 0.

          v_ano = sy-datum(04).

        ENDIF.

        SELECT *

          FROM bseg

          INTO TABLE itab_bseg

          WHERE belnr EQ /pws/zycie006-belnr_p

            AND gjahr EQ v_ano

            AND bukrs EQ /pws/zycie006-bukrs.

        PERFORM fill_date_f-43_pag_antecipado TABLES itab_bseg.

        PERFORM fill_date_f_51_pag_antecipado TABLES itab_bseg.

      ELSEIF NOT /pws/zycbt108-belnr_lq IS INITIAL

         AND NOT /pws/zycbt108-belnr_as IS INITIAL.

        MESSAGE i039 WITH text-110.

        STOP.

      ENDIF.

    ELSEIF NOT itab_zycit132[] IS INITIAL.

      LOOP AT itab_zycit132.

        SELECT SINGLE *

          FROM /pws/zycbt108

          WHERE nrseq_pgfat EQ itab_zycit132-nrseq_pgfat.

        IF sy-subrc EQ 0 AND

        ( /pws/zycbt108-slfat EQ /pws/zycbt108-slfatcc ) AND

        ( NOT /pws/zycbt108-belnr_lq IS INITIAL AND

          NOT /pws/zycbt108-belnr_as IS INITIAL ).

          v_pag_antecipado = 'X'.

          CLEAR v_ano.

          CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

               EXPORTING

                    v_bukrs                = /pws/zycie006-bukrs

                    v_date                 = itab_zycit132-dt_belnrp

               IMPORTING

                    v_year                 = v_ano

               EXCEPTIONS

                    variante_de_exercicio  = 1

                    data_nao_encontrada    = 2

                    empresa_nao_encontrada = 3

                    period_in_not_valid    = 4

                    period_not_assigned    = 5

                    version_undefined      = 6

                    OTHERS                 = 7.

          IF sy-subrc NE 0.

            v_ano = sy-datum(04).

          ENDIF.

          SELECT *

            FROM bseg

            INTO TABLE itab_bseg

            WHERE belnr EQ itab_zycit132-belnr_p

              AND gjahr EQ v_ano

              AND bukrs EQ /pws/zycie006-bukrs.

          PERFORM fill_date_f-43_pag_antecipado TABLES itab_bseg.

          PERFORM fill_date_f_51_pag_antecipado TABLES itab_bseg.

          itab_zycit132-status = '2'.

          MODIFY itab_zycit132.

        ELSEIF NOT /pws/zycbt108-belnr_lq IS INITIAL

           AND NOT /pws/zycbt108-belnr_as IS INITIAL.

          MESSAGE i039 WITH text-110.

          STOP.

        ENDIF.

      ENDLOOP.

    ENDIF.

  ENDIF.

ENDFORM.

FORM fill_date_f_51_pag_antecipado TABLES p_itab_bseg STRUCTURE bseg.

  DATA v_conta TYPE bseg-hkont.

  itab_zycbe033-waers = /pws/zycie006-waers.

  itab_zycbe033-bukrs = /pws/zycie006-bukrs.

  itab_zycbe033-mandt = sy-mandt.

  itab_zycbe033-tcode = 'F-51'.

  itab_zycbe033-tabela = '/PWS/ZYCBT108'.

  itab_zycbe033-cpochv = /pws/zycie006-nrseq.

  itab_zycbe033-bldat   = sy-datum.

  itab_zycbe033-d_valut = sy-datum.

  itab_zycbe033-budat   = sy-datum.

  itab_zycbe033-d_newko   = /pws/zycie006-lifnr.

  itab_zycbe033-agkoa    = 'K'.

  CLEAR: v_zuonr, v_xblnr, v_sgtxt, v_bktxt.

  CALL FUNCTION '/PWS/ZYCI_TEXTOS_CONTABEIS'

       EXPORTING

            v_nrseq   = /pws/zycie001-nrseq

            v_nrfat   = /pws/zycie006-nrfat

            v_codeven = v_codeven

            v_ktosl   = '  '

       IMPORTING

            v_zuonr   = itab_zycbe033-zuonr

            v_xblnr   = itab_zycbe033-xblnr

            v_sgtxt   = itab_zycbe033-sgtxt

            v_bktxt   = itab_zycbe033-bktxt.

  APPEND itab_zycbe033.

  LOOP AT p_itab_bseg WHERE koart NE 'K'.

    CHECK v_conta NE p_itab_bseg-hkont.

    v_conta = p_itab_bseg-hkont.

    itab_zycbe033-mandt = sy-mandt.

    itab_zycbe033-tcode = 'F-51'.

    itab_zycbe033-tabela = '/PWS/ZYCIT006'.

    itab_zycbe033-cpochv = /pws/zycie006-nrseq.

    itab_zycbe033-bldat   = sy-datum.

    itab_zycbe033-d_valut = sy-datum.

    itab_zycbe033-budat   = sy-datum.

    itab_zycbe033-d_newko   = p_itab_bseg-hkont.

    itab_zycbe033-agkoa    = 'S'.

    APPEND itab_zycbe033.

  ENDLOOP.

  CLEAR: itab_zycbt036.

  itab_zycbt036-mandt   = sy-mandt.

  itab_zycbt036-tcode   = 'F-51'.

  itab_zycbt036-tabela  = '/PWS/ZYCBT108'.

  itab_zycbt036-cpochv  = /pws/zycie006-nrseq.

  itab_zycbt036-belnr   = /pws/zycbt108-belnr_lq.

  itab_zycbt036-dtdocto = /pws/zycbt108-bldat.

  APPEND itab_zycbt036.

  CLEAR: itab_zycbt036.

  itab_zycbt036-mandt   = sy-mandt.

  itab_zycbt036-tcode   = 'F-51'.

  itab_zycbt036-tabela  = '/PWS/ZYCBT108'.

  itab_zycbt036-cpochv  = /pws/zycie006-nrseq.

  itab_zycbt036-belnr   = v_belnr.

  itab_zycbt036-dtdocto = sy-datum.

  APPEND itab_zycbt036.

  CLEAR: itab_zycbt036.

  itab_zycbt036-mandt   = sy-mandt.

  itab_zycbt036-tcode   = 'F-51'.

  itab_zycbt036-tabela  = '/PWS/ZYCIT006'.

  itab_zycbt036-cpochv  = /pws/zycie006-nrseq.

  IF NOT /pws/zycie006-belnr_p IS INITIAL.

    itab_zycbt036-belnr   = /pws/zycie006-belnr_p.

    itab_zycbt036-dtdocto = /pws/zycie006-dt_belnrp.

  ELSE.

    itab_zycbt036-belnr   = itab_zycit132-belnr_p.

    itab_zycbt036-dtdocto = itab_zycit132-dt_belnrp.

  ENDIF.

  APPEND itab_zycbt036.

  CLEAR: itab_zycbt036.

  itab_zycbt036-mandt   = sy-mandt.

  itab_zycbt036-tcode   = 'F-51'.

  itab_zycbt036-tabela  = '/PWS/ZYCIT006'.

  itab_zycbt036-cpochv  = /pws/zycie006-nrseq.

  itab_zycbt036-belnr   = v_belnr.

  itab_zycbt036-dtdocto = sy-datum.

  APPEND itab_zycbt036.

  CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_51D'

     EXPORTING

        v_modo                = v_modo_bi

        TABLES

        t_dados               = itab_zycbe033

        t_zycbt032            = itab_zycbt032

          t_doc                 = itab_zycbt036

     EXCEPTIONS

       campo_em_branco       = 1

       periodo_fechado       = 2

       OTHERS                = 3

            .

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

                                   tabela  = '/PWS/ZYCIT006'

                                   cpochv  = /pws/zycie006-nrseq

                                   tpmsg   = 'S'.

  IF sy-subrc EQ 0 AND NOT itab_zycbt032-belnr IS INITIAL.

    MESSAGE i010 WITH itab_zycbt032-belnr.

    PERFORM clear_date_batch.

  ELSEIF sy-subrc NE 0.

    LOOP AT itab_zycbt032.

      MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                        itab_zycbt032-msg+50(50).

    ENDLOOP.

    itab_zycbe033-stgrd  = /pws/zycbt007-percorr.

    itab_zycbe033-cpochv = /pws/zycie006-nrseq.

    itab_zycbe033-bukrs  = /pws/zycie006-bukrs.

    itab_zycbe033-tabela = '/PWS/ZYCIT006'.

    itab_zycbe033-budat  = sy-datum.

    itab_zycbe033-belnr  = v_belnr.

    itab_zycbe033-tcode  = 'FB08'.

    itab_zycbe033-gjahs  = sy-datum+0(4).

    APPEND itab_zycbe033.

    CALL FUNCTION '/PWS/ZYCI_TRANSACAO_FB08_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

              OTHERS          = 2.

    PERFORM clear_date_batch.

    STOP.

  ENDIF.

ENDFORM.

FORM fill_date_f-43_pag_antecipado TABLES p_itab_bseg STRUCTURE bseg.

  LOOP AT p_itab_bseg.

    MOVE-CORRESPONDING p_itab_bseg TO itab_contas.

    IF p_itab_bseg-koart EQ 'K'.

      MOVE: '21' TO itab_contas-bschl,

      p_itab_bseg-lifnr  TO itab_contas-d_newko.

    ELSE.

      MOVE: '50' TO itab_contas-bschl,

            p_itab_bseg-hkont  TO itab_contas-d_newko.

    ENDIF.

    APPEND itab_contas.

  ENDLOOP.

  SELECT SINGLE * FROM bkpf

          WHERE belnr EQ p_itab_bseg-belnr

            AND gjahr EQ p_itab_bseg-gjahr

            AND bukrs EQ p_itab_bseg-bukrs.

  MOVE-CORRESPONDING bkpf TO itab_zycbe033.

  itab_zycbe033-mandt = sy-mandt.

  itab_zycbe033-tcode = 'F-43'.

  itab_zycbe033-tabela = '/PWS/ZYCIT006'.

  itab_zycbe033-cpochv = /pws/zycie006-nrseq.

  itab_zycbe033-budat = sy-datum.

  itab_zycbe033-bldat = sy-datum.

  IF NOT itab_zycit132[] IS INITIAL.

    itab_zycbe033-zterm = itab_zycit132-zterm.

    itab_zycbe033-zfbdt = itab_zycit132-dtbase.

  ELSE.

    itab_zycbe033-zterm  = /pws/zycie006-zterm.

    itab_zycbe033-zfbdt = /pws/zycie006-dtbase.

  ENDIF.

  itab_zycbe033-d_valut = /pws/zycie006-dtincl.

  itab_zycbe033-c_valut = /pws/zycie006-dtincl.

  APPEND itab_zycbe033.

  CALL FUNCTION '/PWS/ZYCI_TRANSACAO_F_43A'

       EXPORTING

            v_modo          = v_modo_bi

       TABLES

            t_dados         = itab_zycbe033

            t_campo         = itab_zycbt034

            t_zycbt032      = itab_zycbt032

            t_contas        = itab_contas

       EXCEPTIONS

            campo_em_branco = 1

            periodo_fechado = 2

            OTHERS          = 3.

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

                                   tabela = '/PWS/ZYCIT006'

                                 cpochv = /pws/zycie006-nrseq

                                   tpmsg  = 'S'.

  IF sy-subrc EQ 0 AND NOT itab_zycbt032-belnr IS INITIAL.

    MESSAGE i010 WITH itab_zycbt032-belnr.

    v_belnr = itab_zycbt032-belnr.

    PERFORM clear_date_batch.

  ELSEIF sy-subrc NE 0.

    LOOP AT itab_zycbt032.

      MESSAGE i015 WITH itab_zycbt032-msg+0(50)

                        itab_zycbt032-msg+50(50).

    ENDLOOP.

    STOP.

    PERFORM clear_date_batch.

  ENDIF.

ENDFORM.

* << Fim da inclusão

 

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

Modificações efetuadas em REPS /PWS/MZYCI003I01

 

...

      WHEN 'OBS'.

        PERFORM observacao.

      WHEN 'DET'.

        PERFORM exibe_item.

      WHEN 'PED'.

        PERFORM selecionar_pedidos.

      WHEN 'FABR'.

        PERFORM exibir_fabricante.

      WHEN 'DELE'.

        /pws/zycie003-flagfabr = 'S'.

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

        perform estorno_pag_antecipado.

* << Fim da inclusão

        PERFORM eliminar_fatura.

      WHEN 'SAVE'.

        IF /pws/zycie006-frpagto IS INITIAL.

          MESSAGE e015 WITH text-001.

        ENDIF.

        PERFORM trata_save.

      WHEN 'MODI'.

        PERFORM trata_modi.

      WHEN 'MODO'.

        DATA: v_autoriza TYPE c.

...

 

 

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

Modificações efetuadas em REPS /PWS/MZYCI003TOP

 

 

* >> Início da inclusão:

data v_pag_antecipado type c.

* << Fim da inclusão

...