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: 

I can organize the data in the write without the numbers of columns?

Former Member
0 Kudos

Hi!! people.

In the write statement I can organize the data without the numbers of the line of a column? Because I do a report that write the month and quarter that the user want by a date. And if one month dont have information, the month is not displayed.

Example: JANUARY FEBRUARY JUN

$1,000 1,999 900

thanks!

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Use WRITE AT statement, Your code will look something like this.

<b>data: Pos like sy-fdpos.</b>

IF t_itab-monat = '01' .

WRITE <b>at POS</b> 'JANUARY'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '02' .

WRITE <b>at POS</b> 'FEBRUARY'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '03' .

WRITE <b>at POS</b> 'FIRST QUARTER'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '04' .

WRITE <b>at POS</b> 'APRIL'.

<b>Pos = Pos + 20.</b>

ENDIF.

20 need not be a constant you can vary it depending on the length of the string.

Pls. reward points if this solves your issue.

7 REPLIES 7

Former Member
0 Kudos

You can WRITE UNDER. From the help for WRITE:

Align output to the reference fields:

FIELD-SYMBOLS <FNAME>.

ASSIGN 'First Name' TO <FNAME>.

WRITE: /3 'Name'(001), 15 <FNAME>, 30 'RoomNo', 40 'Age'(002).

...

WRITE: / 'Peterson' UNDER 'Name'(001),

'Ron' UNDER <FNAME>,

'5.1' UNDER 'RoomNo',

(5) 24 UNDER TEXT-002.

This produces the following output (numbers appear right-justified in their output fields!):

Name First Name RoomNo Age

Peterson Ron 5.1 24

Rob

Former Member
0 Kudos

Can you not simply use IF statement to check whether data is present and write the output accordingly?

IF monthinformation is initial.

*-- don't write anything.

ELSE.

write:/ 'month information'.

ENDIF.

Former Member
0 Kudos

HI people, thanks for your help but I dont know why the system put my example in a wrong form.

This is my correcting example. The lines (-------) represent spaces because the system don't respect the spaces.

JANUARY-FEBRUARY--


JUN

$1,000---1,999--


900

How can I put JUN in the first place if JANUARY is not display because no have information.

thanks people.

0 Kudos

Can you please give us the definition of your internal table?

Former Member
0 Kudos

OK, this is the definition of my tables:

DATA: BEGIN OF t_bsis OCCURS 0,

bukrs TYPE bsis-bukrs,

dmbtr TYPE bsis-dmbtr,

monat TYPE bsis-monat,

gjahr TYPE bsis-gjahr,

hkont TYPE bsis-hkont,

END OF t_bsis.

DATA: BEGIN OF t_itab OCCURS 0,

dmbtr TYPE bsas-dmbtr,

bukrs TYPE bsas-bukrs,

monat TYPE bsas-monat,

gjahr TYPE bsas-gjahr,

hkont TYPE bsas-hkont,

precio TYPE bsas-dmbtr,

monat1 TYPE bsas-monat,

END OF t_itab.

-


This is an example of my IF:

*monat = month

IF t_itab-monat = '01' .

WRITE: 11 'JANUARY'.

ENDIF.

IF t_itab-monat = '02' .

WRITE: 33 'FEBRUARY'.

ENDIF.

IF t_itab-monat = '03' .

WRITE: 53 'FIRST QUARTER'.

ENDIF.

IF t_itab-monat = '04' .

WRITE: 84 'APRIL'.

ENDIF.

0 Kudos

In my earlier post, I was suggesting you do:


REPORT ztemp LINE-SIZE 80 MESSAGE-ID zc.

DATA: BEGIN OF t_itab OCCURS 0,
  dmbtr TYPE bsas-dmbtr,
  bukrs TYPE bsas-bukrs,
  monat TYPE bsas-monat,
  gjahr TYPE bsas-gjahr,
  hkont TYPE bsas-hkont,
  precio TYPE bsas-dmbtr,
  monat1 TYPE bsas-monat,
END OF t_itab.
*---------------------------------------------------------

t_itab-dmbtr = 100.
t_itab-monat = '01'.
APPEND t_itab.
t_itab-dmbtr = 200.
t_itab-monat = '02'.
APPEND t_itab.
t_itab-dmbtr = 300.
t_itab-monat = '03'.
APPEND t_itab.
t_itab-dmbtr = 400.
t_itab-monat = '04'.
APPEND t_itab.

LOOP AT t_itab.
  IF t_itab-monat = '01' .
    WRITE: /11 'JANUARY',
           /   t_itab-dmbtr UNDER 'JANUARY'.
  ENDIF.

  IF t_itab-monat = '02' .
    WRITE: /33 'FEBRUARY',
           /   t_itab-dmbtr UNDER 'FEBRUARY'.
  ENDIF.

  IF t_itab-monat = '03' .
    WRITE: /53 'FIRST QUARTER',
           /   t_itab-dmbtr UNDER 'FIRST QUARTER'.
  ENDIF.

  IF t_itab-monat = '04' .
    WRITE: /84 'APRIL',
           /   t_itab-dmbtr UNDER 'APRIL'.
  ENDIF.
ENDLOOP.

Rob

Former Member
0 Kudos

Use WRITE AT statement, Your code will look something like this.

<b>data: Pos like sy-fdpos.</b>

IF t_itab-monat = '01' .

WRITE <b>at POS</b> 'JANUARY'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '02' .

WRITE <b>at POS</b> 'FEBRUARY'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '03' .

WRITE <b>at POS</b> 'FIRST QUARTER'.

<b>Pos = Pos + 20.</b>

ENDIF.

IF t_itab-monat = '04' .

WRITE <b>at POS</b> 'APRIL'.

<b>Pos = Pos + 20.</b>

ENDIF.

20 need not be a constant you can vary it depending on the length of the string.

Pls. reward points if this solves your issue.