Skip to Content
0
Former Member
Jul 30, 2010 at 03:13 PM

Método CHECK SUBSEQUENT DOCUMENTS impede cancelamento de algumas NFe´s

236 Views

Bom dia a todos,

Após implementarmos o método CHECK_SUBSEQUENT_DOCUMENTS no QA para impedir a solicitação de estorno cancelamento (através do usuário) de NFe´s do mês anterior, nos primeiros dias do mês subsequente, verificamos que algumas NF-e´s geradas e aprovadas num mesmo dia, são impedidas também de se requisitar o cancelamento, ou seja não se permite nem disparar a solicitação de cancelamento através da J1BNFE para algumas NF-e, sendo assim, ainda não estamos seguros em nossos testes para mover este método para o PRD.

Como parâmetros, implementos este método com base no código ABAP sugerido no material de treinamento de NF-e elaborado no Workshop de NF-e realizado pela SAP (WBRNFE 6.0 Português de 2008).

Alguém já passou por este problema?

Desde já agradeço.

André

METHOD if_ex_cl_nfe_print~check_subsequent_documents.

*----


*

  • types *

*----


*

TYPES: BEGIN OF ty_type_doc,

reftyp TYPE j_1bnflin-reftyp,

refkey TYPE j_1bnflin-refkey,

END OF ty_type_doc.

*----


*

  • Tables and Structures *

*----


*

DATA: tl_type_doc TYPE TABLE OF ty_type_doc,

tl_return TYPE TABLE OF bapireturn1,

tl_success TYPE TABLE OF bapivbrksuccess,

el_type_doc TYPE ty_type_doc,

el_message TYPE bapireturn1.

*----


*

  • Variables *

*----


*

DATA: i_billing TYPE vbeln.

*----


*

  • Constants *

*----


*

CONSTANTS: cl_1(1) TYPE c VALUE '1',

cl_0567(4) TYPE c VALUE '0567',

cl_bi TYPE j_1bnflin-reftyp VALUE 'BI',

cl_x(1) TYPE c VALUE 'X',

cl_s(1) TYPE c VALUE 'S'.

*----


*

  • *

*----


*

CLEAR: tl_type_doc, tl_return, tl_success,

el_type_doc, el_message, i_billing.

CHECK is_active-docsta EQ cl_1.

CHECK is_active-scssta CA cl_0567.

CHECK is_active-cancel IS INITIAL.

SELECT reftyp refkey

FROM j_1bnflin

INTO TABLE tl_type_doc

WHERE docnum EQ is_active-docnum.

CHECK sy-subrc EQ 0.

SORT tl_type_doc.

DELETE ADJACENT DUPLICATES FROM tl_type_doc.

LOOP AT tl_type_doc INTO el_type_doc.

CASE el_type_doc-reftyp.

WHEN cl_bi.

MOVE: el_type_doc-refkey TO i_billing,

cl_x TO sy-binpt.

CALL FUNCTION 'BAPI_BILLINGDOC_CANCEL1'

EXPORTING

billingdocument = i_billing

testrun = cl_x

no_commit = cl_x

TABLES

return = tl_return

success = tl_success.

DELETE tl_return WHERE type EQ cl_s.

READ TABLE tl_return INTO el_message INDEX 1.

IF sy-subrc EQ 0.

MOVE: el_message-type TO sy-msgty,

el_message-number TO sy-msgno,

el_message-id TO sy-msgid,

el_message-message_v1 TO sy-msgv1,

el_message-message_v2 TO sy-msgv2,

el_message-message_v3 TO sy-msgv3,

el_message-message_v4 TO sy-msgv4.

ch_subrc = 4.

ENDIF. " IF sy-subrc EQ 0.

EXIT.

WHEN OTHERS.

EXIT.

ENDCASE.

ENDLOOP.

ENDMETHOD.