*&---------------------------------------------------------------------*
*& Report ZDELEPARKED
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZDELEPARKED
.
TABLES: vbkpf, t020.
DATA: mode TYPE c VALUE 'N'.
DATA: BEGIN OF tbkpf OCCURS 5.
INCLUDE STRUCTURE vbkpf.
DATA: END OF tbkpf.
DATA: BEGIN OF it020 OCCURS 0.
INCLUDE STRUCTURE t020.
DATA: END OF it020.
DATA: BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
DATA: char(20) TYPE c,
count TYPE i,
xdele.
SELECT-OPTIONS:
bukrs FOR vbkpf-bukrs MEMORY ID buk,
belnr FOR vbkpf-belnr,
gjahr FOR vbkpf-gjahr MEMORY ID gjr.
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK 2 WITH FRAME TITLE text-001.
SELECT-OPTIONS:
budat FOR vbkpf-budat,
bldat FOR vbkpf-bldat,
blart FOR vbkpf-blart,
xblnr FOR vbkpf-xblnr,
bktxt FOR vbkpf-bktxt,
usnam FOR vbkpf-usnam DEFAULT sy-uname.
SELECTION-SCREEN END OF BLOCK 2.
SELECTION-SCREEN BEGIN OF BLOCK 3 WITH FRAME TITLE text-002.
SELECT-OPTIONS:
xwffr FOR vbkpf-xwffr,
xprfg FOR vbkpf-xprfg,
xfrge FOR vbkpf-xfrge.
SELECTION-SCREEN END OF BLOCK 3.
AT SELECTION-SCREEN.
START-OF-SELECTION.
SET PF-STATUS 'DELE'.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
tcode = 'FBV0'
EXCEPTIONS
ok = 1
OTHERS = 4.
IF sy-subrc = 4.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ENDIF.
SELECT * FROM vbkpf INTO tbkpf
WHERE ausbk IN bukrs
AND belnr IN belnr
AND gjahr IN gjahr
AND budat IN budat
AND bldat IN bldat
AND blart IN blart
AND bktxt IN bktxt
AND xblnr IN xblnr
AND usnam IN usnam
AND bstat EQ 'V'
AND xwffr IN xwffr
AND xfrge IN xfrge
AND xprfg IN xprfg.
APPEND tbkpf.
count = count + 1.
ENDSELECT.
SORT tbkpf BY ausbk belnr gjahr.
IF count = 0.
WRITE: /, text-005.
ELSE.
WRITE: /, text-006, count, /.
ULINE.
LOOP AT tbkpf.
WRITE: /, tbkpf-ausbk, tbkpf-bukrs, tbkpf-belnr, tbkpf-gjahr.
ENDLOOP.
ENDIF.
END-OF-SELECTION.
AT USER-COMMAND.
CLEAR: char.
IF count > 0.
CASE sy-ucomm.
WHEN 'DELE'.
IF xdele = space.
CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA'
EXPORTING
titel = text-003
textline1 = text-004
textline2 = space
IMPORTING
answer = char(1).
IF char(1) = 'J'.
PERFORM fbv0_dele.
xdele = 'X'.
ELSE.
EXIT.
ENDIF.
ELSE.
MESSAGE i899(f5) WITH text-007.
ENDIF.
WHEN 'BACK'.
WHEN OTHERS.
EXIT.
ENDCASE.
ENDIF.
*&---------------------------------------------------------------------*
*& Form FBV0_DELE
*&---------------------------------------------------------------------* *
*& Find out, how document was parked (classically or by ENJOY)
*&---------------------------------------------------------------------* *
FORM fbv0_dele.
REFRESH messtab.
LOOP AT tbkpf.
CLEAR t020.
SELECT SINGLE * FROM t020 WHERE tcode = tbkpf-tcode.
IF t020-gener = space. "parked by classical transaction
PERFORM fbv0_dele1 USING tbkpf-gjahr
tbkpf-belnr
tbkpf-bukrs.
ELSE. "parked by ENJOY
PERFORM fbv0_dele2 USING tbkpf-gjahr
tbkpf-belnr
tbkpf-bukrs.
ENDIF.
ENDLOOP.
CHECK sy-subrc EQ 0.
LOOP AT messtab.
WRITE: / messtab.
ENDLOOP.
ENDFORM. "FBV0_DELE
*&---------------------------------------------------------------------*
*& Form FBV0_DELE1
*&---------------------------------------------------------------------*
*& Classically parked documents
*&---------------------------------------------------------------------*
FORM fbv0_dele1 USING i_gjahr LIKE bkpf-gjahr
i_belnr LIKE bkpf-belnr
i_bukrs LIKE bkpf-bukrs.
DATA: xdate(10) TYPE c.
REFRESH bdcdata.
PERFORM bdc_dynpro USING 'SAPMF05V'
'0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05V-GJAHR'.
PERFORM bdc_field USING 'RF05V-BUKRS'
i_bukrs.
PERFORM bdc_field USING 'RF05V-BELNR'
i_belnr.
PERFORM bdc_field USING 'RF05V-GJAHR'
i_gjahr.
PERFORM bdc_dynpro USING 'SAPLF040'
'0700'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-XBLNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'BL'.
PERFORM bdc_dynpro USING 'SAPLSPO1'
'0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'SPOP-OPTION1'. "Button YES
PERFORM bdc_field USING 'BDC_OKCODE'
'ENTER'.
CALL TRANSACTION 'FBV0' USING bdcdata
MODE mode
UPDATE 'S'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
message_text_output = messtab
EXCEPTIONS
OTHERS = 4.
APPEND messtab.
ENDFORM. "FBV0_DELE2
*&---------------------------------------------------------------------*
*& Form fbv0_dele2
*&---------------------------------------------------------------------*
*& Documents parked by ENJOY
*&---------------------------------------------------------------------*
FORM fbv0_dele2 USING i_gjahr
i_belnr
i_bukrs.
DATA: xdate(10) TYPE c.
REFRESH bdcdata.
PERFORM bdc_dynpro USING 'SAPMF05V'
'0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF05V-GJAHR'.
PERFORM bdc_field USING 'RF05V-BUKRS'
i_bukrs.
PERFORM bdc_field USING 'RF05V-BELNR'
i_belnr.
PERFORM bdc_field USING 'RF05V-GJAHR'
i_gjahr.
IF t020-koart = 'D'.
PERFORM bdc_dynpro USING 'SAPMF05A'
'1200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'INVFO-ACCNT'.
ELSEIF t020-koart = 'K'.
PERFORM bdc_dynpro USING 'SAPMF05A'
'1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'INVFO-ACCNT'.
ELSEIF t020-koart = 'S'.
PERFORM bdc_dynpro USING 'SAPMF05A'
'1001'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_HEAD-BLDAT'.
ENDIF.
PERFORM bdc_field USING 'BDC_OKCODE'
'=9-PD'.
PERFORM bdc_dynpro USING 'SAPLSPO1'
'0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'SPOP-OPTION1'. "Button YES
PERFORM bdc_field USING 'BDC_OKCODE'
'ENTER'.
CALL TRANSACTION 'FBV0' USING bdcdata
MODE mode
UPDATE 'S'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = sy-msgid
msgnr = sy-msgno
msgv1 = sy-msgv1
msgv2 = sy-msgv2
msgv3 = sy-msgv3
msgv4 = sy-msgv4
IMPORTING
message_text_output = messtab
EXCEPTIONS
OTHERS = 4.
APPEND messtab.
ENDFORM. " fbv0_dele2
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD