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.