Módulo: DOC. EXPORTAÇÃO
Funcionalidade: Embarque
Data/Hora da Publicação: 30/03/2007 00:00:00
Data/Hora Última Alteração: 03/03/2010 13:24:15
Descrição da Nota: SALVAR COMISSÃO DE AGENTE JUNTO COM EMBARQUE
Sintoma
O programa de embarque poderia ser enviado ao câmbio sem possuir dados de comissão de agente.
No câmbio, os valores de comissão de agente ficam com valor zero.
Solução
O embarque passa a gravar as tabelas /PWS/ZYCET010 e /PWS/ZYCET013 quando ainda não existe comissão
contabilizada.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 03363 Data: 30/03/2007 Hora: 14:35:24
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 03363
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 6.0
Pacote : 00026
Agrupamento : 00156
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
SALVAR COMISSÃO DE AGENTE JUNTO COM EMBARQUE
----------------------------------------------------------------------------------------------------
Palavras Chave:
EMBARQUE COMISSÃO AGENTE SALVAR
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCE003F02
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCE003F02
...
COLLECT itab_zycit248.
MOVE-CORRESPONDING itab_drawback TO wa_drawback.
ENDLOOP.
ENDLOOP.
IF NOT itab_zycit248[] IS INITIAL.
INSERT /pws/zycit248 FROM TABLE itab_zycit248.
COMMIT WORK.
ENDIF.
ENDFORM.
FORM salva_embarque.
* >> Início da inclusão: FORM SALVA_EMBARQUE
DATA: comissao_contabilizada TYPE xfeld,
wa_zycet010 TYPE /pws/zycet010,
wa_zycet013 TYPE /pws/zycet013.
* << Fim da inclusão
IF sy-tcode EQ c_transacao_c.
MOVE: sy-uname TO /pws/zycee001-unamec,
sy-datum TO /pws/zycee001-dtuserc,
sy-uzeit TO /pws/zycee001-hruserc.
ENDIF.
COMMIT WORK.
PERFORM busca_numero_sequencial.
IF /pws/zycee001-nrseq IS INITIAL.
EXIT.
ENDIF.
...
...
COMMIT WORK.
PERFORM salva_texto USING 'CE01' /pws/zycee001-txtobs
CHANGING itab_tline[].
PERFORM salva_texto USING 'CE02' /pws/zycee001-txtobs2
CHANGING itab_tline2[].
UPDATE /pws/zycet046 SET zterm = /pws/zycee046-zterm
WHERE nrseq = /pws/zycee001-nrseq.
IF sy-subrc NE 0.
/pws/zycee046-nrseq = /pws/zycee001-nrseq.
INSERT INTO /pws/zycet046 VALUES /pws/zycee046.
ENDIF.
* >> Início da inclusão: FORM SALVA_EMBARQUE
PERFORM busca_comissao_contabilizada
USING
/pws/zycee001-nrseq
CHANGING
comissao_contabilizada.
IF comissao_contabilizada = space.
PERFORM calcula_comissao
USING
/pws/zycee001
itab_zycet002[]
itab_zycet008[]
itab_vbpa[]
itab_zycet076[]
itab_zycet156[]
/pws/zycee046
itab_zycet047[]
itab_zycet037[]
CHANGING
wa_zycet010
wa_zycet013.
PERFORM salva_comissao
USING
/pws/zycee001-nrseq
wa_zycet010
wa_zycet013.
ENDIF.
* << Fim da inclusão
ENDIF.
COMMIT WORK.
*/pws/zycee001 = /pws/zycee001.
*/pws/zycee014 = /pws/zycee014.
*/pws/zycee014a = /pws/zycee014a.
itab_zycet002_ant[] = itab_zycet002[].
itab_zycet003_ant[] = itab_zycet003[].
itab_zycet008_ant[] = itab_zycet008[].
itab_zycet015_ant[] = itab_zycet015[].
...
...
* >> Início da inclusão de 3 novos forms no include /PWS/MZYCE003F02
FORM busca_comissao_contabilizada
USING
p_nrseq TYPE /pws/zycet001-nrseq
CHANGING
p_comissao_contabilizada TYPE xfeld.
SELECT COUNT(*)
FROM /pws/zycet010
WHERE nrseq = p_nrseq
AND belnr > 0.
IF sy-subrc = 0.
p_comissao_contabilizada = 'X'.
ELSE.
SELECT COUNT(*)
FROM /pws/zycet013
WHERE nrseq = p_nrseq
AND belnr > 0.
IF sy-subrc = 0.
p_comissao_contabilizada = 'X'.
ELSE.
p_comissao_contabilizada = space.
ENDIF.
ENDIF.
ENDFORM.
FORM calcula_comissao
USING
p_zycet001 TYPE /pws/zycet001
p_t_zycet002 LIKE itab_zycet002[]
p_t_zycet008 LIKE itab_zycet008[]
p_t_vbpa LIKE itab_vbpa[]
p_t_zycet076 LIKE itab_zycet076[]
p_t_zycet156 LIKE itab_zycet156[]
p_zycet046 TYPE /pws/zycet046
p_t_zycet047 LIKE itab_zycet047[]
p_t_zycet037 LIKE itab_zycet037[]
CHANGING
p_zycet010 TYPE /pws/zycet010
p_zycet013 TYPE /pws/zycet013.
DATA: wa_zycet002 LIKE LINE OF p_t_zycet002,
wa_zycet008 LIKE LINE OF p_t_zycet008,
wa_zycet076 LIKE LINE OF p_t_zycet076,
wa_zycet037 LIKE LINE OF p_t_zycet037,
wa_zycet047 LIKE LINE OF p_t_zycet047,
wa_zycet156 LIKE LINE OF p_t_zycet156,
wa_zyglt321 TYPE /pws/zyglt321,
wa_vbpa LIKE LINE OF p_t_vbpa[],
vl_com_real TYPE /pws/zycet008-vlme_f,
vl_com_prov TYPE /pws/zycet008-vlme,
it_zyglt321 TYPE STANDARD TABLE OF /pws/zyglt321,
it_vtopis TYPE STANDARD TABLE OF vtopis,
zfbdt TYPE d,
zterm TYPE dzterm.
DATA: itab_156 LIKE itab_zycet156 OCCURS 0 WITH HEADER LINE.
itab_156[] = p_t_zycet156[].
SORT itab_156 BY bukrs codmod codigo.
DELETE ADJACENT DUPLICATES FROM itab_156 COMPARING
bukrs
codmod
codigo.
LOOP AT itab_156[]
INTO wa_zycet156
WHERE codmod = 'X'
AND bukrs = p_zycet001-bukrs
AND proccond = 'COM'.
READ TABLE p_t_zycet008[]
INTO wa_zycet008
WITH KEY codigo = wa_zycet156-codigo
TRANSPORTING vlme
vlme_f.
IF sy-subrc = 0.
ADD wa_zycet008-vlme_f TO vl_com_real.
ADD wa_zycet008-vlme TO vl_com_prov.
ENDIF.
ENDLOOP.
p_zycet010-nrseq = p_zycet001-nrseq.
READ TABLE p_t_zycet076[]
INTO wa_zycet076
WITH KEY codigo_ce = 'AG'
TRANSPORTING codigo_r3.
IF sy-subrc = 0.
READ TABLE p_t_zycet002[]
INTO wa_zycet002
WITH KEY saida = 'X'
TRANSPORTING vbeln_va.
IF sy-subrc = 0.
READ TABLE p_t_vbpa[]
INTO wa_vbpa
WITH KEY vbeln = wa_zycet002-vbeln_va
parvw = wa_zycet076-codigo_r3
TRANSPORTING lifnr.
IF sy-subrc = 0.
p_zycet010-lifnr = wa_vbpa-lifnr.
ENDIF.
ENDIF.
ENDIF.
SELECT *
FROM /pws/zyglt321
INTO TABLE it_zyglt321
WHERE ktosl = 'CAP'
AND codeven = '004'
AND cpor3 IN ('ZFBDT', 'ZTERM').
READ TABLE it_zyglt321[] INTO wa_zyglt321
WITH KEY cpor3 = 'ZFBDT'.
IF sy-subrc = 0.
CASE wa_zyglt321-cpocb.
WHEN 'DTDIA'.
zfbdt = sy-datlo.
WHEN 'DTEMB'.
zfbdt = p_zycet001-dtemb.
WHEN 'DTAVERB'.
zfbdt = p_zycet001-dtaverb.
WHEN 'DTBL'.
READ TABLE p_t_zycet047 INTO wa_zycet047
WITH KEY nrseq = p_zycet001-nrseq
TRANSPORTING dtbl.
IF sy-subrc = 0.
zfbdt = wa_zycet047-dtbl.
ENDIF.
ENDCASE.
ENDIF.
IF NOT zfbdt IS INITIAL.
READ TABLE it_zyglt321 INTO wa_zyglt321
WITH KEY cpor3 = 'ZTERM'.
IF sy-subrc = 0.
CASE wa_zyglt321-cpocb.
WHEN 'ZTERM'.
zterm = p_zycet046-zterm.
WHEN 'ZTERMF'.
CHECK NOT p_zycet010-lifnr IS INITIAL
AND NOT p_zycet001-bukrs IS INITIAL.
SELECT SINGLE zterm
FROM lfb1
INTO zterm
WHERE lifnr = p_zycet010-lifnr
AND bukrs = p_zycet001-bukrs.
WHEN space.
zterm = wa_zyglt321-descr.
ENDCASE.
ENDIF.
IF NOT zterm IS INITIAL.
CALL FUNCTION 'SD_PRINT_TERMS_OF_PAYMENT'
EXPORTING
bldat = zfbdt
budat = zfbdt
cpudt = zfbdt
terms_of_payment = zterm
IMPORTING
zfbdt = p_zycet010-dtvencto
TABLES
top_text = it_vtopis[]
EXCEPTIONS
terms_of_payment_not_in_t052 = 0
OTHERS = 0.
ENDIF.
ENDIF.
p_zycet010-vlcomis = vl_com_real.
READ TABLE p_t_zycet008
INTO wa_zycet008
INDEX 1
TRANSPORTING waers.
IF sy-subrc = 0.
p_zycet010-waers = wa_zycet008-waers.
ENDIF.
CALL FUNCTION 'J_1B_BRANCH_DETERMINE'
EXPORTING
company = p_zycet001-bukrs
plant = p_zycet001-werks
IMPORTING
branch = p_zycet010-j_1bbranch
EXCEPTIONS
branch_not_found = 0
plant_not_found = 0
valuation_area_not_found = 0
company_not_found = 0
OTHERS = 0.
p_zycet010-kostl = p_zycet001-werks.
p_zycet013-nrseq = p_zycet001-nrseq.
IF NOT p_zycet001-bukrs IS INITIAL.
READ TABLE p_t_zycet037[] INTO wa_zycet037
WITH KEY bukrs = p_zycet001-bukrs.
IF sy-subrc = 0 AND wa_zycet037-comis_provisao = '1'.
p_zycet013-lifnr = p_zycet010-lifnr.
ENDIF.
ENDIF.
p_zycet013-waers = p_zycet010-waers.
p_zycet013-vlme = vl_com_real.
p_zycet013-vlme_dif = vl_com_real - vl_com_prov.
p_zycet013-vlme_dif = abs( p_zycet013-vlme_dif ).
ENDFORM.
FORM salva_comissao
USING
p_nrseq TYPE /pws/zycet001-nrseq
p_zycet010 TYPE /pws/zycet010
p_zycet013 TYPE /pws/zycet013.
DELETE FROM /pws/zycet010 WHERE nrseq = p_nrseq.
INSERT INTO /pws/zycet010 VALUES p_zycet010.
DELETE FROM /pws/zycet013 WHERE nrseq = p_nrseq.
INSERT INTO /pws/zycet013 VALUES p_zycet013.
ENDFORM.
* << Fim da inclusão