* & ------------------------------------------------ --------------------- * & report zgettablefield ** & ** & ------------------- -------------------------------------------------- ** & ** & ** & ----------------------------------------- ---------------------------- *
Report ZgetTableField. * Data DeclarationType-pools: SLIS.
* Global structure of listTYPES: BEGIN OF UD_STRUCT, POSITION LIKE DD03L-POSITION, TABNAME LIKE DD03L-TABNAME, FIELDNAME LIKE DD03L-FIELDNAME, DATATYPE LIKE DD03L-DATATYPE, DDLENG LIKE DD03L-LENG, DECIMALS LIKE DD03L-DECIMALS, DDTEXT LIKE DD03T- DDText, EddText Like DD03T-DDTEXT, DDDTEXT LIKE DD03T-DDTEXT, END OF UD_STRUCT.
TABLES: DD03L.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.DATA: GT_OUTTAB TYPE UD_STRUCT OCCURS 0 WITH HEADER LINE.DATA: G_REPID LIKE SY-REPID.data: begin of exclude occurs 5, fcode like sy-ucomm, end of exclude.DATA p_ucomm LIKE sy-ucomm.
Parameter P_tname Like DD02L-TabName Default 'VBAK'.
* =========================================================================================================================================================================================== ===================== ** Initialization fieldcatalog * ========================= ======================================================= * Initialization. G_repid = SY-REPID. Perform Fieldcat_init using gt_fieldcat [].
* =========================================================================================================================================================================================== ===================== ** EREIGNIS: At Selection-Screen Output (Pbo-ZeitPunkt) ** ============= ============================================================================================================================================================================================================= ======= * at selection-screen output. data exclude like rsexfcode occurs 0 with header line. if sy-dynnr = 1000. call function 'RS_SET_SELSCREEN_STATUS' EXPORTING p_status = 'ZGETTBFD' TABLES p_exclude = exclude EXCEPTIONS others = 1 P_UCOMM = Space.
* =========================================================================================================================================================================================== ===================== ** EREIGNIS: at selection-screen (pai-itpunkt) ** letztes pai-ereignis ** ======== ============================================================================================================================================================================================================= ============ * at selection-screen. p_ucomm = SY-UCOMM. Case P_ucomm. When 'stbl'. set parameter ID 'DTB' Field P_tname. * Perform Authority_Check USING 'SE11'. Call Transaction 'SE11' and Skip First Screen. Endcase.
* =========================================================================================================================================================================================== ===================== ** Data selection * ======================== ======================================================= * Start-of -Selection. Perform select_data tables gt_outtab. Perform function_exclude Tables Exclude.
* =========================================================================================================================================================================================== ===================== ** display list * ========================= ======================================================= * end-of -Selection. Call function 'reuse_alv_list_display' exporting i_callback_program = g_repid it_fieldcat = gt_fieldcat [] Tables t_outtab = gt_outtab. * ------------------------- ------------------------------------------- * forms * --- -------------------------------------------------- ----------------- * Initialization Fieldcatalog
Form Fieldcat_init Using RT_Fieldcat Type Slis_t_fieldcat_alv. Data: Ls_fieldcat Type SLIS_FIELDCAT_ALV. DATA: POS TYPE I VALUE 1.
clear ls_fieldcat. LS_FIELDCAT-COL_POS = POS. LS_FIELDCAT-FIELDNAME = 'POSITION'. ls_fieldcat-ref_fieldname = 'POSITION'. LS_FIELDCAT-REF_TABNAME = 'DD03L'. LS_FIELDCAT-KEY = 'X'. APPEND LS_FIELDCAT TO RT_FIELDCAT. clear ls_fieldcat. POS = POS 1. LS_FIELDCAT-COL_POS = POS. LS_FIELDCAT-FIELDNAME = 'TABNAME'. ls_fieldcat-ref_fieldname = 'TABNAME'. LS_FIELDCAT-REF_TABNAME = 'DD03T'. * LS_FIELDCAT-KEY = 'X'. APPEND LS_FIELDCAT TO RT_FIELDCAT. clear ls_fieldcat. POS = POS 1. lS_FIELDCAT-COL_POS = POS. lS_FIELDCAT-FIELDNAME = 'FIELDNAME'. ls_fieldcat-ref_fieldname = 'FIELDNAME'. lS_FIELDCAT-REF_TABNAME = 'DD03T'. APPEND lS_FIELDCAT TO RT_FIELDCAT. clear ls_fieldcat. POS = POS 1. LS_FIELDCAT-COL_POS = POS. LS_FIELDCAT-FIELDNAME = 'DATATYPE'. ls_fieldcat-ref_fieldname = 'DATATYPE'. LS_FIELDCAT-REF_TABNAME = 'DD03T'. APPEND LS_FIELDCAT TO RT_FIELDCAT. clear ls_fieldcat. POS = POS 1. LS_FIELDCAT-COL_POS = POS. LS_FIELDCAT-FIELDNAME = 'DDLENG'. Ls_fieldcat-ref_fieldname = 'LENG'. LS_FIELDCAT-REF_TABNAME = 'DD03L'. APPEND LS_FIELDCAT TO RT_FIELDCAT. Clear ls_fieldcat. POS = POS 1. LS_FIELDCAT -COL_POS = POS. Ls_fieldcat-fieldname = 'decimals'. Ls_fieldcat-ref_fieldname = 'decimals'. Ls_fieldcat-ref_tabname = 'DD03L'
. APPEND LS_FIELDCAT TO RT_FIELDCAT. Clear ls_fieldcat. POS = POS 1. LS_FIELDCAT-COL_POS = POS. LS_FIELDCAT-FIELDNAME = 'DDTEXT'. Ls_fieldcat-ref_fieldname = 'DDTEXT'. LS_FIELDCAT-REF_TABNAME = 'DD03T'. * LS_FIELDCAT-NO_OUT = 'X'. APPEND LS_FIELDCAT TO RT_FIELDCAT.ENDFORM. "fieldcat_init * Data selectionFORM SELECT_DATA TABLES RT_OUTTAB LIKE GT_OUTTAB []. SELECT DD03L ~ POSITION DD03L ~ TABNAME DD03L ~ FIELDNAME DD03L ~ DATATYPE DD03L ~ LENG DD03L ~ DECIMALS DD03T ~ DDTEXT DD04T ~ DDTEXT DD01T ~ DDTEXT INTO (RT_OUTTAB-POSITION, RT_OUTTAB-TABNAME, RT_OUTTAB-FIELDNAME, RT_OUTTAB-DATATYPE, RT_OUTTAB-DDLENG, RT_OUTTAB-DECIMALS, RT_OUTTAB-DDTEXT, RT_OUTTAB-EDDTEXT, RT_OUTTAB-DDDTEXT) FROM DD03L LEFT JOIN DD03T ON DD03L ~ TABNAME = DD03T ~ TabName and DD03L ~ FieldName = DD03T ~ FieldName and DD03T ~ DDLANGUAGE = SY-LANGU LEFT JO IN DD04T ON DD03L ~ ROLLNAME = DD04T ~ ROLLNAME AND DD04T ~ DDLANGUAGE = SY-LANGU LEFT JOIN DD01T ON DD03L ~ DOMNAME = DD01T ~ DOMNAME AND DD01T ~ DDLANGUAGE = SY-LANGU WHERE DD03L ~ TABNAME = P_TNAME ORDER BY DD03L ~ POSITION. IF RT_OUTTAB-DDTEXT = SPACE. IF RT_OUTTAB-EDDTEXT = SPACE. RT_OUTTAB-DDTEXT = RT_OUTTAB-DDDTEXT. ELSE. RT_OUTTAB-DDTEXT = RT_OUTTAB-EDDTEXT. ENDIF. ENDIF. APPEND RT_OUTTAB. ENDSELECT.
ENDFORM.