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: 

why i am getting **** as output? how to get first record and last record...

Former Member
0 Kudos

REPORT ZMYTESTPRG62 .

DATA : BEGIN OF ITAB OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

LAND1 LIKE KNA1-LAND1,

ORT01 LIKE KNA1-ORT01,

END OF ITAB.

SELECT kunnr name1 land1 ort01 FROM KNA1 INTO CORRESPONDING FIELDS OF

TABLE ITAB.

sort itab by land1.

LOOP AT ITAB.

at first.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

endat.

AT last.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

ENDAT.

ENDLOOP.

Any clues guyz...

thanks,

11 REPLIES 11

Former Member
0 Kudos

that is due to at first and at last..

do like this...

REPORT ZMYTESTPRG62 .

DATA : BEGIN OF ITAB OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

LAND1 LIKE KNA1-LAND1,

ORT01 LIKE KNA1-ORT01,

END OF ITAB.

<b>DATA : WTAB LIKE ITAB.</b>

SELECT kunnr name1 land1 ort01 FROM KNA1 INTO CORRESPONDING FIELDS OF

TABLE ITAB.

<b>MOVE-CORRESPONDING ITAB TO WTAB.</b>

sort itab by land1.

LOOP AT ITAB.

at first.

<b>WRITE : / WTAB-KUNNR, WTAB-NAME1, WTAB-LAND1, WTAB-ORT01.</b>endat.

AT last.

<b>WRITE : / WTAB-KUNNR, WTAB-NAME1, WTAB-LAND1, WTAB-ORT01.</b>

ENDAT.

ENDLOOP.

regards

shiba dutta

Former Member
0 Kudos

Hi,

Debug the program to check what the problem is.

Maybe you can use the code below.

DATA l_lines TYPE i.

l_lines = LINES( ITAB ).

LOOP AT ITAB.

IF sy-tabix EQ 1.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

ENDIF.

IF sy-tabix EQ l_lines.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

ENDAT.

ENDLOOP.

Former Member
0 Kudos

HI,

If U use at end of OR AT new commands U will get the Output like this.

Just move your internal table data to another internal table and use that internal table for display and to check the conditions use first internal atbel.

Thanks,CSR.

*****Please reward if helpful.

Former Member
0 Kudos

Hi balaji

at event 'FIRST' and 'LAST' , normally we use for sumary data so the information that not involve should value value '******'.

you can get the first and the last record by reading the table itab.

data v_line like sy-linno.

Describe table itab lines v_line.

read table itab index 1.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

read table itab index v_line.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

Regards

Wiboon

Former Member
0 Kudos

Hi,

Whenever you try to print any data withing <b>at</b> and <b>endat</b>, all the fields except for the key fields will be ****

There are 2 ways of avoiding it.

1) Copy the workarea into another one before at and print from that.

2)Set a variable = sy-tabix.

read <int_table > with index <Variable> -


within your AT....ENDAT statement.

paruchuri_nagesh
Active Contributor
0 Kudos

hmmmm

velpuri

at first is not to retrieve first record just it acts as top of page in control braek statement

at last is no to use for retrieving last record it acts as end of page in control break statement

regards

Nagesh.Paruchuri

Former Member
0 Kudos

hi

check whether the table is initial or not.(while debugging)

see this example.

TYPES: BEGIN OF COMPANIES_TYPE,

NAME(30),

PRODUCT(20),

SALES TYPE I,

END OF COMPANIES_TYPE.

DATA: COMPANIES TYPE STANDARD TABLE OF COMPANIES_TYPE WITH

NON-UNIQUE DEFAULT KEY INITIAL SIZE 20,

WA_COMPANIES TYPE COMPANIES_TYPE.

...

LOOP AT COMPANIES INTO WA_COMPANIES.

AT FIRST.

SUM.

WRITE: 'Sum of all SALES:',

55 WA_COMPANIES-SALES.

ENDAT.

WRITE: / WA_COMPANIES-NAME, WA_COMPANIES-PRODUCT,

55 WA_COMPANIES-SALES.

ENDLOOP

Regards,

Prasant

*reward if useful

Former Member
0 Kudos

Hi,

The reason for '****' printed for first and last record is due to 'At first' and 'At last' statement.

On executing 'At first', the contents of the work area will change to '****'.You can verify this by debugging the execution of 'At first' statement.

Similar reason for 'At last' statement.

As your requirement is to get the first and last record. you can follow the simply code mentioned below to acheive your objective.

Read table itab index 1.

This statement will retrieve the first record and you can display the required info accordingly.

Describe table itab lines l_no_of_line.

Above statement will give the no of lines in the internal table. l_no_of_line is a integer variable (type i)

Read table itab index l_no_of_line.

Above statement will retrive the last record based on index.

Hope this helps.....

Get back in case of any clarifications...

Regards,

Dilli

former_member387317
Active Contributor
0 Kudos

REPORT ZMYTESTPRG62 .

DATA : BEGIN OF WA,

KUNNR LIKE KNA1-KUNNR,

NAME1 LIKE KNA1-NAME1,

LAND1 LIKE KNA1-LAND1,

ORT01 LIKE KNA1-ORT01,

END OF WA.

DATA : ITAB like WA occurs 0.

SELECT kunnr name1 land1 ort01 FROM KNA1 INTO CORRESPONDING FIELDS OF

TABLE ITAB.

sort itab by land1.

LOOP AT ITAB into WA.

at first.

WRITE : / WA-KUNNR, WA-NAME1, WA-LAND1, WA-ORT01.

endat.

AT last.

WRITE : / WA-KUNNR, WA-NAME1, WA-LAND1, WA-ORT01.

ENDAT.

ENDLOOP.

Here I have not tested the porgram but it should work...

Just use work area here to solve this problem..

Reward Points if useful.

Thanks & Regards.

ilesh Nandaniya

Former Member
0 Kudos

hi,

Your code will not work as AT FIRST and AT LAST are used for different purpose.

For your requirement : For first record read table with index 1.

For last record - use describe to get total number of record and use that value to read the table and will get the last record

  • To know the last record in a table

DESCRIBE TABLE ITAB LINES SY-TFILL.

READ TABLE ITAB INDEX SY-TFILL.

- reward points if usefiul.

-umesh

Former Member
0 Kudos

hi,

after printing clear the header of the internal table.

SELECT kunnr name1 land1 ort01 FROM KNA1 INTO CORRESPONDING FIELDS OF

TABLE ITAB.

sort itab by land1.

LOOP AT ITAB.

at first.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

claer itab.

endat.

AT last.

WRITE : / ITAB-KUNNR, ITAB-NAME1, ITAB-LAND1, ITAB-ORT01.

clear itab.

ENDAT.

ENDLOOP.

if helpful reward some points.

with regards,

Suresh Aluri.