Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

'Desired operation cannot be performed'

Former Member
0 Kudos

HI,

I am using an ALV type report to show various information relating to readings of Equipment.

I wish to group the results together so that I have a total line for each different Equipment that appears on the report together with a summation of the reading's relating to the Equipment.

I am trying to use the sum functionality but I keep getting a message saying 'Desired operation cannot be performed for column 'reading'.

i have taken the field reading as a packed decimal,but when i am taking the field as a standard db table it doesn't give this error.

Any adivce is appreciated.

Thanks & Regards,

Edited by: ALI SAMI on Dec 13, 2008 6:24 AM

1 ACCEPTED SOLUTION

Former Member

can u pls show the code you have written??

5 REPLIES 5

Former Member

can u pls show the code you have written??

0 Kudos

HI,

YA

check this,

REPORT Zalv123 NO STANDARD PAGE HEADING LINE-SIZE 132

LINE-COUNT 66(3)

MESSAGE-ID ZF.

&*********************************************************************

*& TYPE-GROUP DECLARATION

&*********************************************************************

TYPE-POOLS : SLIS.

&*********************************************************************

*& DATABASE TABLES DECLARATION

&*********************************************************************

TABLES : IMPTT,EQKT.

&*********************************************************************

*& INTERNAL TABLE DECLARATIONS

&*********************************************************************

  • INTERNAL TABLE DECLARATION FOR DELIVERY DOCUMENT HEADER DATA

DATA : BEGIN OF IT_IMPTT OCCURS 0,

POINT LIKE IMPTT-POINT,

MPOBJ LIKE IMPTT-MPOBJ,

MPTYP LIKE IMPTT-MPTYP,

END OF IT_IMPTT,

  • INTERNAL TABLE DECLARATION FOR DELIVERY DOCUMENT HEADER DATA

BEGIN OF IT_EQUI OCCURS 0,

EQUNR LIKE EQUI-EQUNR,

OBJNR LIKE EQUI-OBJNR,

END OF IT_EQUI,

  • INTERNAL TABLE DECLARATION FOR DELIVERY DOCUMENT HEADER DATA

BEGIN OF IT_EQKT OCCURS 0,

EQUNR LIKE EQKT-EQUNR,

EQKTX LIKE EQKT-EQKTX,

END OF IT_EQKT,

  • INTERNAL TABLE DECLARATION FOR Tax/Insurance Data

BEGIN OF IT_IMRG OCCURS 0,

MDOCM LIKE IMRG-MDOCM,

POINT LIKE IMRG-POINT,

IDATE LIKE IMRG-IDATE,

RECDV LIKE IMRG-RECDV,

CNTRR LIKE IMRG-CNTRR,

CDIFF LIKE IMRG-CDIFF,

END OF IT_IMRG,

  • INTERNAL TABLE DECLARATION FOR Tax/Insurance Data

BEGIN OF IT_J_3GABEST OCCURS 0,

J_3GEMPFAE LIKE J_3GABEST-J_3GEMPFAE,

J_3GRESSOU LIKE J_3GABEST-J_3GRESSOU,

END OF IT_J_3GABEST,

  • INTERNAL TABLE DECLARATION FOR FINAL OUTPUT

BEGIN OF IT_OUTPUT OCCURS 0,

SLNO TYPE I,

EQUNR LIKE EQUI-EQUNR,

OBJNR LIKE EQUI-OBJNR,

POINT LIKE IMPTT-POINT,

MPOBJ LIKE IMPTT-MPOBJ,

MPTYP LIKE IMPTT-MPTYP,

EQKTX LIKE EQKT-EQKTX,

MDOCM LIKE IMRG-MDOCM,

IDATE LIKE IMRG-IDATE,

CNTRR TYPE P DECIMALS 2,

CDIFF LIKE IMRG-CDIFF,

CDIFF1 LIKE IMRG-CDIFF,

CDIFF2 LIKE IMRG-CDIFF,

ZKM TYPE P DECIMALS 2,

ZSTR TYPE P DECIMALS 2,

ZEND TYPE P DECIMALS 2,

ZDSL TYPE P DECIMALS 2,

ZACTUAL TYPE P DECIMALS 2,

J_3GEMPFAE LIKE J_3GABEST-J_3GEMPFAE,

J_3GRESSOU LIKE J_3GABEST-J_3GRESSOU,

END OF IT_OUTPUT.

&*********************************************************************

*& ALV DECLARATIONS

&*********************************************************************

DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

DATA: W_REPID LIKE SY-REPID.

DATA: W_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

DATA: W_EVENTS TYPE SLIS_ALV_EVENT.

DATA: LAYOUT TYPE SLIS_LAYOUT_ALV.

DATA: LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,

TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

DATA : ST_FIELDCAT TYPE SLIS_FIELDCAT_ALV,

IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV,

ST_EVENT TYPE SLIS_ALV_EVENT,

ST_EVENT1 TYPE SLIS_ALV_EVENT,

IT_EVENT TYPE SLIS_T_EVENT,

IT_EVENT1 TYPE SLIS_T_EVENT.

DATA : ST_LIST TYPE SLIS_LISTHEADER,

IT_LIST TYPE SLIS_T_LISTHEADER,

IT_LIST1 TYPE SLIS_T_LISTHEADER,

IT_LIST2 TYPE SLIS_T_LISTHEADER.

DATA: WA_SORT TYPE SLIS_SORTINFO_ALV, "WORKAREA FOR SORT

IT_SORT TYPE SLIS_T_SORTINFO_ALV. "INTERNAL TABLE FOR SORT

DATA : G_TOP_PAGE TYPE SLIS_FORMNAME.

  • DATA DECLARATIONS RELATED TO ALV

DATA:

FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, " Fieldcat table

FIELDCAT1 TYPE SLIS_T_FIELDCAT_ALV,

FIELDCAT_LN LIKE LINE OF FIELDCAT, " Line of Fieldcat

G_FIELD TYPE SLIS_FIELDNAME, " Name of field

G_COL_POS TYPE I , " Column Position

G_PGM LIKE SY-REPID, " Program Name

G_FIELD_VALUE(20), " Value of Field

G_DDICTXT(1), " Text type Indicator

G_SELTEXT(30), " Selection Text

G_TABLE_NAME(10). " Table name

  • USED FOR ALV HEADER & FOOTER

DATA:

GT_EVENTS TYPE SLIS_T_EVENT,

GT_EVENTS1 TYPE SLIS_T_EVENT,

FS_EVENTCAT LIKE LINE OF GT_EVENTS.

DATA SLNO TYPE I.

DATA SUM TYPE P DECIMALS 2.

DATA SUM1 TYPE P DECIMALS 2.

DATA SUM2 TYPE P DECIMALS 2.

DATA SUM3 TYPE P DECIMALS 2.

DATA SUM4 TYPE P DECIMALS 2.

DATA FLAG.

DATA COUNT TYPE I.

DATA V_LINES TYPE I.

&*********************************************************************

*& SELECTION-SCREEN DESIGN

&*********************************************************************

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_EQUNR FOR IT_EQUI-EQUNR OBLIGATORY,

S_IDATE FOR IT_IMRG-IDATE.

SELECTION-SCREEN END OF BLOCK BLK1.

&*********************************************************************

*& INITIALIZATION

&*********************************************************************

INITIALIZATION.

W_REPID = SY-REPID.

&*********************************************************************

*& AT SELECTION-SCREEN EVENT

&*********************************************************************

AT SELECTION-SCREEN.

PERFORM SUB_VALIDATION_EQUNR.

&*********************************************************************

*& START-OF-SELECTION EVENT

&*********************************************************************

START-OF-SELECTION.

PERFORM SUB_SELECT_RECORD.

PERFORM SUB_MOVE_RECORD.

&*********************************************************************

*& END-OF-SELECTION EVENT

&*********************************************************************

END-OF-SELECTION.

PERFORM SUB_PREPARE_FIELDCATALOG.

PERFORM SUB_DETERMINE_SORT_SEQUENCE.

PERFORM SUB_SHOW_ALV_LIST.

&----


*& Form SUB_VALIDATION_VBELN

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_VALIDATION_EQUNR .

DATA: LV_EQUNR LIKE EQUI-EQUNR.

IF NOT S_EQUNR IS INITIAL.

SELECT SINGLE EQUNR

INTO LV_EQUNR

FROM EQUI

WHERE EQUNR IN S_EQUNR.

IF SY-SUBRC <> 0.

MESSAGE E000(ZF).

ENDIF.

ENDIF.

ENDFORM. " SUB_VALIDATION_EQUNR

&----


*& Form SUB_SELECT_RECORD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_SELECT_RECORD .

SELECT EQUNR OBJNR FROM EQUI INTO TABLE IT_EQUI WHERE EQUNR IN S_EQUNR.

SELECT EQUNR EQKTX FROM EQKT INTO TABLE IT_EQKT

FOR ALL ENTRIES IN IT_EQUI

WHERE EQUNR = IT_EQUI-EQUNR.

SELECT J_3GEMPFAE J_3GRESSOU FROM J_3GABEST INTO TABLE IT_J_3GABEST

FOR ALL ENTRIES IN IT_EQUI

WHERE J_3GRESSOU = IT_EQUI-EQUNR.

SELECT POINT MPOBJ MPTYP FROM IMPTT INTO TABLE IT_IMPTT

FOR ALL ENTRIES IN IT_EQUI

WHERE MPOBJ = IT_EQUI-OBJNR

AND MPTYP IN ('B','F','K').

SELECT MDOCM POINT IDATE RECDV CNTRR CDIFF FROM IMRG INTO TABLE IT_IMRG

FOR ALL ENTRIES IN IT_IMPTT

WHERE POINT = IT_IMPTT-POINT

AND IDATE IN S_IDATE.

SORT IT_IMRG BY IDATE.

DESCRIBE TABLE IT_IMRG LINES V_LINES.

ENDFORM. " SUB_SELECT_RECORD

&----


*& Form SUB_MOVE_RECORD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_MOVE_RECORD .

SUM = 0.

SUM1 = 0.

SUM2 = 0.

FLAG = 'X'.

LOOP AT IT_EQUI.

LOOP AT IT_IMRG WHERE IDATE IN S_IDATE.

COUNT = COUNT + 1.

ON CHANGE OF IT_IMRG-IDATE.

IF FLAG <> 'X'.

APPEND IT_OUTPUT.

CLEAR IT_OUTPUT.

CLEAR: SUM,SUM1,SUM2,SUM3,SUM4.

ENDIF.

ENDON.

IT_OUTPUT-IDATE = IT_IMRG-IDATE.

LOOP AT IT_IMPTT WHERE MPOBJ = IT_EQUI-OBJNR AND POINT = IT_IMRG-POINT.

IT_OUTPUT-EQUNR = IT_EQUI-EQUNR.

READ TABLE IT_EQKT WITH KEY EQUNR = IT_EQUI-EQUNR.

IF SY-SUBRC = 0.

IT_OUTPUT-EQKTX = IT_EQKT-EQKTX.

ENDIF.

IF IT_IMPTT-MPTYP = 'B'.

SUM = SUM + IT_IMRG-CNTRR.

SUM1 = SUM1 + IT_IMRG-CDIFF.

ENDIF.

IF IT_IMPTT-MPTYP = 'F'.

SUM2 = SUM2 + IT_IMRG-RECDV.

ENDIF.

IF IT_IMPTT-MPTYP = 'K'.

SUM3 = SUM3 + IT_IMRG-CNTRR.

SUM4 = SUM4 + IT_IMRG-CDIFF.

ENDIF.

ENDLOOP.

IT_IMRG-CNTRR = SUM.

IT_IMRG-CDIFF = SUM1.

IT_OUTPUT-ZDSL = SUM2.

CALL FUNCTION 'PM_TIME_CONVERSION'

EXPORTING

TIME_IN = IT_IMRG-CNTRR

UNIT_IN = 'S'

  • UNIT_IN_INT = ' '

UNIT_OUT = 'H'

  • UNIT_OUT_INT = ' '

IMPORTING

  • EXTERNAL_UNIT =

  • INTERNAL_UNIT =

TIME_OUT = IT_IMRG-CNTRR

  • EXCEPTIONS

  • INVALID_TIME_UNIT = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IT_OUTPUT-CNTRR = IT_IMRG-CNTRR.

CALL FUNCTION 'PM_TIME_CONVERSION'

EXPORTING

TIME_IN = IT_IMRG-CDIFF

UNIT_IN = 'S'

  • UNIT_IN_INT = ' '

UNIT_OUT = 'H'

  • UNIT_OUT_INT = ' '

IMPORTING

  • EXTERNAL_UNIT =

  • INTERNAL_UNIT =

TIME_OUT = IT_IMRG-CDIFF

  • EXCEPTIONS

  • INVALID_TIME_UNIT = 1

  • OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF IT_IMPTT-MPTYP = 'B'.

IT_OUTPUT-ZKM = IT_IMRG-CDIFF.

IT_OUTPUT-ZSTR = IT_OUTPUT-CNTRR - IT_OUTPUT-ZKM.

ENDIF.

IF IT_IMPTT-MPTYP = 'K'.

IT_OUTPUT-ZKM = SUM4.

IT_OUTPUT-ZSTR = SUM3 - SUM4.

ENDIF.

CLEAR FLAG.

ENDLOOP.

  • IF COUNT = V_LINES.

APPEND IT_OUTPUT.

CLEAR IT_OUTPUT.

  • ENDIF.

DELETE IT_OUTPUT WHERE EQUNR IS INITIAL.

ENDLOOP.

LOOP AT IT_OUTPUT.

SLNO = SLNO + 1.

IT_OUTPUT-SLNO = SLNO.

MODIFY IT_OUTPUT.

CLEAR IT_OUTPUT.

ENDLOOP.

ENDFORM. " SUB_MOVE_RECORD

&----


*& Form SUB_PREPARE_FIELDCATALOG

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_PREPARE_FIELDCATALOG .

  • S No.

G_FIELD = 'SLNO'.

G_TABLE_NAME = 'IT_OUTPUT '.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'S.No.'(000).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • S No.

G_FIELD = 'IDATE'.

G_TABLE_NAME = 'IMRG'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'DATE'(000).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • Name of the PROFIT CENTER

G_FIELD = 'EQUNR'.

G_TABLE_NAME = 'EQUI'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Equipment Number'(001).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • Name of the PROFIT CENTER

G_FIELD = 'EQKTX'.

G_TABLE_NAME = 'EQKT'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Equipment Description'(002).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • Name of the Company/Non Company

G_FIELD = 'ZSTR'.

G_TABLE_NAME = 'IT_OUTPUT'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Starting Reading'(003).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • Name of the Company/Non Company

G_FIELD = 'CNTRR'.

G_TABLE_NAME = 'IMRG'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Closing Reading'(003).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • PAN No.

G_FIELD = 'ZKM'.

G_TABLE_NAME = 'IT_OUTPUT'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Number of KM/HR'(004).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • PAN No.

G_FIELD = 'ZDSL'.

G_TABLE_NAME = 'IT_OUTPUT'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Total Diesel Issued'(005).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

  • Name of the Company/Non Company

G_FIELD = 'ZACTUAL'.

G_TABLE_NAME = 'IT_OUTPUT'.

G_DDICTXT = 'L'.

FIELDCAT_LN-SELTEXT_L = 'Actual Consumption per KM/HR'(006).

PERFORM FIELDCAT_FILL USING G_FIELD G_TABLE_NAME G_DDICTXT.

ENDFORM. " BUILD_FIELDCAT

&----


*& Form FIELDCAT_FILL

&----


  • To set the properties of the FIELDCAT

----


FORM FIELDCAT_FILL USING FIELD_VALUE

F_TABLE_NAME

F_DDICTXT.

ADD 1 TO G_COL_POS.

  • Assigning values to the Fieldcat

FIELDCAT_LN-REF_TABNAME = F_TABLE_NAME.

FIELDCAT_LN-FIELDNAME = FIELD_VALUE.

FIELDCAT_LN-DDICTXT = F_DDICTXT.

FIELDCAT_LN-KEY = SPACE.

  • FIELDCAT_LN-DO_SUM = SPACE.

FIELDCAT_LN-COL_POS = G_COL_POS.

FIELDCAT_LN-NO_OUT = SPACE.

FIELDCAT_LN-QFIELDNAME = SPACE.

FIELDCAT_LN-HOTSPOT = SPACE.

IF FIELD_VALUE = 'ZKM'.

FIELDCAT_LN-DO_SUM = 'X'.

ENDIF.

  • Appending Fieldcat

APPEND FIELDCAT_LN TO FIELDCAT.

CLEAR FIELDCAT_LN.

ENDFORM. " SUB_PREPARE_FIELDCATALOG

&----


*& Form FIELDCAT_FILL

&----


  • To set the properties of the FIELDCAT

----


*FORM FIELDCAT_FILL1 USING FIELD_VALUE

  • F_TABLE_NAME

  • F_DDICTXT.

  • ADD 1 TO G_COL_POS.

    • Assigning values to the Fieldcat

  • FIELDCAT_LN-REF_TABNAME = F_TABLE_NAME.

  • FIELDCAT_LN-FIELDNAME = FIELD_VALUE.

  • FIELDCAT_LN-DDICTXT = F_DDICTXT.

  • FIELDCAT_LN-KEY = SPACE.

  • FIELDCAT_LN-DO_SUM = 'X'.

  • FIELDCAT_LN-COL_POS = G_COL_POS.

  • FIELDCAT_LN-NO_OUT = SPACE.

  • FIELDCAT_LN-QFIELDNAME = SPACE.

  • FIELDCAT_LN-HOTSPOT = SPACE.

*

    • Appending Fieldcat

  • APPEND FIELDCAT_LN TO FIELDCAT.

  • CLEAR FIELDCAT_LN.

*

*ENDFORM. " SUB_PREPARE_FIELDCATALOG

&----


*& Form SUB_DETERMINE_SORT_SEQUENCE

&----


  • Defines the sort sequence of the report

----


FORM SUB_DETERMINE_SORT_SEQUENCE.

WA_SORT-FIELDNAME = 'EQUNR'.

WA_SORT-SUBTOT = 'X'.

WA_SORT-UP = 'X'.

APPEND WA_SORT TO IT_SORT.

CLEAR WA_SORT.

ENDFORM. " SUB_DETERMINE_SORT_SEQUENCE

&----


*& Form SUB_SHOW_ALV_LIST

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM SUB_SHOW_ALV_LIST .

ST_EVENT-NAME = 'USER_COMMAND'.

APPEND ST_EVENT TO IT_EVENT.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

EXPORTING

  • I_INTERFACE_CHECK = ' '

  • I_BYPASSING_BUFFER = ' '

  • I_BUFFER_ACTIVE = ' '

I_CALLBACK_PROGRAM = W_REPID

  • I_CALLBACK_PF_STATUS_SET = ' '

  • I_CALLBACK_USER_COMMAND = ' '

I_CALLBACK_TOP_OF_PAGE = G_TOP_PAGE

  • I_CALLBACK_HTML_TOP_OF_PAGE = ' '

  • I_CALLBACK_HTML_END_OF_LIST = ' '

  • I_STRUCTURE_NAME =

  • I_BACKGROUND_ID = ' '

  • I_GRID_TITLE =

  • I_GRID_SETTINGS =

IS_LAYOUT = LAYOUT

IT_FIELDCAT = FIELDCAT

  • IT_EXCLUDING =

  • IT_SPECIAL_GROUPS =

IT_SORT = IT_SORT[]

  • IT_FILTER =

  • IS_SEL_HIDE =

I_DEFAULT = 'X'

I_SAVE = 'A'

  • IS_VARIANT =

IT_EVENTS = GT_EVENTS[]

  • IT_EVENT_EXIT =

  • IS_PRINT =

  • IS_REPREP_ID =

  • I_SCREEN_START_COLUMN = 0

  • I_SCREEN_START_LINE = 0

  • I_SCREEN_END_COLUMN = 0

  • I_SCREEN_END_LINE = 0

  • I_HTML_HEIGHT_TOP = 0

  • I_HTML_HEIGHT_END = 0

  • IT_ALV_GRAPHICS =

  • IT_HYPERLINK =

  • IT_ADD_FIELDCAT =

  • IT_EXCEPT_QINFO =

  • IR_SALV_FULLSCREEN_ADAPTER =

  • IMPORTING

  • E_EXIT_CAUSED_BY_CALLER =

  • ES_EXIT_CAUSED_BY_USER =

TABLES

T_OUTTAB = IT_OUTPUT

EXCEPTIONS

PROGRAM_ERROR = 1

OTHERS = 2

.

IF SY-SUBRC <> 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

ENDFORM. " SUB_SHOW_ALV_LIST

0 Kudos

Hi,

You should specify fieldcat-datatype for the field you want to sum up.'

Regards

Karthik D

0 Kudos

HI,

CAN U EXPLAIN HOW TO DECLARE.

THANKZ

0 Kudos

THANKS BOSS,

SOLVED.