1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
REPORT zstkoes_new_syntax. INCLUDE zstkoes_new_syntax_top. INCLUDE zstkoes_new_syntax_sel. INCLUDE zstkoes_new_syntax_cl1. START-OF-SELECTION. DATA(lt_ddic_object) = CAST cl_abap_structdescr( cl_abap_typedescr=>describe_by_name( pa_tab ) )->get_ddic_object( ). IF sy-subrc EQ 0. LOOP AT lt_ddic_object REFERENCE INTO DATA(lr_object). DATA(lo_elemdescr) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ lr_object->fieldname }| ) ). APPEND VALUE #( progname = sy-repid tablename = CONV tabname( pa_tab ) fieldname = lr_object->fieldname scrtext_m = COND #( WHEN lo_elemdescr->get_ddic_field( )-scrtext_m IS NOT INITIAL THEN lo_elemdescr->get_ddic_field( )-scrtext_m ELSE lo_elemdescr->get_ddic_field( )-fieldtext ) paid = lr_object->memoryid ucnv = lr_object->convexit type = lr_object->dtyp ityp = lr_object->exid leng = COND #( WHEN lr_object->exlength+1 EQ '00' THEN 'FF' ELSE lr_object->exlength+1 ) f4availabl = COND #( WHEN lr_object->checktable IS NOT INITIAL THEN abap_true ELSE lo_elemdescr->get_ddic_field( )-f4availabl ) ddtypename = lr_object->rollname checktable = lr_object->checktable checkbox = COND #( WHEN lr_object->rollname IS NOT INITIAL THEN lcl_helper=>check_field_for_checkbox( lr_object->rollname ) ) wnam = COND #( WHEN lr_object->reftable IS NOT INITIAL THEN |{ lr_object->reftable }-{ lr_object->reffield }| ) sign = lo_elemdescr->get_ddic_field( )-sign lowercase = lo_elemdescr->get_ddic_field( )-lowercase ) TO gt_dynamic_screen. ENDLOOP. ENDIF. * Output the data TRY. cl_salv_table=>factory( IMPORTING r_salv_table = DATA(go_salv_table) CHANGING t_table = gt_dynamic_screen ). go_salv_table->get_columns( )->set_optimize( ). go_salv_table->get_functions( )->set_all( ). go_salv_table->display( ). CATCH cx_salv_msg. ENDTRY. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
TYPES: BEGIN OF gty_dynamic_screen, progname TYPE progname, " ABAP Program Name tablename TYPE tabname, " Table Name fieldname TYPE fieldname, " Field Name scrtext_m TYPE scrtext_m, " Medium keyword paid TYPE memoryid, " Set/Get parameter ID ucnv TYPE convexit, " User conversion routine type TYPE datatype_d, " Field Format ityp TYPE inttype, " Internal type from ABAP Dictionary leng TYPE flg3_____4, " Flag byte 3 f4availabl TYPE xfeld, " ddtypename TYPE rollname, " Data element (semantic domain) checktable TYPE checktable, " Check table name of foreign key checkbox TYPE checkbox1, " Checkbox in hierarchies wnam TYPE scrpwschl, " Currency key field sign TYPE signflag, " Flag for sign in numerical fields lowercase TYPE lowercase, " Lowercase letters END OF gty_dynamic_screen, gtty_dynamic_screen TYPE TABLE OF gty_dynamic_screen. DATA: gt_dynamic_screen TYPE gtty_dynamic_screen. |
1 2 |
PARAMETERS: pa_tab TYPE tabname DEFAULT 'TADIR' OBLIGATORY. |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
CLASS lcl_helper DEFINITION. PUBLIC SECTION. CLASS-METHODS check_field_for_checkbox IMPORTING iv_rollname TYPE rollname RETURNING VALUE(rv_checkbox) TYPE abap_bool. ENDCLASS. CLASS lcl_helper IMPLEMENTATION. METHOD check_field_for_checkbox. DATA(fieldvalues) = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( iv_rollname ) )->get_ddic_fixed_values( ). DATA(lv_checkbox) = abap_true. IF lines( fieldvalues ) EQ 2. DATA(lv_count) = 0. LOOP AT fieldvalues REFERENCE INTO DATA(lr_fieldvalue). IF lr_fieldvalue->low EQ abap_true OR lr_fieldvalue->low EQ abap_false. ADD 1 TO lv_count. ENDIF. ENDLOOP. IF lv_count EQ 2. rv_checkbox = abap_true. ENDIF. ENDIF. ENDMETHOD. ENDCLASS. |