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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 |
*&---------------------------------------------------------------------* *& Report ZSTKOES_NEW_SYNTAX *&---------------------------------------------------------------------* *& *&---------------------------------------------------------------------* 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 ASSIGNING FIELD-SYMBOL(<ls_object>). IF ( sy-tabix EQ 1 AND <ls_object>-dtyp EQ 'CLNT' ) OR <ls_object>-dtyp EQ 'FLTP'. CONTINUE. ENDIF. IF NOT line_exists( gt_dynamic_screen[ tablename = pa_tab fieldname = <ls_object>-fieldname ] ). APPEND VALUE #( progname = sy-repid tablename = CONV tabname( pa_tab ) fieldname = <ls_object>-fieldname comments = COND #( WHEN gv_comment IS NOT INITIAL THEN gv_comment ELSE COND #( WHEN strlen( CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-scrtext_m ) GT 1 THEN CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-scrtext_m ELSE CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-fieldtext ) ) paid = <ls_object>-memoryid ucnv = <ls_object>-convexit type = <ls_object>-dtyp ityp = <ls_object>-exid leng = COND #( WHEN <ls_object>-exlength+1 EQ '00' THEN 'FF' ELSE <ls_object>-exlength+1 ) f4availabl = COND #( WHEN <ls_object>-checktable IS NOT INITIAL THEN abap_true ELSE CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-f4availabl ) ddtypename = <ls_object>-rollname checktable = <ls_object>-checktable checkbox = COND #( WHEN <ls_object>-rollname IS NOT INITIAL THEN lcl_helper=>check_field_for_checkbox( <ls_object>-rollname ) ) wnam = COND scrpwschl( WHEN <ls_object>-reftable IS NOT INITIAL THEN |{ <ls_object>-reftable }-{ <ls_object>-reffield }| ELSE '' ) sign = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-sign lowercase = CAST cl_abap_elemdescr( cl_abap_elemdescr=>describe_by_name( |{ pa_tab }-{ <ls_object>-fieldname }| ) )->get_ddic_field( )-lowercase ) TO gt_dynamic_screen. ENDIF. ENDLOOP. ENDIF. * Output the data TRY. CALL METHOD cl_salv_table=>factory IMPORTING r_salv_table = DATA(gref_salv) CHANGING t_table = gt_dynamic_screen. gref_salv->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 23 24 25 26 |
*&---------------------------------------------------------------------* *& Include ZSTKOES_NEW_SYNTAX_TOP *&---------------------------------------------------------------------* TYPES: BEGIN OF gty_dynamic_screen, progname TYPE progname, " ABAP Program Name tablename TYPE tabname, " Table Name fieldname TYPE fieldname, " Field Name comments TYPE scrtext_m, " Char 20 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: gv_comment TYPE appl_code, gt_dynamic_screen TYPE gtty_dynamic_screen. |
1 2 3 4 5 |
*&---------------------------------------------------------------------* *& Include ZSTKOES_NEW_SYNTAX_SEL *&---------------------------------------------------------------------* PARAMETERS: pa_tab TYPE tabname DEFAULT 'MARA' 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 27 28 29 30 31 |
*&---------------------------------------------------------------------* *& Include ZSTKOES_NEW_SYNTAX_CL1 *&---------------------------------------------------------------------* 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 ASSIGNING FIELD-SYMBOL(<fieldvalue>). IF <fieldvalue>-low EQ abap_true OR <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. |