2013 Feb 13 12:20 PM
Hi Guys ,
I have a problem with this Function Module ' CHANGEDOCUMENT_READ_HEADERS ' and I am Getting Runtime Exception like No_header_found(No position Found).
Actually scenario is like , Using this Function Module I need to fetch the change Header changed values. Below is the Code used....
Here in the Below code highlighted in RED, Function Module If i dont pass Date_of_change and Time_of_change values I am able to fetch the Record using Object Class used , else I am getting Exception like No_header_found.
DATA: T_CDHDR TYPE TABLE OF CDHDR WITH HEADER LINE,
IT_VBAK TYPE TABLE OF VBAK,
WA1_VBAK TYPE VBAK,
WA2_VBAK TYPE VBAK,
IT1_DELTA TYPE TABLE OF ZDELTA,
WA1_DELTA TYPE ZDELTA,
START_DATE TYPE CHAR8,
START_TIME TYPE CHAR6 ,
DATE_C TYPE DATS,
TIME_C TYPE TIMS ."CDHDR-UTIME.
SELECT MANDT FIELDNAME FIELDVALUE FROM ZDELTA INTO TABLE IT1_DELTA .
READ TABLE IT1_DELTA INTO WA1_DELTA WITH KEY FIELDNAME = 'SOLIST_LSTRUN_START_DT'.
START_DATE = WA1_DELTA-FIELDVALUE.
READ TABLE IT1_DELTA INTO WA1_DELTA WITH KEY FIELDNAME = 'SOLIST_LSTRUN_START_TIME'.
START_TIME = WA1_DELTA-FIELDVALUE.
CONCATENATE START_DATE+0(4) START_DATE+4(2) START_DATE+6(2) INTO DATE_C.
CONCATENATE START_TIME+0(2) START_TIME+2(2) START_TIME+4(2) INTO TIME_C.
EXPORTING
* ARCHIVE_HANDLE = 0
* DATE_OF_CHANGE = date_c
OBJECTCLASS = 'VERKBELEG'
* OBJECTID = ' '
* TIME_OF_CHANGE = TIME_c
* USERNAME = SY-UNAME
* LOCAL_TIME = ' '
* TIME_ZONE = 'UTC'
* DATE_UNTIL = SY-DATUM
* TIME_UNTIL = '235959'
* NOPLUS_ASWILDCARD_INOBJID = ' '
* READ_CHANGEDOCU = ' '
TABLES
I_CDHDR = T_CDHDR
EXCEPTIONS
NO_POSITION_FOUND = 1
* WRONG_ACCESS_TO_ARCHIVE = 2
* TIME_ZONE_CONVERSION_ERROR = 3
* OTHERS = 4
.
IF SY-SUBRC = 1.
MESSAGE 'EXCEPTION CATCHED' TYPE 'I'.
ENDIF.
DATA : CURRENT_DATE TYPE DATS,
CURRENT_TIME TYPE CHAR6.
CURRENT_DATE = SY-DATUM.
CURRENT_TIME = SY-UZEIT.
DATA : ID TYPE CDHDR-OBJECTID,
WA_CDHDR TYPE CDHDR,
W_CDHDR TYPE CDHDR,
IT_CDHDR TYPE TABLE OF CDHDR WITH HEADER LINE,
CUSTOMER TYPE VBAK-KUNNR,
CUST_PO TYPE BAPIORDERS-PURCH_NO_C. "VBAK-BSTNK.
IT_CDHDR[] = T_CDHDR[].
LOOP AT T_CDHDR INTO W_CDHDR.
READ TABLE IT_CDHDR INTO WA_CDHDR WITH KEY OBJECTID = W_CDHDR-OBJECTID.
ID = W_CDHDR-OBJECTID.
ENDLOOP.
SELECT VBELN
VKORG
KUNNR
BSTNK
FROM VBAK
INTO CORRESPONDING FIELDS OF TABLE IT_VBAK
WHERE VBELN = ID.
LOOP AT IT_VBAK INTO WA1_VBAK.
READ TABLE IT_VBAK INTO WA1_VBAK WITH KEY MANDT = WA1_VBAK-MANDT
VBELN = T_CDHDR-OBJECTID.
CUSTOMER = WA1_VBAK-KUNNR.
CUST_PO = WA1_VBAK-BSTNK.
DATA S_ORDERS TYPE TABLE OF BAPIORDERS.
CALL FUNCTION 'BAPI_SALESORDER_GETLIST'
EXPORTING
CUSTOMER_NUMBER = CUSTOMER
SALES_ORGANIZATION = WA1_VBAK-VKORG
* MATERIAL =
* DOCUMENT_DATE =
* DOCUMENT_DATE_TO =
* PURCHASE_ORDER =
* TRANSACTION_GROUP = 0
PURCHASE_ORDER_NUMBER = CUST_PO
* MATERIAL_EVG =
* IMPORTING
* RETURN =
TABLES
SALES_ORDERS = S_ORDERS
.
ENDLOOP.
SALES_ORDERS[] = S_ORDERS[].
DATA : DELTA_RUN TYPE ZDELTA,
IT_DELTA TYPE TABLE OF ZDELTA,
WA_DELTA TYPE ZDELTA.
WA_DELTA-FIELDNAME = 'SOLIST_LSTRUN_START_DT'.
WA_DELTA-FIELDVALUE = CURRENT_DATE.
APPEND WA_DELTA TO IT_DELTA.
WA_DELTA-FIELDNAME = 'SOLIST_LSTRUN_START_TIME'.
WA_DELTA-FIELDVALUE = CURRENT_TIME.
APPEND WA_DELTA TO IT_DELTA.
CLEAR WA_DELTA.
LOOP AT IT_DELTA INTO WA_DELTA .
UPDATE ZDELTA SET FIELDVALUE = WA_DELTA-FIELDVALUE
WHERE FIELDNAME = WA_DELTA-FIELDNAME .
ENDLOOP.
What Could be the Reason Behind Exception ?
Thanks.
2013 Feb 14 12:11 PM