Módulo: CÂMBIO EXPORTAÇÃO
Funcionalidade: Vinculação
Data/Hora da Publicação: 23/03/2006 00:00:00
Data/Hora Última Alteração: 18/02/2011 15:06:24
Descrição da Nota: MATCH CODE DE FATURAS UNICODE VINCULAÇÃO F-30
Sintoma
1) Ao salvar a vinculação com baixa no cliente de um contrato de ACC ou ACE utilizando o valor total
da fatura, o programa está fazendo primeiro uma F-30 de desmembramento do cliente (que é onde ocorre
o erro), mas quando é vinculado o valor total da fatura, o programa não deveria fazer um
desmembramento do cliente, já deveria entrar direto para fazer a baixa do cliente em razão especial.
Solução
Foram efetuados ajustes para permitir a compatibilidade do match code de faturas com o Unicode.
6.0
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 01074 Data: 23/03/2006 Hora: 13:52:38
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 01074
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 6.0
Pacote : 00023
Agrupamento : 00106
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Descrição Breve
----------------------------------------------------------------------------------------------------
MATCH CODE DE FATURAS UNICODE VINCULAÇÃO F-30
----------------------------------------------------------------------------------------------------
Palavras Chave:
MATCH CODE DE FATURAS UNICODE VINCULAÇÃO F-30
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCB009F05
REPS /PWS/MZYCB009I01
REPS /PWS/MZYCB009TOP
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009F05
...
itab_zycbt005-nrseqc = /pws/zycbe001-nrseqc.
ENDIF.
LOOP AT itab_zycbt005.
CALL FUNCTION '/PWS/ZYCB_DEQUEUE_ZYCBT005'
EXPORTING
* >> Início da exclusão: FORM UNLOCK_RECORD
nrseqc = itab_zycbt005-nrseqc.
* << Fim da exclusão
* >> Início da inclusão: FORM UNLOCK_RECORD
nrseqc = itab_zycbt005-nrseqc.
* << Fim da inclusão
ENDLOOP.
ENDFORM.
FORM lock_record.
CHECK sy-tcode = c_transacao_a OR
sy-tcode = c_transacao_c.
...
...
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
* >> Início da inclusão:
FORM adiciona_linha_tc
USING
value(p_fieldname) TYPE dynpread-fieldname
value(p_fieldvalue)
value(p_stepl) TYPE dynpread-stepl
CHANGING
p_itab_dynpread TYPE t_itab_dynpread.
DATA:
wa_dynpread TYPE dynpread.
wa_dynpread-fieldname = p_fieldname.
wa_dynpread-fieldvalue = p_fieldvalue.
wa_dynpread-stepl = p_stepl.
APPEND wa_dynpread TO p_itab_dynpread.
ENDFORM.
FORM transfere_campos
USING
p_itab_zycbt017_chave TYPE t_itab_zycbt017_chave
CHANGING
p_itab_dynpread TYPE t_itab_dynpread.
TYPES:
BEGIN OF t_zycbt017,
nrinvoic TYPE /pws/zycbt017-nrinvoic,
nrparcf TYPE /pws/zycbt017-nrparcf,
gsberf TYPE /pws/zycbt017-gsberf,
kunag TYPE /pws/zycbt017-kunag,
dtvencto TYPE /pws/zycbt017-dtvencto,
waers TYPE /pws/zycbt017-waers,
codmod TYPE /pws/zycbt017-codmod,
prazo TYPE /pws/zycbt017-prazo,
werks TYPE /pws/zycbt017-werks,
END OF t_zycbt017,
t_itab_zycbt017 TYPE SORTED TABLE OF t_zycbt017
WITH UNIQUE KEY nrinvoic nrparcf gsberf.
DATA:
itab_zycbt017 TYPE t_itab_zycbt017,
v_data_aux(10) TYPE c,
V_INDEX TYPE I VALUE 0.
FIELD-SYMBOLS:
<fs_zycbt017> TYPE t_zycbt017.
CHECK NOT p_itab_zycbt017_chave IS INITIAL.
SELECT
nrinvoic nrparcf gsberf kunag dtvencto waers
codmod prazo werks
FROM /pws/zycbt017
INTO TABLE itab_zycbt017
FOR ALL ENTRIES IN p_itab_zycbt017_chave
WHERE
nrinvoic EQ p_itab_zycbt017_chave-nrinvoic AND
nrparcf EQ p_itab_zycbt017_chave-nrparcf AND
gsberf EQ p_itab_zycbt017_chave-gsberf.
LOOP AT itab_zycbt017
ASSIGNING <fs_zycbt017>.
CLEAR itab_zycbt005.
READ TABLE itab_zycbt005
WITH KEY
nrinvoic = <fs_zycbt017>-nrinvoic
nrparcf = <fs_zycbt017>-nrparcf
gsberf = <fs_zycbt017>-gsberf
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
MESSAGE i061 WITH text-059 <fs_zycbt017>-nrinvoic.
CONTINUE.
ENDIF.
V_INDEX = V_INDEX + 1.
IF V_INDEX GT 1.
v_line = v_line + 1.
ENDIF.
WRITE <fs_zycbt017>-dtvencto TO v_data_aux.
PERFORM adiciona_linha_tc:
USING
'/PWS/ZYCBE005-NRINVOIC' <fs_zycbt017>-nrinvoic v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-NRPARCF' <fs_zycbt017>-nrparcf v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-GSBERF' <fs_zycbt017>-gsberf v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-KUNNR' <fs_zycbt017>-kunag v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-DTVENCTO' v_data_aux v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-WAERS' <fs_zycbt017>-waers v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE005-PRAZO' <fs_zycbt017>-prazo v_line
CHANGING
p_itab_dynpread,
USING
'/PWS/ZYCBE209-WERKS' <fs_zycbt017>-werks v_line
CHANGING
p_itab_dynpread.
itab_zycbt005-nrinvoic = <fs_zycbt017>-nrinvoic.
itab_zycbt005-nrparcf = <fs_zycbt017>-nrparcf.
itab_zycbt005-gsberf = <fs_zycbt017>-gsberf.
itab_zycbt005-kunnr = <fs_zycbt017>-kunag.
itab_zycbt005-dtvencto = <fs_zycbt017>-dtvencto.
itab_zycbt005-waers = <fs_zycbt017>-waers.
itab_zycbt005-werks = <fs_zycbt017>-werks.
APPEND itab_zycbt005.
ENDLOOP.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009I01
...
interface LIKE ddshiface OCCURS 0,
fielddescr LIKE dfies OCCURS 0,
fieldprop LIKE ddshfprop OCCURS 0,
selopt LIKE ddshselopt OCCURS 0,
END OF shlp_descr_t.
* >> Início da inclusão: MODULE GET_INVOICE
DATA:
itab_zycbt017_chave TYPE t_itab_zycbt017_chave,
wa_zycbt017_chave TYPE t_zycbt017_chave,
v_pos1 TYPE i,
v_pos2 TYPE i,
v_pos3 TYPE i.
* << Fim da inclusão
DATA: BEGIN OF itab_result OCCURS 0.
INCLUDE STRUCTURE ddshretval.
DATA: END OF itab_result.
DATA: BEGIN OF record_tab OCCURS 0.
INCLUDE STRUCTURE seahlpres.
...
...
DATA: v_line2 LIKE sy-lilli,
l_display(1) TYPE c,
v_searchhelp TYPE shlpname,
shlp_struc LIKE /pws/zycbv204,
shlp_curr TYPE shlp_descr_t,
* >> Início da exclusão: MODULE GET_INVOICE
tdynpread LIKE dynpread OCCURS 0 WITH HEADER LINE,
wa_zycbt017a LIKE /pws/zycbt017,
ask_activex(10) TYPE c.
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
tdynpread LIKE dynpread OCCURS 0 WITH HEADER LINE.
* << Fim da inclusão
CLEAR tdynpread.
REFRESH tdynpread.
CALL FUNCTION 'DYNP_GET_STEPL'
IMPORTING
povstepl = v_line.
...
...
EXIT.
ENDIF.
ENDDO.
CLEAR tdynpread.
REFRESH tdynpread.
* >> Início da exclusão: MODULE GET_INVOICE
LOOP AT record_tab.
IF sy-tabix > 1.
v_line = v_line + 1.
ENDIF.
CLEAR itab_zycbt005.
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
READ TABLE record_tab INDEX 1.
IF sy-subrc EQ 0.
REFRESH itab_zycbt017_chave.
* << Fim da inclusão
* >> Início da exclusão: MODULE GET_INVOICE
READ TABLE itab_zycbt005 WITH KEY nrinvoic = record_tab-string+3(15)
nrparcf = record_tab-string+31(2)
gsberf = record_tab-string+27(4).
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
SELECT SINGLE *
FROM /pws/zycbt017
WHERE
nrinvoic EQ record_tab-string+03(15) AND
nrparcf EQ record_tab-string+31(02) AND
gsberf EQ record_tab-string+27(04).
* << Fim da inclusão
IF sy-subrc EQ 0.
* >> Início da exclusão: MODULE GET_INVOICE
MESSAGE i061 WITH text-059 itab_zycbt005-nrinvoic.
v_line = v_line - 1.
CONTINUE.
ENDIF.
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
v_pos1 = 3.
v_pos2 = 31.
v_pos3 = 27.
* << Fim da inclusão
* >> Início da exclusão: MODULE GET_INVOICE
SELECT SINGLE * FROM /pws/zycbt017 INTO wa_zycbt017a
WHERE nrinvoic = record_tab-string+3(15)
AND nrparcf = record_tab-string+31(2)
AND gsberf = record_tab-string+27(4).
IF sy-subrc NE 0.
SHIFT record_tab-string RIGHT BY 3 PLACES.
ENDIF.
GET PARAMETER ID 'F4GMETHOD' FIELD ask_activex.
tdynpread-fieldname = '/PWS/ZYCBE005-NRINVOIC'.
tdynpread-fieldvalue = record_tab-string+3(15).
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-nrinvoic = record_tab-string+3(15).
tdynpread-fieldname = '/PWS/ZYCBE005-GSBERF'.
tdynpread-fieldvalue = record_tab-string+27(4).
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-gsberf = record_tab-string+27(4).
tdynpread-fieldname = '/PWS/ZYCBE209-WERKS'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+230(4).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+160(4).
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-werks = record_tab-string+230(4).
tdynpread-fieldname = '/PWS/ZYCBE005-KUNNR'.
IF ask_activex = 'ActiveX'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263'.
tdynpread-fieldvalue = record_tab-string+158(10).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+88(10).
ENDIF.
* << Fim da exclusão
ELSE.
* >> Início da exclusão: MODULE GET_INVOICE
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263'.
tdynpread-fieldvalue = record_tab-string+138(10).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+68(10).
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
v_pos1 = 0.
v_pos2 = 28.
v_pos3 = 24.
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: MODULE GET_INVOICE
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-kunnr = record_tab-string+158(10).
tdynpread-fieldname = '/PWS/ZYCBE005-NRPARCF'.
tdynpread-fieldvalue = record_tab-string+31(2).
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-nrparcf = record_tab-string+31(2).
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
LOOP AT record_tab.
wa_zycbt017_chave-nrinvoic = record_tab+v_pos1(15).
wa_zycbt017_chave-nrparcf = record_tab+v_pos2(02).
wa_zycbt017_chave-gsberf = record_tab+v_pos3(04).
* << Fim da inclusão
* >> Início da exclusão: MODULE GET_INVOICE
tdynpread-fieldname = '/PWS/ZYCBE005-CODMOD'.
IF ask_activex = 'ActiveX'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+149(5).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+79(5).
ENDIF.
ELSE.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+129(5).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+59(5).
ENDIF.
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
INSERT wa_zycbt017_chave INTO TABLE itab_zycbt017_chave.
ENDLOOP.
* << Fim da inclusão
* >> Início da exclusão: MODULE GET_INVOICE
tdynpread-fieldname = '/PWS/ZYCBE005-DTVENCTO'.
IF ask_activex = 'ActiveX'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+53(10).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+33(10).
ENDIF.
ELSE.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+53(10).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+33(10).
ENDIF.
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-dtvencto = record_tab-string+53(10).
tdynpread-fieldname = '/PWS/ZYCBE005-PRAZO'.
IF ask_activex = 'ActiveX'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+154(4).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+84(4).
ENDIF.
ELSE.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263' .
tdynpread-fieldvalue = record_tab-string+134(4).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+64(4).
ENDIF.
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
tdynpread-fieldname = '/PWS/ZYCBE005-WAERS'.
IF shlp_curr-shlpname = '/PWS/ZYCBA008' OR
shlp_curr-shlpname = '/PWS/ZYCBA263'.
tdynpread-fieldvalue = record_tab-string+223(5).
ELSEIF shlp_curr-shlpname = '/PWS/ZYCBA069' OR
shlp_curr-shlpname = '/PWS/ZYCBA266'.
tdynpread-fieldvalue = record_tab-string+153(5).
ENDIF.
tdynpread-stepl = v_line.
APPEND tdynpread.
itab_zycbt005-waers = record_tab-string+223(5).
READ TABLE itab_zycbt005 WITH KEY nrinvoic = itab_zycbt005-nrinvoic
nrparcf = itab_zycbt005-nrparcf
gsberf = itab_zycbt005-gsberf.
IF sy-subrc NE 0.
APPEND itab_zycbt005.
* << Fim da exclusão
* >> Início da inclusão: MODULE GET_INVOICE
PERFORM transfere_campos
USING
itab_zycbt017_chave
CHANGING
tdynpread[].
* << Fim da inclusão
ENDIF.
* >> Início da exclusão: MODULE GET_INVOICE
ENDLOOP.
* << Fim da exclusão
CALL FUNCTION 'DYNP_VALUES_UPDATE'
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCB009TOP
...
c_transacao_e(14) VALUE '/PWS/ZYCB009_E'.
DATA: wa_idx TYPE indx.
DATA: BEGIN OF itab_zycbt005_parid OCCURS 0.
INCLUDE STRUCTURE /pws/zycbt005.
DATA: END OF itab_zycbt005_parid.
* >> Início da inclusão:
TYPES:
begin of t_zycbt017_chave,
nrinvoic TYPE /pws/zycbt017-nrinvoic,
nrparcf TYPE /pws/zycbt017-nrparcf,
gsberf TYPE /pws/zycbt017-gsberf,
END OF t_zycbt017_chave,
t_itab_zycbt017_chave TYPE SORTED TABLE OF t_zycbt017_chave
WITH UNIQUE KEY nrinvoic nrparcf gsberf,
t_itab_dynpread TYPE TABLE OF dynpread.
* << Fim da inclusão
TYPES: BEGIN OF t_desvincula ,
nrinvoic TYPE /pws/zycbe005-nrinvoic,
nrparcf TYPE /pws/zycbe005-nrparcf ,
gsberf TYPE /pws/zycbe005-gsberf ,
vldesvin TYPE /pws/zycbe005-vlvinc ,
...