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.
6.0
Produto:
Nota
Descrição
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
...