Listado de ampliaciones SAP (con documentación)
* Report para mostrar las ampliaciones de SAP con ayuda
*----------------------------------------------------------------------*
* List SAP Extensions (With documentation) & Extension projects
* Author: Alexandre Fonseca
*----------------------------------------------------------------------*
REPORT ZBCLSEXT
NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65.
INCLUDE .
TABLES: MODSAP, " SAP Extensions.......................................
MODSAPA, " Atributes............................................
MODACT, " Modifications........................................
MODATTR, " Attributes of Extension Projects.....................
TDEVC, " Cls.desenv.administr.transporte......................
TDEVCT, " Cls.desenv.dependentes de idiomas administr.transp...
HELP_INFO,
DOKTL.
DATA: TAB_MOD LIKE MODSAP OCCURS 0 WITH HEADER LINE,
TAB_PROJECTS LIKE MODACT OCCURS 0 WITH HEADER LINE.
DATA: G_EXISTS(1) TYPE C.
CONSTANTS: TRUE(1) TYPE C VALUE 'X',
FALSE(1) TYPE C VALUE ' ',
ACTIVE LIKE MODATTR-STATUS VALUE 'A'.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_NAME FOR MODSAP-NAME,
S_TYP FOR MODSAP-TYP,
S_DCLASS FOR TDEVC-DEVCLASS.
PARAMETERS: P_LANGU LIKE SY-LANGU OBLIGATORY DEFAULT SY-LANGU.
SELECTION-SCREEN END OF BLOCK B1.
START-OF-SELECTION.
SELECT *
INTO TABLE TAB_MOD
FROM MODSAP
WHERE NAME IN S_NAME
AND TYP IN S_TYP.
SORT TAB_MOD.
SELECT *
FROM MODACT INTO TABLE TAB_PROJECTS.
SORT TAB_PROJECTS.
LOOP AT TAB_MOD.
SELECT SINGLE *
FROM MODSAPA
WHERE NAME = TAB_MOD-NAME.
CHECK SY-SUBRC EQ 0.
CHECK MODSAPA-DEVCLASS IN S_DCLASS.
CLEAR TAB_PROJECTS.
READ TABLE TAB_PROJECTS WITH KEY MEMBER = TAB_MOD-NAME.
AT NEW NAME.
SELECT SINGLE *
FROM TDEVCT
WHERE SPRAS = P_LANGU
AND DEVCLASS = MODSAPA-DEVCLASS.
DOKTL-OBJECT = TAB_MOD-NAME.
PERFORM CHECK_DOCUMENTATION USING DOKTL-OBJECT
CHANGING G_EXISTS.
NEW-LINE.
ULINE.
PERFORM WRITE_ENHANCEMENT USING TAB_MOD-NAME
TDEVCT-DEVCLASS
TDEVCT-CTEXT
G_EXISTS.
IF NOT TAB_PROJECTS-NAME IS INITIAL.
SELECT SINGLE *
FROM MODATTR
WHERE NAME = TAB_PROJECTS-NAME.
PERFORM WRITE_PROJECT USING TAB_PROJECTS-NAME MODATTR-STATUS.
ENDIF.
ULINE.
ENDAT.
CHECK TAB_MOD-MEMBER <> SPACE.
DOKTL-OBJECT = TAB_MOD-MEMBER.
PERFORM CHECK_DOCUMENTATION USING DOKTL-OBJECT
CHANGING G_EXISTS.
SKIP.
NEW-LINE.
PERFORM WRITE_COMPONENT USING TAB_MOD-TYP
TAB_MOD-MEMBER
G_EXISTS.
AT END OF NAME.
SKIP.
ENDAT.
ENDLOOP.
AT LINE-SELECTION.
CLEAR DOKTL-OBJECT.
READ CURRENT LINE FIELD VALUE TAB_MOD-NAME INTO DOKTL-OBJECT.
IF SY-SUBRC EQ 0.
PERFORM CHECK_DOCUMENTATION USING DOKTL-OBJECT
CHANGING G_EXISTS.
IF G_EXISTS = TRUE.
PERFORM GET_DOCUMENTATION USING DOKTL-OBJECT.
ELSE.
READ CURRENT LINE FIELD VALUE TAB_MOD-MEMBER INTO DOKTL-OBJECT.
IF SY-SUBRC EQ 0.
PERFORM CHECK_DOCUMENTATION USING DOKTL-OBJECT
CHANGING G_EXISTS.
IF G_EXISTS = TRUE.
PERFORM GET_DOCUMENTATION USING DOKTL-OBJECT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*---------------------------------------------------------------------*
* FORM CHECK_DOCUMENTATION *
*---------------------------------------------------------------------*
* --> P_DOKTL_OBJECT *
* --> P_EXISTS *
*---------------------------------------------------------------------*
FORM CHECK_DOCUMENTATION USING P_DOKTL_OBJECT
CHANGING P_EXISTS.
SELECT *
FROM DOKTL
WHERE ID = 'MO'
AND OBJECT = P_DOKTL_OBJECT
AND LANGU = P_LANGU.
ENDSELECT.
IF SY-SUBRC = 0.
P_EXISTS = TRUE.
ELSE.
P_EXISTS = FALSE.
ENDIF.
ENDFORM. " GET_DOCUMENTATION
*---------------------------------------------------------------------*
* FORM GET_DOCUMENTATION *
*---------------------------------------------------------------------*
* --> P_DOKTL_OBJECT *
*---------------------------------------------------------------------*
FORM GET_DOCUMENTATION USING P_DOKTL_OBJECT.
DATA: LT_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF LT_EXCLUDE OCCURS 10,
FUNC(4),
END OF LT_EXCLUDE.
DATA: OVERLAY_HEADER LIKE THEAD,
L_LINES LIKE SY-TABIX.
REFRESH LT_LINE.
CALL FUNCTION 'DOCU_GET_FOR_F1HELP'
EXPORTING
ID = 'MO'
LANGU = P_LANGU
OBJECT = P_DOKTL_OBJECT
IMPORTING
HEAD = OVERLAY_HEADER
TABLES
LINE = LT_LINE
EXCEPTIONS
RET_CODE = 1
OTHERS = 2.
IF SY-SUBRC EQ 0.
DESCRIBE TABLE LT_LINE LINES L_LINES.
IF L_LINES = 0.
EXIT.
ENDIF.
HELP_INFO-TITLE = P_DOKTL_OBJECT.
HELP_INFO-DOCUID = P_DOKTL_OBJECT.
HELP_INFO-DOCUOBJECT = P_DOKTL_OBJECT.
HELP_INFO-SPRAS = OVERLAY_HEADER-TDSPRAS.
CALL FUNCTION 'HELP_DOCULINES_SHOW'
EXPORTING
HELP_INFOS = HELP_INFO
OVERLAY_HEADER = OVERLAY_HEADER
TABLES
EXCLUDEFUN = LT_EXCLUDE
HELPLINES = LT_LINE
EXCEPTIONS
OTHERS = 1.
ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form WRITE_PROJECT
*&---------------------------------------------------------------------*
* -->P_TAB_PROJECTS-NAME text *
* -->P_ICON text *
*----------------------------------------------------------------------*
FORM WRITE_PROJECT USING P_NAME LIKE MODACT-NAME
P_STATUS.
IF P_STATUS = ACTIVE.
WRITE: / 'Project.......:' COLOR 5 INVERSE,
TAB_PROJECTS-NAME COLOR 1,
ICON_LED_GREEN AS ICON.
ELSE.
WRITE: / 'Project.......:' COLOR 5 INVERSE,
TAB_PROJECTS-NAME COLOR 1,
ICON_LED_RED AS ICON.
ENDIF.
ENDFORM. " WRITE_PROJECT
*&---------------------------------------------------------------------*
*& Form WRITE_COMPONENT
*&---------------------------------------------------------------------*
* -->P_TAB_MOD-TYP text *
* -->P_TAB_MOD-MEMBER text *
* -->P_ICON text *
*----------------------------------------------------------------------*
FORM WRITE_COMPONENT USING P_TYP LIKE MODACT-TYP
P_MEMBER LIKE MODACT-MEMBER
P_EXISTS.
DATA: L_DOMNAME LIKE DD07V-DOMNAME,
L_DOMVALUE LIKE DD07V-DOMVALUE_L,
L_DDTEXT LIKE DD07V-DDTEXT.
L_DOMNAME = 'MODTYP'.
L_DOMVALUE = P_TYP.
CALL FUNCTION 'RV_DOMAIN_VALUE_TEXTS'
EXPORTING
DOMNAME = L_DOMNAME
DOMVALUE = L_DOMVALUE
IMPORTING
DDTEXT = L_DDTEXT
EXCEPTIONS
OTHERS = 1.
IF P_EXISTS = TRUE.
WRITE: 'Enhancement type:' COLOR 5 INVERSE,
L_DDTEXT(20) COLOR 1.
WRITE: 'Component:' COLOR 5 INVERSE,
P_MEMBER COLOR 1,
ICON_SELECT_DETAIL AS ICON.
ELSE.
WRITE: 'Enhancement type:' COLOR 5 INVERSE,
L_DDTEXT(20) COLOR 1.
WRITE: 'Component:' COLOR 5 INVERSE,
P_MEMBER COLOR 1.
ENDIF.
ENDFORM. " WRITE_COMPONENT
*&---------------------------------------------------------------------*
*& Form WRITE_ENHANCEMENT
*&---------------------------------------------------------------------*
* -->P_TAB_MOD-NAME text *
* -->P_TDEVCT-DEVCLASS text *
* -->P_TDEVCT-CTEXT text *
*----------------------------------------------------------------------*
FORM WRITE_ENHANCEMENT USING P_NAME LIKE MODACT-NAME
P_DEVCLASS LIKE TDEVCT-DEVCLASS
P_CTEXT LIKE TDEVCT-CTEXT
P_EXISTS.
IF P_EXISTS = TRUE.
WRITE: 'Enhancement...:' COLOR 5 INVERSE,
TAB_MOD-NAME COLOR 1,
ICON_SELECT_DETAIL AS ICON,
TDEVCT-DEVCLASS,
TDEVCT-CTEXT.
ELSE.
WRITE: 'Enhancement...:' COLOR 5 INVERSE,
TAB_MOD-NAME COLOR 1,
TDEVCT-DEVCLASS,
TDEVCT-CTEXT.
ENDIF.
ENDFORM. " WRITE_ENHANCEMENT
|