Módulo: DOC. IMPORTAÇÃO
Funcionalidade: LI
Data/Hora da Publicação: 24/07/2013 11:28:17
Data/Hora Última Alteração: 24/07/2013 11:28:17
Descrição da Nota: PERMITIR VINCULÇÃO DE ITENS DA LI AO ATO CONCESSÓRIO
Sintoma
Ajustada programa de LI para que em casos em possuam itens que foram vinculados ao ato concessório
pelo programa de Vinculação e itens que ainda não foram vinculados a um ato consessório seja
possivel realizar a vinculação através do programa de LI.
Solução
Ajustada programa de LI para que em casos em possuam itens que foram vinculados ao ato concessório
pelo programa de Vinculação e itens que ainda não foram vinculados a um ato consessório seja
possivel realizar a vinculação através do programa de LI.
9.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 12946 Data: 02/05/2013 Hora: 10:51:54
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 12946
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 9.0
Pacote : 00004
Agrupamento : 00153
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
09656 - 00001 - 8.0 - 00002 - TRATAMENTO DE DRAWBACK PARA LI SUBSTITUTIVA.
10602 - 00002 - 8.0 - 00004 - NÃO ESTÁ PREENCHENDO QUANTIDADE DO PRODUTO NAS INFOR. DE DRAWBACK
12321 - 00003 - 9.0 - 00001 - ERROS DE VERIFICAÇÃO DE SINTAXE NA PLI
----------------------------------------------------------------------------------------------------
PERMITIR VINCULÇÃO DE ITENS DA LI AO ATO CONCESSÓRIO
----------------------------------------------------------------------------------------------------
Palavras Chave:
VINCULAR - ITEM - ATO - CONCESSÓRIO - PROGRAMA - VINCULAÇÃO
/PWS/SAPMZYCI020 - LI
----------------------------------------------------------------------------------------------------
Objetos da nota:
REPS /PWS/MZYCI020F02
REPS /PWS/MZYCI020F01
REPT /PWS/SAPMZYCI020
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI020F02
...
FORM vincula_ato.
* >> Início da inclusão: FORM VINCULA_ATO
DATA: BEGIN OF it_zycit079t OCCURS 0 .
INCLUDE STRUCTURE /pws/zycit079.
DATA: uebto LIKE ekpo-uebto,
uebtk LIKE ekpo-uebtk,
noinitial,
nrforn1 TYPE /pws/zycit080-nrforn ,
nrforn2 TYPE /pws/zycit080-nrforn ,
mark.
DATA: END OF it_zycit079t.
DATA: v_vinc(1) TYPE c.
* << Fim da inclusão
DATA: v_qtd_temp TYPE /pws/zycit079-qtd_iten,
v_qtd_tempt TYPE /pws/zycit079-qtd_iten.
DATA: v_nrseqd_v LIKE /pws/zycit244-nrseqd.
REFRESH itab_zycit376.
DELETE it_zycit079 WHERE qtd_iten <= 0.
IF NOT it_zycit079[] IS INITIAL.
SELECT * FROM /pws/zycit376 INTO TABLE itab_zycit376
FOR ALL ENTRIES IN it_zycit079
WHERE ebeln EQ it_zycit079-ebeln
AND ebelp EQ it_zycit079-ebelp. "#EC CI_NOFIRST
* >> Início da inclusão: FORM VINCULA_ATO
it_zycit079t[] = it_zycit079[].
* << Fim da inclusão
READ TABLE itab_zycit376 INDEX 1.
IF sy-subrc EQ 0.
CLEAR v_nvinc.
v_nrseqd_v = itab_zycit376-nrseqd.
LOOP AT it_zycit079.
READ TABLE itab_zycit376 WITH KEY ebeln = it_zycit079-ebeln
* >> Início da exclusão: FORM VINCULA_ATO
ebelp = it_zycit079-ebelp
nrseqd = v_nrseqd_v.
IF sy-subrc NE 0.
* << Fim da exclusão
* >> Início da inclusão: FORM VINCULA_ATO
ebelp = it_zycit079-ebelp.
IF sy-subrc EQ 0 AND
v_nrseqd_v NE itab_zycit376-nrseqd.
* << Fim da inclusão
v_nvinc = 'X'.
MESSAGE i015 WITH text-440.
EXIT.
* >> Início da inclusão: FORM VINCULA_ATO
ELSEIF sy-subrc NE 0 .
v_vinc = 'X'.
* << Fim da inclusão
ENDIF.
READ TABLE it_ekpo WITH KEY ebeln = itab_zycit376-ebeln
ebelp = itab_zycit376-ebelp.
IF it_ekpo-menge NE itab_zycit376-qtd_iten.
CLEAR v_campo.
CONCATENATE itab_zycit376-ebeln '/' itab_zycit376-ebelp
INTO v_campo.
v_nvinc = 'X'.
MESSAGE i015 WITH text-498 v_campo text-499 text-500.
EXIT.
ENDIF.
ENDLOOP.
IF v_nvinc NE 'X' AND v_ncmdf NE 'X'.
* >> Início da inclusão: FORM VINCULA_ATO
it_zycit079t[] = it_zycit079[].
* << Fim da inclusão
SELECT SINGLE * FROM /pws/zycit244
WHERE nrseqd EQ itab_zycit376-nrseqd.
/pws/zycie078-nrseqd = itab_zycit376-nrseqd.
/pws/zycie078-reg_drawback = itab_zycit376-nratoc.
/pws/zycie078-modalidade = /pws/zycit244-modalidade.
/pws/zycie078-tipodb = /pws/zycit244-tipo.
/pws/zycie078-codagsecex = /pws/zycit244-codagencia.
/pws/zycie078-digito = /pws/zycit244-digito.
/pws/zycie078-codfunleg = '16'.
IF /pws/zycie078-codagsecex IS INITIAL.
SELECT SINGLE codagencia digito FROM /pws/zycit172
INTO (/pws/zycie078-codagsecex, /pws/zycie078-digito)
* >> Início da exclusão: FORM VINCULA_ATO
WHERE descricao = /pws/zycit244-praca. "#EC CI_NOFIELD
* << Fim da exclusão
* >> Início da inclusão: FORM VINCULA_ATO
WHERE descricao = /pws/zycit244-praca. "#EC CI_NOFIELD
* << Fim da inclusão
ENDIF.
IF /pws/zycie078-modalidade EQ 'I'.
/pws/zycie078-codregtri = '3'.
ELSEIF /pws/zycie078-modalidade EQ 'S'.
/pws/zycie078-codregtri = '5'.
ENDIF.
MESSAGE s015 WITH text-441.
LOOP AT it_zycit079.
* >> Início da inclusão: FORM VINCULA_ATO
CLEAR itab_zycit376.
* << Fim da inclusão
READ TABLE itab_zycit376 WITH KEY ebeln = it_zycit079-ebeln
ebelp = it_zycit079-ebelp
nrseqd = v_nrseqd_v.
MOVE:
itab_zycit376-nritem+2 TO it_zycit079-item_drawback,
itab_zycit376-nritem TO it_zycit079-nritem_db.
it_zycit079-qtd_drawback = it_zycit079-qtd_iten.
IF /pws/zycie078-zum EQ '10' AND NOT v_peso IS INITIAL.
it_zycit079-qtd_drawback =
( it_zycit079-ntgew * /pws/zycie078-qtdest ) / v_peso.
...
...
( it_zycit079-qtd_drawback / v_qtd_tempt ).
ADD it_zycit079-qtd_drawback TO v_qtd_temp.
MODIFY it_zycit079.
ENDLOOP.
it_zycit079-qtd_drawback = it_zycit079-qtd_drawback +
( /pws/zycie078-qtdest - v_qtd_temp ).
MODIFY it_zycit079 TRANSPORTING qtd_drawback
WHERE ebeln EQ it_zycit079-ebeln
AND ebelp EQ it_zycit079-ebelp.
ENDIF.
* >> Início da inclusão: FORM VINCULA_ATO
PERFORM vinc_p CHANGING v_vinc .
IF v_vinc EQ 'E'.
it_zycit079[] = it_zycit079t[].
CLEAR: v_descr11.
MESSAGE i015 WITH text-390 /pws/zycie078-nrseqd
text-522.
MOVE: /pws/zycie078-nrseqd TO v_nrseqd ,
space TO /pws/zycie078-nrseqd ,
space TO /pws/zycie078-reg_drawback,
space TO /pws/zycie078-modalidade ,
space TO /pws/zycie078-tipodb ,
space TO /pws/zycie078-digito .
* << Fim da inclusão
ENDIF.
* >> Início da inclusão: FORM VINCULA_ATO
ENDIF.
* << Fim da inclusão
ELSE.
PERFORM vincular_atoc.
ENDIF.
ELSE.
MESSAGE s015 WITH text-109.
ENDIF.
...
...
* >> Início da inclusão:
FORM vinc_p CHANGING p_vinc.
DATA: v_grupo TYPE /pws/zycit433-grupo,
itab_zycit079a TYPE /pws/zycit079 OCCURS 0 WITH HEADER LINE,
v_vl_temp TYPE /pws/zycit245-netpr_t,
v_vl_temp2 TYPE /pws/zycit245-netpr_t,
v_saldov TYPE /pws/zycit245-netpr_t,
v_saldo TYPE /pws/zycit245-qtd_tot.
SELECT SINGLE * FROM /pws/zycit321.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie078-bukrs.
IF sy-subrc NE 0.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ space.
ENDIF.
SELECT SINGLE * FROM /pws/zycit244 INTO it_zycit244
WHERE status EQ 'D'
AND nrseqd EQ /pws/zycie078-nrseqd.
SELECT * FROM /pws/zycit245 INTO TABLE it_zycit245
WHERE nrseqd EQ /pws/zycie078-nrseqd
AND nritem < 90000. "#EC PORTABLE
IF /pws/zycit321-c_comum NE 'X'.
SELECT * FROM /pws/zycit433
INTO TABLE itab_zycit433 "#EC CI_NOFIELD
WHERE dtde <= sy-datlo
AND dtate >= sy-datlo.
ENDIF.
SELECT * FROM ekpo INTO TABLE it_ekpo
FOR ALL ENTRIES IN it_zycit079
WHERE ebeln EQ it_zycit079-ebeln
AND ebelp EQ it_zycit079-ebelp.
SELECT * FROM /pws/zycit079 INTO TABLE itab_zycit079a
WHERE nrseqli EQ /pws/zycie078-nrseqli.
LOOP AT itab_zycit079a WHERE nritem_db NE space.
READ TABLE itab_zycit376 WITH KEY
ebeln = itab_zycit079a-ebeln
ebelp = itab_zycit079a-ebelp.
CHECK sy-subrc NE 0.
READ TABLE it_ekpo WITH KEY ebeln = itab_zycit079a-ebeln
ebelp = itab_zycit079a-ebelp.
v_vl_temp = itab_zycit079a-qtd_iten * itab_zycit079a-netpr.
PERFORM converter_moeda USING v_vl_temp
itab_zycit079a-waers
/pws/zycbt007-waersa
it_ekpo-aedat
CHANGING v_vl_temp2 .
READ TABLE it_zycit245 WITH KEY nritem = itab_zycit079a-nritem_db.
CHECK sy-subrc EQ 0.
IF it_zycit244-tipo NA 'GD'.
SUBTRACT itab_zycit079a-qtd_drawback FROM it_zycit245-vinculado.
ENDIF.
SUBTRACT v_vl_temp2 FROM it_zycit245-vlvinc.
MODIFY it_zycit245 TRANSPORTING vlvinc vinculado
WHERE nritem EQ itab_zycit079a-nritem_db.
ENDLOOP.
LOOP AT it_zycit079 WHERE item_drawback EQ space.
READ TABLE it_ekpo WITH KEY ebeln = it_zycit079-ebeln
ebelp = it_zycit079-ebelp.
v_vl_temp = it_zycit079-qtd_iten * it_zycit079-netpr.
PERFORM converter_moeda USING v_vl_temp
it_zycit079-waers
/pws/zycbt007-waersa
it_ekpo-aedat
CHANGING v_vl_temp2 .
CLEAR it_zycit245.
IF /pws/zycit321-c_comum NE 'X' AND
it_zycit244-tipo NA 'GD'.
READ TABLE itab_zycit433 WITH KEY matnr = it_zycit079-matnr.
IF sy-subrc EQ 0.
v_grupo = itab_zycit433-grupo.
LOOP AT itab_zycit433 WHERE grupo EQ v_grupo.
READ TABLE it_zycit245 WITH KEY
codcomp = itab_zycit433-matnr
j_1bnbm = /pws/zycie078-steuc1.
IF sy-subrc EQ 0.
v_saldo = it_zycit245-qtd_ncm - it_zycit245-vinculado.
v_saldov = it_zycit245-netpr_t - it_zycit245-vlvinc.
IF v_saldo <= 0 OR v_saldov <= 0.
CONTINUE.
ENDIF.
IF v_saldov >= v_vl_temp2 AND
v_saldo >= it_zycit079-qtd_drawback.
ADD: it_zycit079-qtd_drawback TO it_zycit245-vinculado,
v_vl_temp2 TO it_zycit245-vlvinc.
MODIFY it_zycit245 TRANSPORTING vinculado vlvinc
WHERE nritem EQ it_zycit245-nritem.
MOVE:
it_zycit245-nritem+2 TO it_zycit079-item_drawback,
it_zycit245-nritem TO it_zycit079-nritem_db.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
READ TABLE it_zycit245 WITH KEY codcomp = it_zycit079-matnr
j_1bnbm = /pws/zycie078-steuc1.
IF sy-subrc EQ 0.
v_saldo = it_zycit245-qtd_ncm - it_zycit245-vinculado.
v_saldov = it_zycit245-netpr_t - it_zycit245-vlvinc.
IF v_saldo <= 0 OR v_saldov <= 0.
CONTINUE.
ENDIF.
IF v_saldov >= v_vl_temp2 AND
v_saldo >= it_zycit079-qtd_drawback.
ADD: it_zycit079-qtd_drawback TO it_zycit245-vinculado,
v_vl_temp2 TO it_zycit245-vlvinc.
MODIFY it_zycit245 TRANSPORTING vinculado vlvinc
WHERE nritem EQ it_zycit245-nritem.
MOVE:
it_zycit245-nritem+2 TO it_zycit079-item_drawback,
it_zycit245-nritem TO it_zycit079-nritem_db.
ENDIF.
ENDIF.
ENDIF.
ELSEIF it_zycit244-tipo NA 'GD'.
READ TABLE it_zycit245 WITH KEY j_1bnbm = /pws/zycie078-steuc1.
IF sy-subrc EQ 0.
v_saldo = it_zycit245-qtd_ncm - it_zycit245-vinculado.
v_saldov = it_zycit245-netpr_t - it_zycit245-vlvinc.
IF v_saldo <= 0 OR v_saldov <= 0.
CONTINUE.
ENDIF.
IF v_saldov >= v_vl_temp2 AND
v_saldo >= it_zycit079-qtd_drawback.
ADD: it_zycit079-qtd_drawback TO it_zycit245-vinculado,
v_vl_temp2 TO it_zycit245-vlvinc.
MODIFY it_zycit245 TRANSPORTING vinculado vlvinc
WHERE nritem EQ it_zycit245-nritem.
MOVE:
it_zycit245-nritem+2 TO it_zycit079-item_drawback,
it_zycit245-nritem TO it_zycit079-nritem_db.
ENDIF.
ENDIF.
ELSE.
READ TABLE it_zycit245 INDEX 1.
IF sy-subrc EQ 0.
v_saldov = it_zycit245-netpr_t - it_zycit245-vlvinc.
IF v_saldov <= 0.
CONTINUE.
ENDIF.
IF v_saldov >= v_vl_temp2.
ADD v_vl_temp2 TO it_zycit245-vlvinc.
MODIFY it_zycit245 TRANSPORTING vlvinc
WHERE nritem EQ it_zycit245-nritem.
MOVE:
it_zycit245-nritem+2 TO it_zycit079-item_drawback,
it_zycit245-nritem TO it_zycit079-nritem_db.
ENDIF.
ENDIF.
ENDIF.
IF it_zycit079-nritem_db IS INITIAL.
p_vinc = 'E'.
EXIT.
ENDIF.
MODIFY it_zycit079.
ENDLOOP.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI020F01
...
SELECT * FROM /pws/zycit376 INTO TABLE itab_zycit376
FOR ALL ENTRIES IN it_zycit079
WHERE ebeln EQ it_zycit079-ebeln
AND ebelp EQ it_zycit079-ebelp. "#EC CI_NOFIRST
* >> Início da exclusão: FORM SAVE_DRAWBACK
IF sy-subrc EQ 0.
EXIT.
ENDIF.
* << Fim da exclusão
REFRESH: it_zycit245.
IF /pws/zycbt007-bukrs NE /pws/zycie078-bukrs.
SELECT SINGLE * FROM /pws/zycbt007
WHERE bukrs EQ /pws/zycie078-bukrs.
ENDIF.
SELECT SINGLE * FROM /pws/zycit078 INTO wa_zycit078
WHERE nrseqli EQ /pws/zycie078-nrseqli
AND tpli EQ /pws/zycie078-tpli.
IF NOT wa_zycit078-nrseqd IS INITIAL.
SELECT * FROM /pws/zycit245 INTO TABLE it_zycit245
WHERE nrseqd EQ wa_zycit078-nrseqd
AND nritem < 90000. "#EC PORTABLE
SELECT * FROM /pws/zycit079 INTO TABLE itab_zycit079a
WHERE nrseqli EQ /pws/zycie078-nrseqli.
CLEAR: v_pesod, v_qtdtotd.
LOOP AT itab_zycit079a.
v_pesod = v_pesod + itab_zycit079a-ntgew.
v_qtdtotd = v_qtdtotd + itab_zycit079a-qtd_iten.
ENDLOOP.
LOOP AT itab_zycit079a.
* >> Início da inclusão: FORM SAVE_DRAWBACK
READ TABLE itab_zycit376 WITH KEY ebeln = itab_zycit079a-ebeln
ebelp = itab_zycit079a-ebelp.
IF sy-subrc EQ 0.
CONTINUE.
ENDIF.
* << Fim da inclusão
READ TABLE it_zycit245 WITH KEY
nritem = itab_zycit079a-nritem_db.
READ TABLE it_ekpo WITH KEY ebeln = itab_zycit079a-ebeln
ebelp = itab_zycit079a-ebelp.
IF sy-subrc NE 0.
SELECT SINGLE * FROM ekpo INTO it_ekpo
WHERE ebeln = itab_zycit079a-ebeln
AND ebelp = itab_zycit079a-ebelp.
APPEND it_ekpo.
ENDIF.
...
...
CALL FUNCTION '/PWS/ZYCI_DEQUEUE_ZYCIT244'
EXPORTING
nrseqd = itab_atos2-nrseqd.
ENDIF.
SELECT * FROM /pws/zycit245 APPENDING TABLE it_zycit245
WHERE nrseqd EQ /pws/zycie078-nrseqd
AND nritem < 90000. "#EC PORTABLE
ENDIF.
IF NOT /pws/zycie078-nrseqd IS INITIAL.
LOOP AT it_zycit079.
* >> Início da inclusão: FORM SAVE_DRAWBACK
READ TABLE itab_zycit376 WITH KEY ebeln = it_zycit079-ebeln
ebelp = it_zycit079-ebelp.
IF sy-subrc EQ 0.
CONTINUE.
ENDIF.
* << Fim da inclusão
READ TABLE it_zycit245 WITH KEY
nritem = it_zycit079-nritem_db
nrseqd = /pws/zycie078-nrseqd.
READ TABLE it_ekpo WITH KEY ebeln = it_zycit079-ebeln
ebelp = it_zycit079-ebelp.
IF sy-subrc NE 0.
SELECT SINGLE * FROM ekpo INTO it_ekpo
WHERE ebeln = it_zycit079-ebeln
AND ebelp = it_zycit079-ebelp.
APPEND it_ekpo.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPT /PWS/SAPMZYCI020
------------------------------------------------------------------------
Incluído símbolo de texto:
Idioma: PT
Símbolo: 522
Texto: (45 caracteres)
"não possui saldo para vincular todos os itens"
Comprimento máximo: 50