Rollup-Status für im BWA indizierte Infocubes

Eine meiner ersten Kontrollen am Morgen zeigt mir,  ob die nachts geladenen Daten auch für das Reporting über den BWA (Business Warehouse Accelerator) bereitstehen. Da das BW keinen eigenen Report mitbringt, der das leistet, habe ich mir einen kleinen ABAP geschrieben.

Der Report liest alle im BWA indizierten Infocubes und vergleicht den letzten hochgerollten Request mit dem letzten Request, der qualitativ in Ordnung war. Zusätzlich zeigt er den letzten technisch einwandfreien Request sowie den Zeitpunkt der letzten Datenänderung an. Er verwendet dazu die Tabellen RSDDBOBJDIR (BIA-Index Objekte) und RSMDATASTATE (Status der Requests im Infocube). Mit einem Klick auf den Cubenamen kommt man direkt in die Administration der Requests.

Diese Version setzt SAP Netweaver für Business Warehouse 7.3 voraus. Eine Version für 7.0 müsste ich noch irgendwo haben…

Kopf des Reports - Status auf einen Blick

Kopf des Reports – Status auf einen Blick

 

Die Farben
Rot = Letzter Request ist nicht hochgerollt
Gelb = Letzter Request ist älter als 30 Tage
Grün = Letzer Request ist hochgerollt

Verschiedene Farben zeigen verschiedene Status an

Verschiedene Farben für verschiedene Status

Der Code

REPORT  zbw_rollupstat.
DATA: d TYPE d, t TYPE t.

TYPES: BEGIN OF t_rollupstat,
objnm TYPE RSDDBOBJDIR-objnm,
qualok TYPE rsmdatastate-qualok,
techok TYPE rsmdatastate-techok,
last_change TYPE rsmdatastate-last_change,
rollup TYPE rsmdatastate-rollup,
END OF t_rollupstat.

DATA: itab_rollupstat TYPE STANDARD TABLE OF t_rollupstat WITH KEY objnm, wa_rollupstat TYPE t_rollupstat.
DATA: linescount TYPE i, delta_date TYPE i.

START-OF-SELECTION.
SET PF-STATUS ‚MENUE‘.
PERFORM write_list.

AT USER-COMMAND.
CASE sy-ucomm.
WHEN ‚BACK‘.
RETURN.
WHEN ‚LEAVE‘.
LEAVE.
WHEN ‚F1‘.
PERFORM doku_anzeigen.
WHEN ‚REFRESH‘.
PERFORM write_list.
ENDCASE.

AT LINE-SELECTION.
DATA val(40).

GET CURSOR FIELD wa_rollupstat-objnm VALUE val.
PERFORM maintain_icube USING val.

*&———————————————————————*
*&      Form  write_list
*&———————————————————————*
*       text
*———————————————————————-*
FORM write_list.
SELECT p~objnm q~qualok q~techok q~rollup q~last_change
FROM RSDDBOBJDIR AS p
INNER JOIN rsmdatastate AS q
ON p~objnm =  q~infocube
INTO CORRESPONDING FIELDS OF TABLE itab_rollupstat
WHERE p~objvers = ‚A‘ AND ( p~IDXTP = ‚ICN‘ OR  p~IDXTP = ‚ICF‘ ) ORDER BY p~objnm.

“ Ausgabe der Anzahl der indizierten Cubes
linescount = LINES( itab_rollupstat ).
FORMAT COLOR col_group.
WRITE:/ linescount, ‚ Infocubes im Business Warehouse Accelerator indiziert.‘.
write:/.

LOOP AT itab_rollupstat INTO wa_rollupstat.

CONVERT TIME STAMP wa_rollupstat-last_change TIME ZONE sy-zonlo INTO DATE d TIME t.

IF wa_rollupstat-qualok <> wa_rollupstat-rollup.
FORMAT COLOR COL_NEGATIVE.
WRITE:/ wa_rollupstat-objnm HOTSPOT ON, wa_rollupstat-rollup, wa_rollupstat-qualok, wa_rollupstat-techok, (10) d, (8) t.
ELSE.

delta_date = sy-datum – d.
IF delta_date > 30.
FORMAT COLOR COL_TOTAL.
ELSE.
FORMAT COLOR COL_POSITIVE.
ENDIF.

WRITE:/ wa_rollupstat-objnm, wa_rollupstat-rollup, wa_rollupstat-qualok, wa_rollupstat-techok, (10) d, (8) t.
HIDE: wa_rollupstat-objnm, wa_rollupstat-rollup, wa_rollupstat-qualok, wa_rollupstat-techok.

ENDIF.

ENDLOOP.

ENDFORM.                    „write_list

*&———————————————————————*
*&      Form  doku_anzeigen
*&———————————————————————*
*       text
*———————————————————————-*
FORM doku_anzeigen.

DATA:
l_help_infos TYPE help_info,
lt_dynpselect TYPE TABLE OF dselc WITH HEADER LINE,
lt_dynpvaluetab TYPE TABLE OF dval WITH HEADER LINE.

l_help_infos-call      = ‚H‘.
l_help_infos-object    = ‚F‘.
l_help_infos-program   = sy-cprog.
l_help_infos-dynpro    = sy-dynnr.
l_help_infos-spras     = sy-langu.
l_help_infos-menufunct = ‚ERHI‘.
l_help_infos-tcode     = sy-tcode.
l_help_infos-pfkey     = ‚0100‘.
l_help_infos-docuid    = ‚FE‘.
l_help_infos-dynpprog  = sy-cprog.

CALL FUNCTION ‚HELP_START‘
EXPORTING
help_infos   = l_help_infos
TABLES
dynpselect   = lt_dynpselect
dynpvaluetab = lt_dynpvaluetab.

ENDFORM.                    “ doku_anzeigen

*&———————————————————————*
*&      Form  maintain_icube
*&———————————————————————*
*       text
*———————————————————————-*
*      –>ICUBE      text
*———————————————————————-*
FORM maintain_icube USING icube.

TYPES: BEGIN OF rssm_s_icube,
icube(30),
check(1),
END OF rssm_s_icube.
TYPES: rssm_t_icube TYPE rssm_s_icube OCCURS 0.

DATA: l_s_icube TYPE rssm_s_icube, l_t_icube TYPE rssm_t_icube.

l_s_icube-icube = icube.
l_s_icube-check = ‚X‘.

APPEND l_s_icube TO l_t_icube.

CALL FUNCTION ‚RSSM_CALL_ICUBE_PFLEGE‘
EXPORTING
e_content_first = ‚X‘
TABLES
e_t_icube       = l_t_icube
EXCEPTIONS
cancelled       = 1
OTHERS          = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.

ENDFORM.                    „maintain_icube

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.