Módulo: CÂMBIO IMPORTAÇÃO
Funcionalidade: Associação
Data/Hora da Publicação: 28/08/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 09:44:44
Descrição da Nota: ASSOCIAÇÃO DE FATURAS - DA RATEIO POR ITEM DOC. COMPRA
Sintoma
Desenvolvimento adicional relacionado ao adiantamento de imobilizado, conforme especificação do
produto.
Solução
Desenvolvimento adicional para tratar as associações de faturas rateando o lançamento contábil por
item de documento de compra. Geração de programa de carga para carregar o campo /PWS/ZYCMT020-SALDO,
antes de iniciar a utilização da nova associação.
6.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01988 Data: 28/08/2006 Hora: 10:25:28
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01988
Categoria : Melhoria
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00024
Agrupamento : 00128
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01352 - 00001 - 6.0 - 00023 - ASSOCIAÇÃO DE FATURAS - CONDIÇÃO DE PAGAMENTO - F-51
----------------------------------------------------------------------------------------------------
ASSOCIAÇÃO DE FATURAS - DA RATEIO POR ITEM DOC. COMPRA
----------------------------------------------------------------------------------------------------
Palavras Chave:
ASSOCIAÇÃO DE FATURAS RATEIO POR ITEM DOCUMENTO DE COMPRA
DESENVOLVIMENTO ADICIONAL DA /PWS/ZYCMT020
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCM_TRANSACAO_F_51N
REPS /PWS/LZYCMGF2F01
REPS /PWS/LZYCMGF2TOP
REPS /PWS/LZYCMGF2X01
REPS /PWS/MZYCB104I01
REPS /PWS/MZYCB106I01
REPS /PWS/MZYCB113I01
REPS /PWS/MZYCM101I01
REPS /PWS/MZYCM101O01
REPS /PWS/ZYCMR906
TABD /PWS/ZYCME020
TABD /PWS/ZYCMT020
TRAN /PWS/ZYCMR906
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCM_TRANSACAO_F_51N
...
PERFORM bdc_field USING 'BKPF-BRNCH' t_dados-brnch.
ENDIF.
IF NOT t_dados-xblnr IS INITIAL.
PERFORM bdc_field USING 'BKPF-XBLNR' t_dados-xblnr.
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF t_zycbe035[] IS INITIAL.
t_zycbe035-wrbtr = t_dados-wrbtr.
t_zycbe035-wrbtr1 = t_dados-wrbtr1.
APPEND itab_zycbe035.
ENDIF.
DESCRIBE TABLE itab_zycbe035 LINES v_linhas.
LOOP AT itab_zycbe035.
v_tabix = sy-tabix.
* << Fim da inclusão
IF t_dados-wrbtr <> 0.
PERFORM bdc_field USING 'RF05A-NEWKO' t_dados-agkon.
PERFORM bdc_field USING 'RF05A-NEWUM' t_dados-agums.
PERFORM bdc_field USING 'RF05A-NEWBS' t_dados-newbs.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
WRITE: t_dados-d_valut TO v_data_val_char,
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_dados-wrbtr TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_zycbe035-wrbtr TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da inclusão
MOVE: t_dados-agums TO v_newum,
t_dados-newbs TO v_newbs,
t_dados-agkon TO v_agkon.
PERFORM define_tela USING t_dados-tcode
t_dados-bukrs
v_agkon
v_newbs
CHANGING v_newum
v_tela.
PERFORM bdc_screen USING 'SAPMF05A' v_tela.
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF t_dados-ftela EQ 'X'.
IF NOT v_dtvencto_char = '00.00.0000'.
PERFORM bdc_field USING 'BSEG-ZFBDT' v_dtvencto_char.
ENDIF.
ELSE.
* << Fim da exclusão
IF NOT t_dados-agums IS INITIAL.
CLEAR v_zfbdt.
SELECT SINGLE ulsk1
INTO v_ulsk1
FROM t042
...
...
v_zfbdt = 'X'.
ENDIF.
ENDIF.
IF t_dados-agums IS INITIAL OR
v_zfbdt EQ 'X'.
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZFBDT'
chave = v_chv.
IF sy-subrc <> 0 AND NOT v_dtvencto_char = '00.00.0000'.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF NOT v_dtvencto_char = '00.00.0000' AND
NOT v_dtvencto_char = ' . . '.
* << Fim da inclusão
PERFORM bdc_field USING 'BSEG-ZFBDT' v_dtvencto_char.
ENDIF.
ENDIF.
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
* << Fim da exclusão
PERFORM bdc_field USING: 'BSEG-WRBTR' v_wrbtr.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZUONR'
chave = v_chv.
IF sy-subrc <> 0 AND NOT t_dados-c_zuonr IS INITIAL.
PERFORM bdc_field USING 'BSEG-ZUONR' t_dados-c_zuonr.
...
...
ENDIF.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZTERM'
chave = v_chv.
IF sy-subrc <> 0 AND NOT t_dados-zterm IS INITIAL.
PERFORM bdc_field USING 'BSEG-ZTERM' t_dados-zterm.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
IF NOT t_zycbe035-ebeln IS INITIAL.
PERFORM define_campo TABLES t_telas
USING 'BSEG-EBELN'
v_programa
v_tela.
IF v_invisible EQ 0.
IF v_input EQ 1 OR v_required EQ 1.
PERFORM bdc_field USING: 'BSEG-EBELN' t_zycbe035-ebeln.
ENDIF.
ENDIF.
ENDIF.
IF NOT t_zycbe035-ebelp IS INITIAL.
PERFORM define_campo TABLES t_telas
USING 'BSEG-EBELP'
v_programa
v_tela.
IF v_invisible EQ 0.
IF v_input EQ 1 OR v_required EQ 1.
PERFORM bdc_field USING: 'BSEG-EBELP' t_zycbe035-ebelp.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDIF.
IF t_dados-wrbtr1 > 0.
PERFORM bdc_field USING 'RF05A-NEWKO' t_dados-agkon.
PERFORM bdc_field USING 'RF05A-NEWUM' t_dados-agums.
PERFORM bdc_field USING 'RF05A-NEWBS' t_dados-newbs.
...
...
IF sy-subrc <> 0 AND NOT t_dados-c_sgtxt IS INITIAL.
PERFORM bdc_field USING 'BSEG-SGTXT' t_dados-c_sgtxt.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
ELSE.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF v_linhas = v_tabix.
* << Fim da inclusão
PERFORM bdc_field USING:'BDC_OKCODE' '=SL'.
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
* << Fim da inclusão
ELSE.
PERFORM bdc_field USING 'RF05A-NEWKO' t_dados-agkon.
PERFORM bdc_field USING 'RF05A-NEWUM' t_dados-agums.
PERFORM bdc_field USING 'RF05A-NEWBS' t_dados-newbs.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
WRITE: t_dados-d_valut TO v_data_val_char,
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_dados-wrbtr1 TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_zycbe035-wrbtr1 TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da inclusão
ENDIF.
IF t_dados-wrbtr1 > 0.
MOVE: t_dados-agums TO v_newum,
t_dados-newbs TO v_newbs,
t_dados-agkon TO v_agkon.
...
...
v_newbs
CHANGING v_newum
v_tela.
PERFORM bdc_screen USING 'SAPMF05A' v_tela.
WRITE: t_dados-d_valut TO v_data_val_char,
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_dados-wrbtr1 TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
t_zycbe035-wrbtr1 TO v_wrbtr CURRENCY t_dados-waers.
* << Fim da inclusão
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF t_dados-ftela EQ 'X'.
IF NOT v_dtvencto_char = '00.00.0000'.
PERFORM bdc_field USING 'BSEG-ZFBDT' v_dtvencto_char.
ENDIF.
ELSE.
IF t_dados-agums IS INITIAL OR v_zfbdt EQ 'X'.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZFBDT'
chave = v_chv.
IF sy-subrc <> 0 AND NOT v_dtvencto_char = '00.00.0000'.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF ( t_dados-agums IS INITIAL OR v_zfbdt EQ 'X' ) AND
NOT v_dtvencto_char = '00.00.0000' AND
NOT v_dtvencto_char = ' . . '.
* << Fim da inclusão
PERFORM bdc_field USING 'BSEG-ZFBDT' v_dtvencto_char.
* >> Início da exclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
ENDIF.
* << Fim da exclusão
ENDIF.
PERFORM bdc_field USING 'BSEG-WRBTR' v_wrbtr.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZUONR'
chave = v_chv.
IF sy-subrc <> 0 AND NOT t_dados-d_zuonr IS INITIAL.
...
...
ENDIF.
READ TABLE itab_oculto WITH KEY campo = 'BSEG-ZTERM'
chave = v_chv.
IF sy-subrc <> 0 AND NOT t_dados-zterm IS INITIAL.
PERFORM bdc_field USING 'BSEG-ZTERM' t_dados-zterm.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
IF NOT t_zycbe035-ebeln IS INITIAL.
PERFORM define_campo TABLES t_telas
USING 'BSEG-EBELN'
v_programa
v_tela.
IF v_invisible EQ 0.
IF v_input EQ 1 OR v_required EQ 1.
PERFORM bdc_field USING: 'BSEG-EBELN' t_zycbe035-ebeln.
ENDIF.
ENDIF.
ENDIF.
IF NOT t_zycbe035-ebelp IS INITIAL.
PERFORM define_campo TABLES t_telas
USING 'BSEG-EBELP'
v_programa
v_tela.
IF v_invisible EQ 0.
IF v_input EQ 1 OR v_required EQ 1.
PERFORM bdc_field USING: 'BSEG-EBELP' t_zycbe035-ebelp.
ENDIF.
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
IF v_linhas = v_tabix.
* << Fim da inclusão
PERFORM bdc_field USING:'BDC_OKCODE' '=SL'.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FUNCTION /PWS/ZYCM_TRANSACAO_F_51N
ENDLOOP.
* << Fim da inclusão
CLEAR v_xpos.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCMGF2F01
...
MODIFY /pws/zycbt131 FROM TABLE itab_zycbt131.
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
UPDATE /pws/zycbt112 SET slassoc = /pws/zycbe112-slassoc
belnr2 = /pws/zycbe112-belnr2
WHERE nrseq = /pws/zycbe112-nrseq.
* >> Início da inclusão: FORM GRAVA_ASSOC_FINAN
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
UPDATE /pws/zycbt112 SET slassoc = /pws/zycbe112-slassoc
belnr2 = /pws/zycbe112-belnr2
fassoc = 'X'
WHERE nrseq = /pws/zycbe112-nrseq.
* >> Início da inclusão: FORM GRAVA_ASSOC_FINAN
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
FORM limpa_itabs_contabil.
CLEAR:
itab_zycbt034,
itab_zycbe033,
itab_zycbt032,
* >> Início da exclusão: FORM LIMPA_ITABS_CONTABIL
itab_zycbt036.
* << Fim da exclusão
* >> Início da inclusão: FORM LIMPA_ITABS_CONTABIL
itab_zycbt036,
itab_zycbe035.
* << Fim da inclusão
REFRESH:
itab_zycbt034,
itab_zycbe033,
itab_zycbt032,
* >> Início da exclusão: FORM LIMPA_ITABS_CONTABIL
itab_zycbt036.
* << Fim da exclusão
* >> Início da inclusão: FORM LIMPA_ITABS_CONTABIL
itab_zycbt036,
itab_zycbe035.
* << Fim da inclusão
ENDFORM.
FORM limpa_flag.
CLEAR itab_zycbt131-vldif.
CLEAR itab_zycbt131-flag.
MODIFY itab_zycbt131 TRANSPORTING vldif flag
...
...
MODIFY /pws/zycbt131 FROM TABLE itab_zycbt131.
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
UPDATE /pws/zycbt117 SET slpgant = /pws/zycbe117-slpgant
belnr2 = /pws/zycbe117-belnr2
WHERE nrseq = /pws/zycbe117-nrseq.
* >> Início da inclusão: FORM GRAVA_ASSOC_PGANT
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
MODIFY /pws/zycbt131 FROM TABLE itab_zycbt131.
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
UPDATE /pws/zycbt117 SET slpgant = /pws/zycbe117-slpgant
belnr2 = /pws/zycbe117-belnr2
WHERE nrseq = /pws/zycbe117-nrseq.
* >> Início da inclusão: FORM GRAVA_ASSOC_PGANT
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
IF v_ind_mudanca IS INITIAL.
IF v_ind_errocont IS INITIAL.
MODIFY /pws/zycbt131 FROM TABLE itab_zycbt131.
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
MODIFY /pws/zycbt119 FROM /pws/zycbe119.
* >> Início da inclusão: FORM GRAVA_ASSOC_PGFAT
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
v_sucesso = 'X'.
IF v_erro_estorno IS INITIAL.
MODIFY /pws/zycbt131 FROM TABLE itab_zycbt131.
MODIFY /pws/zycbt108 FROM TABLE itab_zycbt108.
MODIFY /pws/zycbt119 FROM /pws/zycbe119.
* >> Início da inclusão: FORM GRAVA_ASSOC_PGFAT
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
LOOP AT itab_zycbt108 WHERE belnr_lq NE ' '.
IF itab_zycbt108-slfat EQ 0.
UPDATE /pws/zycbt119 SET slpgfat = itab_zycbt108-slfat
belnr_p = itab_zycbt108-belnr_lq
dtpagto = sy-datum
...
...
CLEAR: /pws/zycbe119-belnr2.
ENDIF.
MODIFY /pws/zycbt108 FROM itab_zycbt108.
MODIFY /pws/zycbt119 FROM /pws/zycbe119.
ENDIF.
* >> Início da inclusão: FORM ESTORNAR_COMPENSACAO
LOOP AT itab_zycmt020.
UPDATE /pws/zycmt020 SET saldo = itab_zycmt020-saldo
WHERE nrseq = itab_zycmt020-nrseq
AND codmod = itab_zycmt020-codmod
AND ebeln = itab_zycmt020-ebeln
AND ebelp = itab_zycmt020-ebelp.
ENDLOOP.
* << Fim da inclusão
IF v_tpdoc EQ 'I'.
v_mdcorresp = 'IF'.
ELSEIF v_tpdoc EQ 'A'.
v_mdcorresp = 'IA'.
ELSEIF v_tpdoc EQ 'P'.
...
...
ENDFORM.
FORM desmembra_docto_financiamento.
DATA : v_codeven LIKE /pws/zycbt011-codeven,
v_linhas(2) TYPE n.
PERFORM limpa_itabs_contabil.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe112-nrseq
AND codmod = 'FI'.
ENDIF.
* << Fim da inclusão
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe112-bukrs.
CONCATENATE '001' /pws/zycbe112-codint INTO v_codeven.
...
...
WHERE bukrs EQ /pws/zycbe112-bukrs
AND belnr EQ itab_zycbt036-belnr
AND gjahr EQ itab_zycbt036-dtdocto(4)
AND augbl EQ ' '
AND koart EQ 'K'.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
LOOP AT itab_zycmt020.
itab_zycmt020-vlassoc = itab_zycmt020-saldo.
itab_zycmt020-saldo = space.
MODIFY itab_zycmt020.
ENDLOOP.
* << Fim da inclusão
v_ok = 'X'.
EXIT.
ENDIF.
IF NOT /pws/zycbe112-ftxt IS INITIAL.
itab_zycbe033-d_sgtxt = /pws/zycbe112-txtinf.
...
...
itab_zycbe033-d_prctr = /pws/zycbe112-prctr.
itab_zycbe033-d_fictr = /pws/zycbe112-fictr.
itab_zycbe033-c_fictr = /pws/zycbe112-fictr.
itab_zycbe033-d_fipos = /pws/zycbe112-fipos.
itab_zycbe033-c_fipos = /pws/zycbe112-fipos.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido USING 'FI'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
v_ok = ' '.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_FINANCIAMENTO
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_financiamento.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
APPEND itab_zycbt036.
ENDFORM.
FORM reclassifica_financiamento.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
IF NOT itab_zycbt131-belnr_rfin IS INITIAL.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
IF ok_code NE 'SAVE'.
CHECK v_estorno_ok = 'X'.
ENDIF.
* << Fim da inclusão
PERFORM limpa_itabs_contabil.
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe112-bukrs.
...
...
REFRESH itab_zyglt321.
SELECT * FROM /pws/zyglt321
INTO TABLE itab_zyglt321
WHERE ktosl = 'FIN'
AND codeven = v_codeven.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe112-nrseq
AND codmod = 'FI'.
ENDIF.
* << Fim da inclusão
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = 'F-51'.
itab_zycbe033-tabela = '/PWS/ZYCBT112'.
itab_zycbe033-cpochv = /pws/zycbe112-nrseq.
itab_zycbe033-c_valut = /pws/zycbe112-dtvencto.
...
...
itab_zycbe033-d_prctr = /pws/zycbe112-prctr.
itab_zycbe033-d_fictr = /pws/zycbe112-fictr.
itab_zycbe033-c_fictr = /pws/zycbe112-fictr.
itab_zycbe033-d_fipos = /pws/zycbe112-fipos.
itab_zycbe033-c_fipos = /pws/zycbe112-fipos.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido_estorno USING 'FI'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
ELSE.
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_FINANCIAMENTO
ELSEIF NOT itab_zycmt020_aux[] IS INITIAL.
itab_zycmt020[] = itab_zycmt020_aux[].
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_assoc_finan.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
WHERE belnr EQ itab_zycbt131-belnr_rfin
AND bukrs EQ /pws/zycbe112-bukrs
AND gjahr EQ itab_zycbe033-budat(4).
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
ELSE.
* << Fim da inclusão
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ELSE.
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
* << Fim da inclusão
ELSE.
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
ENDIF.
* << Fim da inclusão
ENDIF.
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ itab_zycbt108-lifnr
...
...
tcurx-currdec = 2.
ENDIF.
IF NOT skb1-xsalh IS INITIAL OR
NOT t001-xslta IS INITIAL.
CLEAR bkpf.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
IF NOT itab_zycbt108-dtassoc IS INITIAL.
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
AND gjahr EQ itab_zycbt108-dtassoc(4).
ELSE.
* << Fim da inclusão
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS
AND gjahr EQ itab_zycbe033-budat(4).
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS
AND gjahr EQ itab_zycbt108-bldat(4).
ENDIF.
* << Fim da inclusão
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
v_reais_fa = itab_zycbt131-vlme /
( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fa = ( ( bkpf-kursf / v_defator )
...
...
v_variacao = v_reais_fi - v_reais_fa.
ENDFORM.
FORM reclassifica_fatura.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
IF NOT itab_zycbt131-belnr_rfat IS INITIAL.
* >> Início da inclusão: FORM RECLASSIFICA_FATURA
IF ok_code NE 'SAVE'.
CHECK v_estorno_ok = 'X'.
ENDIF.
* << Fim da inclusão
READ TABLE itab_zycbt108 WITH KEY belnr = itab_zycbt131-belnr
nrseq_pgfat = itab_zycbt131-nrseq_pgfat.
PERFORM limpa_itabs_contabil.
SELECT SINGLE * FROM /pws/zycbt119 INTO /pws/zycbt119
WHERE nrseq = itab_zycbt108-nrseq_pgfat.
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_FATURA
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_FATURA
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_FATURA
ELSE.
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
ENDIF.
ENDFORM.
FORM preenche_doc_assoc_fat.
REFRESH itab_zycbt036.
...
...
ENDIF.
ENDFORM.
FORM desmembra_docto_pgant.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
PERFORM limpa_itabs_contabil.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe117-nrseq
AND codmod = 'PA'.
ENDIF.
* << Fim da inclusão
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe117-bukrs.
CONCATENATE '005' /pws/zycbe117-codint INTO v_codeven.
...
...
itab_zycbe033-agkon = /pws/zycbe117-lifnr.
PERFORM verify_null_field USING itab_zycbe033-agkon
'AGKON'
text-027.
PERFORM preenche_doc_pgant.
* >> Início da exclusão: FORM DESMEMBRA_DOCTO_PGANT
IF v_vlres EQ itab_zycbt131-vlmefin.
* << Fim da exclusão
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
IF v_vlres EQ itab_zycbt131-vlmefin.
* << Fim da inclusão
READ TABLE itab_zycbt036 INDEX 1.
itab_zycbt131-belnr_rfin = itab_zycbt036-belnr.
MODIFY itab_zycbt131 TRANSPORTING belnr_rfin
WHERE belnr EQ itab_zycbt108-belnr
AND nrseq_pgfat EQ itab_zycbt108-nrseq_pgfat.
...
...
AND belnr EQ itab_zycbt036-belnr
AND gjahr EQ itab_zycbt036-dtdocto(4)
AND augbl EQ ' '
AND koart EQ 'K'
AND bschl EQ '29'.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
LOOP AT itab_zycmt020.
itab_zycmt020-vlassoc = itab_zycmt020-saldo.
itab_zycmt020-saldo = space.
MODIFY itab_zycmt020.
ENDLOOP.
* << Fim da inclusão
v_ok = 'X'.
EXIT.
ENDIF.
itab_zycbe033-xblnr = /pws/zycbe117-nrseq.
CONCATENATE /pws/zycbe117-nrseq 'A' INTO itab_zycbe033-d_zuonr.
...
...
itab_zycbe033-c_fipos = /pws/zycbe117-fipos.
itab_zycbe033-d_fipos = /pws/zycbe117-fipos.
itab_zycbe033-c_fictr = /pws/zycbe117-fictr.
itab_zycbe033-d_fictr = /pws/zycbe117-fictr.
itab_zycbe033-zfbdt = /pws/zycbe117-dtvencto.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido USING 'PA'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
v_ok = ' '.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGANT
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_pgant.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
ENDIF.
ENDFORM.
FORM reclassifica_pgtoant.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
IF NOT itab_zycbt131-belnr_rfin IS INITIAL.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
IF ok_code NE 'SAVE'.
CHECK v_estorno_ok = 'X'.
ENDIF.
* << Fim da inclusão
PERFORM limpa_itabs_contabil.
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe117-bukrs.
CONCATENATE '005' /pws/zycbe117-codint INTO v_codeven.
SELECT SINGLE * FROM /pws/zycbt011
INTO wa_zycbt011
WHERE codeven = v_codeven
AND codmod = 'I'.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe117-nrseq
AND codmod = 'PA'.
ENDIF.
* << Fim da inclusão
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = 'F-51'.
itab_zycbe033-tabela = '/PWS/ZYCBT112'.
itab_zycbe033-cpochv = /pws/zycbe117-nrseq.
itab_zycbe033-c_valut = /pws/zycbe117-dtvencto.
...
...
itab_zycbe033-d_prctr = /pws/zycbe117-prctr.
itab_zycbe033-c_fipos = /pws/zycbe117-fipos.
itab_zycbe033-d_fipos = /pws/zycbe117-fipos.
itab_zycbe033-c_fictr = /pws/zycbe117-fictr.
itab_zycbe033-d_fictr = /pws/zycbe117-fictr.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido_estorno USING 'PA'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
ELSE.
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOANT
ELSEIF NOT itab_zycmt020_aux[] IS INITIAL.
itab_zycmt020[] = itab_zycmt020_aux[].
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_assoc_pgtoant.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg.
itab_zycbt131-belnr_as = itab_zycbt032-belnr.
MODIFY itab_zycbt131 TRANSPORTING belnr_as
WHERE belnr EQ itab_zycbt108-belnr
AND nrseq_pgfat EQ itab_zycbt108-nrseq_pgfat.
* >> Início da exclusão: FORM F51_PGANT_MOEDAS_IGUAIS
IF ( /pws/zyglt009-contpa = 'Y' AND /pws/zycbe117-codint = 'IM'
) OR
( /pws/zyglt009-contpa = 'Y' AND /pws/zycbe117-codint = 'ES'
AND v_trans IS INITIAL ).
* << Fim da exclusão
* >> Início da inclusão: FORM F51_PGANT_MOEDAS_IGUAIS
IF ( /pws/zyglt009-contpa = 'Y' AND
/pws/zycbe117-codint = 'IM' ) OR
( /pws/zyglt009-contpa = 'Y' AND
/pws/zycbe117-codint = 'ES' AND v_trans IS INITIAL ).
* << Fim da inclusão
/pws/zycbe117-slpgant = v_saldo_pa.
ENDIF.
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
...
...
WHERE belnr EQ itab_zycbt131-belnr_rfin
AND bukrs EQ /pws/zycbe117-bukrs
AND gjahr EQ itab_zycbe033-budat(4).
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
ELSE.
* << Fim da inclusão
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
ELSE.
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
* << Fim da inclusão
ELSE.
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
ENDIF.
* << Fim da inclusão
ENDIF.
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ itab_zycbt108-lifnr
...
...
tcurx-currdec = 2.
ENDIF.
IF NOT skb1-xsalh IS INITIAL OR
NOT t001-xslta IS INITIAL.
CLEAR bkpf.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
IF NOT itab_zycbt108-dtassoc IS INITIAL.
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
AND gjahr EQ itab_zycbt108-dtassoc(4).
ELSE.
* << Fim da inclusão
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
AND gjahr EQ itab_zycbe033-budat(4).
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGANT
AND gjahr EQ itab_zycbt108-bldat(4).
ENDIF.
* << Fim da inclusão
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
v_reais_fa = itab_zycbt131-vlme /
( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fa = ( ( bkpf-kursf / v_defator )
...
...
ENDIF.
ENDFORM.
FORM desmembra_docto_pgfat.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
PERFORM limpa_itabs_contabil.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe119-nrseq
AND codmod = 'PG'.
ENDIF.
* << Fim da inclusão
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe119-bukrs.
CONCATENATE '007' /pws/zycbe119-codint INTO v_codeven.
...
...
AND belnr EQ itab_zycbt036-belnr
AND gjahr EQ itab_zycbt036-dtdocto(4)
AND augbl EQ ' '
AND koart EQ 'K'
AND bschl EQ '29'.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
LOOP AT itab_zycmt020.
itab_zycmt020-vlassoc = itab_zycmt020-saldo.
itab_zycmt020-saldo = space.
MODIFY itab_zycmt020.
ENDLOOP.
* << Fim da inclusão
v_ok = 'X'.
EXIT.
ENDIF.
itab_zycbe033-xblnr = /pws/zycbe119-nrseq.
CONCATENATE /pws/zycbe119-nrseq 'A' INTO itab_zycbe033-d_zuonr.
...
...
itab_zycbe033-c_fipos = /pws/zycbe119-fipos.
itab_zycbe033-d_fipos = /pws/zycbe119-fipos.
itab_zycbe033-c_fictr = /pws/zycbe119-fictr.
itab_zycbe033-d_fictr = /pws/zycbe119-fictr.
itab_zycbe033-zfbdt = /pws/zycbe119-dtvencto.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido USING 'PG'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
v_ok = ' '.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM DESMEMBRA_DOCTO_PGFAT
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
v_ok = ' '.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_pgfat.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
ENDIF.
ENDFORM.
FORM reclassifica_pgtofat.
DATA : v_codeven LIKE /pws/zycbt011-codeven.
IF NOT itab_zycbt131-belnr_rfin IS INITIAL.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
IF ok_code NE 'SAVE'.
CHECK v_estorno_ok = 'X'.
ENDIF.
* << Fim da inclusão
PERFORM limpa_itabs_contabil.
CLEAR wa_zycbt007.
SELECT SINGLE * FROM /pws/zycbt007
INTO wa_zycbt007
WHERE bukrs EQ /pws/zycbe119-bukrs.
CONCATENATE '007' 'A' INTO v_codeven.
SELECT SINGLE * FROM /pws/zycbt011
INTO wa_zycbt011
WHERE codeven = v_codeven
AND codmod = 'I'.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
IF itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020
WHERE nrseq = /pws/zycbe119-nrseq
AND codmod = 'PG'.
ENDIF.
* << Fim da inclusão
itab_zycbe033-mandt = sy-mandt.
itab_zycbe033-tcode = 'F-51'.
itab_zycbe033-tabela = '/PWS/ZYCBT112'.
itab_zycbe033-cpochv = /pws/zycbe119-nrseq.
itab_zycbe033-c_valut = /pws/zycbe119-dtvencto.
...
...
'BLART'
text-066.
itab_zycbe033-blart = wa_zycbt011-blart.
itab_zycbe033-c_gsber = /pws/zycbe119-gsber.
itab_zycbe033-d_gsber = /pws/zycbe119-gsber.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
IF NOT itab_zycmt020[] IS INITIAL.
PERFORM rateio_itens_pedido_estorno USING 'PG'.
ENDIF.
* << Fim da inclusão
CLEAR: itab_zyglt100.
REFRESH: itab_zyglt100.
v_syrepid = sy-repid.
CALL FUNCTION '/PWS/ZYGL_BUSCA_EXIT_CLIENTE'
EXPORTING
...
...
TABLES
t_dados = itab_zycbe033
t_campo = itab_zycbt034
t_zycbt036 = itab_zycbt036
t_zycbt032 = itab_zycbt032
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
t_zycbe035 = itab_zycbe035
* << Fim da inclusão
EXCEPTIONS
campo_em_branco = 1
OTHERS = 2.
IF sy-subrc = 0.
READ TABLE itab_zycbt032 WITH KEY tcode = 'F-51'
...
...
ELSE.
LOOP AT itab_zycbt032.
MESSAGE i015(/pws/zycmm) WITH itab_zycbt032-msg+0(50)
itab_zycbt032-msg+50(50).
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
ELSE.
LOOP AT itab_zycbt034.
MESSAGE i016(/pws/zycmm) WITH itab_zycbt034-descricao.
ENDLOOP.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
ELSE.
CLEAR v_estorno_ok.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM RECLASSIFICA_PGTOFAT
ELSEIF NOT itab_zycmt020_aux[] IS INITIAL.
itab_zycmt020[] = itab_zycmt020_aux[].
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM preenche_doc_assoc_pgtofat.
REFRESH itab_zycbt036.
CLEAR itab_zycbt036.
...
...
WHERE belnr EQ itab_zycbt131-belnr_rfin
AND bukrs EQ /pws/zycbe119-bukrs
AND gjahr EQ itab_zycbe033-budat(4).
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
ELSE.
* << Fim da inclusão
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( bkpf-kursf / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
ENDIF.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
ELSE.
IF NOT itab_zycmt020[] IS INITIAL.
CLEAR v_reais_fi_rateio.
LOOP AT itab_zycmt020.
v_reais_fi_rateio = itab_zycmt020-vlassoc
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi_rateio = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi_rateio.
v_reais_fi = v_reais_fi + v_reais_fi_rateio.
ENDLOOP.
* << Fim da inclusão
ELSE.
v_reais_fi = itab_zycbt131-vlmefin
/ ( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fi = ( ( v_txcbrl / v_defator )
* v_parafator ) * v_reais_fi.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
ENDIF.
* << Fim da inclusão
ENDIF.
CLEAR lfb1.
SELECT SINGLE akont FROM lfb1
INTO lfb1-akont
WHERE lifnr EQ itab_zycbt108-lifnr
...
...
tcurx-currdec = 2.
ENDIF.
IF NOT skb1-xsalh IS INITIAL OR
NOT t001-xslta IS INITIAL.
CLEAR bkpf.
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
IF NOT itab_zycbt108-dtassoc IS INITIAL.
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
AND gjahr EQ itab_zycbt108-dtassoc(4).
ELSE.
* << Fim da inclusão
SELECT SINGLE kursf FROM bkpf
INTO bkpf-kursf
WHERE belnr EQ itab_zycbt131-belnr_rfat
AND bukrs EQ itab_zycbt108-bukrs
* >> Início da exclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
AND gjahr EQ itab_zycbe033-budat(4).
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_DIFERENCA_REAIS_PGFAT
AND gjahr EQ itab_zycbt108-bldat(4).
ENDIF.
* << Fim da inclusão
IF NOT bkpf-kursf IS INITIAL AND
NOT bkpf-kursf EQ '0.00000'.
v_reais_fa = itab_zycbt131-vlme /
( 10 ** ( tcurx-currdec - 2 ) ).
v_reais_fa = ( ( bkpf-kursf / v_defator )
...
...
USING p_telas-name p_telas-group1 p_telas-group2
p_telas-group3 p_telas-group4
CHANGING v_input v_output v_required
v_invisible.
ENDFORM.
* >> Início da inclusão:
FORM rateio_itens_pedido USING p_tipo.
itab_zycmt020_aux[] = itab_zycmt020[].
CLEAR: v_soma_rateio, v_soma_dif.
LOOP AT itab_zycmt020.
v_tabix = sy-tabix.
CLEAR: itab_zycbe035, v_dif_rateio.
itab_zycbe035-tcode = 'F-51'.
itab_zycbe035-tabela = '/PWS/ZYCBT112'.
IF p_tipo = 'PA'.
itab_zycbe035-cpochv = /pws/zycbe117-nrseq.
ELSEIF p_tipo = 'PG'.
itab_zycbe035-cpochv = /pws/zycbe119-nrseq.
ELSEIF p_tipo = 'FI'.
itab_zycbe035-cpochv = /pws/zycbe112-nrseq.
ENDIF.
itab_zycbe035-ebeln = itab_zycmt020-ebeln.
itab_zycbe035-ebelp = itab_zycmt020-ebelp.
itab_zycbe035-wrbtr1 = itab_zycbt131-vlmefin *
( itab_zycmt020-pgto / 100 ).
itab_zycbe035-wrbtr = itab_zycmt020-saldo =
itab_zycmt020-saldo - itab_zycbe035-wrbtr1.
IF itab_zycmt020-saldo < 0.
v_dif_rateio = itab_zycmt020-saldo * -1.
itab_zycbe035-wrbtr1 = itab_zycbe035-wrbtr1 - v_dif_rateio.
CLEAR: itab_zycmt020-saldo, itab_zycbe035-wrbtr.
ENDIF.
itab_zycmt020-vlassoc = itab_zycbe035-wrbtr1.
v_soma_rateio = v_soma_rateio + itab_zycbe035-wrbtr1.
v_soma_dif = v_soma_dif + v_dif_rateio.
APPEND itab_zycbe035.
MODIFY itab_zycmt020.
ENDLOOP.
IF NOT v_soma_dif IS INITIAL.
v_soma_rateio = v_soma_rateio + v_soma_dif.
LOOP AT itab_zycmt020 WHERE saldo > 0.
READ TABLE itab_zycbe035 INDEX sy-tabix.
IF sy-subrc = 0 AND v_soma_dif > 0.
v_saldo_ant = itab_zycmt020-saldo.
itab_zycmt020-saldo = itab_zycmt020-saldo - v_soma_dif.
IF itab_zycmt020-saldo < 0.
v_soma_dif = itab_zycmt020-saldo * -1.
CLEAR: itab_zycmt020-saldo, itab_zycbe035-wrbtr.
ELSE.
itab_zycbe035-wrbtr = itab_zycmt020-saldo.
CLEAR v_soma_dif.
ENDIF.
itab_zycmt020-vlassoc = itab_zycbe035-wrbtr1 =
itab_zycbe035-wrbtr1 + v_saldo_ant - itab_zycmt020-saldo.
MODIFY itab_zycmt020 INDEX sy-tabix.
MODIFY itab_zycbe035 INDEX sy-tabix.
ENDIF.
ENDLOOP.
ENDIF.
IF v_soma_rateio GT itab_zycbt131-vlmefin.
v_dif_rateio = v_soma_rateio - itab_zycbt131-vlmefin.
itab_zycbe035-wrbtr1 = 0 - 1.
WHILE itab_zycbe035-wrbtr1 < 0.
IF sy-index > 1.
v_tabix = v_tabix - 1.
IF v_tabix = 0.
EXIT.
ENDIF.
ENDIF.
READ TABLE itab_zycbe035 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycbe035-wrbtr1 = itab_zycbe035-wrbtr1 - v_dif_rateio.
itab_zycbe035-wrbtr = itab_zycbe035-wrbtr + v_dif_rateio.
IF itab_zycbe035-wrbtr1 >= 0.
MODIFY itab_zycbe035 INDEX v_tabix.
READ TABLE itab_zycmt020 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycmt020-saldo = itab_zycmt020-saldo + v_dif_rateio.
itab_zycmt020-vlassoc = itab_zycbe035-wrbtr1.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
ENDIF.
ENDIF.
ENDWHILE.
ELSEIF v_soma_rateio LT itab_zycbt131-vlmefin.
v_dif_rateio = itab_zycbt131-vlmefin - v_soma_rateio.
itab_zycbe035-wrbtr = 0 - 1.
WHILE itab_zycbe035-wrbtr < 0.
IF sy-index > 1.
v_tabix = v_tabix - 1.
IF v_tabix = 0.
EXIT.
ENDIF.
ENDIF.
READ TABLE itab_zycbe035 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycbe035-wrbtr1 = itab_zycbe035-wrbtr1 + v_dif_rateio.
itab_zycbe035-wrbtr = itab_zycbe035-wrbtr - v_dif_rateio.
IF itab_zycbe035-wrbtr >= 0.
MODIFY itab_zycbe035 INDEX v_tabix.
READ TABLE itab_zycmt020 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycmt020-saldo = itab_zycmt020-saldo - v_dif_rateio.
itab_zycmt020-vlassoc = itab_zycbe035-wrbtr1.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
ENDIF.
ENDIF.
ENDWHILE.
ENDIF.
ENDFORM.
FORM rateio_itens_pedido_estorno USING p_tipo.
itab_zycmt020_aux[] = itab_zycmt020[].
CLEAR v_soma_rateio.
LOOP AT itab_zycmt020.
v_tabix = sy-tabix.
CLEAR itab_zycbe035.
itab_zycbe035-tcode = 'F-51'.
itab_zycbe035-tabela = '/PWS/ZYCBT112'.
IF p_tipo = 'PA'.
itab_zycbe035-cpochv = /pws/zycbe117-nrseq.
ELSEIF p_tipo = 'PG'.
itab_zycbe035-cpochv = /pws/zycbe119-nrseq.
ELSEIF p_tipo = 'FI'.
itab_zycbe035-cpochv = /pws/zycbe112-nrseq.
ENDIF.
itab_zycbe035-ebeln = itab_zycmt020-ebeln.
itab_zycbe035-ebelp = itab_zycmt020-ebelp.
IF p_tipo = 'PA'.
v_saldo_estorno = /pws/zycbe117-slpgant + itab_zycbt131-vlmefin.
IF v_saldo_estorno = /pws/zycbe117-vlme.
itab_zycbe035-wrbtr1 = itab_zycmt020-vlpago.
ENDIF.
ELSEIF p_tipo = 'PG'.
v_saldo_estorno = /pws/zycbe119-slpgfat + itab_zycbt131-vlmefin.
IF v_saldo_estorno = /pws/zycbe119-vlme.
itab_zycbe035-wrbtr1 = itab_zycmt020-vlpago.
ENDIF.
ELSEIF p_tipo = 'FI'.
v_saldo_estorno = /pws/zycbe112-slassoc + itab_zycbt131-vlmefin.
IF v_saldo_estorno = /pws/zycbe112-vlme.
itab_zycbe035-wrbtr1 = itab_zycmt020-vlpago.
ENDIF.
ENDIF.
IF itab_zycbe035-wrbtr1 IS INITIAL.
itab_zycbe035-wrbtr1 = itab_zycbt131-vlmefin *
( itab_zycmt020-pgto / 100 ).
itab_zycbe035-wrbtr = itab_zycmt020-saldo =
itab_zycmt020-saldo + itab_zycbe035-wrbtr1.
itab_zycmt020-vlassoc = itab_zycbe035-wrbtr1.
v_soma_rateio = v_soma_rateio + itab_zycbe035-wrbtr1.
ELSE.
itab_zycbe035-wrbtr = itab_zycmt020-saldo = itab_zycmt020-vlassoc
= itab_zycbe035-wrbtr1.
v_soma_rateio = itab_zycbt131-vlmefin.
ENDIF.
CLEAR itab_zycbe035-wrbtr1.
APPEND itab_zycbe035.
MODIFY itab_zycmt020.
ENDLOOP.
IF v_soma_rateio GT itab_zycbt131-vlmefin.
v_dif_rateio = v_soma_rateio - itab_zycbt131-vlmefin.
itab_zycbe035-wrbtr = 0 - 1.
WHILE itab_zycbe035-wrbtr < 0.
IF sy-index > 1.
v_tabix = v_tabix - 1.
IF v_tabix = 0.
EXIT.
ENDIF.
ENDIF.
READ TABLE itab_zycbe035 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycbe035-wrbtr = itab_zycbe035-wrbtr - v_dif_rateio.
IF itab_zycbe035-wrbtr >= 0.
MODIFY itab_zycbe035 INDEX v_tabix.
READ TABLE itab_zycmt020 INDEX v_tabix.
IF sy-subrc = 0.
itab_zycmt020-saldo = itab_zycmt020-saldo - v_dif_rateio.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
ENDIF.
ENDIF.
ENDWHILE.
ELSEIF v_soma_rateio LT itab_zycbt131-vlmefin.
v_dif_rateio = itab_zycbt131-vlmefin - v_soma_rateio.
itab_zycbe035-wrbtr = itab_zycbe035-wrbtr + v_dif_rateio.
MODIFY itab_zycbe035 INDEX v_tabix.
itab_zycmt020-saldo = itab_zycmt020-saldo + v_dif_rateio.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCMGF2TOP
...
tcurx,
vbkpf,
bsak,
bkpf,
/pws/zycbt039.
* >> Início da inclusão:
DATA: BEGIN OF itab_zycmt020 OCCURS 0.
INCLUDE STRUCTURE /pws/zycmt020.
DATA: vlassoc LIKE /pws/zycmt020-pgto.
DATA: END OF itab_zycmt020.
data: itab_zycmt020_aux like itab_zycmt020 occurs 0 with header line.
* << Fim da inclusão
DATA: BEGIN OF itab_erro OCCURS 0,
belnr LIKE /pws/zycbt005-belnr,
msg LIKE /pws/zycbt032-msg,
END OF itab_erro.
DATA v_ok_code LIKE sy-ucomm.
...
...
v_vlres LIKE /pws/zycbt131-vlme,
v_vlass LIKE /pws/zycbt131-vlme,
v_belnr_f43 LIKE bkpf-belnr,
v_variacao LIKE /pws/zycbt112-vlme,
v_sy_tcode LIKE sy-tcode,
* >> Início da inclusão:
v_soma_rateio type /pws/zycbe131-vlmefin,
v_soma_dif type /pws/zycbe131-vlmefin,
v_saldo_ant type /pws/zycbe131-vlmefin,
v_dif_rateio type /pws/zycbe131-vlmefin,
v_saldo_estorno type /pws/zycmt020-saldo,
v_reais_fi_rateio type /pws/zycbt117-vlme,
v_tabix type sy-tabix,
* << Fim da inclusão
v_syrepid LIKE sy-repid,
e_subrc LIKE sy-subrc,
v_input LIKE screen-input,
v_output LIKE screen-output,
v_required LIKE screen-required,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCMGF2X01
...
itab_zycbt034 LIKE /pws/zycbt034 OCCURS 10 WITH HEADER LINE,
itab_zycbt032 LIKE /pws/zycbt032 OCCURS 10 WITH HEADER LINE,
itab_zycbe033 LIKE /pws/zycbe033 OCCURS 10 WITH HEADER LINE,
itab_zycbt013 LIKE /pws/zycbt013 OCCURS 10 WITH HEADER LINE,
itab_zycbt012 LIKE /pws/zycbt012 OCCURS 10 WITH HEADER LINE,
* >> Início da exclusão:
itab_zycbt036 LIKE /pws/zycbt036 OCCURS 10 WITH HEADER LINE.
* << Fim da exclusão
* >> Início da inclusão:
itab_zycbt036 LIKE /pws/zycbt036 OCCURS 10 WITH HEADER LINE,
itab_zycbe035 type /pws/zycbe035 occurs 10 with header line.
* << Fim da inclusão
DATA: v_num LIKE itab_zycbt036-belnr.
DATA : wa_zycbe112 LIKE /pws/zycbe112,
wa_zycbt112 LIKE /pws/zycbt112,
wa_zycbe117 LIKE /pws/zycbe117,
wa_zycbe119 LIKE /pws/zycbe119,
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB104I01
...
/pws/zycbe117-vlme.
v_saldo = v_saldo + itab_zycmt020-vlpago.
ELSE.
itab_zycmt020-vlpago = /pws/zycbe117-vlme - v_saldo.
ENDIF.
* >> Início da inclusão: MODULE CALCULA_PERCENTUAL
itab_zycmt020-saldo = itab_zycmt020-vlpago.
* << Fim da inclusão
MODIFY itab_zycmt020.
ENDLOOP.
ENDIF.
CLEAR v_saldo.
ENDLOOP.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB106I01
...
/pws/zycbe119-vlme.
v_saldo = v_saldo + itab_zycmt020-vlpago.
ELSE.
itab_zycmt020-vlpago = /pws/zycbe119-vlme - v_saldo.
ENDIF.
* >> Início da inclusão: MODULE CALCULA_PERCENTUAL
itab_zycmt020-saldo = itab_zycmt020-vlpago.
* << Fim da inclusão
MODIFY itab_zycmt020.
ENDLOOP.
ENDIF.
CLEAR v_saldo.
ENDLOOP.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB113I01
...
itab_zycbt131-vlme.
itab_zycbt131-slfat = itab_zycbt131-slfat +
itab_zycbt131-vlme.
CLEAR: itab_zycbt131-vlme, itab_zycbt131-vlmefin.
MODIFY itab_zycbt131 INDEX sy-tabix.
* >> Início da inclusão: MODULE SALDO_FINANCIAMENTO
/pws/zycbe112-slassoc = wa_zycbe112-slassoc.
exit.
* << Fim da inclusão
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
MODULE saldo_fatura INPUT.
...
...
itab_zycbt131-vlme.
itab_zycbt131-slfat = itab_zycbt131-slfat +
itab_zycbt131-vlme.
CLEAR: itab_zycbt131-vlme, itab_zycbt131-vlmefin.
MODIFY itab_zycbt131 INDEX sy-tabix.
* >> Início da inclusão: MODULE SALDO_FATURA
/pws/zycbe119-slpgfat = wa_zycbe119-slpgfat.
exit.
* << Fim da inclusão
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
MODULE saldo_antecipado INPUT.
...
...
itab_zycbt131-vlme.
itab_zycbt131-slfat = itab_zycbt131-slfat +
itab_zycbt131-vlme.
CLEAR: itab_zycbt131-vlme, itab_zycbt131-vlmefin.
MODIFY itab_zycbt131 INDEX sy-tabix.
* >> Início da inclusão: MODULE SALDO_ANTECIPADO
/pws/zycbe117-slpgant = wa_zycbe117-slpgant.
exit.
* << Fim da inclusão
ENDIF.
ENDLOOP.
ENDIF.
ENDMODULE.
MODULE verifica_paridade INPUT.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCM101I01
...
/pws/zycbe112-vlme.
v_saldo = v_saldo + itab_zycmt020-vlpago.
ELSE.
itab_zycmt020-vlpago = /pws/zycbe112-vlme - v_saldo.
ENDIF.
* >> Início da inclusão: MODULE CALCULA_PERCENTUAL
IF /pws/zycbe112-fassoc is initial.
itab_zycmt020-saldo = itab_zycmt020-vlpago.
ENDIF.
* << Fim da inclusão
MODIFY itab_zycmt020.
ENDLOOP.
ENDIF.
CLEAR v_saldo.
ENDLOOP.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCM101O01
...
screen-name = 'BTN3'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
* >> Início da inclusão: MODULE SET_SCREEN_111
ELSEIF NOT /pws/zycbe112-fassoc IS INITIAL.
LOOP AT tc_pgto-cols INTO wa_cols.
IF wa_cols-screen-name = '/PWS/ZYCME020-EBELN'.
wa_cols-screen-input = '0'.
ENDIF.
MODIFY tc_pgto-cols FROM wa_cols.
ENDLOOP.
* << Fim da inclusão
ENDIF.
ENDMODULE.
MODULE exibe_zycmt020 OUTPUT.
MOVE: itab_zycmt020 TO /pws/zycme020,
itab_zycmt020-mark TO mark.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYCMR906
* >> Início da inclusão: Criar novo programa
Classe de Desenvolvimento: /PWS/ZYCM
*-----------------------------------------------------------------------
* PROCWORK Software
* Produto: ASPEN CE
* Módulo: FI
* Descrição: CM - Atualização Saldo Rateio da Associação de Faturas
* Help Desk: 11-5504-0270
*-----------------------------------------------------------------------
* ESTE PROGRAMA NÃO DEVE SER ALTERADO SEM PRÉVIA CONSULTA
*-----------------------------------------------------------------------
* Nome Data Descrição
* Renato C. Mendes 11.08.2006 Codificação Inicial
*-----------------------------------------------------------------------
REPORT /pws/zycmr906 message-id /pws/zycmm.
* Tabela rateio por item de documento de compra
DATA: BEGIN OF itab_zycmt020 OCCURS 0.
INCLUDE STRUCTURE /pws/zycmt020.
DATA: END OF itab_zycmt020.
* Tabela de associação de faturas
DATA: BEGIN OF itab_zycbt131 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt131.
DATA: END OF itab_zycbt131.
* Tabela de Pagamento de Fatura
DATA: BEGIN OF itab_zycbt119 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt119.
DATA: END OF itab_zycbt119.
* Tabela de Pagamento Antecipado
DATA: BEGIN OF itab_zycbt117 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt117.
DATA: END OF itab_zycbt117.
* Tabela de Financiamento
DATA: BEGIN OF itab_zycbt112 OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt112.
DATA: END OF itab_zycbt112.
DATA: v_answer TYPE c.
START-OF-SELECTION.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
defaultoption = 'Y'
textline1 = text-001
textline2 = text-002
titel = text-003
start_column = 25
start_row = 6
cancel_display = ' '
IMPORTING
answer = v_answer.
IF v_answer EQ 'J'.
PERFORM carrega_dados.
PERFORM rateia_saldo_item.
ENDIF.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form carrega_dados
*&---------------------------------------------------------------------*
* Objetivo: Carrega dados das associações de fatura
* ----------------------------------------------------------------------
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
* ----------------------------------------------------------------------
* --> <nenhum>
* <-- <nenhum>
* <-> <nenhum>
* ----------------------------------------------------------------------
* Chamado Data Descrição
* ----------------------------------------------------------------------
* 324750 11.08.2006 Codificação Inicial
* ----------------------------------------------------------------------
FORM carrega_dados.
SELECT * FROM /pws/zycmt020 INTO TABLE itab_zycmt020.
IF NOT itab_zycmt020[] IS INITIAL.
SELECT * FROM /pws/zycbt131 INTO TABLE itab_zycbt131
FOR ALL ENTRIES IN itab_zycmt020
WHERE nrseq = itab_zycmt020-nrseq.
SELECT * FROM /pws/zycbt119 INTO TABLE itab_zycbt119
FOR ALL ENTRIES IN itab_zycmt020
WHERE nrseq = itab_zycmt020-nrseq.
SELECT * FROM /pws/zycbt117 INTO TABLE itab_zycbt117
FOR ALL ENTRIES IN itab_zycmt020
WHERE nrseq = itab_zycmt020-nrseq.
SELECT * FROM /pws/zycbt112 INTO TABLE itab_zycbt112
FOR ALL ENTRIES IN itab_zycmt020
WHERE nrseq = itab_zycmt020-nrseq.
ENDIF.
ENDFORM. " carrega_dados
*&---------------------------------------------------------------------*
*& Form rateia_saldo_item
*&---------------------------------------------------------------------*
* Objetivo: Ratear o saldo a associar dos processos que já foram
* associados parcialmente, atualizando a tabela /PWS/ZYCMT020
* que contém os itens do pedido de compra
* ----------------------------------------------------------------------
* Parâmetros: ( --> Entrada ) ( <-- Saída ) ( <-> Tabelas )
* ----------------------------------------------------------------------
* --> <nenhum>
* <-- <nenhum>
* <-> <nenhum>
* ----------------------------------------------------------------------
* Chamado Data Descrição
* ----------------------------------------------------------------------
* 324750 11.08.2006 Codificação Inicial
* ----------------------------------------------------------------------
FORM rateia_saldo_item.
DATA: v_soma_saldo TYPE /pws/zycmt020-saldo,
v_tabix TYPE sy-tabix,
v_registro TYPE sy-tabix.
SORT itab_zycmt020 BY nrseq codmod.
* Pagamento Antecipado--------------------------------------------------
LOOP AT itab_zycbt117.
* Considera apenas pagamento antecipado associado parcialmente
IF NOT itab_zycbt117-slpgant IS INITIAL AND
itab_zycbt117-slpgant LT itab_zycbt117-vlme.
CLEAR v_soma_saldo.
* Lê itens do pedido de compra para ratear saldos zerados
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt117-nrseq
AND codmod EQ 'PA'
AND saldo IS initial.
v_tabix = sy-tabix.
* Rateia por item cada associação feita para o processo
CLEAR v_registro.
LOOP AT itab_zycbt131 WHERE mdcorresp EQ 'IA'
AND nrseq EQ itab_zycbt117-nrseq.
v_registro = v_registro + 1.
IF v_registro EQ 1.
itab_zycmt020-saldo = itab_zycmt020-vlpago -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ELSE.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ENDIF.
ENDLOOP.
v_soma_saldo = v_soma_saldo + itab_zycmt020-saldo.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
* Ajusta saldo se houve diferença de centavos no rateio
IF v_soma_saldo GT itab_zycbt117-slpgant.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( v_soma_saldo - itab_zycbt117-slpgant ).
MODIFY itab_zycmt020 INDEX v_tabix.
ELSEIF v_soma_saldo LT itab_zycbt117-slpgant AND NOT
v_soma_saldo IS INITIAL.
itab_zycmt020-saldo = itab_zycmt020-saldo +
( itab_zycbt117-slpgant - v_soma_saldo ).
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
* Se o saldo esta total, atualiza totalizando saldo da /PWS/ZYCMT020
ELSEIF itab_zycbt117-slpgant EQ itab_zycbt117-vlme.
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt117-nrseq
AND codmod EQ 'PA'
AND saldo IS initial.
v_tabix = sy-tabix.
itab_zycmt020-saldo = itab_zycmt020-vlpago.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
ENDIF.
ENDLOOP.
* Pagamento de Fatura---------------------------------------------------
LOOP AT itab_zycbt119.
* Considera apenas pagamento de fatura associado parcialmente
IF NOT itab_zycbt119-slpgfat IS INITIAL AND
itab_zycbt119-slpgfat LT itab_zycbt119-vlme.
CLEAR v_soma_saldo.
* Lê itens do pedido de compra para ratear saldos zerados
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt119-nrseq
AND codmod EQ 'PG'
AND saldo IS initial.
v_tabix = sy-tabix.
* Rateia por item cada associação feita para o processo
CLEAR v_registro.
LOOP AT itab_zycbt131 WHERE mdcorresp EQ 'IP'
AND nrseq EQ itab_zycbt119-nrseq.
v_registro = v_registro + 1.
IF v_registro EQ 1.
itab_zycmt020-saldo = itab_zycmt020-vlpago -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ELSE.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ENDIF.
ENDLOOP.
v_soma_saldo = v_soma_saldo + itab_zycmt020-saldo.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
* Ajusta saldo se houve diferença de centavos no rateio
IF v_soma_saldo GT itab_zycbt119-slpgfat.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( v_soma_saldo - itab_zycbt119-slpgfat ).
MODIFY itab_zycmt020 INDEX v_tabix.
ELSEIF v_soma_saldo LT itab_zycbt119-slpgfat AND NOT
v_soma_saldo IS INITIAL.
itab_zycmt020-saldo = itab_zycmt020-saldo +
( itab_zycbt119-slpgfat - v_soma_saldo ).
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
* Se o saldo esta total, atualiza totalizando saldo da /PWS/ZYCMT020
ELSEIF itab_zycbt119-slpgfat EQ itab_zycbt119-vlme.
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt119-nrseq
AND codmod EQ 'PG'
AND saldo IS initial.
v_tabix = sy-tabix.
itab_zycmt020-saldo = itab_zycmt020-vlpago.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
ENDIF.
ENDLOOP.
* Financiamento---------------------------------------------------------
LOOP AT itab_zycbt112.
* Considera apenas financiamento associado parcialmente
IF NOT itab_zycbt112-slassoc IS INITIAL AND
itab_zycbt112-slassoc LT itab_zycbt112-vlme.
CLEAR v_soma_saldo.
* Lê itens do pedido de compra para ratear saldos zerados
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt112-nrseq
AND codmod EQ 'FI'
AND saldo IS initial.
v_tabix = sy-tabix.
* Rateia por item cada associação feita para o processo
CLEAR v_registro.
LOOP AT itab_zycbt131 WHERE mdcorresp EQ 'IF'
AND nrseq EQ itab_zycbt112-nrseq.
v_registro = v_registro + 1.
IF v_registro EQ 1.
itab_zycmt020-saldo = itab_zycmt020-vlpago -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ELSE.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( itab_zycbt131-vlmefin * ( itab_zycmt020-pgto / 100 ) ).
ENDIF.
ENDLOOP.
v_soma_saldo = v_soma_saldo + itab_zycmt020-saldo.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
* Ajusta saldo se houve diferença de centavos no rateio
IF v_soma_saldo GT itab_zycbt112-slassoc.
itab_zycmt020-saldo = itab_zycmt020-saldo -
( v_soma_saldo - itab_zycbt112-slassoc ).
MODIFY itab_zycmt020 INDEX v_tabix.
ELSEIF v_soma_saldo LT itab_zycbt112-slassoc AND NOT
v_soma_saldo IS INITIAL.
itab_zycmt020-saldo = itab_zycmt020-saldo +
( itab_zycbt112-slassoc - v_soma_saldo ).
MODIFY itab_zycmt020 INDEX v_tabix.
ENDIF.
* Se o saldo esta total, atualiza totalizando saldo da /PWS/ZYCMT020
ELSEIF itab_zycbt112-slassoc EQ itab_zycbt112-vlme.
LOOP AT itab_zycmt020 WHERE nrseq EQ itab_zycbt112-nrseq
AND codmod EQ 'FI'
AND saldo IS initial.
v_tabix = sy-tabix.
itab_zycmt020-saldo = itab_zycmt020-vlpago.
MODIFY itab_zycmt020 INDEX v_tabix.
ENDLOOP.
ENDIF.
ENDLOOP.
MODIFY /pws/zycmt020 FROM TABLE itab_zycmt020[].
COMMIT WORK.
message s061 with text-004.
ENDFORM. " rateia_saldo_item
* >> Fim da inclusão: Criar novo programa
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/ZYCMR906
MODIFICAR SÍMBOLOS DE TEXTO :
TEXTOS NOVOS:
SÍM.: TEXTO: CD. CM.
001 Confirma atualização do saldo da tabela 39 39
002 /PWS/ZYCMT020, referente a associação de faturas? 49 49
003 Atualização tabela 18 18
004 Atualização do saldo finalizada. 32 32
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TABD /PWS/ZYCME020
MODIFICAR ESTRUTURA: /PWS/ZYCME020
DESCRIÇÃO BREVE: CM - Item do Pedido
CARACTERÍSTICAS
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
SALDO BWERT /PWS/ZYCMT020 WAERS
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TABD /PWS/ZYCMT020
MODIFICAR TABELA TRANSPARENTE: /PWS/ZYCMT020
DESCRIÇÃO BREVE: CM - Item do Pedido
CARACTERÍSTICAS
CAMPOS NOVOS
CAMPOS: TP. CAMPO CH: INI: TAB.VERIF.: TAB.REF.: CPO.RE
SALDO BWERT /PWS/ZYCMT020 WAERS
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TRAN /PWS/ZYCMR906
CÓDIGO DE TRANSAÇÃO: /PWS/ZYCMR906
ATRIBUTOS DA TRANSAÇÃO
TEXTO BREVE: CM - Atualização Saldo Rateio da Ass
Classe de Desenvolvimento: /PWS/ZYCM
OBJETO DE EXECUÇÃO
(_) - PROGRAMA E TELA (TRANSAÇÃO DE DIÁLOGO)
(X) - PROGRAMA E TELA DE SELEÇÃO (TRANSAÇÃO DE REPORT)
TEXTO DA TRANSAÇÃO: CM - Atualização Saldo Rateio da Ass
PROGRAMA: /PWS/ZYCMR906
TELA(SELEÇÃO): 1000
INÍCIO COM VARIANTE: _____________________________________________
OBJETO DE AUTORIZAÇÃO: ___________________________________________
(_) - ATUALIZAÇÃO DA VARIANTE DA TRANSAÇÃO STANDARD PERMITIDA
CLASSIFICAÇÃO
CLASSIFICAÇÃO DE TRANSAÇÃO:
(X) - TRANSAÇÃO PROFESSIONAL USER
(_) - TRANSAÇÃO EASY WEB SERVIÇO: ___________________________
CAPACIDADE GUI:
(_) SAP GUI PARA HTML
(_) SAP GUI PARA JAVA
(_) SAP GUI PARA WINDOWS