Application Development and Automation 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: 
Read only

Problem with Perform Headings.

Former Member
0 Likes
379

Hi,

I have Perform Headings and Perform Displaydata. In the initial display of data I used Top-of-page and display is good.

repid = sy-repid.

PERFORM displaydata.

ULINE.

TOP-OF-PAGE.

ULINE.

PERFORM headings.

ULINE.

After selecting all records with check boxes I displayed again. Here I am getting problem, Top-of-page is not allowed in case. I used this

AT USER-COMMAND.

CASE sy-ucomm.

WHEN 'SELE'.

SET PF-STATUS 'STAT'.

IF chbox = 'X'.

chbox = ' '.

ELSEIF chbox = ' '.

chbox = 'X'.

ENDIF.

ULINE.

PERFORM headings.

ULINE.

PERFORM displaydata.

ULINE.

and there is one empty line comming between headings and data. How can I get rid of this extra empty line?

And also with the headings I am running into another problem.

If I have headings first line is not comming into gt2_zprice, without headings last line is not comming into gt2_zprice from main internal table gt_zprice.

Can you please help me with the problem?

WHEN 'CMEMO'.

DESCRIBE TABLE gt_zprice LINES lv_cnt.

DO lv_cnt TIMES.

lv_index = sy-index + 1.

READ LINE lv_index FIELD VALUE chbox.

IF chbox = 'X'.

READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.

IF sy-subrc EQ 0.

gs_zprice1-index = sy-index.

APPEND gs_zprice1 TO gt2_zprice.

CLEAR gs_zprice1.

ENDIF.

ENDIF.

CLEAR chbox.

ENDDO.

Thanks,

Neelu.


repid = sy-repid.

PERFORM displaydata.
ULINE.
TOP-OF-PAGE.
  ULINE.
  PERFORM headings.
  ULINE.

AT USER-COMMAND.
  CASE sy-ucomm.

    WHEN 'SELE'.
      SET PF-STATUS 'STAT'.
      IF chbox = 'X'.
        chbox = ' '.
      ELSEIF chbox = ' '.
        chbox = 'X'.
      ENDIF.
      ULINE.
      PERFORM headings.
      ULINE.
      PERFORM displaydata.
      ULINE.

    WHEN 'CMEMO'.
      DESCRIBE TABLE gt_zprice LINES lv_cnt.
      DO lv_cnt TIMES.
        lv_index = sy-index + 1.
        READ LINE lv_index FIELD VALUE chbox.
        IF chbox = 'X'.
          READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.
          IF sy-subrc EQ 0.
            gs_zprice1-index = sy-index.
            APPEND gs_zprice1 TO gt2_zprice.
            CLEAR gs_zprice1.
          ENDIF.
        ENDIF.
        CLEAR chbox.
      ENDDO.

      gt4_zprice[] = gt2_zprice[].
      LOOP AT gt4_zprice INTO gs_zprice1.

Hi,

I have Perform Headings and Perform Displaydata. In the initial display of data I used Top-of-page and display is good.

repid = sy-repid.

PERFORM displaydata.

ULINE.

TOP-OF-PAGE.

ULINE.

PERFORM headings.

ULINE.

After selecting all records with check boxes I displayed again. Here I am getting problem, Top-of-page is not allowed in case. I used this

AT USER-COMMAND.

CASE sy-ucomm.

WHEN 'SELE'.

SET PF-STATUS 'STAT'.

IF chbox = 'X'.

chbox = ' '.

ELSEIF chbox = ' '.

chbox = 'X'.

ENDIF.

ULINE.

PERFORM headings.

ULINE.

PERFORM displaydata.

ULINE.

and there is one empty line comming between headings and data. How can I get rid of this extra empty line?

And also with the headings I am running into another problem.

If I have headings first line is not comming into gt2_zprice, without headings last line is not comming into gt2_zprice from main internal table gt_zprice.

Can you please help me with the problem?

WHEN 'CMEMO'.

DESCRIBE TABLE gt_zprice LINES lv_cnt.

DO lv_cnt TIMES.

lv_index = sy-index + 1.

READ LINE lv_index FIELD VALUE chbox.

IF chbox = 'X'.

READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.

IF sy-subrc EQ 0.

gs_zprice1-index = sy-index.

APPEND gs_zprice1 TO gt2_zprice.

CLEAR gs_zprice1.

ENDIF.

ENDIF.

CLEAR chbox.

ENDDO.

Thanks,

Neelu.


repid = sy-repid.

PERFORM displaydata.
ULINE.
TOP-OF-PAGE.
  ULINE.
  PERFORM headings.
  ULINE.

AT USER-COMMAND.
  CASE sy-ucomm.

    WHEN 'SELE'.
      SET PF-STATUS 'STAT'.
      IF chbox = 'X'.
        chbox = ' '.
      ELSEIF chbox = ' '.
        chbox = 'X'.
      ENDIF.
      ULINE.
      PERFORM headings.
      ULINE.
      PERFORM displaydata.
      ULINE.

    WHEN 'CMEMO'.
      DESCRIBE TABLE gt_zprice LINES lv_cnt.
      DO lv_cnt TIMES.
        lv_index = sy-index + 1.
        READ LINE lv_index FIELD VALUE chbox.
        IF chbox = 'X'.
          READ TABLE gt_zprice INTO gs_zprice1 INDEX sy-index.
          IF sy-subrc EQ 0.
            gs_zprice1-index = sy-index.
            APPEND gs_zprice1 TO gt2_zprice.
            CLEAR gs_zprice1.
          ENDIF.
        ENDIF.
        CLEAR chbox.
      ENDDO.

      gt4_zprice[] = gt2_zprice[].
      LOOP AT gt4_zprice INTO gs_zprice1.

1 REPLY 1
Read only

Former Member
0 Likes
353

Looks like you are working with Interactive Reporting.

If you need Top of page event in secondary report also, you need to code event Top of page during line selection.

I see from your code that you have no such event. Can you add that to your program and check if it is working fine.

Give you an example of interactive report with event Top of page during line selection

REPORT ZTREE NO STANDARD PAGE HEADING

LINE-COUNT 65

LINE-SIZE 80.

DATA: BEGIN OF IT_DATA OCCURS 0,

EXP(1) TYPE C,

WERKS LIKE T001W-WERKS,

MATNR LIKE MARA-MATNR,

VALUE1(13) TYPE C,

VALUE2(13) TYPE C,

END OF IT_DATA.

DATA: W_MATNR LIKE MARA-MATNR,

W_COUNT TYPE I,

G_FIELD(40) TYPE C.

DATA: BEGIN OF PAGE,

SCRLLINE LIKE SYST-LILLI, "scroll line to top of screen

CURSLINE LIKE SYST-LILLI, "line to put cursor on

HDRLINES TYPE I, "lines in header + 1

TWOHDRS TYPE I, "two headers on screen

CPOSTOP TYPE I, "position of cursor from top

CPOSBOT TYPE I, "position of cursor from bottom

CPOSIT TYPE I, "position on the screen

PAGNO TYPE I, "pageno of line

PGELINES TYPE I, "lines used so far

END OF PAGE.

START-OF-SELECTION.

PERFORM BUILD_IT_DATA.

END-OF-SELECTION.

PERFORM WRITE_REPORT.

TOP-OF-PAGE.

PERFORM TOP_OF_PAGE.

TOP-OF-PAGE DURING LINE-SELECTION.

PERFORM TOP_OF_PAGE.

AT LINE-SELECTION.

G_FIELD = SPACE.

GET CURSOR FIELD G_FIELD.

PERFORM LINE_SELECTION.

AT USER-COMMAND.

G_FIELD = SPACE.

GET CURSOR FIELD G_FIELD.

PERFORM USER_COMMAND.

----


  • FORM BUILD_IT_DATA *

----


FORM BUILD_IT_DATA.

IT_DATA-WERKS = '0000'.

WHILE IT_DATA-WERKS < '0100'.

ADD '10' TO IT_DATA-WERKS.

W_MATNR = 0.

WHILE W_MATNR < 10.

ADD 1 TO W_MATNR.

IT_DATA-EXP = '+'.

WRITE W_MATNR TO IT_DATA-MATNR.

IF IT_DATA-WERKS = 10 AND W_MATNR = 1.

WRITE 'ZTEST2' TO IT_DATA-VALUE1.

WRITE 'Testing program 2' TO IT_DATA-VALUE2.

ELSE.

CLEAR: IT_DATA-VALUE1, IT_DATA-VALUE2.

ENDIF.

APPEND IT_DATA.

ENDWHILE.

ENDWHILE.

ENDFORM.

----


  • FORM WRITE_REPORT *

----


FORM WRITE_REPORT.

SET PF-STATUS '8000'.

SYST-LSIND = '0'.

LOOP AT IT_DATA.

AT NEW WERKS.

FORMAT COLOR COL_HEADING INTENSIFIED OFF.

WRITE: /1 SYST-VLINE NO-GAP,

'[' NO-GAP,

IT_DATA-EXP NO-GAP HOTSPOT ON,

']'.

FORMAT COLOR COL_NORMAL INTENSIFIED ON.

WRITE: IT_DATA-WERKS,

AT SYST-LINSZ SYST-VLINE.

PAGE-PAGNO = SYST-PAGNO.

HIDE: IT_DATA-WERKS, PAGE-PAGNO.

ENDAT.

IF IT_DATA-EXP = '-'.

FORMAT COLOR COL_NORMAL INTENSIFIED OFF.

WRITE: /1 SYST-VLINE,

8 IT_DATA-MATNR,

IT_DATA-VALUE1 INPUT ON,

IT_DATA-VALUE2 INPUT ON,

AT SYST-LINSZ SYST-VLINE.

HIDE: IT_DATA, PAGE-PAGNO.

ENDIF.

ENDLOOP.

ULINE.

ENDFORM.

----


  • FORM USER_COMMAND *

----


FORM USER_COMMAND.

PERFORM SET_SCROLL_LINE.

CASE SY-UCOMM.

WHEN 'ENTE'.

READ TABLE IT_DATA WITH KEY WERKS = IT_DATA-WERKS

MATNR = IT_DATA-MATNR.

IF SYST-SUBRC = 0.

CASE G_FIELD.

WHEN 'IT_DATA-VALUE1'.

IF IT_DATA-VALUE1 <> SPACE.

SUBMIT (IT_DATA-VALUE1) VIA SELECTION-SCREEN AND RETURN.

ELSE.

IT_DATA-VALUE1 = 'Enter 1 Press'(001).

ENDIF.

WHEN 'IT_DATA-VALUE2'.

IT_DATA-VALUE2 = 'Enter 2 Press'(001).

ENDCASE.

MODIFY IT_DATA INDEX SYST-TABIX.

ENDIF.

PERFORM WRITE_REPORT.

PERFORM POSITION_LIST.

CASE G_FIELD.

WHEN 'IT_DATA-EXP'.

ADD 1 TO PAGE-CURSLINE.

SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.

WHEN 'IT_DATA-VALUE1'.

SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.

WHEN 'IT_DATA-VALUE2'.

SET CURSOR FIELD 'IT_DATA-VALUE2' LINE PAGE-CURSLINE.

ENDCASE.

WHEN 'EXPA'.

PERFORM SET_EXPAND USING '-'.

PERFORM WRITE_REPORT.

WHEN 'COLA'.

PERFORM SET_EXPAND USING '+'.

PERFORM WRITE_REPORT.

ENDCASE.

ENDFORM.

----


  • FORM SET_EXPAND *

----


FORM SET_EXPAND USING W_EXP.

LOOP AT IT_DATA.

IT_DATA-EXP = W_EXP.

MODIFY IT_DATA INDEX SYST-TABIX.

ENDLOOP.

ENDFORM.

----


  • FORM LINE_SELECTION *

----


FORM LINE_SELECTION.

PERFORM SET_SCROLL_LINE.

READ TABLE IT_DATA WITH KEY WERKS = IT_DATA-WERKS

MATNR = IT_DATA-MATNR.

CASE G_FIELD.

WHEN 'IT_DATA-EXP'.

LOOP AT IT_DATA WHERE WERKS = IT_DATA-WERKS.

IF IT_DATA-EXP = '-'.

IT_DATA-EXP = '+'.

ELSE.

IT_DATA-EXP = '-'.

ENDIF.

MODIFY IT_DATA INDEX SYST-TABIX.

ENDLOOP.

WHEN 'IT_DATA-VALUE1'.

IT_DATA-VALUE1 = 'Double Click'(004).

MODIFY IT_DATA INDEX SYST-TABIX.

WHEN 'IT_DATA-VALUE2'.

IT_DATA-VALUE2 = 'Double Click'(004).

MODIFY IT_DATA INDEX SYST-TABIX.

ENDCASE.

PERFORM WRITE_REPORT.

PERFORM POSITION_LIST.

CASE G_FIELD.

WHEN 'IT_DATA-EXP'.

ADD 1 TO PAGE-CURSLINE.

SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.

WHEN 'IT_DATA-VALUE1'.

SET CURSOR FIELD 'IT_DATA-VALUE1' LINE PAGE-CURSLINE.

WHEN 'IT_DATA-VALUE2'.

SET CURSOR FIELD 'IT_DATA-VALUE2' LINE PAGE-CURSLINE.

ENDCASE.

ENDFORM.

----


  • FORM SET_SCROLL_LINE *

  • determine the correct line to scroll the re-written report to, so *

  • that the user is returned to the same spot on the screen *

  • if user is mid way between pages, ie two headers are visable on the *

  • screen, check if they are on the secondary page and adjust the *

  • scroll variable accordingly so as not to jump up lines because the *

  • scroll variable will be out by the number of lines in the extra hdr *

----


FORM SET_SCROLL_LINE.

PAGE-CURSLINE = SYST-LILLI.

PAGE-SCRLLINE = SYST-LILLI - ( SYST-CUROW - PAGE-HDRLINES ).

PAGE-PGELINES = ( PAGE-PAGNO - 1 ) * SYST-LINCT.

PAGE-CPOSTOP = ( PAGE-SCRLLINE + SYST-CUROW ) - PAGE-PGELINES.

PAGE-CPOSBOT = ( PAGE-SCRLLINE - SYST-CUROW ) - PAGE-PGELINES.

PAGE-CPOSIT = PAGE-CPOSTOP + PAGE-CPOSBOT.

PAGE-TWOHDRS = PAGE-HDRLINES * 2.

IF PAGE-CPOSIT LT PAGE-TWOHDRS.

PAGE-SCRLLINE = PAGE-SCRLLINE + 1.

ENDIF.

ENDFORM.

----


  • FORM POSITION_LIST *

----


FORM POSITION_LIST.

CALL FUNCTION 'LIST_SCROLL_LINE_TOPMOST'

EXPORTING

LIST_INDEX = 1

LIST_LINE = PAGE-SCRLLINE

EXCEPTIONS

OTHERS = 1.

CHECK SYST-SUBRC = 0.

ENDFORM.

----


  • FORM TOP_OF_PAGE *

----


FORM TOP_OF_PAGE.

  • set page-hdrlines = lines in header + 1 system generated blank line

PAGE-HDRLINES = 5.

ULINE.

WRITE : /1 SYST-VLINE, 'Header'(002), AT SYST-LINSZ SYST-VLINE.

WRITE : /1 SYST-VLINE, 'Lines'(003), AT SYST-LINSZ SYST-VLINE.

ULINE.

ENDFORM.