CE PLUS - Nota 009754

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.

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

ENCERRAMENTO DE CUSTO COM VALOR DE DIFERENÇA APENAS PARA IMOBILIZADO

O RELATORIO DO ENCERRAMENTO DE CUSTO ESTA COM VAL. E QTD. DSITORCIDOS

AO FAZER ENCERRAMENTO, LEVA DADOS DA EMPRESA ERRADA.

ENCERRAMENTO DE CUSTO ERRADO COM PEDIDO COM CLASSIFICAÇÃO CONTÁBIL

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