‎2009 Jan 20 10:24 AM
Hi All,
My requirement is as below:
I need to sum up the values based on the month as shown below:
*December--(Sum up to November(11))
IF p_monat = lc_12.
lv_hslxx = ls_fagl-hsl01 + ls_fagl-hsl02 + ls_fagl-hsl03 + ls_fagl-hsl04 +
ls_fagl-hsl05 + ls_fagl-hsl06 + ls_fagl-hsl07 + ls_fagl-hsl08 +
ls_fagl-hsl09 + ls_fagl-hsl10 + ls_fagl-hsl11 + ls_fagl-hslvt.
I want to process the same dynamically: (As shown below and preparing the string LS_FAGL-HSL<Month No>.
DATA : lv_month TYPE numc2 ,
lv_text TYPE string,
lv_num TYPE hslxx12,
lv_cnt TYPE char2.
CLEAR lv_month.
LOOP AT GT_FAGL into LS_FAGL.
lv_month = lv_month - p_monat.
DO lv_month TIMES.
lv_cnt = lv_cnt + 1.
CONCATENATE 'LS_FAGL-HSL0' lv_cnt INTO lv_text.
TRY.
lv_num = ( lv_text ) .
CATCH CX_SY_CONVERSION_NO_NUMBER.
ENDTRY.
lv_hslxx = lv_hslxx + lv_num.
ENDDO.
ENDLOOP.
When moving the data in LV_NUM there is an exception raised...
Kindly help in filling you the value in LV_TEXT.
Regards
Shiva
‎2009 Jan 20 10:33 AM
Hi
U need to use the field-symbols:
DATA : LV_MONTH TYPE NUMC2 ,
LV_TEXT TYPE STRING,
LV_NUM TYPE HSLXX12,
LV_CNT TYPE CHAR2.
FIELD-SYMBOLS: <FS_HSLXX> TYPE ANY.
CLEAR LV_MONTH.
LOOP AT GT_FAGL INTO LS_FAGL.
LV_MONTH = LV_MONTH - P_MONAT.
DO LV_MONTH TIMES.
LV_CNT = LV_CNT + 1.
CONCATENATE 'LS_FAGL-HSL0' LV_CNT INTO LV_TEXT.
ASSIGN COMPONEND LV_TEXT OF STRUCTURE LS_FAGL TO <FS_HSLXX>.
IF SY-SUBRC = 0.
LV_HSLXX = LV_HSLXX + <FS_HSLXX>.
ENDIF.
ENDDO.
ENDLOOP.Max
‎2009 Jan 20 10:29 AM
Hi Shiva,
Use field symbols to achieve the desired result.
Cheers!
Sid
‎2009 Jan 20 10:34 AM
Sid,
can you replicate the below code using field symbols?
LOOP AT GT_FAGL into LS_FAGL.
lv_month = lv_month - p_monat.
DO lv_month TIMES.
lv_cnt = lv_cnt + 1.
CONCATENATE 'LS_FAGL-HSL0' lv_cnt INTO lv_text.
TRY.
lv_num = ( lv_text ) .
CATCH CX_SY_CONVERSION_NO_NUMBER.
ENDTRY.
lv_hslxx = lv_hslxx + lv_num.
ENDDO.
ENDLOOP.
Also without fieldd symbols cant we achieve? Please explain
Thanks
Shiva
‎2009 Jan 20 10:33 AM
Hi
U need to use the field-symbols:
DATA : LV_MONTH TYPE NUMC2 ,
LV_TEXT TYPE STRING,
LV_NUM TYPE HSLXX12,
LV_CNT TYPE CHAR2.
FIELD-SYMBOLS: <FS_HSLXX> TYPE ANY.
CLEAR LV_MONTH.
LOOP AT GT_FAGL INTO LS_FAGL.
LV_MONTH = LV_MONTH - P_MONAT.
DO LV_MONTH TIMES.
LV_CNT = LV_CNT + 1.
CONCATENATE 'LS_FAGL-HSL0' LV_CNT INTO LV_TEXT.
ASSIGN COMPONEND LV_TEXT OF STRUCTURE LS_FAGL TO <FS_HSLXX>.
IF SY-SUBRC = 0.
LV_HSLXX = LV_HSLXX + <FS_HSLXX>.
ENDIF.
ENDDO.
ENDLOOP.Max
‎2009 Jan 20 10:34 AM
Hi Shiva,
DO lv_month TIMES.
lv_cnt = lv_cnt + 1.
CONCATENATE 'LS_FAGL-HSL0' lv_cnt INTO lv_text. "<=Here checkHere for november month you will get 11 and the name is
'LS_FAGL-HSL011' but I guess you have your field name as *'LS_FAGL-HSL11' *.
so change your field name as 'LS_FAGL-HSL011'
Use field symbol as
FIELD-SYMBOLS: <fs_field> TYPE ANY
ASSIGN COMPONENT lv_text OF STRUCTURE LS_FAGL TO <fs_field>.
lv_num = <fs_field>hope this helps.
Regards,
Manoj Kumar P
Edited by: Manoj Kumar on Jan 20, 2009 11:35 AM
Edited by: Manoj Kumar on Jan 20, 2009 11:36 AM
Edited by: Manoj Kumar on Jan 20, 2009 11:47 AM
‎2009 Jan 20 10:39 AM
try like dis...
FIELD-SYMBOLS: <value> TYPE ANY.
LOOP AT GT_FAGL into LS_FAGL.
lv_month = lv_month - p_monat.
DO lv_month TIMES.
lv_cnt = lv_cnt + 1.
CONCATENATE 'LS_FAGL-HSL0' lv_cnt INTO lv_text.
ASSIGN COMPONENT lv_text OF STRUCTURE LS_FAGL TO <value>.
TRY.
lv_num = <value> .
CATCH CX_SY_CONVERSION_NO_NUMBER.
ENDTRY.
lv_hslxx = lv_hslxx + lv_num.
ENDDO.
ENDLOOP.
‎2009 Jan 20 10:42 AM
if u want to do with out field symbols. think u can use the case statement,
and write perform for each case.if u like to, u can use the FS to jus vary the month in the performs..