Banner

Attention: open in a new window. PDFPrintE-mail

2009
24
Apr

Need to search variants for a report

REPORT Y_VARIANT_SEARCH LINE-SIZE 190.

TABLES: VARID.

SELECT-OPTIONS:
  S_REPORT FOR VARID-REPORT OBLIGATORY,  "report name
  S_VAR FOR VARID-VARIANT.               "variant

PARAMETERS: TERM(10).                    "search term

DATA: IVARID TYPE STANDARD TABLE OF VARID WITH HEADER LINE,
      IVALUETAB TYPE STANDARD TABLE OF RSPARAMS WITH HEADER LINE.

DATA: L_MESSAGE_GEN(40),
      L_WORD(10),
      L_LINE TYPE I.

DATA: PROGRESS_TEXT(40).

START-OF-SELECTION.

  PERFORM GET_VARIANTS.
  PERFORM FIND_VALUES.


*&---------------------------------------------------------------------*
*&      Form  GET_VARIANTS
*&---------------------------------------------------------------------*
FORM GET_VARIANTS.

  SELECT * INTO TABLE IVARID FROM VARID WHERE REPORT IN S_REPORT
                                          AND VARIANT IN S_VAR.

ENDFORM.                    " GET_VARIANTS
*&---------------------------------------------------------------------*
*&      Form  FIND_VALUES
*&---------------------------------------------------------------------*
FORM FIND_VALUES.

  LOOP AT IVARID.

    REFRESH: IVALUETAB.
    CLEAR: IVALUETAB.

    AT NEW REPORT.

      GENERATE REPORT IVARID-REPORT MESSAGE L_MESSAGE_GEN
                                    LINE L_LINE WORD L_WORD.

    ENDAT.

    CHECK SY-SUBRC EQ 0.

    CALL FUNCTION 'RS_VARIANT_CONTENTS'
         EXPORTING
              REPORT               = IVARID-REPORT
              VARIANT              = IVARID-VARIANT
         TABLES
              VALUTAB              = IVALUETAB
         EXCEPTIONS
              VARIANT_NON_EXISTENT = 1
              VARIANT_OBSOLETE     = 2
              REPORT_NOT_EXISTENT  = 3
              OTHERS               = 4.

    CHECK SY-SUBRC EQ 0.

    DELETE IVALUETAB WHERE LOW IS INITIAL
                       AND HIGH IS INITIAL.

    IF NOT TERM IS INITIAL.
      PERFORM SEARCH_FOR_VALUE.
    ENDIF.

    LOOP AT IVALUETAB.

      WRITE:/2  IVARID-REPORT,
                IVARID-VARIANT,
            58  IVALUETAB-SELNAME,
            70  IVALUETAB-KIND,
            75  IVALUETAB-SIGN,
            80  IVALUETAB-OPTION,
            87  IVALUETAB-LOW,
                IVALUETAB-HIGH.

    ENDLOOP.

  ENDLOOP.

ENDFORM.                    " FIND_VALUES
*&---------------------------------------------------------------------*
*&      Form  SEARCH_FOR_VALUE
*&---------------------------------------------------------------------*
FORM SEARCH_FOR_VALUE.

  LOOP AT IVALUETAB.

    IF IVALUETAB-LOW <> TERM AND IVALUETAB-HIGH <> TERM.
      DELETE IVALUETAB.
    ENDIF.

  ENDLOOP.

ENDFORM.                    " SEARCH_FOR_VALUE
Last Updated (Tuesday, 30 November 1999 00:00)
Banner