Módulo: CÂMBIO IMPORTAÇÃO
Funcionalidade: Pagamento Antecipado
Data/Hora da Publicação: 16/12/2008 00:00:00
Data/Hora Última Alteração: 18/02/2011 10:11:25
Descrição da Nota: COMPLEMENTO DO BOLETO - CONTABILIZAÇÃO-PERIODO/ANO FISCAL
Sintoma
erro ao selecionar o periodo e o ano fiscal na hora da contabilização do programa do complemento do
boleto de pagto antecipado
Solução
incluir funçoes para verificar e trazer o periodo e ano fiscal corretos
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 07790 Data: 16/12/2008 Hora: 14:56:54
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 07790
Categoria : Melhoria
Prioridade : Alta
Versão PW.CE : 7.0
Pacote : 00008
Agrupamento : 00077
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02155 - 00005 - 6.0 - 00025 - TRADUÇÃO
04823 - 00004 - 7.0 - 00003 - COMPLEMENTO DO BOLETO - F-51 DATA EM FORMATO AMERICANO
05287 - 00003 - 7.0 - 00003 - COMPLEMENTO DO BOLETO - REMESSAS AGRUPADAS-IMPOSTOS - F-51 - ATRI
06031 - 00002 - 7.0 - 00004 - LIQUIDAÇÃO - DATA OBRIGATÓRIA COM PERIODO FECHADO
07783 - 00001 - 7.0 - 00008 - EMPRESTIMO - PROBLEMA COM OS CAMPOS DE PERIODO E ANO FISCAL
----------------------------------------------------------------------------------------------------
COMPLEMENTO DO BOLETO - CONTABILIZAÇÃO-PERIODO/ANO FISCAL
----------------------------------------------------------------------------------------------------
Palavras Chave:
COMPLEMENTO DO BOLETO - CONTABILIZAÇÃO-PERIODO/ANO FISCAL
PROBLEMA COM OS CAMPOS DE PERIODO E ANO FISCAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCA_TRANSACAO_FB02
FUNC /PWS/ZYGL_TRANSACAO_F_51J
FUNC /PWS/ZYGL_TRANSACAO_F_51K
REPS /PWS/LZYGLGF2F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCA_TRANSACAO_FB02
...
v_newko(10) TYPE c,
v_newko_aux(10) TYPE c,
v_conta LIKE lfb1-akont,
v_tamanho(2) TYPE n,
v_string_credito LIKE tbsl-faus1,
v_nrmsg TYPE i VALUE 0,
v_transacao(4) TYPE c,
v_mode TYPE c,
v_update TYPE c,
v_msgid LIKE t100-arbgb,
* >> Início da inclusão: FUNCTION /PWS/ZYCA_TRANSACAO_FB02
v_date LIKE t009b-bdatj,
* << Fim da inclusão
v_msgno LIKE t100-msgnr.
LOOP AT t_dados.
CHECK t_dados-tcode = 'FB02'.
IF ( t_dados-bukrs = space ).
t_campo-mandt = t_dados-mandt.
t_campo-campo = 'RF05L-BUKRS'.
t_campo-descricao = text-021.
APPEND t_campo.
RAISE campo_em_branco.
ENDIF.
...
...
PERFORM determina_string USING t_dados-newbs
t_dados-bukrs
v_conta
CHANGING v_string_credito.
CLEAR itab_oculto.
REFRESH itab_oculto.
PERFORM trata_string_credito TABLES t_dados
t_campo
itab_oculto
USING v_string_credito.
* >> Início da inclusão: FUNCTION /PWS/ZYCA_TRANSACAO_FB02
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = t_dados-bukrs
v_date = t_dados-gjahs
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.
* << Fim da inclusão
PERFORM bdc_screen USING: 'SAPMF05L' '0100'.
PERFORM bdc_field USING: 'BDC_OKCODE' '/00',
'RF05L-BELNR' t_dados-belnr,
'RF05L-BUKRS' t_dados-bukrs,
* >> Início da exclusão: FUNCTION /PWS/ZYCA_TRANSACAO_FB02
'RF05L-GJAHR' t_dados-gjahs(4).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCA_TRANSACAO_FB02
'RF05L-GJAHR' v_date.
* << Fim da inclusão
PERFORM bdc_screen USING: 'SAPMF05L' '0700'.
PERFORM bdc_field USING: 'BDC_CURSOR' 'RF05L-ANZDT(01)',
'BDC_OKCODE' '=PK'.
IF t_dados-newbs = '31'.
PERFORM bdc_screen USING: 'SAPMF05L' '0302'.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZFBDT' chave = 'C'.
IF sy-subrc NE 0 AND NOT v_zfbdt IS INITIAL.
PERFORM bdc_field USING: 'BSEG-ZFBDT' v_zfbdt.
ENDIF.
PERFORM bdc_field USING: 'BDC_OKCODE' '=AE'.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYGL_TRANSACAO_F_51J
...
v_data_val_char(10) TYPE c,
v_pos_awkey TYPE i,
v_awkey LIKE bkpf-awkey,
v_campo2(15),
v_xpos_budat(14),
v_dtdocto(10),
v_xpos_zuonr(14),
v_xpos_comp(15),
v_selecao(2) TYPE n,
v_xpos_belnr(2) TYPE n,
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
v_ano LIKE t009b-bdatj,
* << Fim da inclusão
v_reg TYPE i.
DATA: itab_t041t LIKE t041t OCCURS 0 WITH HEADER LINE,
wa_zycbt089 LIKE /pws/zycbt089,
t_zycbt036_aux LIKE t_zycbt036 OCCURS 0 WITH HEADER LINE.
SELECT SINGLE selps FROM t021r
INTO v_xpos1
WHERE event = 'SL-AG'
AND feldn = 'BELNR'.
ADD 1 TO v_xpos1.
SHIFT v_xpos1 LEFT DELETING LEADING '0'.
...
...
RAISE campo_em_branco.
ENDIF.
WRITE: t_dados-bldat TO v_bldat,
t_dados-budat TO v_budat,
t_dados-kursf TO v_kursf,
t_dados-wrbtr TO v_wrbtr CURRENCY t_dados-waers,
t_dados-dmbtr TO v_dmbtr CURRENCY 'X',
t_dados-bukrs TO v_bukrs.
v_monat = t_dados-budat+4(2).
v_gjahr = t_dados-budat+0(4).
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
PERFORM determina_periodo USING t_dados-budat
t_dados-bukrs
CHANGING v_monat.
PERFORM determina_ano USING t_dados-budat
t_dados-bukrs
CHANGING v_gjahr.
* << Fim da inclusão
v_koart = 'K'.
PERFORM check_periodo USING v_koart
v_monat
v_bukrs
v_gjahr
CHANGING v_budat
v_ok.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
CONCATENATE '0' v_budat+3(2) INTO v_monat.
MOVE v_budat+6(4) TO v_gjahr.
* << Fim da exclusão
PERFORM bdc_screen USING 'SAPMF05A' '0122'.
PERFORM bdc_field USING:
'BKPF-BLDAT' v_bldat,
'BKPF-BLART' t_dados-blart,
'BKPF-BUKRS' v_bukrs,
'BKPF-BUDAT' v_budat,
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
'BKPF-MONAT' v_budat+3(2),
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
'BKPF-MONAT' v_monat+1(2),
* << Fim da inclusão
'BKPF-WAERS' t_dados-waers,
'BKPF-KURSF' v_kursf,
'BKPF-XBLNR' t_dados-xblnr,
'BKPF-BKTXT' t_dados-bktxt,
'RF05A-AUGTX' t_dados-augtx,
'BDC_OKCODE' '=SL'.
WRITE wa_zycbt089-num_selecao TO v_selecao.
SELECT SINGLE selps FROM t021r
INTO v_xpos_belnr
WHERE event = 'SL-AG'
...
...
PERFORM bdc_field USING 'BDC_OKCODE' 'P+'.
ENDDO.
PERFORM bdc_screen USING 'SAPDF05X' '2000'.
PERFORM bdc_field USING 'BDC_CURSOR' v_xpos_awkey.
PERFORM bdc_field USING v_xpos_awkey 'X'.
PERFORM bdc_field USING 'BDC_OKCODE' '=GO'.
PERFORM bdc_screen USING 'SAPDF05X' '0731'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
CLEAR v_cont.
CLEAR v_awkey.
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
PERFORM determina_ano USING t_dados-dtdocto
t_dados-bukrs
CHANGING v_ano.
* << Fim da inclusão
SELECT SINGLE awkey
FROM bkpf
INTO v_awkey
WHERE belnr = t_dados-belnr AND
bukrs = t_dados-bukrs AND
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = t_dados-dtdocto(4).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = v_ano.
* << Fim da inclusão
ADD 1 TO v_cont.
CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.
CONCATENATE 'RF05A-SEL02(' v_cont ')' INTO v_campo2.
PERFORM bdc_field USING v_campo v_awkey.
PERFORM bdc_field USING v_campo2 v_awkey.
LOOP AT t_zycbt036 WHERE tcode = t_dados-tcode
AND tabela = t_dados-tabela
AND cpochv = t_dados-cpochv.
CLEAR v_awkey.
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
PERFORM determina_ano USING t_zycbt036-dtdocto
t_dados-bukrs
CHANGING v_ano.
* << Fim da inclusão
SELECT SINGLE awkey
FROM bkpf
INTO v_awkey
WHERE belnr = t_zycbt036-belnr AND
bukrs = t_dados-bukrs AND
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = t_zycbt036-dtdocto(4).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = v_ano.
* << Fim da inclusão
ADD 1 TO v_cont.
CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.
CONCATENATE 'RF05A-SEL02(' v_cont ')' INTO v_campo2.
PERFORM bdc_field USING v_campo v_awkey.
PERFORM bdc_field USING v_campo2 v_awkey.
IF v_cont = 5.
PERFORM bdc_field USING 'BDC_OKCODE' '=SU1'.
PERFORM bdc_screen USING 'SAPDF05X' '0731'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
CLEAR v_cont.
ENDIF.
ENDLOOP.
LOOP AT t_doctos WHERE tcode = t_dados-tcode
AND tabela = t_dados-tabela
AND cpochv = t_dados-cpochv.
CLEAR v_awkey.
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
PERFORM determina_ano USING t_dados-dtdocto
t_dados-bukrs
CHANGING v_ano.
* << Fim da inclusão
SELECT SINGLE awkey
FROM bkpf
INTO v_awkey
WHERE belnr = t_doctos-belnr AND
bukrs = t_dados-bukrs AND
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = t_doctos-dtdocto(4).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51J
gjahr = v_ano.
* << Fim da inclusão
ADD 1 TO v_cont.
CONCATENATE 'RF05A-SEL01(' v_cont ')' INTO v_campo.
CONCATENATE 'RF05A-SEL02(' v_cont ')' INTO v_campo2.
PERFORM bdc_field USING v_campo v_awkey.
PERFORM bdc_field USING v_campo2 v_awkey.
IF v_cont = 5.
PERFORM bdc_field USING 'BDC_OKCODE' '=SU1'.
PERFORM bdc_screen USING 'SAPDF05X' '0731'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05A-SEL01(01)'.
CLEAR v_cont.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYGL_TRANSACAO_F_51K
...
t_campo-descricao = text-027.
APPEND t_campo.
RAISE campo_em_branco.
ENDIF.
WRITE: t_dados-bldat TO v_bldat,
t_dados-budat TO v_budat,
t_dados-kursf TO v_kursf,
t_dados-wrbtr TO v_wrbtr CURRENCY t_dados-waers,
t_dados-dmbtr TO v_dmbtr CURRENCY 'X',
t_dados-bukrs TO v_bukrs.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51K
v_monat = t_dados-budat+4(2).
v_gjahr = t_dados-budat+0(4).
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51K
PERFORM determina_periodo USING t_dados-budat
t_dados-bukrs
CHANGING v_monat.
PERFORM determina_ano USING t_dados-budat
t_dados-bukrs
CHANGING v_gjahr.
* << Fim da inclusão
v_koart = 'K'.
PERFORM check_periodo USING v_koart
v_monat
v_bukrs
v_gjahr
CHANGING v_budat
v_ok.
* >> Início da exclusão: FUNCTION /PWS/ZYGL_TRANSACAO_F_51K
IF v_budat+8(1) EQ ' '.
CONCATENATE '0' v_budat+2(2) INTO v_monat.
MOVE v_budat+4(4) TO v_gjahr.
ELSE.
IF usr01-datfm = 1 OR sy-subrc NE 0.
CONCATENATE '0' v_budat+3(2) INTO v_monat.
ELSE.
CONCATENATE '0' v_budat+0(2) INTO v_monat.
ENDIF.
MOVE v_budat+6(4) TO v_gjahr.
ENDIF.
* << Fim da exclusão
PERFORM bdc_screen USING 'SAPMF05A' '0122'.
PERFORM bdc_field USING:
'BKPF-BLDAT' v_bldat,
'BKPF-BLART' t_dados-blart,
'BKPF-BUKRS' v_bukrs,
'BKPF-BUDAT' v_budat,
'BKPF-MONAT' v_monat+1(2),
'BKPF-WAERS' t_dados-waers,
'BKPF-KURSF' v_kursf,
'BKPF-XBLNR' t_dados-xblnr,
'BKPF-BKTXT' t_dados-bktxt,
'RF05A-AUGTX' t_dados-augtx,
'RF05A-NEWKO' t_dados-agkon,
'RF05A-NEWBS' '40'.
PERFORM determina_string USING v_chave_debito
t_dados-bukrs
t_dados-d_newko
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYGLGF2F01
...
ENDIF.
ENDFORM.
FORM check_periodo USING value(p_koart)
value(p_monat)
value(p_bukrs)
value(p_gjahr)
CHANGING value(p_novadata)
value(p_ok).
DATA: v_resposta(1),
v_novadata LIKE spop-varvalue1.
* >> Início da inclusão: FORM CHECK_PERIODO
DATA: v_budat TYPE bkpf-budat,
v_periv(2).
* << Fim da inclusão
v_novadata = p_novadata.
* >> Início da inclusão: FORM CHECK_PERIODO
WHILE p_ok <> 'S'.
* << Fim da inclusão
CALL FUNCTION 'FI_PERIOD_CHECK'
EXPORTING
i_bukrs = p_bukrs
i_gjahr = p_gjahr
i_koart = p_koart
i_monat = p_monat
EXCEPTIONS
error_period = 1
error_period_acc = 2
OTHERS = 3.
IF sy-subrc <> 0.
PERFORM entrar_nova_data USING v_resposta v_novadata.
IF v_resposta = 'A'.
RAISE periodo_fechado.
* >> Início da inclusão: FORM CHECK_PERIODO
else.
SELECT SINGLE datfm FROM usr01 INTO usr01-datfm
WHERE bname = sy-uname.
IF usr01-datfm = 1 OR sy-subrc NE 0.
CONCATENATE v_novadata+6(4) v_novadata+3(2)
v_novadata(2)
INTO v_budat.
ELSEIF usr01-datfm = 2 OR
usr01-datfm = 3.
CONCATENATE v_novadata+6(4) v_novadata(2)
v_novadata+3(2)
INTO v_budat.
ELSEIF usr01-datfm > 3.
CONCATENATE v_novadata(4) v_novadata+5(2)
v_novadata+8(2)
INTO v_budat.
ENDIF.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = p_bukrs
v_date = v_budat
IMPORTING
v_year = p_gjahr
EXCEPTIONS
variante_de_exercicio = 1
data_nao_encontrada = 2
empresa_nao_encontrada = 3
period_in_not_valid = 4
period_not_assigned = 5
version_undefined = 6
OTHERS = 7.
SELECT SINGLE periv FROM t001
INTO v_periv
WHERE bukrs EQ p_bukrs.
CALL FUNCTION 'DETERMINE_PERIOD'
EXPORTING
date = v_budat
version = v_periv
IMPORTING
period = p_monat
EXCEPTIONS
period_in_not_valid = 1
period_not_assigned = 2
version_undefined = 3
OTHERS = 4.
* << Fim da inclusão
ENDIF.
ELSE.
p_ok = 'S'.
* >> Início da inclusão: FORM CHECK_PERIODO
SELECT SINGLE datfm FROM usr01 INTO usr01-datfm
WHERE bname = sy-uname.
IF usr01-datfm = 1 OR sy-subrc NE 0.
CONCATENATE v_novadata+6(4) v_novadata+3(2)
v_novadata(2)
INTO v_budat.
ELSEIF usr01-datfm = 2 OR
usr01-datfm = 3.
CONCATENATE v_novadata+6(4) v_novadata(2)
v_novadata+3(2)
INTO v_budat.
ELSEIF usr01-datfm > 3.
CONCATENATE v_novadata(4) v_novadata+5(2)
v_novadata+8(2)
INTO v_budat.
ENDIF.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = p_bukrs
v_date = v_budat
IMPORTING
v_year = p_gjahr
EXCEPTIONS
variante_de_exercicio = 1
data_nao_encontrada = 2
empresa_nao_encontrada = 3
period_in_not_valid = 4
period_not_assigned = 5
version_undefined = 6
OTHERS = 7.
SELECT SINGLE periv FROM t001
INTO v_periv
WHERE bukrs EQ p_bukrs.
CALL FUNCTION 'DETERMINE_PERIOD'
EXPORTING
date = v_budat
version = v_periv
IMPORTING
period = p_monat
EXCEPTIONS
period_in_not_valid = 1
period_not_assigned = 2
version_undefined = 3
OTHERS = 4.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CHECK_PERIODO
ENDWHILE.
* << Fim da inclusão
p_novadata = v_novadata.
ENDFORM.
FORM entrar_nova_data CHANGING value(p_resposta)
value(p_novadata).
DATA: v_data_ TYPE d.
WHILE v_data_ IS INITIAL OR
...
...
yaccd-wt_hlpa12 = yaccd-wt_hlpa12 + i_hamnta.
ENDCASE.
yaccd-bukrs = i_bukrs.
yaccd-kunnr = i_acct.
yaccd-wt_caly = i_jahr.
yaccd-witht = i_witht.
yaccd-wt_withcd = i_code.
COLLECT yaccd.
ENDIF.
ENDFORM.
* >> Início da inclusão:
FORM determina_periodo USING value(p_data)
value(p_bukrs)
CHANGING p_periodo.
DATA v_periv(2).
SELECT SINGLE periv
FROM t001
INTO v_periv
WHERE bukrs EQ p_bukrs.
CALL FUNCTION 'DETERMINE_PERIOD'
EXPORTING
date = p_data
version = v_periv
IMPORTING
period = p_periodo
EXCEPTIONS
period_in_not_valid = 1
period_not_assigned = 2
version_undefined = 3
OTHERS = 4.
IF sy-subrc NE 0.
CLEAR p_periodo.
ENDIF.
ENDFORM.
FORM determina_ano USING p_budat
p_bukrs
CHANGING p_ano.
CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'
EXPORTING
v_bukrs = p_bukrs
v_date = p_budat
IMPORTING
v_year = p_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.
endform.
* << Fim da inclusão