CE PLUS - Nota 008116

Módulo: DOC. IMPORTAÇÃO

Funcionalidade: Fatura Mercadoria

Data/Hora da Publicação: 02/03/2009 00:00:00

Data/Hora Última Alteração: 03/02/2010 17:09:43

Descrição da Nota: IMPLEMENTAÇÃO DA FATURA DE SERVIÇO COM PEDIDO DE SERVIÇO

Sintoma

 

Implementar na Fatura a Funcionalidade de Criar uma fatura com pedido sem matuse "Pedido

de Serviço"

 

Solução

 

Implementar na Fatura a Funcionalidade de Criar uma fatura com pedido sem matuse "Pedido

de Serviço"

Versões Tratadas

7.0

Informações Complementares

 

----------------------------------------------------------------------------------------------------

Nota Número 08116 Data: 02/03/2009 Hora: 13:31:04

----------------------------------------------------------------------------------------------------

 

----------------------------------------------------------------------------------------------------

Nota Número              : 08116

Categoria                : Melhoria

Prioridade               : Média

Versão PW.CE             : 7.0

Pacote                   : 00008

Agrupamento              : 00088

----------------------------------------------------------------------------------------------------

Referência às notas relacionadas:

Número - Ordem - Descrição Breve

 

----------------------------------------------------------------------------------------------------

IMPLEMENTAÇÃO DA FATURA DE SERVIÇO COM PEDIDO DE SERVIÇO

----------------------------------------------------------------------------------------------------

Palavras Chave:

FATURA - SERVIÇO - PEDIDO - SERIVÇO - SEM - MATUSE

 

----------------------------------------------------------------------------------------------------

Objetos da nota:

REPS /PWS/MZYCI001F01

REPS /PWS/MZYCI003F01

REPS /PWS/MZYCI003F02

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI001F01

 

...

                        AND   ebelp = itab_itens-ebelp.

    ENDIF.

    IF itab_itens-elikz EQ 'X'.

      MESSAGE i015 WITH text-338

                        itab_itens-ebeln

                        itab_itens-ebelp

                        text-339.

      DELETE itab_itens WHERE ebeln = itab_itens-ebeln

                        AND   ebelp = itab_itens-ebelp.

    ENDIF.

* >> Início da inclusão: FORM SELECIONAR_ITENS

    IF /pws/zycie001-modalidade NE '02' AND

       /pws/zycie001-modalidade NE '03'.

* << Fim da inclusão

    IF itab_itens-j_1bmatuse EQ ' ' AND

       v_land1 = 'BR'.

      MESSAGE e013 WITH text-314 text-320.

* >> Início da inclusão: FORM SELECIONAR_ITENS

      ENDIF.

* << Fim da inclusão

    ENDIF.

    IF itab_itens-waers = /pws/zycbt007-waersb.

      MESSAGE e013 WITH text-314 text-321.

    ENDIF.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI003F01

 

...

                  TABLES itab_cta

                  USING /pws/zycie006-bukrs

                        itab_zycbt035-ktosl

                        itab_zycbt035-werks

                        space

                        itab_zycbt035-matuse

                        space

                        space.

        ENDIF.

        READ TABLE itab_cta INDEX 1.

* >> Início da inclusão: FORM GET_PARAMETERS_F-43_F-02

        IF /pws/zycie006-tpfatura EQ '11' AND

          itab_cta-konth IS INITIAL.

          CLEAR itab_cta. REFRESH itab_cta.

          PERFORM seek_account_number

                  TABLES itab_cta

                  USING /pws/zycie006-bukrs

                        itab_zycbt035-ktosl

                        itab_zycbt035-werks

                        itab_zycbt035-bklas

                        space

                        space

                        space.

        ENDIF.

        READ TABLE itab_cta INDEX 1.

* << Fim da inclusão

      ENDIF.

      itab_zycbt035-d_newko = itab_cta-konth.

    ELSE.

      itab_zycbt035-d_newko = /pws/zycie006-lifnr.

    ENDIF.

    IF /pws/zycie006-tpfatura EQ '11'.

      IF /pws/zycit000-clucro_ia = ' '.

        CLEAR: itab_zycbt035-c_kostl,

               itab_zycbt035-d_kostl.

      ENDIF.

...

 

 

----------------------------------------------------------------------------------------------------

Modificações efetuadas em REPS /PWS/MZYCI003F02

 

...

          itab_matuse-bwkey = itab_t001w-bwkey.

          MODIFY itab_matuse.

        ENDIF.

      ENDLOOP.

      SELECT matnr bwkey bwtar bklas

       FROM mbew INTO TABLE itab_classe_aval

        FOR ALL ENTRIES IN itab_matuse

      WHERE matnr EQ itab_matuse-matnr

        AND bwkey EQ itab_matuse-bwkey

        AND bwtar EQ itab_matuse-bwtar.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS

      IF /pws/zycie006-tpfatura EQ '11' AND

         itab_classe_aval[] IS INITIAL.

        SELECT matnr bwkey bwtar bklas

         FROM mbew INTO TABLE itab_classe_aval

          FOR ALL ENTRIES IN itab_matuse

        WHERE bwkey EQ itab_matuse-bwkey

          AND mtuse EQ space.

         READ TABLE itab_classe_aval INDEX 1.

* << Fim da inclusão

    ENDIF.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS

    ENDIF.

* << Fim da inclusão

    IF NOT itab_classe_aval[] IS INITIAL.

      SELECT * FROM /pws/zycit135 INTO TABLE itab_param_classe

             FOR ALL ENTRIES IN itab_classe_aval

             WHERE bklas EQ itab_classe_aval-bklas.

    ENDIF.

    CLEAR: itab_zycbt035_aux. FREE itab_zycbt035_aux.

...

 

...

                                          bwkey = itab_zycit003-werks

                                          bwtar = itab_matuse-bwtar.

        IF sy-subrc EQ 0.

          MOVE:

             itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

             itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .

        ELSE.

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                space                  TO itab_zycbt035_aux-bklas .

        ENDIF.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS

      ELSE.

      IF /pws/zycie006-tpfatura EQ '11'.

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                itab_matuse-knttp      TO itab_zycbt035_aux-knttp ,

                itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .

* << Fim da inclusão

      ELSE.

        MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

              itab_matuse-knttp      TO itab_zycbt035_aux-knttp ,

              space                  TO itab_zycbt035_aux-bklas .

      ENDIF.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS

      ENDIF.

* << Fim da inclusão

      itab_zycbt035_aux-d_valut     = /pws/zycie006-dtd_conta.

      IF v_parcela = 'X' AND /pws/zycit477 IS INITIAL.

...

 

...

      IF v_mr1m_ok EQ 'S'.

        IF NOT itab_zycit003[] IS INITIAL.

          SELECT *

            FROM ekpo

            FOR ALL ENTRIES IN itab_zycit003

            WHERE ebeln EQ itab_zycit003-ebeln AND

                  ebelp EQ itab_zycit003-ebelp AND

                  wepos EQ 'X'.

          ENDSELECT.

        ENDIF.

* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO

        IF sy-subrc EQ '0'.

* << Fim da exclusão

* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO

        IF sy-subrc EQ '0' AND /pws/zycie006-tpfatura NE '11'.

* << Fim da inclusão

          PERFORM fill_date_mb01.

          PERFORM unlock_fornecedor.

        ELSE.

          v_mb01_ok = 'S'.

          v_servico = 'X'.

        ENDIF.

        IF v_mb01_ok EQ 'S'.

          PERFORM fill_date_f_51.

          IF  v_f_51_ok EQ 'S'.

            PERFORM calcula_custo.

...

 

...

    IF NOT v_erro IS INITIAL.

      EXIT.

    ENDIF.

    IF NOT itab_zycit003[] IS INITIAL.

      SELECT ebeln ebelp bprme twrkz ntgew

        FROM ekpo INTO TABLE itab_ekpo

        FOR ALL ENTRIES IN itab_zycit003

        WHERE ebeln EQ itab_zycit003-ebeln AND

              ebelp EQ itab_zycit003-ebelp AND

              wepos EQ 'X'.

* >> Início da exclusão: FORM EXECUTA_RECEBIMENTO

      IF sy-subrc EQ '0'.

* << Fim da exclusão

* >> Início da inclusão: FORM EXECUTA_RECEBIMENTO

      IF sy-subrc EQ '0' AND /pws/zycie006-tpfatura NE '11'.

* << Fim da inclusão

        PERFORM fill_date_mb01.

        PERFORM unlock_fornecedor.

      ENDIF.

    ENDIF.

  ENDIF.

  CLEAR v_recebi.

ENDFORM.

FORM lock_fornecedor CHANGING erro.

  DATA: v_message(40) TYPE c.

  CALL FUNCTION 'ENQUEUE_EFLFB1AS'

...

 

...

  LOOP AT itab_zycit031.

    READ TABLE itab_ekpo WITH KEY ebeln = itab_zycit031-ebeln

                                       ebelp = itab_zycit031-ebelp.

    IF sy-subrc EQ 0.

      v_cont = v_cont + 1.

      itab_itemdata-invoice_doc_item = v_cont.

      itab_itemdata-po_number        = itab_zycit031-ebeln.

      itab_itemdata-po_item          = itab_zycit031-ebelp.

      itab_itemdata-tax_code         = itab_zycie033-mwskz.

      itab_itemdata-item_amount      = itab_zycit031-wrbtr.

* >> Início da inclusão: FORM FILL_DATE_MR1M

      IF /pws/zycie006-tpfatura NE '11'.

* << Fim da inclusão

      itab_itemdata-quantity         = itab_zycit031-menge.

      itab_itemdata-po_unit          = itab_zycit031-meins.

      itab_itemdata-po_unit_iso      = itab_zycit031-meins.

      itab_itemdata-po_pr_uom        = itab_ekpo-bprme.

      itab_itemdata-po_pr_uom_iso    = itab_ekpo-bprme.

* >> Início da inclusão: FORM FILL_DATE_MR1M

      ENDIF.

* << Fim da inclusão

      APPEND itab_itemdata.

    ENDIF.

...

 

...

      IF sy-subrc EQ 0.

        itab_matuse-bwkey = itab_t001w-bwkey.

        MODIFY itab_matuse.

      ENDIF.

    ENDLOOP.

   SELECT matnr bwkey bwtar bklas FROM mbew INTO TABLE itab_classe_aval

                                         FOR ALL ENTRIES IN itab_matuse

                                       WHERE matnr EQ itab_matuse-matnr

                                         AND bwkey EQ itab_matuse-bwkey

                                         AND bwtar EQ itab_matuse-bwtar.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51

    IF /pws/zycie006-tpfatura EQ '11' AND

       itab_classe_aval IS INITIAL.

         SELECT matnr bwkey bwtar bklas

         FROM mbew INTO TABLE itab_classe_aval

         FOR ALL ENTRIES IN itab_matuse

         WHERE bwkey EQ itab_matuse-bwkey

           AND mtuse EQ space.

         READ TABLE itab_classe_aval INDEX 1.

* << Fim da inclusão

  ENDIF.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51

  ENDIF.

* << Fim da inclusão

  IF NOT itab_classe_aval[] IS INITIAL.

    SELECT * FROM /pws/zycit135 INTO TABLE itab_param_classe

           FOR ALL ENTRIES IN itab_classe_aval

           WHERE bklas EQ itab_classe_aval-bklas.

  ENDIF.

  FREE itab_zycbt035_aux.

...

 

...

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .

        ELSE.

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                space              TO itab_zycbt035_aux-bklas .

        ENDIF.

      ELSE.

        MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

              space                  TO itab_zycbt035_aux-bklas .

      ENDIF.

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51

    ELSE.

      IF /pws/zycie006-tpfatura EQ '11'.

          MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

                itab_classe_aval-bklas TO itab_zycbt035_aux-bklas .

* << Fim da inclusão

    ELSE.

      MOVE: itab_matuse-j_1bmatuse TO itab_zycbt035_aux-matuse,

            space                  TO itab_zycbt035_aux-bklas .

* >> Início da inclusão: FORM MULTIPLOS_LANCAMENTOS_F_51

      ENDIF.

* << Fim da inclusão

    ENDIF.

    itab_zycbt035_aux-wrbtr       = itab_zycit003-total.

    itab_zycbt035_aux-werks       = itab_zycit003-werks.

    CALL FUNCTION '/PWS/ZYGL_OBTEM_ANO_CONTABIL'

...

 

...

          ELSE.

            itab_zycbt035-matuse = 0.

          ENDIF.

        ENDIF.

        CLEAR itab_cta. REFRESH itab_cta.

        PERFORM seek_account_number

                TABLES itab_cta

                USING /pws/zycie001-bukrs

                      'IPA'

                      itab_zycbt035-werks

* >> Início da inclusão: FORM GET_PARAMETERS_F-51

                      space

                      itab_zycbt035-matuse

* << Fim da inclusão

                      space

* >> Início da inclusão: FORM GET_PARAMETERS_F-51

                      space.

        READ TABLE itab_cta INDEX 1.

        itab_zycbt035-ktosl = 'IPA'.

        itab_zycbt035-d_newko = itab_cta-konth.

        IF /pws/zycie006-tpfatura EQ '11' AND

          itab_cta-konth IS INITIAL.

          CLEAR itab_cta. REFRESH itab_cta.

          PERFORM seek_account_number

                  TABLES itab_cta

                USING /pws/zycie001-bukrs

                      'IPA'

                      itab_zycbt035-werks

                      itab_zycbt035-bklas

* << Fim da inclusão

                      itab_zycbt035-matuse

                      space

                      space.

* >> Início da inclusão: FORM GET_PARAMETERS_F-51

        ENDIF.

* << Fim da inclusão

        READ TABLE itab_cta INDEX 1.

        itab_zycbt035-ktosl = 'IPA'.

        itab_zycbt035-d_newko = itab_cta-konth.

      ENDIF.

...