Módulo: DOC. IMPORTAÇÃO
Funcionalidade: DI
Data/Hora da Publicação: 20/05/2008 00:00:00
Data/Hora Última Alteração: 22/02/2011 13:53:32
Descrição da Nota: DESENVOLVIMENTO DE FUNÇÃO PARA TRATAR TEXTOS DESCRITIVOS DI/LI
Sintoma
Desenvolvimento de função para tratamento dos textos descritivos da DI e LI.
Solução
Desenvolvimento de função para tratamento dos textos descritivos da DI e LI.
7.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 06593 Data: 20/05/2008 Hora: 09:56:47
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 06593
Categoria : Melhoria
Prioridade : Baixa
Versão PW.CE : 7.0
Pacote : 00005
Agrupamento : 00048
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
01234 - 00001 - 6.0 - 00023 - A BUSCA DOS TEXTOS DA DI ESTÁ INCORRETA.
03785 - 00002 - 7.0 - 00001 - AJUSTE PARA EXIBIR APENAS O TEXTO DO CAMPO ESPEFICICACAO PARAMETR
05104 - 00003 - 7.0 - 00003 - NÃO ESTÁ LEVANDO PARA A DI A DESCRIÇÃO DO PEDIDO PARAMETRIZADA ZY
05621 - 00004 - 7.0 - 00004 - A DESCRIÇÃO DO PRIMEIRO ITEN DA ADIÇÃO É COPIADA PARA OS DEMAIS I
06111 - 00005 - 7.0 - 00005 - O EXTRATO DA LI NÃO APARECE O NR DO MATERIAL E DESCRIÇÃO NO DETAL
----------------------------------------------------------------------------------------------------
DESENVOLVIMENTO DE FUNÇÃO PARA TRATAR TEXTOS DESCRITIVOS DI/LI
----------------------------------------------------------------------------------------------------
Palavras Chave:
TEXTO - DECRITIVO - FUNÇÃO - DI - LI
/PWS/SAPMZYCI023 - /PWS/ZYCI_TEXTO_DETALHE_ITEM
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_TEXTO_DETALHE_ITEM
REPS /PWS/LZYCIGF2F01
REPS /PWS/LZYCIGF2UXX
REPS /PWS/MZYCI023F03
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_TEXTO_DETALHE_ITEM
* >> Início da inclusão:
FUNCTION /pws/zyci_texto_detalhe_item .
DATA: itab_zycit229 TYPE /pws/zycit229 OCCURS 0 WITH HEADER LINE,
itab_stxl TYPE stxl OCCURS 0 WITH HEADER LINE,
rtexti TYPE tline OCCURS 0 WITH HEADER LINE,
wa_ekpo TYPE ekpo ,
v_werks TYPE ekpo-werks,
itab_makt TYPE makt OCCURS 0 WITH HEADER LINE.
DATA: v_spras TYPE ekko-spras,
v_name TYPE thead-tdname
.
DATA: v_mat(18) TYPE c.
DATA: BEGIN OF wa_ender.
DATA: stras TYPE t001w-spras,
ort01 TYPE t001w-ort01,
regio TYPE t001w-regio.
DATA: END OF wa_ender.
SELECT SINGLE * FROM ekpo INTO wa_ekpo
WHERE ebeln = ebeln
AND ebelp = ebelp.
IF sy-subrc NE 0.
RAISE item_not_found.
EXIT.
ENDIF.
CLEAR: rtext, rtexti[].
REFRESH: rtext, rtexti[].
SELECT * FROM /pws/zycit229 INTO TABLE itab_zycit229
WHERE codeven EQ codeven.
SORT itab_zycit229 BY codseq.
IF NOT itab_zycit229[] IS INITIAL.
LOOP AT itab_zycit229.
CLEAR: v_name, itab_makt, itab_stxl, v_spras.
FREE: itab_makt, itab_stxl.
IF itab_zycit229-spras NE space.
v_spras = itab_zycit229-spras.
ELSE.
SELECT SINGLE spras FROM ekko INTO v_spras
WHERE ebeln = ebeln.
ENDIF.
IF itab_zycit229-txtdesc = '01'.
SELECT SINGLE * FROM makt INTO itab_makt
WHERE matnr = wa_ekpo-matnr
AND spras = v_spras.
IF sy-subrc = 0.
rtexti-tdformat = '*'.
rtexti-tdline = itab_makt-maktx.
APPEND rtexti.
ELSE.
IF NOT wa_ekpo-txz01 IS INITIAL.
rtexti-tdformat = '*'.
rtexti-tdline = wa_ekpo-txz01.
APPEND rtexti.
ELSE.
rtexti-tdformat = '*'.
rtexti-tdline = wa_ekpo-txz01.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '02'.
CONCATENATE ebeln ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F03' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '03'.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'MATERIAL' AND
tdname = wa_ekpo-matnr AND
tdid = 'GRUN' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
v_name = wa_ekpo-matnr.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '04'.
CONCATENATE ebeln ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F01' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '05'.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'MATERIAL' AND
tdname = wa_ekpo-matnr AND
tdid = 'BEST' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
v_name = wa_ekpo-matnr.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '06'.
CONCATENATE ebeln ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F04' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '07'.
CONCATENATE ebeln ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F05' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '09'.
SELECT SINGLE werks FROM ekpo INTO v_werks WHERE
ebeln = ebeln AND
ebelp = ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE name1 FROM t001w INTO v_name WHERE
werks = v_werks.
IF sy-subrc EQ 0.
rtexti-tdformat = '*'.
CONCATENATE text-071 v_name
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '10'.
SELECT SINGLE werks FROM ekpo INTO v_werks WHERE
ebeln = ebeln AND
ebelp = ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE stras ort01 regio FROM t001w INTO wa_ender
WHERE werks = v_werks.
IF sy-subrc EQ 0.
rtexti-tdformat = '*'.
CONCATENATE text-114 wa_ender-stras wa_ender-ort01
wa_ender-regio
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '11'.
rtexti-tdformat = '*'.
CONCATENATE text-052 ebeln
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ELSEIF itab_zycit229-txtdesc = '12'.
rtexti-tdformat = '*'.
CONCATENATE text-115 ebelp
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ELSEIF itab_zycit229-txtdesc = '13'.
CONCATENATE ebeln ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F02' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif TABLES itab_stxl
rtexti
CHANGING v_name.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '14'.
SELECT SINGLE * FROM makt INTO itab_makt
WHERE matnr = wa_ekpo-matnr
AND spras = v_spras.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = itab_makt-matnr
IMPORTING
output = v_mat.
rtexti-tdformat = '*'.
CONCATENATE 'P/N:' v_mat
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
ENDLOOP.
ELSE.
rtexti-tdformat = '*'.
rtexti-tdline = wa_ekpo-txz01.
APPEND rtexti.
ENDIF.
rtext[] = rtexti[].
ENDFUNCTION.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCIGF2F01
...
itab_zyglt100 = zyglt100
EXCEPTIONS
i_codmod_nao_encontrado = 1
i_func_nao_encontrado = 2
i_zexit_nao_encontrado = 3
OTHERS = 4.
IF sy-subrc <> 0.
REFRESH zyglt100.
ENDIF.
ENDFORM.
* >> Início da inclusão:
FORM read_text_especif TABLES itab_stxl STRUCTURE stxl
rtexti STRUCTURE tline
CHANGING p_text.
DATA: rtextesp LIKE tline OCCURS 0 WITH HEADER LINE.
CLEAR: rtextesp.
REFRESH: rtextesp.
READ TABLE itab_stxl INDEX 1.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = itab_stxl-tdid
language = itab_stxl-tdspras
name = p_text
object = itab_stxl-tdobject
TABLES
lines = rtextesp
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc NE 0.
READ TABLE itab_stxl INDEX 1.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = itab_stxl-tdid
language = itab_stxl-tdspras
name = p_text
object = itab_stxl-tdobject
archive_handle = 0
local_cat = ' '
TABLES
lines = rtextesp
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
ENDIF.
LOOP AT rtextesp.
rtexti-tdformat = '*'.
rtexti-tdline = rtextesp-tdline.
APPEND rtexti.
ENDLOOP.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYCIGF2UXX
...
INCLUDE /PWS/LZYCIGF2U10.
INCLUDE /PWS/LZYCIGF2U17.
INCLUDE /PWS/LZYCIGF2U18.
INCLUDE /PWS/LZYCIGF2U19.
INCLUDE /PWS/LZYCIGF2U20.
INCLUDE /PWS/LZYCIGF2U25.
INCLUDE /PWS/LZYCIGF2U41.
INCLUDE /PWS/LZYCIGF2U42.
INCLUDE /PWS/LZYCIGF2U43.
INCLUDE /PWS/LZYCIGF2U44.
* >> Início da inclusão:
INCLUDE /PWS/LZYCIGF2U45.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI023F03
...
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc = 0.
READ TABLE rtexti INDEX 1.
ENDIF.
DATA: v_spras LIKE ekko-spras.
IF rtexti IS INITIAL.
SORT itab_zycit229 BY codseq.
READ TABLE itab_ekpo WITH KEY ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
* >> Início da exclusão: FORM FILL_DESC
IF NOT itab_zycit229[] IS INITIAL.
LOOP AT itab_zycit229.
CLEAR: v_name, v_texto, itab_makt, itab_stxl, v_spras.
FREE: itab_makt, itab_stxl.
IF itab_zycit229-spras NE space.
v_spras = itab_zycit229-spras.
ELSE.
SELECT SINGLE spras FROM ekko INTO v_spras
WHERE ebeln = itab_it-ebeln.
ENDIF.
IF itab_zycit229-txtdesc = '01'.
SELECT SINGLE * FROM makt INTO itab_makt
WHERE matnr = itab_ekpo-matnr
AND spras = v_spras.
IF sy-subrc = 0.
rtexti-tdformat = '*'.
rtexti-tdline = itab_makt-maktx.
APPEND rtexti.
ELSE.
IF NOT itab_ekpo-txz01 IS INITIAL.
rtexti-tdformat = '*'.
rtexti-tdline = itab_ekpo-txz01.
APPEND rtexti.
ELSE.
READ TABLE itab_ekpo INDEX 1.
rtexti-tdformat = '*'.
rtexti-tdline = itab_ekpo-txz01.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '02'.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'MATERIAL' AND
tdname = itab_ekpo-matnr AND
tdid = 'BEST' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
v_name = itab_ekpo-matnr.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '03'.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'MATERIAL' AND
tdname = itab_ekpo-matnr AND
tdid = 'GRUN' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
v_name = itab_ekpo-matnr.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '13'.
CONCATENATE itab_it-ebeln itab_it-ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F02' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '04'.
CONCATENATE itab_it-ebeln itab_it-ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F01' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif CHANGING v_texto.
ELSE.
MOVE itab_zycit003-descr TO itab_it-especificacao.
MODIFY itab_it TRANSPORTING especificacao
WHERE ebeln EQ itab_zycit003-ebeln
AND ebelp EQ itab_zycit003-ebelp.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '05'.
CONCATENATE itab_it-ebeln itab_it-ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F03' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '06'.
CONCATENATE itab_it-ebeln itab_it-ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F04' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '07'.
CONCATENATE itab_it-ebeln itab_it-ebelp INTO v_name.
SELECT SINGLE * FROM stxl INTO itab_stxl
WHERE relid = 'TX' AND
tdobject = 'EKPO' AND
tdname = v_name AND
tdid = 'F05' AND
tdspras = v_spras AND
srtf2 = 0.
IF sy-subrc = 0.
PERFORM read_text_especif CHANGING v_texto.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '09'.
SELECT SINGLE werks FROM ekpo INTO v_werks WHERE
ebeln = itab_it-ebeln AND
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE name1 FROM t001w INTO v_name WHERE
werks = v_werks.
IF sy-subrc EQ 0.
rtexti-tdformat = '*'.
CONCATENATE text-071 v_name
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '10'.
SELECT SINGLE werks FROM ekpo INTO v_werks WHERE
ebeln = itab_it-ebeln AND
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0.
SELECT SINGLE stras ort01 regio FROM t001w INTO wa_ender
WHERE werks = v_werks.
IF sy-subrc EQ 0.
rtexti-tdformat = '*'.
CONCATENATE text-114 wa_ender-stras wa_ender-ort01
wa_ender-regio
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
ELSEIF itab_zycit229-txtdesc = '11'.
rtexti-tdformat = '*'.
CONCATENATE text-052 itab_it-ebeln
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ELSEIF itab_zycit229-txtdesc = '12'.
rtexti-tdformat = '*'.
CONCATENATE text-115 itab_it-ebelp
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ELSEIF itab_zycit229-txtdesc = '14'.
SELECT SINGLE * FROM makt INTO itab_makt
WHERE matnr = itab_ekpo-matnr
AND spras = v_spras.
IF sy-subrc = 0.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DESC
CALL FUNCTION '/PWS/ZYCI_TEXTO_DETALHE_ITEM'
* << Fim da inclusão
EXPORTING
* >> Início da exclusão: FORM FILL_DESC
input = itab_makt-matnr
IMPORTING
output = v_mat.
rtexti-tdformat = '*'.
CONCATENATE 'P/N:' v_mat
INTO rtexti-tdline SEPARATED BY space.
APPEND rtexti.
ENDIF.
ENDIF.
IF rtexti IS INITIAL.
PERFORM read_text_blitem CHANGING /pws/zycie100a-especificacao.
ENDIF.
ENDLOOP.
ELSE.
READ TABLE itab_ekpo WITH KEY ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
rtexti-tdformat = '*'.
rtexti-tdline = itab_ekpo-txz01.
APPEND rtexti.
* << Fim da exclusão
* >> Início da inclusão: FORM FILL_DESC
ebeln = itab_it-ebeln
ebelp = itab_it-ebelp
codeven = 'DI'
TABLES
rtext = rtexti
.
IF sy-subrc <> 0.
* << Fim da inclusão
ENDIF.
READ TABLE itab_zycit003 WITH KEY ebeln = itab_it-ebeln
ebelp = itab_it-ebelp.
IF sy-subrc EQ 0 AND
NOT itab_zycit003-nrseqli IS INITIAL.
SELECT SINGLE * FROM /pws/zycit078 INTO wa_zycit078 WHERE
nrseqli = itab_zycit003-nrseqli.
IF sy-subrc EQ 0 AND NOT wa_zycit078-nrseqd IS INITIAL.
PERFORM verifica_generico.
ENDIF.
...