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: 

error in get cursor statement..

Former Member
0 Kudos
152

Hi,

I get a syntax error in this statement in ECC 6.0

AT LINE-SELECTION.

GET CURSOR LINE L_LINE VALUE ROW_DATA.

The error says

row_data cannot be converted to a character-type field.

Here

L_line is sy-index and

Row data is a TYPE defined in my program as follows

BUKRS LIKE GLPCT-RBUKRS,

PRCTR LIKE GLPCT-RPRCTR,

ITEM LIKE ECMCT-RITEM,

SUM1 LIKE ECMCT-HSLVT,

SUM2 LIKE ECMCT-HSLVT,

This works well in 4.6 but fails in ECC 6.0. If I am right this is because SAP expects the line to be fully character based but sum1 and sum2 and currency types. So the incomaptibility.

How do I solve this issue. I want to read the line which the user double clicks and want to manipulate those currency values too.

thks

1 ACCEPTED SOLUTION

I355602
Product and Topic Expert
Product and Topic Expert
0 Kudos
107

Hi,

Refer the demo:-


TABLES : LFA1, LFB1.

TYPES : BEGIN OF VENDOR,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        ORT01 LIKE LFA1-ORT01,
        END OF VENDOR,

        BEGIN OF VENDOR1,
        LIFNR LIKE LFA1-LIFNR,
        LAND1 LIKE LFA1-LAND1,
        BUKRS LIKE LFB1-BUKRS,
        END OF VENDOR1.

DATA : VENDOR_TAB TYPE STANDARD TABLE OF VENDOR INITIAL SIZE 20 WITH HEADER LINE,
       VENDOR1_TAB TYPE STANDARD TABLE OF VENDOR1 INITIAL SIZE 20 WITH HEADER LINE,
       FLDNAME(25),
       FLDVALUE(25).

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE 😕 'SECONDART LIST FOR VENDOR ID:', VENDOR_TAB-LIFNR COLOR 3.
  ULINE.

START-OF-SELECTION.

  SELECT LIFNR NAME1 ORT01
  FROM LFA1
  INTO CORRESPONDING FIELDS OF TABLE VENDOR_TAB.


AT LINE-SELECTION.

  GET CURSOR FIELD FLDNAME VALUE FLDVALUE.

  CASE FLDNAME.

    WHEN 'VENDOR_TAB-LIFNR' OR 'VENDOR_TAB-NAME1' OR 'VENDOR_TAB-ORT01'.

      IF SY-LSIND EQ 1.
        SELECT A~LIFNR A~LAND1 B~BUKRS
          FROM LFA1 AS A
          INNER JOIN LFB1 AS B
          ON A~LIFNR = B~LIFNR
          INTO CORRESPONDING FIELDS OF TABLE VENDOR1_TAB
          WHERE A~LIFNR = VENDOR_TAB-LIFNR.

        WRITE : /1 TEXT-001, 13 TEXT-004, 46 TEXT-005.
        ULINE.
        LOOP AT VENDOR1_TAB.

          WRITE : /1 VENDOR1_TAB-LIFNR, 13 VENDOR1_TAB-LAND1, 46 VENDOR1_TAB-BUKRS.

        ENDLOOP.
        ULINE.
        IF SY-SUBRC <> 0.
          MESSAGE E005.
        ENDIF.

      ENDIF.

    WHEN OTHERS.

      MESSAGE E006.

  ENDCASE.

END-OF-SELECTION.

  WRITE : /1 TEXT-001, 13 TEXT-002, 46 TEXT-003.
  ULINE.

  FORMAT HOTSPOT.

  LOOP AT VENDOR_TAB.

    WRITE : /1 VENDOR_TAB-LIFNR, 13 VENDOR_TAB-NAME1, 46 VENDOR_TAB-ORT01.

    HIDE : VENDOR_TAB-LIFNR.

  ENDLOOP.
  ULINE.

Hope this helps you.

Regards,

Tarun

8 REPLIES 8

former_member194669
Active Contributor
0 Kudos
107

In the declaration part of ROW_DATA data types SUM1 SUM2 does not match with other fields which is not allowed in Unicode environment.So change the the type of it to NUMC.

Former Member
0 Kudos
107

Hi,

The ROW_DATA should be char type if not it gives you the su\yntax error.. check the below code

DATA l_line TYPE i.
DATA row_data(2000) TYPE c.

GET CURSOR LINE l_line VALUE row_data.

0 Kudos
107

Hi Avinash,

Thanks for ur suggestion. A related question will be, in case the line is read like that how do I then split the data of the character variable into my individual currency amounts for manipulation ?

thks

0 Kudos
107

Hi,

You can do this way to get the value of sum1.

DATA : l_char(20) TYPE c,
       l_int TYPE i,
       l_sum1 LIKE ecmct-hslvt.

REPLACE '.' IN l_char WITH space. CONDENSE l_char.
l_int = l_char.
l_sum1 = l_int / 100.

or

If you are reading the whole line than you need to use the position and offset to read the SUM1 value and use the above logic to convert into amount.

I355602
Product and Topic Expert
Product and Topic Expert
0 Kudos
108

Hi,

Refer the demo:-


TABLES : LFA1, LFB1.

TYPES : BEGIN OF VENDOR,
        LIFNR LIKE LFA1-LIFNR,
        NAME1 LIKE LFA1-NAME1,
        ORT01 LIKE LFA1-ORT01,
        END OF VENDOR,

        BEGIN OF VENDOR1,
        LIFNR LIKE LFA1-LIFNR,
        LAND1 LIKE LFA1-LAND1,
        BUKRS LIKE LFB1-BUKRS,
        END OF VENDOR1.

DATA : VENDOR_TAB TYPE STANDARD TABLE OF VENDOR INITIAL SIZE 20 WITH HEADER LINE,
       VENDOR1_TAB TYPE STANDARD TABLE OF VENDOR1 INITIAL SIZE 20 WITH HEADER LINE,
       FLDNAME(25),
       FLDVALUE(25).

TOP-OF-PAGE DURING LINE-SELECTION.
  WRITE 😕 'SECONDART LIST FOR VENDOR ID:', VENDOR_TAB-LIFNR COLOR 3.
  ULINE.

START-OF-SELECTION.

  SELECT LIFNR NAME1 ORT01
  FROM LFA1
  INTO CORRESPONDING FIELDS OF TABLE VENDOR_TAB.


AT LINE-SELECTION.

  GET CURSOR FIELD FLDNAME VALUE FLDVALUE.

  CASE FLDNAME.

    WHEN 'VENDOR_TAB-LIFNR' OR 'VENDOR_TAB-NAME1' OR 'VENDOR_TAB-ORT01'.

      IF SY-LSIND EQ 1.
        SELECT A~LIFNR A~LAND1 B~BUKRS
          FROM LFA1 AS A
          INNER JOIN LFB1 AS B
          ON A~LIFNR = B~LIFNR
          INTO CORRESPONDING FIELDS OF TABLE VENDOR1_TAB
          WHERE A~LIFNR = VENDOR_TAB-LIFNR.

        WRITE : /1 TEXT-001, 13 TEXT-004, 46 TEXT-005.
        ULINE.
        LOOP AT VENDOR1_TAB.

          WRITE : /1 VENDOR1_TAB-LIFNR, 13 VENDOR1_TAB-LAND1, 46 VENDOR1_TAB-BUKRS.

        ENDLOOP.
        ULINE.
        IF SY-SUBRC <> 0.
          MESSAGE E005.
        ENDIF.

      ENDIF.

    WHEN OTHERS.

      MESSAGE E006.

  ENDCASE.

END-OF-SELECTION.

  WRITE : /1 TEXT-001, 13 TEXT-002, 46 TEXT-003.
  ULINE.

  FORMAT HOTSPOT.

  LOOP AT VENDOR_TAB.

    WRITE : /1 VENDOR_TAB-LIFNR, 13 VENDOR_TAB-NAME1, 46 VENDOR_TAB-ORT01.

    HIDE : VENDOR_TAB-LIFNR.

  ENDLOOP.
  ULINE.

Hope this helps you.

Regards,

Tarun

Former Member
0 Kudos
107

Thanks Tarun. This demo is really good if I need to read the field's value which user clicked. What about reading the entire line ? I am actually trying to read the entire line and not just one field.

I am also going to try with the NUMC option as the other person suggested. Meanwhile if you have any other info, would be great.

thks

0 Kudos
107

Try to change your code this way and check whether it works?


report zaRs
       no standard page heading line-size 255.

data : l_line like sy-index.

data : begin of row_data occurs 0,
bukrs like glpct-rbukrs,
prctr like glpct-rprctr,
item like ecmct-ritem,
sum1 like dtaxnl9a-hashc,   " Changed to numc 24
sum2 like dtaxnl9a-hashc.   " Changed to numc 24
data : end of row_data.

at line-selection.
  get cursor line l_line value row_data.

Former Member
0 Kudos
107

Thanks, converting to NUMC 24 helped.