*&---------------------------------------------------------------------*
*& Report Y_DATE_RTK
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT y_date_rtk.
DATA: lv_system_date TYPE dats.
DATA: lv_changed_date TYPE dats.
*DATA: it_orders LIKE TABLE OF vbak WITH HEADER LINE.
DATA: lv_order TYPE vbeln_va.
DATA: BAPISDH1X LIKE BAPISDH1X.
DATA: BAPISDH1 LIKE BAPISDH1.
DATA: it_BAPIVBELN like TABLE OF bapivbeln WITH HEADER LINE.
DATA: wa_order LIKE LINE OF it_bapivbeln.
DATA: T_RETURN like table of BAPIRET2 with header line.
PARAMETERS: P_AUART LIKE VBAK-AUART. "Sale order type (OR, TA)
PARAMETERS: P_LIFSK LIKE VBAK-LIFSK OBLIGATORY. "delivery block reason
PARAMETERS: P_OTDAYS TYPE NUM. "older than days
"set check date
*lv_system_date = sy-datum.
*lv_changed_date = lv_system_date - P_OTDAYS.
CALL FUNCTION 'RP_CALC_DATE_IN_INTERVAL'
EXPORTING
date = sy-datum
days = P_OTDAYS
months = 0
SIGNUM = '-'
years = 0
IMPORTING
CALC_DATE = lv_changed_date.
START-OF-SELECTION.
SELECT vbeln FROM vbak INTO TABLE it_bapivbeln WHERE erdat = lv_changed_date
AND auart = P_AUART
* AND vbeln = '0000004785'
AND abstk = 'A'
AND lfstk = 'A'.
END-OF-SELECTION.
BAPISDH1-DLV_BLOCK = p_lifsk.
BAPISDH1X-DLV_BLOCK = 'X'. " Delivery block fLAG
BAPISDH1X-UPDATEFLAG = 'U'. " Update order flag
*LOOP AT it_orders INTO wa_order.
CALL FUNCTION 'BAPI_SALESORDER_CHANGE'
EXPORTING
salesdocument = it_bapivbeln-vbeln
order_header_in = BAPISDH1
order_header_inx = BAPISDH1X
tables
return = T_RETURN.
*ENDLOOP.
LOOP AT t_return TRANSPORTING NO FIELDS WHERE type CA 'AEX'.
EXIT.
ENDLOOP.
WRITE:/ 'System Date: ', sy-datum.
WRITE:/ 'Check Date: ', lv_changed_date.
LOOP AT it_bapivbeln INTO wa_order.
WRITE:/ 'Order to be closed: ', wa_order-vbeln.
WRITE:/.
ENDLOOP.
IF SY-SUBRC <> 0.
WRITE: / 'Sales order not updated', T_RETURN-MESSAGE.
ELSE.
*Successfully updated
WRITE: / 'Sales order updated'.
ENDIF.
COMMIT WORK.