Módulo: GERAL
Funcionalidade: Atual. Estr. Lista Técnica
Data/Hora da Publicação: 25/03/2008 00:00:00
Data/Hora Última Alteração: 16/02/2011 11:01:18
Descrição da Nota: EXPLOSÃO DA LISTA TÉCNICA DE MATERIAIS
Sintoma
O programa não faz a explosão do material semi-acabado se o mesmo estiver em outro centro.
Solução
Novo tratamento para a explosão do semi-acabado de outro centro.
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 06232 Data: 25/03/2008 Hora: 11:05:50
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 06232
Categoria : Melhoria
Prioridade : Alta
Versão PW.TP : 2.0
Pacote : 00026
Agrupamento : 00014
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
02660 - 00002 - 2.0 - 00023 - LOG DE EXECUÇÃO
04548 - 00001 - 2.0 - 00026 - REVISÃO CODE INSPECTOR
05595 - 00003 - 2.0 - 00026 - ATUALIZAR ESTRUTURA DE LISTA TÉCNICA
----------------------------------------------------------------------------------------------------
EXPLOSÃO DA LISTA TÉCNICA DE MATERIAIS
----------------------------------------------------------------------------------------------------
Palavras Chave:
EXPLOSAO LISTA TECNICA
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYTP_BOM_EXPL_MAT_V2
REPS /PWS/LZYTPGF3F01
REPS /PWS/LZYTPGF3TOP
REPS /PWS/LZYTPGF3UXX
REPS /PWS/ZYTPC003
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYTP_BOM_EXPL_MAT_V2
CRIAR MÓDULO DE FUNÇÃO: /PWS/ZYTP_BOM_EXPL_MAT_V2
CARACTERÍSTICAS
CLASSIFICAÇÃO:
GRUPO DE FUNÇÕES: /PWS/ZYTPGF3
TEXTO BREVE: BOM explosion for material
TIPO DE EXECUÇÃO:
(X) - MÓDULO DE FUNÇÃO NORMAL
(_) - MÓDULO DE ACESSO REMOTO
(_) - MÓDULO DE ATUALIZAÇÃO
(X) - INÍCIO IMEDIATO
(_) - INÍCIO IMEDIATO-SEM ATUAL.POSTER.
(_) - INÍC. RETARDADO
(_) - PROCES. CLOETIVO
DADOS GERAIS:
(_) - BLOQUEIO PROCESSO
(_) - GLOBAL
IMPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA VL. PROPOSTO OPCIONAL TRANSF. TEXT
CAPID LIKE TC04-CAPID 'STD1' ID da aplicação
DATUV LIKE STKO-DATUV 00000000 X X Data de validade
MEHRS LIKE CSDATA-XFELD SPACE X X Explosão multi-nível
MTNRV LIKE MARA-MATNR SPACE X X Material
WERKS LIKE MARC-WERKS SPACE X X Centro
KZKFK LIKE DMARC-KZKFK SPACE X X Considerar fator de conversão
EHNDL LIKE CSDATA-XFELD SPACE X X Campo de seleção
EMENG LIKE STKO-BMENG 0 X X Quantidade de base
MMORY LIKE CSDATA-XFELD SPACE X X Campo de seleção
POSTP LIKE STPO-POSTP SPACE X X Ctg.item (lista técnica)
EXPORTAÇÃO:
NOME PARAM. ATRIB. TIPO REFERÊNCIA TRANSF. TEXTO BREVE
TOPMAT LIKE CSTMAT X Data for start material
TABELAS:
NOME PARAM. ATRIB. TIPO REFERÊNCIA OPCIONAL TEXTO BREVE
STB LIKE STPOX X Collective item data table
MATCAT LIKE CSCMAT X Material catalog (sub-assemblies)
EXCEÇÕES:
EXCEÇÃO TEXTO BREVE
ALT_NOT_FOUND Alternative not found
CALL_INVALID Incorrect parameter combination
MATERIAL_NOT_FOUND Material not found
MISSING_AUTHORIZATION No authorization (bill of material)
NO_BOM_FOUND No BOM for this material
NO_PLANT_DATA Material not maintained in plant
NO_SUITABLE_BOM_FOUND BOM does not exist
CONVERSION_ERROR Conversion error
TEXTO FONTE
* >> Início da inclusão:
FUNCTION /pws/zytp_bom_expl_mat_v2.
DATA l_tabix TYPE sy-tabix.
DATA l_stufe TYPE stpox-stufe.
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
EXPORTING
capid = capid
datuv = datuv
ehndl = ehndl
mehrs = mehrs
mtnrv = mtnrv
werks = werks
emeng = emeng
mmory = mmory
postp = postp
IMPORTING
topmat = topmat
TABLES
stb = stb
matcat = matcat
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
IF kzkfk EQ 'X'.
LOOP AT stb.
IF NOT topmat-bmeng IS INITIAL.
stb-menge = stb-menge / topmat-bmeng.
MODIFY stb INDEX sy-tabix.
ENDIF.
ENDLOOP.
ENDIF.
IF sy-subrc EQ 0 AND mehrs EQ 'X'.
l_stufe = 1.
LOOP AT stb
WHERE stufe EQ l_stufe.
MOVE sy-tabix TO l_tabix.
PERFORM bom_level_check
USING stb[]
stb
matcat[]
l_tabix
l_stufe
capid
datuv
mehrs
kzkfk
ehndl
emeng
mmory
postp.
ENDLOOP.
ENDIF.
ENDFUNCTION.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYTPGF3F01
* >> Início da inclusão:
FORM bom_level_check
USING t_stb TYPE tt_stb
p_stb TYPE ty_stb
t_matcat TYPE tt_matcat
p_tabix TYPE sy-tabix
p_stufe TYPE stpox-stufe
p_capid TYPE tc04-capid
p_datuv TYPE stko-datuv
p_mehrs TYPE csdata-xfeld
p_kzkfk TYPE dmarc-kzkfk
p_ehndl TYPE csdata-xfeld
p_emeng TYPE stko-bmeng
p_mmory TYPE csdata-xfeld
p_postp TYPE stpo-postp.
DATA:
t_stbx TYPE tt_stb,
w_stb TYPE ty_stb,
t_matcatx TYPE tt_matcat,
w_marc TYPE marc,
w_t460a TYPE t460a,
w_topmat TYPE cstmat,
l_tabix TYPE sy-tabix,
l_stufe TYPE stpox-stufe.
IF p_stb-xtlnr IS INITIAL.
SELECT SINGLE *
INTO w_marc
FROM marc
WHERE matnr EQ p_stb-idnrk
AND werks EQ p_stb-werks.
IF sy-subrc EQ 0.
SELECT SINGLE *
INTO w_t460a
FROM t460a
WHERE werks EQ w_marc-werks
AND sobsl EQ w_marc-sobsl
AND beskz EQ w_marc-beskz
AND wrk02 NE w_marc-werks.
IF sy-subrc EQ 0.
CALL FUNCTION '/PWS/ZYTP_BOM_EXPL_MAT_V2'
EXPORTING
capid = p_capid
datuv = p_datuv
mehrs = p_mehrs
mtnrv = p_stb-idnrk
werks = w_t460a-wrk02
kzkfk = p_kzkfk
ehndl = p_ehndl
emeng = p_emeng
mmory = p_mmory
postp = p_postp
IMPORTING
topmat = w_topmat
TABLES
stb = t_stbx
matcat = t_matcatx
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
conversion_error = 8
OTHERS = 9.
LOOP AT t_stbx
INTO w_stb.
w_stb-menge = w_stb-menge * p_stb-menge.
w_stb-stufe = w_stb-stufe + p_stb-stufe.
MODIFY t_stbx FROM w_stb INDEX sy-tabix.
ENDLOOP.
IF sy-subrc EQ 0.
l_stufe = p_stufe + 1.
LOOP AT t_stbx
INTO w_stb
WHERE stufe EQ l_stufe.
MOVE sy-tabix TO l_tabix.
PERFORM bom_level_check
USING t_stbx[]
w_stb
t_matcatx[]
l_tabix
l_stufe
p_capid
p_datuv
p_mehrs
p_kzkfk
p_ehndl
p_emeng
p_mmory
p_postp.
ENDLOOP.
l_tabix = p_tabix + 1.
INSERT LINES OF t_stbx INTO t_stb INDEX l_tabix.
APPEND LINES OF t_matcatx TO t_matcat.
ENDIF.
ENDIF.
ENDIF.
ELSE.
l_stufe = p_stufe + 1.
LOOP AT t_stb
INTO w_stb
WHERE stufe EQ l_stufe
AND stlnr EQ p_stb-xtlnr.
MOVE sy-tabix TO l_tabix.
PERFORM bom_level_check
USING t_stb[]
w_stb
t_matcat[]
l_tabix
l_stufe
p_capid
p_datuv
p_mehrs
p_kzkfk
p_ehndl
p_emeng
p_mmory
p_postp.
ENDLOOP.
ENDIF.
ENDFORM.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYTPGF3TOP
...
v_name_in LIKE tbtcjob-jobname,
v_name_fi LIKE tbtcjob-jobname,
v_nameant LIKE tbtcjob-jobname,
v_count LIKE tbtcjob-jobcount.
DATA: w_mandt LIKE sy-mandt.
RANGES: r_mandt FOR sy-mandt.
RANGES: r_sysid FOR sy-sysid,
r_bukrsg FOR /pws/zytpt021-bukrs_g,
r_bukrs FOR t001-bukrs,
r_branch FOR j_1bbranch-branch.
* >> Início da inclusão:
TYPES:
ty_stb TYPE stpox,
ty_matcat TYPE cscmat,
tt_stb TYPE STANDARD TABLE OF ty_stb,
tt_matcat TYPE STANDARD TABLE OF ty_matcat.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/LZYTPGF3UXX
...
INCLUDE /PWS/LZYTPGF3U14.
INCLUDE /PWS/LZYTPGF3U15.
INCLUDE /PWS/LZYTPGF3U16.
INCLUDE /PWS/LZYTPGF3U17.
INCLUDE /PWS/LZYTPGF3U18.
INCLUDE /PWS/LZYTPGF3U19.
INCLUDE /PWS/LZYTPGF3U20.
INCLUDE /PWS/LZYTPGF3U21.
INCLUDE /PWS/LZYTPGF3U22.
INCLUDE /PWS/LZYTPGF3U23.
* >> Início da inclusão:
INCLUDE /PWS/LZYTPGF3U24.
* << Fim da inclusão
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/ZYTPC003
...
sysid DESCENDING.
DELETE ADJACENT DUPLICATES FROM t_zytpt025
COMPARING zexit.
ENDFORM.
FORM f_processa_materiais.
DATA t_bom_item TYPE STANDARD TABLE OF stpo_api02
WITH HEADER LINE.
DATA t_bom_header TYPE STANDARD TABLE OF stko_api02
WITH HEADER LINE.
DATA v_valid_from TYPE csap_mbom-datuv.
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
DATA: t_matcat TYPE TABLE OF cscmat WITH HEADER LINE.
* << Fim da inclusão
WRITE p_dt_ini TO v_valid_from.
SORT: t_zytpt901 BY matnr,
t_zytpt907 BY matnr.
REFRESH t_matnr.
LOOP AT t_zytpt907.
CLEAR t_matnr.
t_matnr-matnr = t_zytpt907-matnr.
t_matnr-bwkey = t_zytpt907-werks_sd.
APPEND t_matnr.
ENDLOOP.
...
...
ELSE.
LOOP AT t_zytpt907.
IF p_inativ IS INITIAL.
PERFORM f_verificar_unidade_medida.
IF w_subrc = 99.
WRITE: /001 'Problemas na Conversão de Unidade do Pai:'(m15),
t_zytpt907-matnr, 'Componente:'(m14), messtab-msgv1.
CONTINUE.
ENDIF.
REFRESH: t_stb. CLEAR t_stb.
* >> Início da exclusão: FORM F_PROCESSA_MATERIAIS
CALL FUNCTION 'CS_BOM_EXPL_MAT_V2'
* << Fim da exclusão
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
CALL FUNCTION '/PWS/ZYTP_BOM_EXPL_MAT_V2'
* << Fim da inclusão
EXPORTING
capid = p_capid
datuv = p_dt_exp
* >> Início da exclusão: FORM F_PROCESSA_MATERIAIS
ehndl = '1'
* << Fim da exclusão
mehrs = 'X'
mtnrv = t_zytpt907-matnr
werks = t_zytpt907-werks_pp
* >> Início da exclusão: FORM F_PROCESSA_MATERIAIS
emeng = /pws/zytpt000-qtd_f
sanfr = ' '
* << Fim da exclusão
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
kzkfk = 'X'
ehndl = '1'
emeng = 1
* << Fim da inclusão
mmory = '1'
postp = 'L'
IMPORTING
topmat = w_cstmat
TABLES
stb = t_stb
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
matcat = t_matcat
* << Fim da inclusão
EXCEPTIONS
alt_not_found = 1
call_invalid = 2
material_not_found = 3
missing_authorization = 4
no_bom_found = 5
no_plant_data = 6
no_suitable_bom_found = 7
* >> Início da exclusão: FORM F_PROCESSA_MATERIAIS
OTHERS = 8.
* << Fim da exclusão
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
conversion_error = 8
OTHERS = 9.
LOOP AT t_stb.
t_stb-menge = t_stb-menge * /pws/zytpt000-qtd_f.
MODIFY t_stb TRANSPORTING menge.
ENDLOOP.
* << Fim da inclusão
ELSE.
REFRESH:
t_stb,
t_bom_header,
t_bom_item.
CALL FUNCTION 'DMU_MAT_BOM_READ'
EXPORTING
material = t_zytpt907-matnr
plant = t_zytpt907-werks_pp
bom_usage = p_stlan
...
...
t_zytpt905-versao = ''.
t_zytpt905-werks_pp = t_zytpt907-werks_pp.
t_zytpt905-matnr_o = t_stb-idnrk.
t_zytpt905-matnr_f = t_zytpt907-matnr.
t_zytpt905-valido_de = p_dt_ini.
t_zytpt905-valido_ate = p_dt_fim.
t_zytpt905-tp_lista = '2'.
t_zytpt905-werks = t_zytpt907-werks_pp.
t_zytpt905-qtd_f = /pws/zytpt000-qtd_f.
t_zytpt905-unidade_f = w_cstmat-bmein.
* >> Início da exclusão: FORM F_PROCESSA_MATERIAIS
t_zytpt905-qtd_o = t_stb-mnglg.
* << Fim da exclusão
* >> Início da inclusão: FORM F_PROCESSA_MATERIAIS
t_zytpt905-qtd_o = t_stb-menge.
* << Fim da inclusão
t_zytpt905-unidade_o = t_stb-meins.
t_zytpt905-unidade_o = t_stb-mmein.
t_zytpt905-refugo_o = t_stb-kausf.
t_zytpt905-refugo_f = t_stb-ausss.
READ TABLE t_zytpt025 WITH KEY zexit = 'ZTPUNIDNEG'
BINARY SEARCH.
IF sy-subrc = 0.
IF NOT t_zytpt025-programa IS INITIAL.
PERFORM (t_zytpt025-form) IN PROGRAM (t_zytpt025-programa)
TABLES t_matnr
...