Hi Guru
I have written a start routine it is working fine in full load load and not working at all when delta loading.
I have situation where i have(sequence of load will be in same order)
Master data of equipment (/BIC/PZASET_TAG)
MAT_ASSET DSO (/BIC/AZMATASET00)
Inve DATA DSO
MAT_ASSET DSO data is coming from 2 source 1 from Inv DATA DSO(start routine written here) and other is csv file.
In inv data dso i have two field /BIC/ZASSEST, & /BIC/ZAST_SUBN and same fields in Master data of equipment. I have to loop up what is the corresponding value of Item fields(/BIC/ZMAT_PLNT) in Master data of equipment (/BIC/PZASET_TAG) and bring into internal table(ITAB_ASTG1) then i have to bring data from MAT_ASSET DSO data to another internal table ( ITAB_MAT_ASSET). I have to check
Does the Item and Equip relationship exists in the MAT_ASSET DSO?
if yes then i dont do anything.
if No then Create(insert record) Item & Equipment relationship(s) Put Flag -/BIC/ZDYCR_AST = Y (by default it has value N).
NOTE: An Asset and Asset Subnumber can be linked to multiple Equipment records so you will need to create the relationship for all of the ones that do not exist.
TYPES: BEGIN OF TS_ASTG,
/BIC/ZCUSTOMER TYPE /BIC/PZASET_TAG-/BIC/ZCUSTOMER,
/BIC/ZPLANT TYPE /BIC/PZASET_TAG-/BIC/ZPLANT,
/BIC/ZASET_TAG TYPE /BIC/PZASET_TAG-/BIC/ZASET_TAG,
objvers TYPE /BIC/PZASET_TAG-objvers,
/BIC/ZASSEST TYPE /BIC/PZASET_TAG-/BIC/ZASSEST,
/BIC/ZAST_SUBN TYPE /BIC/PZASET_TAG-/BIC/ZAST_SUBN,
END OF TS_ASTG.
TYPES:BEGIN OF TY_MAT_ASSET,
/BIC/ZCUSTOMER TYPE CHAR10,
/BIC/ZPLANT TYPE CHAR4,
/BIC/ZASET_TAG TYPE CHAR45,
/BIC/ZMAT_PLNT TYPE CHAR45,
END OF TY_MAT_ASSET.
DATA:ITAB_MAT_ASSET TYPE TABLE OF TY_MAT_ASSET,
WA_MAT_ASSET TYPE TY_MAT_ASSET.
DATA: ITAB_ASTG TYPE STANDARD TABLE OF /BIC/AZMATASET00.
FIELD-SYMBOLS: <ASTG_FIELDS> TYPE /BIC/AZMATASET00.
DATA: ITAB_ASTG1 TYPE STANDARD TABLE OF /BIC/PZASET_TAG.
FIELD-SYMBOLS: <ASTG1_FIELDS> TYPE /BIC/PZASET_TAG.
DATA:LV_LINES TYPE I.
DATA: WA_SOURCE TYPE _TY_S_SC_1.
IF SOURCE_PACKAGE IS NOT INITIAL.
SELECT
/BIC/ZCUSTOMER
/BIC/ZPLANT
/BIC/ZASET_TAG
/BIC/ZASSEST
/BIC/ZAST_SUBN
FROM /BIC/PZASET_TAG
INTO TABLE ITAB_ASTG1
FOR ALL ENTRIES IN SOURCE_PACKAGE
WHERE /BIC/ZCUSTOMER = SOURCE_PACKAGE-/BIC/ZCUSTOMER
AND /BIC/ZPLANT = SOURCE_PACKAGE-/BIC/ZPLANT
AND /BIC/ZASSEST = SOURCE_PACKAGE-/BIC/ZASSEST
AND /BIC/ZAST_SUBN = SOURCE_PACKAGE-/BIC/ZAST_SUBN
AND OBJVERS = 'A'.
SELECT /BIC/ZCUSTOMER
/BIC/ZPLANT
/BIC/ZASET_TAG
/BIC/ZMAT_PLNT FROM /BIC/AZMATASET00
INTO TABLE ITAB_MAT_ASSET
FOR ALL ENTRIES IN ITAB_ASTG1
WHERE /BIC/ZCUSTOMER = ITAB_ASTG1-/BIC/ZCUSTOMER
AND /BIC/ZPLANT = ITAB_ASTG1-/BIC/ZPLANT
AND /BIC/ZASET_TAG = ITAB_ASTG1-/BIC/ZASET_TAG.
ENDIF.
IF ITAB_ASTG1 IS NOT INITIAL.
SORT ITAB_ASTG1 BY /BIC/ZCUSTOMER /BIC/ZPLANT /BIC/ZASET_TAG.
ENDIF.
DESCRIBE TABLE SOURCE_PACKAGE LINES LV_LINES.
"Deleting Asset Tags from Source_package which are DB existing
"and keeping only new ones.
LOOP AT SOURCE_PACKAGE ASSIGNING <SOURCE_FIELDS> FROM 1 TO LV_LINES
.
<SOURCE_FIELDS>-/BIC/ZDYCR_AST = 'N'.
IF <SOURCE_FIELDS>-/BIC/ZASSEST IS NOT INITIAL .
LOOP AT ITAB_ASTG1 ASSIGNING <ASTG1_FIELDS> WHERE
/BIC/ZASSEST = <SOURCE_FIELDS>-/BIC/ZASSEST
AND /BIC/ZAST_SUBN = <SOURCE_FIELDS>-/BIC/ZAST_SUBN.
READ TABLE ITAB_MAT_ASSET INTO WA_MAT_ASSET WITH KEY
/BIC/ZCUSTOMER = <SOURCE_FIELDS>-/BIC/ZCUSTOMER
/BIC/ZPLANT = <SOURCE_FIELDS>-/BIC/ZPLANT
/BIC/ZASET_TAG = <ASTG1_FIELDS>-/BIC/ZASET_TAG.
IF SY-SUBRC EQ 0.
<SOURCE_FIELDS>-/BIC/ZDYCR_AST = 'N'.
ELSE.
<SOURCE_FIELDS>-/BIC/ZDYCR_AST = 'Y'.
WA_SOURCE = <SOURCE_FIELDS>.
WA_SOURCE-/BIC/ZASET_TAG = <ASTG1_FIELDS>-/BIC/ZASET_TAG.
APPEND WA_SOURCE TO SOURCE_PACKAGE.
ENDIF.
ENDLOOP.
ENDIF.
ENDLOOP.
I have included a example in attached file .
Thanks
Rashid