Módulo: DOC. IMPORTAÇÃO
Funcionalidade: Encerramento de Custo
Data/Hora da Publicação: 01/02/2010 00:00:00
Data/Hora Última Alteração: 28/07/2011 08:16:47
Descrição da Nota: TRATAMENTO DE ESTOQUE ESPECIAL NA MR22
Sintoma
Ao realizar o encerramento de custo de um item que possua estoque especial o programa não está
preenchendo o elemento PEP na MR22 o que faz com que o item seja conciderado de estoque livre.
Solução
Ajustado programa para levar o elemento PEP para itens que possuam estoque especial.
8.0
Produto:
Nota
Descrição
Informações Complementares
----------------------------------------------------------------------------------------------------
Nota Número 09754 Data: 01/02/2010 Hora: 10:03:25
----------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------
Nota Número : 09754
Categoria : Erro de Programa
Prioridade : Média
Versão PW.CE : 8.0
Pacote : 00002
Agrupamento : 00006
----------------------------------------------------------------------------------------------------
Referência às notas relacionadas:
Número - Ordem - Versão - Pacote - Descrição Breve
00652 - 00001 - 6.0 - 00022 - AO FAZER ENCERRAMENTO, LEVA DADOS DA EMPRESA ERRADA.
01587 - 00002 - 6.0 - 00023 - O RELATORIO DO ENCERRAMENTO DE CUSTO ESTA COM VAL. E QTD. DSITOR
07183 - 00003 - 7.0 - 00006 - ENCERRAMENTO DE CUSTO COM VALOR DE DIFERENÇA APENAS PARA IMOBILIZ
08387 - 00004 - 7.0 - 00009 - ENCERRAMENTO DE CUSTO ERRADO COM PEDIDO COM CLASSIFICAÇÃO CONTÁBI
----------------------------------------------------------------------------------------------------
TRATAMENTO DE ESTOQUE ESPECIAL NA MR22
----------------------------------------------------------------------------------------------------
Palavras Chave:
ENCERRAMENTO - CUSTO - MR22 - ELEMENTO - PEP
/PWS/SAPMZYCI010
----------------------------------------------------------------------------------------------------
Objetos da nota:
FUNC /PWS/ZYCI_TRANSACAO_MR22
REPS /PWS/MZYCI010F02
TABD /PWS/ZYCIE031
----------------------------------------------------------------------------------------------------
Modificações efetuadas em FUNC /PWS/ZYCI_TRANSACAO_MR22
...
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
DATA: v_cpep(30) TYPE c,
v_pep TYPE prps-posid.
* << Fim da inclusão
loop at t_dados.
check t_dados-tcode = 'MR22'.
read table t_zycit031 index 1.
write t_dados-budat to v_budat.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
'MR21HEAD-BUKRS' t_dados-bukrs,
'MR21HEAD-WERKS' t_dados-werks,
'MR21HEAD-XBLNR' t_dados-xblnr,
'MR21HEAD-BKTXT' t_dados-bktxt,
'MR21HEAD-BUDAT' v_budat,
'BDC_OKCODE' '=ENTR'.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
IF sy-saprl NE '46B'.
PERFORM bdc_field USING:
'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.
ENDIF.
* << Fim da inclusão
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
v_srows = sy-srows - 13.
loop at t_zycit031.
v_aba = 2.
if v_cont ne v_srows.
v_cont = v_cont + 1.
endif.
v_indice = v_indice + 1.
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
CLEAR v_pep.
IF NOT t_zycit031-ps_psp_pnr IS INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_KONPR_OUTPUT'
EXPORTING
input = t_zycit031-ps_psp_pnr
IMPORTING
output = v_pep.
ENDIF.
CONCATENATE 'CKI_MR22_0250-PSPNR' '(' v_cont ')' INTO v_cpep.
* << Fim da inclusão
concatenate 'CKI_MR22_0250-BWKEY' '(' v_cont ')' into v_bwkey.
concatenate 'CKI_MR22_0250-MATNR' '(' v_cont ')' into v_matnr.
concatenate 'CKI_MR22_0250-BWTAR' '(' v_cont ')' into v_bwtar.
concatenate 'CKI_MR22_0250-ZUUMB' '(' v_cont ')' into v_zuumb.
concatenate 'CKI_MR22_0250-MENGE' '(' v_cont ')' into v_menge.
concatenate 'CKI_MR22_0250-SHKZG' '(' v_cont ')' into v_shkzg.
concatenate 'CKI_MR22_0250-SELKZ' '(' v_cont ')' into v_linha.
concatenate '=TAB' v_aba into v_tab.
move t_zycit031-bwtar to v_bwtar_in.
write t_zycit031-menge unit t_zycit031-meins to v_meng2.
...
...
clear mbew.
select single * from mbew
where matnr = t_zycit031-matnr.
if mbew-bwtty = 'H'.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
v_bwkey t_zycit031-werks,
v_matnr v_matnr_in,
v_bwtar v_bwtar_in,
v_zuumb v_wrbtr ,
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
v_cpep v_pep,
* << Fim da inclusão
v_menge v_meng2 .
else.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
v_bwkey t_zycit031-werks,
v_matnr v_matnr_in,
v_bwtar v_bwtar_in,
v_zuumb v_wrbtr ,
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
v_cpep v_pep,
* << Fim da inclusão
v_menge v_meng2 .
endif.
perform bdc_field using 'BDC_OKCODE' '=ENTR'.
do v_moeda times.
If not v_moeda is initial.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
'BDC_OKCODE' v_tab,
'BDC_SUBSCR' 'SAPRCKM_MR22 0250MR22_SUB',
'BDC_CURSOR' v_matnr .
if sy-saprl ne '46B'.
perform bdc_field using:
* >> Início da exclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
'MR21HEAD-SCREEN_VARIANT' 'LAGERMATERIAL - OHNE BWKEY_025'.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.
* << Fim da inclusão
endif.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
'BDC_OKCODE' '=CALC',
'BDC_SUBSCR' 'SAPRCKM_MR22 0250MR22_SUB',
'BDC_CURSOR' 'CKI_MR22_0250-MATNR(02)'.
If v_cont eq v_srows.
v_cont = v_cont - 1.
concatenate 'CKI_MR22_0250-SELKZ' '(' v_cont ')' into v_linha.
v_cont = v_cont + 1.
Endif.
perform bdc_field using:
v_linha 'X' .
if sy-saprl ne '46B'.
perform bdc_field using:
* >> Início da exclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
'MR21HEAD-SCREEN_VARIANT' 'LAGERMATERIAL - OHNE BWKEY_025'.
* << Fim da exclusão
* >> Início da inclusão: FUNCTION /PWS/ZYCI_TRANSACAO_MR22
'MR21HEAD-SCREEN_VARIANT' 'ALLE MATERIALIEN - OHNE BWKEY_'.
* << Fim da inclusão
endif.
perform bdc_screen using 'SAPRCKM_MR22' '0400'.
perform bdc_field using:
'BDC_CURSOR' '%#AUTOTEXT001',
'BDC_OKCODE' '=ENTR',
'DISPLAY-F_CURR1-SELKZ' 'X'.
perform bdc_screen using 'SAPRCKM_MR22' '0201'.
perform bdc_field using:
'BDC_OKCODE' 'TAB1',
v_linha ' '.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em REPS /PWS/MZYCI010F02
...
FORM get_parameters_mr22.
* >> Início da inclusão: FORM GET_PARAMETERS_MR22
DATA v_kzbws TYPE prps-kzbws.
* << Fim da inclusão
...
...
FOR ALL ENTRIES IN itab_material
WHERE matnr = itab_material-matnr
AND bwkey = itab_material-werks.
IF NOT itab_mbew[] IS INITIAL.
SELECT matnr meins INTO TABLE itab_mara
FROM mara
FOR ALL ENTRIES IN itab_material
WHERE matnr = itab_material-matnr.
ENDIF.
ENDIF.
* >> Início da inclusão: FORM GET_PARAMETERS_MR22
REFRESH itab_ekkn.
IF NOT itab_zycit003_custo[] IS INITIAL.
SELECT ebeln ebelp zekkn vproz prctr kostl kokrs fistl fipos
aufnr ps_psp_pnr sakto
anln1 anln2 nplnr aufpl aplzl
FROM ekkn
INTO TABLE itab_ekkn
FOR ALL ENTRIES IN itab_zycit003_custo
WHERE ebeln = itab_zycit003_custo-ebeln
AND ebelp = itab_zycit003_custo-ebelp.
ENDIF.
* << Fim da inclusão
SELECT * FROM /pws/zycit331 INTO TABLE itab_zycit331. "#EC CI_NOWHERE
FREE itab_zycie031_aux.
LOOP AT itab_zycit003_custo.
CLEAR itab_zycie031_aux.
CLEAR itab_zycit003.
READ TABLE itab_zycit003 WITH KEY
ebeln = itab_zycit003_custo-ebeln
ebelp = itab_zycit003_custo-ebelp.
CLEAR itab_material.
READ TABLE itab_material WITH KEY
...
...
READ TABLE itab_mara WITH KEY matnr = itab_material-matnr.
READ TABLE itab_zycit331 WITH KEY codigo = itab_material-knttp.
IF ( sy-subrc NE 0 AND NOT itab_material-knttp IS INITIAL )
OR itab_zycit003_custo-vldif IS INITIAL
OR itab_material-matnr IS INITIAL.
CONTINUE.
ENDIF.
itab_zycie031_aux-tcode = 'MR22'.
itab_zycie031_aux-tabela = '/PWS/ZYCIT003'.
itab_zycie031_aux-cpochv = /pws/zycie001-nrseq.
* >> Início da inclusão: FORM GET_PARAMETERS_MR22
CLEAR itab_ekkn.
READ TABLE itab_ekkn WITH KEY
ebeln = itab_zycit003_custo-ebeln
ebelp = itab_zycit003_custo-ebelp.
IF sy-subrc EQ 0 AND
NOT itab_ekkn-ps_psp_pnr IS INITIAL.
CALL FUNCTION 'CJPN_PROJECT_OBJECT'
EXPORTING
int_num = itab_ekkn-ps_psp_pnr
IMPORTING
prps_kzbws = v_kzbws.
IF v_kzbws EQ 'M'.
itab_zycie031_aux-ps_psp_pnr = itab_ekkn-ps_psp_pnr.
ENDIF.
ENDIF.
* << Fim da inclusão
itab_zycie031_aux-werks = itab_material-werks.
itab_zycie031_aux-matnr = itab_material-matnr.
itab_zycie031_aux-bwtar = itab_material-bwtar.
IF itab_mbew-vprsv NE 'S'.
IF NOT itab_zycit003-qtd_itend IS INITIAL.
itab_zycie031_aux-menge = itab_zycit003-qtd_itend.
IF itab_zycit003-meins NE itab_mara-meins.
PERFORM carrega_um USING itab_mara-matnr
CHANGING itab_zycit003-meins
itab_zycie031_aux-menge.
...
...
itab_zycie031-tabela = itab_zycie031_aux-tabela.
itab_zycie031-cpochv = itab_zycie031_aux-cpochv.
itab_zycie031-werks = itab_zycie031_aux-werks.
itab_zycie031-matnr = itab_zycie031_aux-matnr.
itab_zycie031-bwtar = itab_zycie031_aux-bwtar.
itab_zycie031-wrbtr = itab_zycie031_aux-wrbtr.
itab_zycie031-menge = itab_zycie031_aux-menge.
itab_zycie031-selkz_soll = itab_zycie031_aux-selkz_soll.
itab_zycie031-selkz_habe = itab_zycie031_aux-selkz_habe.
itab_zycie031-waers = itab_zycie031_aux-waers.
* >> Início da inclusão: FORM GET_PARAMETERS_MR22
itab_zycie031-ps_psp_pnr = itab_zycie031_aux-ps_psp_pnr.
* << Fim da inclusão
COLLECT itab_zycie031.
ENDLOOP.
ENDFORM.
...
----------------------------------------------------------------------------------------------------
Modificações efetuadas em TABD /PWS/ZYCIE031
Nome campo Elem.dados Tab.verif. N CtDt Comp. Grupo
...
SERNP CHAR01 CHAR 1
HSDAT HSDAT DATS 8
* >> Início da inclusão:
PS_PSP_PNR PS_PSP_PNR NUMC 8
* << Fim da inclusão