CE PLUS - Nota 011070

Módulo: CÂMBIO EXPORTAÇÃO

Funcionalidade: SML - Associação Ordem Pagamento

Data/Hora da Publicação: 06/04/2011 00:00:00

Data/Hora Última Alteração: 06/04/2011 15:00:57

Descrição da Nota: SISTEMA DE PAGAMENTOS EM MOEDA LOCAL

Sintoma

O sistema exibia no matchcode as faturas criadas em moedas diferentes da moeda local da empresa

 

 

Solução

Foi incluída no matchcode um tratamento para exibir apenas as faturas criadas utilizando

a moeda nacional da empresa

 

Versões Tratadas

8.0


Pré-Requisitos

Produto:

Nota

Descrição

ASSOCIAÇÃO FATURAS X ORDEM PAGAMENTO - AJUDA DE PESQUISA

Informações Complementares

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

Nota Número 11070 Data: 06/04/2011 Hora: 14:29:54

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

 

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

Nota Número              : 11070

Categoria                : Erro de Programa

Prioridade               : Média

Versão PW.CE             : 8.0

Pacote                   : 00007

Agrupamento              : 00065

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

Referência às notas relacionadas:

Número - Ordem - Versão - Pacote Descrição Breve

 

04061  - 00001 - 7.0    - 00002 - ASSOCIAÇÃO FATURAS X ORDEM PAGAMENTO - AJUDA DE PESQUISA

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

Texto Rápido:

SISTEMA DE PAGAMENTOS EM MOEDA LOCAL

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

Palavras Chave:

SISTEMA DE PAGAMENTOS EM MOEDA LOCAL - SELEÇÃO FATURAS

 

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

Objetos da nota:

FUNC /PWS/ZYCBA276

FUNC /PWS/ZYCBA278

PARA /PWS/ZYCBP035

REPS /PWS/MZYCB035F01

 

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

Modificações efetuadas em FUNC /PWS/ZYCBA276

 

...

      gsberf   TYPE /pws/zycbt209-gsberf,

      saldo    TYPE /pws/zycbt209-saldo,

    END OF t_s_liq_and,

    t_t_liq_and TYPE SORTED TABLE OF t_s_liq_and

      WITH NON-UNIQUE KEY nrinvoic nrparcf gsberf,

    BEGIN OF t_s_invoice,

      nrinvoic  TYPE /pws/zycbv216-nrinvoic,

      nrparcf   TYPE /pws/zycbv216-nrparcf,

      gsberf    TYPE /pws/zycbv216-gsberf,

      vlsltrans TYPE /pws/zycbv216-vlsltrans,

* >> Início da inclusão: FUNCTION /PWS/ZYCBA276

      bukrs     TYPE /pws/zycbv216-bukrs,

      waers     TYPE /pws/zycbv216-waers,

* << Fim da inclusão

    END OF t_s_invoice,

    t_t_invoice TYPE STANDARD TABLE OF t_s_invoice

      WITH NON-UNIQUE KEY nrinvoic nrparcf gsberf.

  DATA:

    itab_zycbt209 TYPE t_t_liq_and,

    itab_liq_and  TYPE t_t_liq_and,

    itab_invoice  TYPE t_t_invoice,

    v_fieldname   TYPE dfies-lfieldname,

* >> Início da exclusão: FUNCTION /PWS/ZYCBA276

    v_tabix       LIKE sy-tabix.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA276

    v_tabix       LIKE sy-tabix,

    itab_zycbt007 TYPE TABLE OF /pws/zycbt007,

    v_tp_op(3)    TYPE c.

  CONSTANTS: c_vme(3) TYPE c VALUE 'VME',

             c_sml(3) TYPE c VALUE 'SML'.

* << Fim da inclusão

  FIELD-SYMBOLS:

    <fs_shlp>       LIKE LINE OF shlp_tab,

    <fs_fielddescr> LIKE LINE OF shlp_tab-fielddescr,

    <fs_zycbt209>   LIKE LINE OF itab_zycbt209,

* >> Início da exclusão: FUNCTION /PWS/ZYCBA276

    <fs_invoice>    LIKE LINE OF itab_invoice.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA276

    <fs_invoice>    LIKE LINE OF itab_invoice,

    <fs_zycbt007>   LIKE LINE OF itab_zycbt007.

* << Fim da inclusão

  CLEAR callcontrol-maxrecords.

  IF callcontrol-step = 'DISP'.

    READ TABLE shlp_tab INDEX 1 ASSIGNING <fs_shlp>.

    CHECK <fs_shlp> IS ASSIGNED.

    LOOP AT <fs_shlp>-fielddescr ASSIGNING <fs_fielddescr>.

      CHECK: <fs_fielddescr>-fieldname = 'NRINVOIC'  OR

             <fs_fielddescr>-fieldname = 'NRPARCF'   OR

             <fs_fielddescr>-fieldname = 'GSBERF'    OR

* >> Início da exclusão: FUNCTION /PWS/ZYCBA276

             <fs_fielddescr>-fieldname = 'VLSLTRANS'.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA276

             <fs_fielddescr>-fieldname = 'VLSLTRANS' OR

             <fs_fielddescr>-fieldname = 'BUKRS'     OR

             <fs_fielddescr>-fieldname = 'WAERS'.

* << Fim da inclusão

      v_fieldname = <fs_fielddescr>-fieldname.

      CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'

           EXPORTING

                parameter         = <fs_fielddescr>-fieldname

                fieldname         = v_fieldname

           TABLES

                shlp_tab          = shlp_tab

                record_tab        = record_tab

                results_tab       = itab_invoice

           CHANGING

...

 

...

      READ TABLE itab_liq_and

        WITH TABLE KEY

          nrinvoic = <fs_invoice>-nrinvoic

          nrparcf  = <fs_invoice>-nrparcf

          gsberf   = <fs_invoice>-gsberf

        TRANSPORTING NO FIELDS.

      CHECK sy-subrc <> 0.

      DELETE record_tab INDEX v_tabix.

      DELETE itab_invoice.

    ENDLOOP.

* >> Início da inclusão: FUNCTION /PWS/ZYCBA276

    IF NOT itab_invoice[] IS INITIAL.

      SELECT * FROM /pws/zycbt007

        INTO TABLE itab_zycbt007

        FOR ALL ENTRIES IN itab_invoice

        WHERE bukrs = itab_invoice-bukrs OR

              bukrs = '    '.

      GET PARAMETER ID '/PWS/ZYCBP035' FIELD v_tp_op.

      LOOP AT itab_invoice ASSIGNING <fs_invoice>.

        v_tabix = sy-tabix.

        READ TABLE itab_zycbt007 ASSIGNING <fs_zycbt007>

          WITH KEY bukrs = <fs_invoice>-bukrs.

        IF sy-subrc NE 0.

          READ TABLE itab_zycbt007 ASSIGNING <fs_zycbt007>

            WITH KEY bukrs = '    '.

        ENDIF.

        IF <fs_zycbt007> IS ASSIGNED.

          IF v_tp_op EQ c_vme.

            IF <fs_invoice>-waers EQ <fs_zycbt007>-waersb.

              DELETE record_tab INDEX v_tabix.

              DELETE itab_invoice.

            ENDIF.

          ELSEIF v_tp_op EQ c_sml.

            IF <fs_invoice>-waers NE <fs_zycbt007>-waersb.

              DELETE record_tab INDEX v_tabix.

              DELETE itab_invoice.

            ENDIF.

          ENDIF.

          UNASSIGN <fs_zycbt007>.

        ENDIF.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFUNCTION.

 

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

Modificações efetuadas em FUNC /PWS/ZYCBA278

 

FUNCTION /pws/zycba278.

  TYPE-POOLS:

    shlp.

  TYPES:

    BEGIN OF t_s_invoice,

      nrinvoic  TYPE /pws/zycbv218-nrinvoic,

      nrparcf   TYPE /pws/zycbv218-nrparcf,

      gsberf    TYPE /pws/zycbv218-gsberf,

      dtvencto  TYPE /pws/zycbv218-dtvencto,

* >> Início da inclusão: FUNCTION /PWS/ZYCBA278

      bukrs     TYPE /pws/zycbv218-bukrs,

      waers     TYPE /pws/zycbv218-waers,

* << Fim da inclusão

    END OF t_s_invoice,

    t_t_invoice TYPE STANDARD TABLE OF t_s_invoice

      WITH NON-UNIQUE KEY nrinvoic nrparcf gsberf.

  DATA:

    itab_invoice  TYPE t_t_invoice,

    wa_invoice    LIKE LINE OF itab_invoice,

* >> Início da exclusão: FUNCTION /PWS/ZYCBA278

    v_fieldname   TYPE dfies-lfieldname.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA278

    v_fieldname   TYPE dfies-lfieldname,

    v_tabix       LIKE sy-tabix,

    itab_zycbt007 TYPE TABLE OF /pws/zycbt007,

    v_tp_op(3)    TYPE c.

  CONSTANTS: c_vme(3) TYPE c VALUE 'VME',

             c_sml(3) TYPE c VALUE 'SML'.

* << Fim da inclusão

  FIELD-SYMBOLS:

    <fs_shlp>       LIKE LINE OF shlp_tab,

    <fs_fielddescr> LIKE LINE OF shlp_tab-fielddescr,

* >> Início da exclusão: FUNCTION /PWS/ZYCBA278

    <fs_invoice>    LIKE LINE OF itab_invoice.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA278

    <fs_invoice>    LIKE LINE OF itab_invoice,

    <fs_zycbt007>   LIKE LINE OF itab_zycbt007.

* << Fim da inclusão

  IF callcontrol-step = 'DISP'.

    READ TABLE shlp_tab INDEX 1 ASSIGNING <fs_shlp>.

    CHECK <fs_shlp> IS ASSIGNED.

    LOOP AT <fs_shlp>-fielddescr ASSIGNING <fs_fielddescr>.

      CHECK: <fs_fielddescr>-fieldname = 'NRINVOIC'  OR

             <fs_fielddescr>-fieldname = 'NRPARCF'   OR

             <fs_fielddescr>-fieldname = 'GSBERF'    OR

* >> Início da exclusão: FUNCTION /PWS/ZYCBA278

             <fs_fielddescr>-fieldname = 'DTVENCTO'.

* << Fim da exclusão

* >> Início da inclusão: FUNCTION /PWS/ZYCBA278

             <fs_fielddescr>-fieldname = 'DTVENCTO'  or

             <fs_fielddescr>-fieldname = 'BUKRS'     OR

             <fs_fielddescr>-fieldname = 'WAERS'.

* << Fim da inclusão

      v_fieldname = <fs_fielddescr>-fieldname.

      CALL FUNCTION 'F4UT_PARAMETER_VALUE_GET'

           EXPORTING

                parameter         = <fs_fielddescr>-fieldname

                fieldname         = v_fieldname

           TABLES

                shlp_tab          = shlp_tab

                record_tab        = record_tab

                results_tab       = itab_invoice

           CHANGING

...

 

...

    ENDLOOP.

    UNASSIGN: <fs_shlp>, <fs_fielddescr>.

    LOOP AT itab_invoice ASSIGNING <fs_invoice>.

      IF <fs_invoice> = wa_invoice.

        DELETE record_tab INDEX sy-tabix.

        DELETE itab_invoice.

      ELSE.

        wa_invoice = <fs_invoice>.

      ENDIF.

    ENDLOOP.

* >> Início da inclusão: FUNCTION /PWS/ZYCBA278

    IF NOT itab_invoice[] IS INITIAL.

      SELECT * FROM /pws/zycbt007

        INTO TABLE itab_zycbt007

        FOR ALL ENTRIES IN itab_invoice

        WHERE bukrs = itab_invoice-bukrs OR

              bukrs = '    '.

      GET PARAMETER ID '/PWS/ZYCBP035' FIELD v_tp_op.

      LOOP AT itab_invoice ASSIGNING <fs_invoice>.

        v_tabix = sy-tabix.

        READ TABLE itab_zycbt007 ASSIGNING <fs_zycbt007>

          WITH KEY bukrs = <fs_invoice>-bukrs.

        IF sy-subrc NE 0.

          READ TABLE itab_zycbt007 ASSIGNING <fs_zycbt007>

            WITH KEY bukrs = '    '.

        ENDIF.

        IF <fs_zycbt007> IS ASSIGNED.

          IF v_tp_op EQ c_vme.

            IF <fs_invoice>-waers EQ <fs_zycbt007>-waersb.

              DELETE record_tab INDEX v_tabix.

              DELETE itab_invoice.

            ENDIF.

          ELSEIF v_tp_op EQ c_sml.

            IF <fs_invoice>-waers NE <fs_zycbt007>-waersb.

              DELETE record_tab INDEX v_tabix.

              DELETE itab_invoice.

            ENDIF.

          ENDIF.

          UNASSIGN <fs_zycbt007>.

        ENDIF.

      ENDLOOP.

    ENDIF.

* << Fim da inclusão

  ENDIF.

ENDFUNCTION.

 

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

Modificações efetuadas em PARA /PWS/ZYCBP035

Criar o Parameter SET/GET /PWS/ZYCBP035 na classe de desenvolvimento /PWS/ZYCB

com a descrição 'Tp. Ordem Pagamento - VME/SML'

 

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

Modificações efetuadas em REPS /PWS/MZYCB035F01

 

...

      c_searchhelp_c type shlpname        value '/PWS/ZYCBA276',

      c_searchhelp_a type shlpname  value '/PWS/ZYCBA278'.  "#EC *

    data:

      v_searchhelp(14) type c,

      wa_fatura        type t_s_fatura,

      record_tab       type standard table of seahlpres,

      itab_dynpread    type t_t_dynpread,

      v_pos1           type i,

      v_pos2           type i,

      v_pos3           type i.

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

    constants: c_vme(3) type c value 'VME',

               c_sml(3) type c value 'SML'.

* << Fim da inclusão

    field-symbols:

      <fs_searchhelp> type shlpname,

      <fs_record>     like line of record_tab.

    if sy-tcode = c_transacao_c

       or sy-tcode = c_trans_sml_c.

      v_searchhelp = 'C_SEARCHHELP_C'.

    else.

      v_searchhelp = 'C_SEARCHHELP_A'.

    endif.

    if not v_searchhelp is initial.

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

      IF sy-tcode = c_transacao_c OR

         sy-tcode = c_transacao_a OR

         sy-tcode = c_transacao_e.

        SET PARAMETER ID '/PWS/ZYCBP035' FIELD c_vme.

      ELSEIF sy-tcode = c_trans_sml_c OR

             sy-tcode = c_trans_sml_a OR

             sy-tcode = c_trans_sml_e.

        SET PARAMETER ID '/PWS/ZYCBP035' FIELD c_sml.

      ENDIF.

* << Fim da inclusão

      assign (v_searchhelp) to <fs_searchhelp>.

      call function 'F4IF_FIELD_VALUE_REQUEST'

           exporting

                tabname           = c_tabname

                fieldname         = c_fieldname

                searchhelp        = <fs_searchhelp>

           exceptions

                field_not_found   = 1

                no_help_for_field = 2

                inconsistent_help = 3

...

 

...

                  invalid_dynproname   = 3

                  invalid_dynpronummer = 4

                  invalid_request      = 5

                  no_fielddescription  = 6

                  undefind_error       = 7

                  others               = 8.

        if sy-subrc <> 0.

          exit.

        endif.

      endif.

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

      SET PARAMETER ID '/PWS/ZYCBP035' FIELD space.

* << Fim da inclusão

    endif.

  endform.

  form ajuda_remessa.

    constants:

      c_tabname      type dfies-tabname   value '/PWS/ZYCBE229A',

      c_fieldname    type dfies-fieldname value 'NRSEQ',

      c_dynprofield  type help_info-dynprofld

        value '/PWS/ZYCBE229A-NRSEQ',                       "#EC *

      c_searchhelp_c type shlpname   value '/PWS/ZYCAA025',

      c_searchhelp_a type shlpname   value '/PWS/ZYCAA026'. "#EC *

...