Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Registro de Exportação (RE)
Data/Hora da Publicação: 04/10/2007 00:00:00
Data/Hora Última Alteração: 22/02/2011 10:04:28
Descrição da Nota: AJUSTE DOS VALORES DOS CAMPOS VALOR CONDIÇÃO E LOCAL DE EMBARQUE DA RE
Sintoma
Ao gerar a RE com processos acrescidos de despesas ou com descontos, os valores da pasta
"Faturamento" nos campos "Valor Condição" e "Local de Embarque" estão incorretos.
Solução
Alterado o programa do Embarque para que os valores sejam enviados corretos ao gerar a RE. Alteração
da RE para refletir os valores propostos pelo Embarque.
*==> Observação: Ao aplicar esta nota, aplicar também a nota 4957.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 04912 Data: 04/10/2007 Hora: 19:27:25
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 04912
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 7.0
Pacote : 00003
Agrupamento : 00015
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
04839 - 00001 - 7.0 - 00003 - CORREÇÃO NO VALOR CALCULADO DO EMBARQUE E EM VALORES DO RE
04884 - 00002 - 7.0 - 00003 - CÁLCULOS DOS VALORES NO RE COM DRAWBACK
04885 - 00003 - 7.0 - 00003 - AJUSTE NO CÁLCULO DOS VALORES PARA RE QUANDO RE A TERMO
----------------------------------------------------------------------------------------------------
AJUSTE DOS VALORES DOS CAMPOS VALOR CONDIÇÃO E LOCAL DE EMBARQUE DA RE
----------------------------------------------------------------------------------------------------
Palavras Chave:
RE, EMBARQUE, VALOR, CONDIÇÃO, LOCAL
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F01
REPS /PWS/MZYCE041F01
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F01
...
MOVE:
<fs_002>-vlagente TO <fs_002>-vlagente_r,
<fs_002>-vlseguro TO <fs_002>-vlseguro_r,
<fs_002>-vldesconto TO <fs_002>-vldesconto_r,
<fs_002>-vlacrescimo TO <fs_002>-vlacrescimo_r,
<fs_002>-vlfrete TO <fs_002>-vlfrete_r,
<fs_002>-vlod TO <fs_002>-vlod_r,
itab_zycet002_rat-brgew TO <fs_002>-brgew_r,
itab_zycet002_rat-ntgew TO <fs_002>-ntgew_r,
itab_zycet002_rat-fkimg TO <fs_002>-fkimg_r,
* >> Início da exclusão: FORM ATUALIZA_RATEIO_ITENS
<fs_002>-vlme TO <fs_002>-vlme_r.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_RATEIO_ITENS
<fs_002>-vlme TO <fs_002>-vlme_r,
itab_zycet002_rat-fkimg TO <fs_002>-fkimg_r.
* << Fim da inclusão
READ TABLE itab_diferencas WITH KEY proccond = 'ACR'
BINARY SEARCH.
IF itab_diferencas-diferenca EQ 'X'.
<fs_002>-vlacrescimo_r = itab_zycet002_rat-vlacrescimo_r.
ENDIF.
READ TABLE itab_diferencas WITH KEY proccond = 'COM'
BINARY SEARCH.
IF itab_diferencas-diferenca EQ 'X'.
<fs_002>-vlagente_r = itab_zycet002_rat-vlagente_r.
ENDIF.
...
...
ENDIF.
IF itab_zycet065-outras_desp EQ 'X'.
ADD wa_condicao-real-vlme_out TO wa_condicao-calc-vlme_fob.
ENDIF.
IF itab_zycet065-comissao EQ 'X'.
ADD wa_condicao-real-vlme_com TO wa_condicao-calc-vlme_fob.
ENDIF.
ENDIF.
SUBTRACT wa_condicao-real-vlme_des FROM wa_condicao-calc-vlme_fob.
ADD wa_condicao-real-vlme_acr TO wa_condicao-calc-vlme_fob.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
LOOP AT itab_rateio ASSIGNING <fs_002> WHERE saida EQ 'X'
AND devolvido_t EQ space.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
LOOP AT itab_rateio ASSIGNING <fs_002>.
IF <fs_002>-saida EQ 'X' AND <fs_002>-devolvido_t EQ space.
* << Fim da inclusão
v_index = sy-tabix.
CLEAR: <fs_002>-vlfrete_r,
<fs_002>-vlseguro_r,
<fs_002>-vldesconto_r,
<fs_002>-vlacrescimo_r,
<fs_002>-vlagente_r,
<fs_002>-vlod_r.
READ TABLE itab_zycet255 WITH KEY pstyv = <fs_002>-pstyv.
CHECK sy-subrc NE 0.
CLEAR itab_zycet023.
...
...
WHEN 'ACR'.
CHECK itab_zycet065-acrescimo = 'X'.
ADD <fs_002>-vlacrescimo_r TO <fs_002>-vlme_r.
WHEN 'DES'.
CHECK itab_zycet065-desconto = 'X'.
SUBTRACT <fs_002>-vldesconto_r FROM <fs_002>-vlme_r.
WHEN 'OUT'.
CHECK itab_zycet065-outras_desp = 'X'.
IF /pws/zycee001-tpcalc = '1'.
SUBTRACT <fs_002>-vlod_r FROM <fs_002>-vlme_r.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
ELSE.
ADD <fs_002>-vlod_r TO <fs_002>-vlme_r.
* << Fim da exclusão
ENDIF.
WHEN 'COM'.
CHECK itab_zycet065-comissao = 'X'.
IF /pws/zycee001-tpcalc = '1'.
SUBTRACT <fs_002>-vlagente_r FROM <fs_002>-vlme_r.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
ELSE.
ADD <fs_002>-vlagente_r TO <fs_002>-vlme_r.
* << Fim da exclusão
ENDIF.
WHEN 'FRT'.
CHECK itab_zycet065-frete = 'X'.
IF /pws/zycee001-tpcalc = '1'.
SUBTRACT <fs_002>-vlfrete_r FROM <fs_002>-vlme_r.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
ELSE.
ADD <fs_002>-vlfrete_r TO <fs_002>-vlme_r.
* << Fim da exclusão
ENDIF.
WHEN 'SEG'.
CHECK itab_zycet065-seguro = 'X'.
IF /pws/zycee001-tpcalc = '1'.
SUBTRACT <fs_002>-vlseguro_r FROM <fs_002>-vlme_r.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
ENDIF.
ENDCASE.
ENDLOOP.
* << Fim da inclusão
ELSE.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
ADD <fs_002>-vlseguro_r TO <fs_002>-vlme_r.
* << Fim da exclusão
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
CHECK <fs_002>-estornado IS INITIAL.
READ TABLE itab_zycet023 WITH KEY fkart = <fs_002>-fkart
bukrs = <fs_002>-bukrs.
IF sy-subrc NE 0.
READ TABLE itab_zycet023 WITH KEY fkart = <fs_002>-fkart
bukrs = space.
ENDIF.
CHECK sy-subrc IS INITIAL.
CASE itab_zycet023-tipodoc.
WHEN 'OV' OR
'CO' OR
'VC'.
CONTINUE.
WHEN 'OD' OR
'DR'.
READ TABLE itab_vbfa WITH KEY vbeln = <fs_002>-vbeln_va
posnn = <fs_002>-aupos.
IF sy-subrc EQ 0.
READ TABLE itab_rateio WITH KEY vbeln_vf = itab_vbfa-vbelv
posnr = itab_vbfa-posnv
TRANSPORTING vlme_r.
IF sy-subrc EQ 0.
itab_rateio-vlme_r = itab_rateio-vlme_r -
ABS( <fs_002>-vlfob ).
MODIFY itab_rateio TRANSPORTING vlme_r
WHERE vbeln_vf EQ itab_vbfa-vbelv AND
posnr EQ itab_vbfa-posnv.
CLEAR itab_rateio.
ENDIF.
ENDIF.
WHEN 'OC'.
READ TABLE itab_vbfa WITH KEY vbeln = <fs_002>-vbeln_va
posnn = <fs_002>-aupos.
IF sy-subrc EQ 0.
READ TABLE itab_rateio WITH KEY vbeln_vf = itab_vbfa-vbelv
posnr = itab_vbfa-posnv
TRANSPORTING vlme_r.
IF sy-subrc EQ 0.
itab_rateio-vlme_r = itab_rateio-vlme_r +
ABS( <fs_002>-vlfob ).
MODIFY itab_rateio TRANSPORTING vlme_r
WHERE vbeln_vf EQ itab_vbfa-vbelv AND
posnr EQ itab_vbfa-posnv.
CLEAR itab_rateio.
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
ENDIF.
* << Fim da inclusão
ENDCASE.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
ENDIF.
* << Fim da inclusão
ENDLOOP.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
ENDLOOP.
* << Fim da exclusão
wa_condicao-total-vlme_fob = wa_condicao-real-vlme_fob.
CHECK wa_condicao-real NE wa_condicao-total.
READ TABLE itab_rateio INDEX v_indx_max ASSIGNING <fs_002>.
IF wa_condicao-real-vlme_acr NE wa_condicao-total-vlme_acr.
<fs_002>-vlacrescimo_r = <fs_002>-vlacrescimo_r +
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
wa_condicao-real-vlme_acr -
wa_condicao-total-vlme_acr.
<fs_002>-vlme_r = <fs_002>-vlme_r +
* << Fim da inclusão
wa_condicao-real-vlme_acr -
wa_condicao-total-vlme_acr.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
ENDIF.
IF wa_condicao-real-vlme_des NE wa_condicao-total-vlme_des.
<fs_002>-vldesconto_r = <fs_002>-vldesconto_r +
wa_condicao-real-vlme_des -
wa_condicao-total-vlme_des.
<fs_002>-vlme_r = <fs_002>-vlme_r -
( wa_condicao-real-vlme_des -
wa_condicao-total-vlme_des ).
* << Fim da inclusão
ENDIF.
IF wa_condicao-real-vlme_com NE wa_condicao-total-vlme_com.
<fs_002>-vlagente_r = <fs_002>-vlagente_r +
wa_condicao-real-vlme_com -
wa_condicao-total-vlme_com.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
IF /pws/zycee001-tpcalc = '1' AND
itab_zycet065-comissao = 'X'.
<fs_002>-vlme_r = <fs_002>-vlme_r -
( wa_condicao-real-vlme_com -
wa_condicao-total-vlme_com ).
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: FORM ATUALIZA_RATEIO_REAL
IF wa_condicao-real-vlme_des NE wa_condicao-total-vlme_des.
<fs_002>-vldesconto_r = <fs_002>-vldesconto_r +
wa_condicao-real-vlme_des -
wa_condicao-total-vlme_des.
* << Fim da exclusão
ENDIF.
IF wa_condicao-real-vlme_frt NE wa_condicao-total-vlme_frt.
<fs_002>-vlfrete_r = <fs_002>-vlfrete_r +
wa_condicao-real-vlme_frt -
wa_condicao-total-vlme_frt.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
IF /pws/zycee001-tpcalc = '1' AND
itab_zycet065-frete = 'X'.
<fs_002>-vlme_r = <fs_002>-vlme_r -
( wa_condicao-real-vlme_frt -
wa_condicao-total-vlme_frt ).
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
ENDIF.
* << Fim da inclusão
IF wa_condicao-real-vlme_out NE wa_condicao-total-vlme_out.
<fs_002>-vlod_r = <fs_002>-vlod_r +
wa_condicao-real-vlme_out -
wa_condicao-total-vlme_out.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
IF /pws/zycee001-tpcalc = '1' AND
itab_zycet065-outras_desp = 'X'.
<fs_002>-vlme_r = <fs_002>-vlme_r -
( wa_condicao-real-vlme_out -
wa_condicao-total-vlme_out ).
ENDIF.
* << Fim da inclusão
ENDIF.
IF wa_condicao-real-vlme_seg NE wa_condicao-total-vlme_seg.
<fs_002>-vlseguro_r = <fs_002>-vlseguro_r +
wa_condicao-real-vlme_seg -
wa_condicao-total-vlme_seg.
* >> Início da inclusão: FORM ATUALIZA_RATEIO_REAL
IF /pws/zycee001-tpcalc = '1' AND
itab_zycet065-seguro = 'X'.
<fs_002>-vlme_r = <fs_002>-vlme_r -
( wa_condicao-real-vlme_seg -
wa_condicao-total-vlme_seg ).
ENDIF.
* << Fim da inclusão
ENDIF.
ENDFORM.
FORM calcula_conditions_embarque.
FIELD-SYMBOLS: <v_vlme_prov> TYPE /pws/zycee313-vlme_fob,
<v_vlme_real> TYPE /pws/zycee313-vlme_fob.
DATA: v_variavel(25) TYPE c.
CLEAR wa_condicao.
LOOP AT itab_zycet008.
READ TABLE itab_zycet156 WITH KEY codigo = itab_zycet008-codigo
bukrs = /pws/zycee001-bukrs.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE041F01
...
itab_zycet002-vbeln_vl TO itab_zycet118-vbeln_vl,
itab_zycet002-posnl TO itab_zycet118-posnl,
itab_zycet002-aupos TO itab_zycet118-aupos,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
itab_zycet002-vlemb TO itab_zycet118-netpr,
* >> Início da inclusão: FORM RV_MOVE_ZYCET118
itab_zycet002-vlme_r TO itab_zycet118-vfob,
* << Fim da inclusão
itab_zycet002-ntgew TO itab_zycet118-ntgew,
itab_zycet002-brgew TO itab_zycet118-brgew,
itab_zycet002-fkimg TO itab_zycet118-fkimg,
itab_zycet002-vlagente TO itab_zycet118-vlagente,
'I' TO itab_zycet118-status.
READ TABLE itab_t604f WITH KEY steuc = itab_zycet002-steuc.
IF sy-subrc = 0 AND wa_zycet145-codncmre IS INITIAL.
READ TABLE itab_zycet081 WITH KEY steuc = itab_t604f-steuc.
IF NOT sy-subrc IS INITIAL.
v_ncm = itab_t604f-steuc.
...
...
itab_zycet002-auart TO itab_zycet118-auart,
itab_zycet002-ntgew TO itab_zycet118-ntgew,
itab_zycet002-brgew TO itab_zycet118-brgew,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
itab_zycet002-vlemb TO itab_zycet118-netpr,
* >> Início da inclusão: FORM RC_MOVE_ZYCET118
itab_zycet002-vlme_r TO itab_zycet118-vfob,
* << Fim da inclusão
itab_zycet002-fkimg TO itab_zycet118-fkimg,
itab_zycet002-vlagente TO itab_zycet118-vlagente,
'I' TO itab_zycet118-status.
CLEAR itab_zycet020.
READ TABLE itab_zycet020 WITH KEY auart = itab_zycet002-auart
bukrs = itab_zycet002-bukrs.
CLEAR itab_t604f.
READ TABLE itab_t604f WITH KEY steuc = itab_zycet002-steuc.
CASE itab_zycet020-tipodoc.
WHEN 'AM'.
...
...
IF sy-subrc = 0.
MOVE itab_zycit282_final-seq_agrup TO itab_zycit282-seq_agrup.
MODIFY itab_zycit282 INDEX v_index TRANSPORTING seq_agrup.
ENDIF.
ENDLOOP.
ENDFORM.
FORM db_move_zycet118.
DATA:
v_index LIKE sy-tabix,
v_vrkme TYPE /pws/zycet118-vrkme,
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
v_qtd LIKE /pws/zycit282-qtd_mexp,
v_valor_aux TYPE /pws/zycet118-vfob.
* << Fim da exclusão
* >> Início da inclusão: FORM DB_MOVE_ZYCET118
v_qtd LIKE /pws/zycit282-qtd_mexp.
* << Fim da inclusão
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
READ TABLE itab_zycet065 WITH KEY inco1 = /pws/zycee001-inco1.
* << Fim da exclusão
PERFORM verifica_saldo_ato.
CLEAR: itab_zycet002, itab_zycit282.
LOOP AT itab_zycet002.
IF v_codnrseq GE 999.
IF v_msg_999 IS INITIAL.
v_msg_999 = 'X'.
ENDIF.
EXIT.
ENDIF.
READ TABLE itab_zycit282 WITH KEY vbeln_va = itab_zycet002-vbeln_va
...
...
itab_zycet002-posnr TO itab_zycet118-posnr,
itab_zycet002-ebeln TO itab_zycet118-ebeln,
itab_zycet002-ebelp TO itab_zycet118-ebelp,
itab_zycet002-aupos TO itab_zycet118-aupos,
itab_zycet002-ntgew TO itab_zycet118-ntgew,
itab_zycet002-brgew TO itab_zycet118-brgew,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
* >> Início da inclusão: FORM DB_MOVE_ZYCET118
itab_zycet002-vlme_r TO itab_zycet118-vfob,
* << Fim da inclusão
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
itab_zycit282-tipo TO itab_zycet118-tipo,
itab_zycit282-quebra TO itab_zycet118-quebra,
itab_zycit282-nrseqd TO itab_zycet118-nrseqd,
itab_zycit282-lifnr TO itab_zycet118-lifnr,
itab_zycit282-seq_agrup TO itab_zycet118-dbmig,
itab_zycit282-qtd_eorg TO itab_zycet118-qtd_eorg,
itab_zycet002-vlagente TO itab_zycet118-vlagente,
'I' TO itab_zycet118-status,
v_fkimg TO itab_zycet118-fkimg.
IF itab_zycit282-tipo CA 'CG'.
MOVE: itab_zycit282-nratoc TO itab_zycet118-nrato.
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
ENDIF.
IF itab_zycet065-desconto = 'X'.
itab_zycet118-vfob = itab_zycet002-vlfob -
itab_zycet002-vldesconto_r.
ELSE.
itab_zycet118-vfob = itab_zycet002-vlfob.
ENDIF.
IF itab_zycet065-acrescimo = 'X'.
itab_zycet118-vfob = itab_zycet118-vfob +
itab_zycet002-vlacrescimo_r.
* << Fim da exclusão
ENDIF.
PERFORM preenche_ncm_anexos
CHANGING
itab_zycet118-ncm
itab_zycet118-naladi.
PERFORM calcula_anexos
USING
v_fkimg
CHANGING
itab_zycet118-netpr
itab_zycet118-ntgew
itab_zycet118-brgew
itab_zycet118-vlagente.
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
IF /pws/zycee001-tpcalc = '1'.
v_valor_aux = itab_zycet118-vfob.
itab_zycet118-vfob = itab_zycet118-netpr.
itab_zycet118-netpr = v_valor_aux.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: FORM DB_MOVE_ZYCET118
APPEND itab_zycet118.
* << Fim da inclusão
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
APPEND itab_zycet118.
* << Fim da exclusão
ELSE.
CLEAR itab_zycet118.
itab_zycet118-nrseqre = nrseqre.
v_codnrseq = v_codnrseq + 001.
itab_zycet118-codnrseq = v_codnrseq.
SHIFT itab_zycet118-codnrseq RIGHT DELETING TRAILING space.
UNPACK itab_zycet118-codnrseq TO itab_zycet118-codnrseq.
MOVE:
sy-mandt TO itab_zycet118-mandt,
itab_zycet002-vbeln_va TO itab_zycet118-vbeln_va,
...
...
itab_zycet002-posnr TO itab_zycet118-posnr,
itab_zycet002-aupos TO itab_zycet118-aupos,
itab_zycet002-ebeln TO itab_zycet118-ebeln,
itab_zycet002-ebelp TO itab_zycet118-ebelp,
itab_zycet002-ntgew TO itab_zycet118-ntgew,
itab_zycet002-brgew TO itab_zycet118-brgew,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
* >> Início da inclusão: FORM DB_MOVE_ZYCET118
itab_zycet002-vlemb TO itab_zycet118-netpr,
itab_zycet002-vlme_r TO itab_zycet118-vfob,
* << Fim da inclusão
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
itab_zycet002-vlme_r TO itab_zycet118-netpr,
* << Fim da exclusão
itab_zycet002-fkimg TO itab_zycet118-fkimg,
itab_zycet002-vlagente TO itab_zycet118-vlagente,
'I' TO itab_zycet118-status.
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
IF itab_zycet065-desconto = 'X'.
itab_zycet118-vfob = itab_zycet002-vlfob -
itab_zycet002-vldesconto_r.
ELSE.
itab_zycet118-vfob = itab_zycet002-vlfob.
ENDIF.
IF itab_zycet065-acrescimo = 'X'.
itab_zycet118-vfob = itab_zycet118-vfob +
itab_zycet002-vlacrescimo_r.
ENDIF.
IF /pws/zycee001-tpcalc = '1'.
v_valor_aux = itab_zycet118-vfob.
itab_zycet118-vfob = itab_zycet118-netpr.
itab_zycet118-netpr = v_valor_aux.
ENDIF.
* << Fim da exclusão
PERFORM preenche_ncm_anexos
CHANGING itab_zycet118-ncm
itab_zycet118-naladi.
APPEND itab_zycet118.
ENDIF.
ENDLOOP.
LOOP AT itab_saldo_ato.
READ TABLE itab_zycet002 WITH KEY
vbeln_va = itab_saldo_ato-vbeln_va
vbeln_vl = itab_saldo_ato-vbeln_vl
...
...
itab_zycet002-posnr TO itab_zycet118-posnr,
itab_zycet002-aupos TO itab_zycet118-aupos,
itab_zycet002-ebeln TO itab_zycet118-ebeln,
itab_zycet002-ebelp TO itab_zycet118-ebelp,
itab_zycet002-ntgew TO itab_zycet118-ntgew,
itab_zycet002-brgew TO itab_zycet118-brgew,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
* >> Início da inclusão: FORM DB_MOVE_ZYCET118
itab_zycet002-vlme_r TO itab_zycet118-vfob,
* << Fim da inclusão
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
itab_saldo_ato-saldo TO itab_zycet118-fkimg,
'I' TO itab_zycet118-status.
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
IF itab_zycet065-desconto = 'X'.
itab_zycet118-vfob = itab_zycet002-vlfob -
itab_zycet002-vldesconto_r.
ELSE.
itab_zycet118-vfob = itab_zycet002-vlfob.
ENDIF.
IF itab_zycet065-acrescimo = 'X'.
itab_zycet118-vfob = itab_zycet118-vfob +
itab_zycet002-vlacrescimo_r.
ENDIF.
* << Fim da exclusão
PERFORM preenche_ncm_anexos
CHANGING itab_zycet118-ncm
itab_zycet118-naladi.
PERFORM calcula_anexos
USING
itab_saldo_ato-saldo
CHANGING
itab_zycet118-netpr
itab_zycet118-ntgew
itab_zycet118-brgew
itab_zycet118-vlagente.
* >> Início da exclusão: FORM DB_MOVE_ZYCET118
IF /pws/zycee001-tpcalc = '1'.
v_valor_aux = itab_zycet118-vfob.
itab_zycet118-vfob = itab_zycet118-netpr.
itab_zycet118-netpr = v_valor_aux.
ENDIF.
* << Fim da exclusão
APPEND itab_zycet118.
ENDLOOP.
CLEAR itab_zycet118.
ENDFORM.
FORM db_move_zycet116.
IF itab_zycet116[] IS INITIAL.
PERFORM sel_param_cabec.
itab_zycet116-nrseqre = nrseqre.
itab_zycet116-agrupado = text-004.
itab_zycet116-tpre = '05'.
...
...
itab_zycet002-vbeln_vl TO itab_zycet118-vbeln_vl,
itab_zycet002-posnl TO itab_zycet118-posnl,
itab_zycet002-posnr TO itab_zycet118-posnr,
itab_zycet002-aupos TO itab_zycet118-aupos,
itab_zycet002-ntgew_r TO itab_zycet118-ntgew,
itab_zycet002-brgew_r TO itab_zycet118-brgew,
itab_zycet002-vrkme TO itab_zycet118-vrkme,
itab_zycet002-arktx TO itab_zycet118-dsmerc,
itab_zycet002-matnr TO itab_zycet118-matnr,
itab_zycet002-gewei TO itab_zycet118-gewei,
* >> Início da exclusão: FORM MOVE_ZYCET118
itab_zycet002-vlfob TO itab_zycet118-netpr,
* << Fim da exclusão
* >> Início da inclusão: FORM MOVE_ZYCET118
itab_zycet002-vlemb TO itab_zycet118-netpr,
* << Fim da inclusão
itab_zycet002-vlme_r TO itab_zycet118-vfob,
itab_zycet002-waers TO itab_zycet118-waers,
itab_zycet002-waers TO itab_zycet118-waerk,
itab_zycet002-fkimg_r TO itab_zycet118-fkimg,
itab_zycet002-vlagente TO itab_zycet118-vlagente,
'I' TO itab_zycet118-status,
itab_zycet002-ntgew TO itab_zycet118-saldordem.
IF NOT itab_zycet002-vlagente_r IS INITIAL.
MOVE itab_zycet002-vlagente_r TO itab_zycet118-vlagente.
ENDIF.
...
...
ENDFORM.
FORM agrup_selecao.
PERFORM funcao_agrupamento.
IF NOT itab_zycet092[] IS INITIAL.
PERFORM move_agrupados.
ELSE.
LEAVE PROGRAM.
ENDIF.
ENDFORM.
FORM funcao_agrupamento.
* >> Início da exclusão: FORM FUNCAO_AGRUPAMENTO
DATA:
itab_zycet118_aux LIKE TABLE OF itab_zycet118,
wa_zycet118_aux LIKE LINE OF itab_zycet118_aux,
v_index TYPE sy-tabix.
itab_zycet118_aux[] = itab_zycet118[].
IF itab_zycit282[] IS INITIAL.
PERFORM aplica_despesas.
ENDIF.
* << Fim da exclusão
CALL FUNCTION '/PWS/ZYCE_AGRUPA_OV_RE'
EXPORTING
werks = itab_zycet116-werks
TABLES
itab_zycet092 = itab_zycet092
itab_zycet118 = itab_zycet118
itab_zycet090 = itab_zycet090
itab_zycet002 = itab_zycet002.
* >> Início da exclusão: FORM FUNCAO_AGRUPAMENTO
LOOP AT itab_zycet118.
v_index = sy-tabix.
READ TABLE itab_zycet118_aux INTO wa_zycet118_aux
WITH KEY
codnrseq = itab_zycet118-codnrseq
vbeln_va = itab_zycet118-vbeln_va
aupos = itab_zycet118-aupos
vbeln_vl = itab_zycet118-vbeln_vl
posnl = itab_zycet118-posnl
vbeln_vf = itab_zycet118-vbeln_vf
posnr = itab_zycet118-posnr.
MOVE:
itab_zycet118-seqagrupado TO wa_zycet118_aux-seqagrupado,
wa_zycet118_aux TO itab_zycet118.
MODIFY itab_zycet118 INDEX v_index.
ENDLOOP.
* << Fim da exclusão
ENDFORM.
FORM move_agrupados.
LOOP AT itab_zycet118.
CLEAR: itab_zycet118-status,
itab_zycet118-nrseqre.
itab_zycet118-nrseqre = itab_zycet116-nrseqre.
itab_zycet118-status = 'S'.
MODIFY itab_zycet118 INDEX sy-tabix.
ENDLOOP.
LOOP AT itab_zycet092.
...
...
v_fkimg002 TO itab_saldo_ato-saldo.
APPEND itab_saldo_ato.
CONTINUE.
ENDIF.
ENDLOOP.
ENDLOOP.
ENDFORM.
FORM ajusta_precos.
FIELD-SYMBOLS: <fs_zycet118> LIKE LINE OF itab_zycet118,
<fs_zycet092> LIKE LINE OF itab_zycet092.
* >> Início da exclusão: FORM AJUSTA_PRECOS
TYPES: BEGIN OF ty_zycet065,
inco1 TYPE /pws/zycet065-inco1,
fob TYPE /pws/zycet065-fob,
frete TYPE /pws/zycet065-frete,
seguro TYPE /pws/zycet065-seguro,
outras_desp TYPE /pws/zycet065-outras_desp,
desconto TYPE /pws/zycet065-desconto,
acrescimo TYPE /pws/zycet065-acrescimo,
comissao TYPE /pws/zycet065-comissao,
END OF ty_zycet065.
DATA: wa_zycet065 TYPE ty_zycet065,
v_despesas TYPE /pws/zycet002-vlme.
* << Fim da exclusão
DATA: v_vfob TYPE /pws/zycet092-vfob,
v_netpr TYPE /pws/zycet092-netpr,
v_vfob_item TYPE p DECIMALS 4,
v_netpr_item TYPE p DECIMALS 4,
v_difer TYPE /pws/zycet092-netpr,
v_index TYPE sy-tabix.
DATA: fator_acrescimo TYPE p DECIMALS 2.
IF itab_zycit282[] IS INITIAL.
* >> Início da exclusão: FORM AJUSTA_PRECOS
SELECT SINGLE inco1
fob
frete
seguro
outras_desp
desconto
acrescimo
comissao
FROM /pws/zycet065
INTO wa_zycet065
WHERE inco1 EQ itab_zycet001-inco1.
* << Fim da exclusão
READ TABLE itab_zycet001 INDEX 1.
CHECK sy-subrc IS INITIAL.
IF itab_zycet116-agrupado EQ 'S'.
LOOP AT itab_zycet092 ASSIGNING <fs_zycet092>.
CLEAR: v_vfob, v_netpr, v_index.
LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>
WHERE seqagrupado EQ <fs_zycet092>-codnrseq.
* >> Início da exclusão: FORM AJUSTA_PRECOS
CLEAR v_despesas.
* << Fim da exclusão
v_index = sy-tabix.
* >> Início da exclusão: FORM AJUSTA_PRECOS
READ TABLE itab_zycet002
WITH KEY vbeln_va = <fs_zycet118>-vbeln_va
aupos = <fs_zycet118>-aupos
vbeln_vl = <fs_zycet118>-vbeln_vl
posnl = <fs_zycet118>-posnl
vbeln_vf = <fs_zycet118>-vbeln_vf
posnr = <fs_zycet118>-posnr
TRANSPORTING vlfrete_r
vlseguro_r
vlod_r
vlagente_r
vlacrescimo_r
vldesconto_r.
CHECK sy-subrc IS INITIAL.
IF NOT wa_zycet065-frete IS INITIAL AND
NOT itab_zycet002-vlfrete_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlfrete_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-seguro IS INITIAL AND
NOT itab_zycet002-vlseguro_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlseguro_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-outras_desp IS INITIAL AND
NOT itab_zycet002-vlod_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlod_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlod_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-comissao IS INITIAL AND
NOT itab_zycet002-vlagente_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlagente_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-desconto IS INITIAL AND
NOT itab_zycet002-vldesconto_r IS INITIAL.
SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.
ENDIF.
IF NOT wa_zycet065-acrescimo IS INITIAL AND
NOT itab_zycet002-vlacrescimo_r IS INITIAL.
ADD itab_zycet002-vlacrescimo_r TO v_despesas.
ENDIF.
IF NOT v_despesas IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
<fs_zycet118>-vfob =
<fs_zycet118>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
<fs_zycet118>-netpr = <fs_zycet118>-netpr + v_despesas.
ELSE.
<fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.
<fs_zycet118>-netpr =
<fs_zycet118>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
ENDIF.
ELSE.
<fs_zycet118>-vfob = <fs_zycet118>-netpr.
ENDIF.
* << Fim da exclusão
PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo
CHANGING <fs_zycet118>-fkimg
<fs_zycet118>-ntgew
<fs_zycet118>-brgew
<fs_zycet118>-netpr
<fs_zycet118>-vfob.
v_vfob = v_vfob + <fs_zycet118>-vfob.
v_netpr = v_netpr + <fs_zycet118>-netpr.
ENDLOOP.
CHECK sy-subrc IS INITIAL.
...
...
MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.
ELSE.
v_difer = <fs_zycet092>-netpr - v_netpr.
itab_zycet118-netpr = itab_zycet118-netpr + v_difer.
MODIFY itab_zycet118 INDEX v_index TRANSPORTING netpr.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT itab_zycet118 ASSIGNING <fs_zycet118>.
* >> Início da exclusão: FORM AJUSTA_PRECOS
CLEAR v_despesas.
READ TABLE itab_zycet002 WITH KEY vbeln_va = <fs_zycet118>-vbeln_va
aupos = <fs_zycet118>-aupos
vbeln_vl = <fs_zycet118>-vbeln_vl
posnl = <fs_zycet118>-posnl
vbeln_vf = <fs_zycet118>-vbeln_vf
posnr = <fs_zycet118>-posnr
TRANSPORTING vlfrete_r
vlseguro_r
vlod_r
vlagente_r
vlacrescimo_r
vldesconto_r.
CHECK sy-subrc IS INITIAL.
IF NOT wa_zycet065-frete IS INITIAL AND
NOT itab_zycet002-vlfrete_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlfrete_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-seguro IS INITIAL AND
NOT itab_zycet002-vlseguro_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlseguro_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-outras_desp IS INITIAL AND
NOT itab_zycet002-vlod_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlod_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlod_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-comissao IS INITIAL AND
NOT itab_zycet002-vlagente_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlagente_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-desconto IS INITIAL AND
NOT itab_zycet002-vldesconto_r IS INITIAL.
SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.
ENDIF.
IF NOT wa_zycet065-acrescimo IS INITIAL AND
NOT itab_zycet002-vlacrescimo_r IS INITIAL.
ADD itab_zycet002-vlacrescimo_r TO v_despesas.
ENDIF.
IF NOT v_despesas IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
<fs_zycet118>-vfob =
<fs_zycet118>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
<fs_zycet118>-netpr = <fs_zycet118>-netpr + v_despesas.
ELSE.
<fs_zycet118>-vfob = <fs_zycet118>-netpr + v_despesas.
<fs_zycet118>-netpr =
<fs_zycet118>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
ENDIF.
ELSE.
<fs_zycet118>-vfob = <fs_zycet118>-netpr.
ENDIF.
* << Fim da exclusão
IF itab_zycet116-perc_re_termo > 0.
v_netpr = v_netpr + <fs_zycet118>-netpr.
v_vfob = v_vfob + <fs_zycet118>-vfob.
ENDIF.
PERFORM ajustes_re_termo USING itab_zycet116-perc_re_termo
CHANGING <fs_zycet118>-fkimg
<fs_zycet118>-ntgew
<fs_zycet118>-brgew
<fs_zycet118>-netpr
<fs_zycet118>-vfob.
...
...
IF sy-subrc IS INITIAL.
MOVE itab_zycet118_aux-dsmerc TO <fs_zycet118>-dsmerc.
ENDIF.
READ TABLE itab_zycet092_aux
WITH KEY codnrseq = <fs_zycet118>-seqagrupado
TRANSPORTING dsmerc.
CHECK sy-subrc IS INITIAL.
MOVE itab_zycet092_aux-dsmerc TO <fs_zycet118>-dsmerc.
ENDLOOP.
ENDFORM.
* >> Início da exclusão: FORM APLICA_DESPESAS
FORM aplica_despesas.
TYPES: BEGIN OF ty_zycet065,
inco1 TYPE /pws/zycet065-inco1,
fob TYPE /pws/zycet065-fob,
frete TYPE /pws/zycet065-frete,
seguro TYPE /pws/zycet065-seguro,
outras_desp TYPE /pws/zycet065-outras_desp,
desconto TYPE /pws/zycet065-desconto,
acrescimo TYPE /pws/zycet065-acrescimo,
comissao TYPE /pws/zycet065-comissao,
END OF ty_zycet065.
DATA: wa_zycet065 TYPE ty_zycet065,
v_despesas TYPE /pws/zycet002-vlme.
SELECT SINGLE inco1
fob
frete
seguro
outras_desp
desconto
acrescimo
comissao
FROM /pws/zycet065
INTO wa_zycet065
WHERE inco1 EQ /pws/zycee001-inco1.
FIELD-SYMBOLS: <fs_itemanexo> LIKE LINE OF itab_zycet118.
LOOP AT itab_zycet118 ASSIGNING <fs_itemanexo>.
CLEAR v_despesas.
READ TABLE itab_zycet002 WITH KEY
vbeln_va = <fs_itemanexo>-vbeln_va
aupos = <fs_itemanexo>-aupos
vbeln_vl = <fs_itemanexo>-vbeln_vl
posnl = <fs_itemanexo>-posnl
vbeln_vf = <fs_itemanexo>-vbeln_vf
posnr = <fs_itemanexo>-posnr
TRANSPORTING
vlfrete_r
vlseguro_r
vlod_r
vlagente_r
vlacrescimo_r
vldesconto_r.
CHECK sy-subrc IS INITIAL.
IF NOT wa_zycet065-frete IS INITIAL AND
NOT itab_zycet002-vlfrete_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlfrete_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlfrete_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-seguro IS INITIAL AND
NOT itab_zycet002-vlseguro_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlseguro_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlseguro_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-outras_desp IS INITIAL AND
NOT itab_zycet002-vlod_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlod_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlod_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-comissao IS INITIAL AND
NOT itab_zycet002-vlagente_r IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
ADD itab_zycet002-vlagente_r TO v_despesas.
ELSE.
SUBTRACT itab_zycet002-vlagente_r FROM v_despesas.
ENDIF.
ENDIF.
IF NOT wa_zycet065-desconto IS INITIAL AND
NOT itab_zycet002-vldesconto_r IS INITIAL.
SUBTRACT itab_zycet002-vldesconto_r FROM v_despesas.
ENDIF.
IF NOT wa_zycet065-acrescimo IS INITIAL AND
NOT itab_zycet002-vlacrescimo_r IS INITIAL.
ADD itab_zycet002-vlacrescimo_r TO v_despesas.
ENDIF.
IF NOT v_despesas IS INITIAL.
IF /pws/zycee001-tpcalc = '0'.
<fs_itemanexo>-vfob =
<fs_itemanexo>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
<fs_itemanexo>-netpr = <fs_itemanexo>-netpr + v_despesas.
ELSE.
<fs_itemanexo>-vfob = <fs_itemanexo>-netpr + v_despesas.
<fs_itemanexo>-netpr =
<fs_itemanexo>-netpr -
itab_zycet002-vldesconto_r +
itab_zycet002-vlacrescimo_r.
ENDIF.
ELSE.
<fs_itemanexo>-vfob = <fs_itemanexo>-netpr.
ENDIF.
ENDLOOP.
ENDFORM.
* << Fim da exclusão
FORM preenche_ncm_anexos
CHANGING p_ncm
p_naladi.
CLEAR itab_t604f.
READ TABLE itab_t604f WITH KEY steuc = itab_zycet002-steuc.
IF sy-subrc = 0 AND wa_zycet145-codncmre IS INITIAL.
CLEAR itab_zycet081.
READ TABLE itab_zycet081 WITH KEY steuc = itab_t604f-steuc.
IF NOT sy-subrc IS INITIAL.
v_ncm = itab_t604f-steuc.
...
...
FORM calcula_anexos
USING
v_fkimg
CHANGING
p_netpr
p_ntgew
p_brgew
p_vlagente.
itab_zycet118-vfob = ( itab_zycet118-vfob * v_fkimg ) /
itab_zycet002-fkimg.
* >> Início da exclusão: FORM CALCULA_ANEXOS
p_netpr = itab_zycet002-vlme_r /
* << Fim da exclusão
* >> Início da inclusão: FORM CALCULA_ANEXOS
p_netpr = itab_zycet002-vlemb /
* << Fim da inclusão
( itab_zycet002-fkimg / v_fkimg ).
p_vlagente = ( itab_zycet002-vlagente * v_fkimg ) /
itab_zycet002-fkimg.
v_fkimg_aux = v_fkimg.
IF itab_zycet002-vrkme NE itab_zycet002-gewei.
PERFORM converte_um USING v_fkimg_aux
itab_zycet002-vrkme
itab_zycet002-gewei
itab_zycet002-matnr
CHANGING v_fkimg_aux.
...