*&---------------------------------------------------------------------*
*& Report ZTABLE_COUNT
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTABLE_COUNT.
* TABLES
TABLES CCTABSIZE.
* TYPE POOLS
TYPE-POOLS : SLIS, SSCR.
* DATA TYPE DECLARATION
TYPES : BEGIN OF TY_FINAL,
TABNAME TYPE TABNAME,
NBRINS TYPE AM_NUROW,
END OF TY_FINAL.
* DATA OBJECT DECLARATION
DATA : IT_ZTAB_INFO TYPE STANDARD TABLE OF ZTAB_INFO,
WA_ZTAB_INFO TYPE ZTAB_INFO,
IT_ZTAB_RECO TYPE STANDARD TABLE OF ZTAB_RECO,
WA_ZTAB_RECO TYPE ZTAB_RECO,
IT_FINAL TYPE STANDARD TABLE OF TY_FINAL,
WA_FINAL TYPE TY_FINAL,
G_REPID LIKE SY-REPID, " FOR PASSING REPORT ID
IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV, " FOR PASSING FIELDCAT VALUE
LAYOUT TYPE SLIS_LAYOUT_ALV,
RESTRICT TYPE SSCR_RESTRICT,
SELOPT TYPE SSCR_ASS,
OPT_LIST TYPE SSCR_OPT_LIST. "BT,CP,EQ,GE,GT,LE,LT,NB,NE,NP
* SELECTION CRITERIA
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001 NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE .
SELECTION-SCREEN COMMENT 1(17) TEXT-002 FOR FIELD S_TABNAM.
SELECT-OPTIONS S_TABNAM FOR CCTABSIZE-TABNAME .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE .
PARAMETERS P_TABD TYPE CHAR1 AS CHECKBOX USER-COMMAND CHK.
SELECTION-SCREEN COMMENT 5(30) TEXT-003 FOR FIELD P_TABD.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
G_REPID = SY-REPID.
CLEAR SELOPT.
SELOPT-KIND = 'S'. " S-SELCT-OPTIONS, A-ALL, B-BLOCK
SELOPT-NAME = 'S_TABNAM'. " NAME OF THE SELECT-OPTIONS
SELOPT-SG_MAIN = 'I'. " I-INCLUSIVE, SPACE-BOTH
SELOPT-OP_MAIN = 'OBJ_1'.
APPEND SELOPT TO RESTRICT-ASS_TAB.
CLEAR OPT_LIST.
OPT_LIST-NAME = 'OBJ_1'.
OPT_LIST-OPTIONS-EQ = 'X'.
OPT_LIST-OPTIONS-NE = 'X'.
APPEND OPT_LIST TO RESTRICT-OPT_LIST_TAB.
CALL FUNCTION 'SELECT_OPTIONS_RESTRICT'
EXPORTING
RESTRICTION = RESTRICT
EXCEPTIONS
TOO_LATE = 1
REPEATED = 2
SELOPT_WITHOUT_OPTIONS = 5
SELOPT_WITHOUT_SIGNS = 6
INVALID_SIGN = 7
EMPTY_OPTION_LIST = 9
INVALID_KIND = 10
REPEATED_KIND_A = 11
OTHERS = 12.
AT SELECTION-SCREEN OUTPUT.
IF P_TABD = 'X'.
LOOP AT SCREEN.
IF SCREEN-NAME = 'S_TABNAM-LOW' .
SCREEN-INPUT = 0.
MODIFY SCREEN.
CLEAR : S_TABNAM[].
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'S_TABNAM-LOW' .
SCREEN-INPUT = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
IF P_TABD = 'X'.
SELECT *
FROM ZTAB_INFO
INTO TABLE IT_ZTAB_INFO
ORDER BY PRIMARY KEY.
LOOP AT IT_ZTAB_INFO INTO WA_ZTAB_INFO.
SELECT COUNT(*)
FROM (WA_ZTAB_INFO-TABNAME) INTO WA_FINAL-NBRINS
WHERE MANDT = SY-MANDT.
MOVE WA_ZTAB_INFO-TABNAME TO WA_FINAL-TABNAME.
APPEND WA_FINAL TO IT_FINAL.
CLEAR : WA_FINAL, WA_ZTAB_INFO.
ENDLOOP.
ELSE.
LOOP AT S_TABNAM.
SELECT COUNT(*)
FROM (S_TABNAM-LOW) INTO WA_FINAL-NBRINS
WHERE MANDT = SY-MANDT.
MOVE S_TABNAM-LOW TO WA_FINAL-TABNAME.
APPEND WA_FINAL TO IT_FINAL.
CLEAR WA_FINAL.
ENDLOOP.
ENDIF.
IF IT_FINAL IS NOT INITIAL.
LOOP AT IT_FINAL INTO WA_FINAL.
WA_ZTAB_RECO-TABNAME = WA_FINAL-TABNAME.
WA_ZTAB_RECO-NBRINS = WA_FINAL-NBRINS.
WA_ZTAB_RECO-ZDATE = SY-DATUM.
WA_ZTAB_RECO-ZTIME = SY-UZEIT.
APPEND WA_ZTAB_RECO TO IT_ZTAB_RECO.
CLEAR : WA_ZTAB_RECO, WA_FINAL.
ENDLOOP.
MODIFY ZTAB_RECO FROM TABLE IT_ZTAB_RECO.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT.
MESSAGE 'Records Saved successfully.' TYPE 'S'.
PERFORM FIELD_CATALOG USING IT_FIELDCAT[].
PERFORM RESUSE_ALV_GRID_DISPLAY.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
*&---------------------------------------------------------------------*
*& Form field_catalog
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_IT_FIELDCAT text
*----------------------------------------------------------------------*
FORM FIELD_CATALOG USING P_IT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: WA_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
WA_FIELDCAT-COL_POS = 1.
WA_FIELDCAT-FIELDNAME = 'TABNAME'.
WA_FIELDCAT-REF_TABNAME = 'CCTABSIZE'.
WA_FIELDCAT-OUTPUTLEN = '20'.
WA_FIELDCAT-KEY = 'X'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
WA_FIELDCAT-COL_POS = 2.
WA_FIELDCAT-FIELDNAME = 'NBRINS'.
WA_FIELDCAT-REF_TABNAME = 'CCTABSIZE'.
WA_FIELDCAT-OUTPUTLEN = '20'.
WA_FIELDCAT-TABNAME = 'IT_FINAL'.
APPEND WA_FIELDCAT TO P_IT_FIELDCAT.
CLEAR WA_FIELDCAT.
ENDFORM. "field_catalog
*&---------------------------------------------------------------------*
*& Form ALV_GRID_DISPLAY
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM RESUSE_ALV_GRID_DISPLAY.
DATA TITLE(70) TYPE C.
TITLE = 'Number of lines/records in a table'.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = G_REPID
IT_FIELDCAT = IT_FIELDCAT[]
I_GRID_TITLE = TITLE
TABLES
T_OUTTAB = IT_FINAL
EXCEPTIONS
PROGRAM_ERROR = 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. "RESUSE_ALV_GRID_DISPLAY