├── .DS_Store
├── JAVA
└── zapp.pretty.printer
│ ├── bin
│ ├── .gitignore
│ └── zapp
│ │ └── pretty
│ │ └── printer
│ │ ├── Activator.class
│ │ └── handlers
│ │ └── AmdpPrettyPrinterHandler.class
│ ├── src
│ ├── zapp
│ │ └── pretty
│ │ │ └── printer
│ │ │ ├── .gitignore
│ │ │ ├── handlers
│ │ │ └── .gitignore
│ │ │ └── Activator.java
│ ├── .classpath
│ └── .project
│ ├── OSGI-INF
│ └── l10n
│ │ └── bundle.properties
│ ├── .settings
│ ├── org.eclipse.wst.ws.service.policy.prefs
│ ├── org.eclipse.ltk.core.refactoring.prefs
│ └── org.eclipse.jdt.core.prefs
│ ├── icons
│ ├── amdp pretty printer.png
│ └── amdp pretty printer@2x.png
│ ├── build.properties
│ ├── .classpath
│ ├── META-INF
│ └── MANIFEST.MF
│ ├── .project
│ └── plugin.xml
├── abap
├── .DS_Store
└── src
│ ├── app_pretty_printer_rules
│ ├── zif_app_rule_provider.intf.abap
│ ├── zif_app_rule_condition.intf.abap
│ ├── zif_app_rule_finder.intf.abap
│ ├── app_pretty_printer_rules_amdp
│ │ ├── zif_app_amdp_rule_definitions.intf.abap
│ │ ├── package.devc.xml
│ │ ├── zcl_app_rule_amdp_by.clas.xml
│ │ ├── zif_app_amdp_rule_definitions.intf.xml
│ │ ├── zcl_app_rule_amdp_call.clas.xml
│ │ ├── zcl_app_rule_amdp_union_all.clas.xml
│ │ ├── zcl_app_rule_amdp_default.clas.xml
│ │ ├── zcl_app_rule_amdp_default_tokn.clas.xml
│ │ ├── zcl_app_rule_amdp_func_in_1_ro.clas.xml
│ │ ├── zcl_app_rule_amdp_control_stru.clas.xml
│ │ ├── zcl_app_rule_amdp_default_no_c.clas.xml
│ │ ├── zcl_app_rule_amdp_new_line.clas.xml
│ │ ├── zcl_app_rule_amdp_sel_ups_ins.clas.xml
│ │ ├── zcl_app_rule_amdp_left_right.clas.xml
│ │ ├── zcl_app_rule_amdp_new_line_lft.clas.xml
│ │ ├── zcl_app_rule_amdp_opn_bracket.clas.xml
│ │ ├── zcl_app_rule_cond_n_rl_is_no_b.clas.xml
│ │ ├── zcl_app_rule_amdp_clse_bracket.clas.xml
│ │ ├── zcl_app_rule_cond_from_tokn_rw.clas.xml
│ │ ├── zcl_app_rule_amdp_nl_lft_cond.clas.xml
│ │ ├── zcl_app_rule_cond_n_rl_is_no_b.clas.abap
│ │ ├── zapp_spec_bracket_logic.doma.xml
│ │ ├── zapp_open_bracket_spec_logic.doma.xml
│ │ ├── zcl_app_rule_cond_from_tokn_rw.clas.abap
│ │ ├── zcl_app_rule_amdp_left_right.clas.abap
│ │ ├── zcl_app_rule_amdp_nl_lft_cond.clas.abap
│ │ ├── zcl_app_rule_amdp_default_tokn.clas.abap
│ │ ├── zcl_app_rule_amdp_func_in_1_ro.clas.abap
│ │ ├── zapp_d_spec_bracket_logic.dtel.xml
│ │ ├── zcl_app_rule_amdp_new_line_lft.clas.abap
│ │ ├── zcl_app_rule_amdp_default_no_c.clas.abap
│ │ ├── zcl_app_rule_amdp_new_line.clas.abap
│ │ ├── zcl_app_rule_amdp_by.clas.abap
│ │ ├── zcl_app_rule_amdp_control_stru.clas.abap
│ │ ├── zcl_app_rule_amdp_clse_bracket.clas.abap
│ │ ├── zcl_app_rule_amdp_opn_bracket.clas.abap
│ │ ├── zcl_app_amdp_rule_utilities.clas.xml
│ │ └── zcl_app_rule_amdp_union_all.clas.abap
│ ├── package.devc.xml
│ ├── app_pretty_printer_rules_abap
│ │ ├── package.devc.xml
│ │ ├── zcl_app_rule_abap_dummy.clas.xml
│ │ └── zcl_app_rule_abap_dummy.clas.abap
│ ├── zif_app_rule_provider.intf.xml
│ ├── zif_app_rule_finder.intf.xml
│ ├── zcl_app_base_rule.clas.xml
│ ├── zif_app_rule_condition.intf.xml
│ ├── zcl_app_rule_factory.clas.xml
│ ├── zcl_app_rule_finder.clas.xml
│ ├── zcl_app_rule_provider.clas.xml
│ ├── zapp_t_rule_instances.ttyp.xml
│ ├── zapp_t_rule_sort.ttyp.xml
│ ├── zapp_s_rule_search.tabl.xml
│ ├── zcl_app_rule_factory.clas.abap
│ └── zcl_app_rule_finder.clas.abap
│ ├── package.devc.xml
│ ├── zif_app_keyword_scanner.intf.abap
│ ├── app_pretty_printer_test
│ ├── package.devc.xml
│ ├── zcl_app_test_amdp.clas.xml
│ ├── zapp_pretty_printer_test_co01.prog.abap
│ ├── zapp_pretty_printer_test_so01.prog.abap
│ ├── zapp_pretty_printer_test_co01.prog.xml
│ ├── zapp_pretty_printer_test_so01.prog.xml
│ ├── zapp_pretty_printer_test_ui01.prog.xml
│ ├── zapp_pretty_printer_test_ui01.prog.abap
│ └── zcl_app_test_amdp.clas.abap
│ ├── zapp_token.doma.xml
│ ├── zapp_delimiter.doma.xml
│ ├── zapp_context.doma.xml
│ ├── zapp_rule.doma.xml
│ ├── zif_app_keyword_scanner.intf.xml
│ ├── zapp_settings_canceli01.prog.abap
│ ├── zcl_app_utilities.clas.xml
│ ├── zcl_app_settings.clas.xml
│ ├── zapp_org_tab_row.doma.xml
│ ├── zcl_app_keyword_scanner_amdp.clas.xml
│ ├── zcl_app_scanner_comment.clas.xml
│ ├── zcl_app_scanner_delimiter.clas.xml
│ ├── zcl_app_scanner_sqlscript.clas.xml
│ ├── zapp_t_delimiter.ttyp.xml
│ ├── zcl_app_adt_rest_pretty_print.clas.xml
│ ├── zcl_app_pretty_printer.clas.xml
│ ├── zapp_t_token.ttyp.xml
│ ├── zapp_settings_canceli01.prog.xml
│ ├── zapp_t_rule.ttyp.xml
│ ├── zapp_settings_status_0100o01.prog.xml
│ ├── zapp_settings_user_command_i01.prog.xml
│ ├── zapp_t_rule_result.ttyp.xml
│ ├── zapp_t_stokesx_ext.ttyp.xml
│ ├── zcx_app_exception.clas.xml
│ ├── zapp_settings_user_command_i01.prog.abap
│ ├── zapp_settings_status_0100o01.prog.abap
│ ├── zcx_app_exception.clas.abap
│ ├── zapp_t_keywords_sort.ttyp.xml
│ ├── zapp_settings.tran.xml
│ ├── zapp_s_keywords.tabl.xml
│ ├── zapp_comment.doma.xml
│ ├── zcl_app_adt_disc_pretty_print.clas.xml
│ ├── zapp_d_token.dtel.xml
│ ├── zapp_d_comment.dtel.xml
│ ├── zapp_d_keyword.dtel.xml
│ ├── zapp_d_delimiter.dtel.xml
│ ├── zapp_d_sqlscript.dtel.xml
│ ├── zapp_d_rule_class.dtel.xml
│ ├── ezapp_settings.enqu.xml
│ ├── zapp_sqlscript.doma.xml
│ ├── zapp_d_context.dtel.xml
│ ├── zapp_d_rule.dtel.xml
│ ├── zapp_d_org_tab_row.dtel.xml
│ ├── zapp_d_additional_indent.dtel.xml
│ ├── zapp_d_rule_cond_class.dtel.xml
│ ├── zapp_d_hl_context.dtel.xml
│ ├── zapp_d_no_lb_at_comma.dtel.xml
│ ├── zapp_d_new_line_req.dtel.xml
│ ├── zcl_app_adt_disc_pretty_print.clas.abap
│ ├── zapp_d_comment_detail.dtel.xml
│ ├── zapp_d_new_line_indent_diff.dtel.xml
│ ├── zapp_d_new_statem_indent_diff.dtel.xml
│ ├── zapp_comment_detail.doma.xml
│ ├── zapp_lb_after_comma_rule.doma.xml
│ ├── zcl_app_scanner.clas.xml
│ ├── zapp_s_rule_result.tabl.xml
│ ├── zcl_app_adt_rest_pretty_print.clas.abap
│ ├── zapp_t_stokesx_ext_st.ttyp.xml
│ ├── zcl_app_settings.clas.abap
│ ├── zif_app_settings.intf.abap
│ ├── zif_app_settings.intf.xml
│ ├── zapp_settings.tabl.xml
│ ├── zapp_s_rule.tabl.xml
│ ├── zapp_s_stokesx_ext.tabl.xml
│ ├── zcl_app_scanner.clas.testclasses.abap
│ ├── zapp_mc_pretty_print.msag.xml
│ ├── zcl_app_scanner_delimiter.clas.abap
│ └── zapp_settings.prog.abap
├── doc
├── images
│ ├── amdp_pretty_printer.gif
│ └── amdp_pretty_printer_icon.png
├── Installation
│ ├── images
│ │ └── media
│ │ │ ├── image1.png
│ │ │ ├── image2.png
│ │ │ ├── image3.png
│ │ │ ├── image4.png
│ │ │ ├── image5.png
│ │ │ ├── image6.png
│ │ │ ├── image7.png
│ │ │ ├── image8.png
│ │ │ ├── image9.png
│ │ │ ├── image10.png
│ │ │ ├── image11.png
│ │ │ └── image12.png
│ └── README.md
├── Configuration
│ └── images
│ │ └── media
│ │ ├── image1.png
│ │ └── image2.png
└── how_does_it_work
│ └── README.md
├── Eclipse Dropin
└── plugins
│ └── zapp.pretty.printer_1.0.1.202210021353.jar
├── .abapgit.xml
├── README.md
└── LICENSE
/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/.DS_Store
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/bin/.gitignore:
--------------------------------------------------------------------------------
1 | /.classpath
2 | /.project
3 | /zapp/
4 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/src/zapp/pretty/printer/.gitignore:
--------------------------------------------------------------------------------
1 | /Activator.class
2 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/OSGI-INF/l10n/bundle.properties:
--------------------------------------------------------------------------------
1 | plugin.name=AMDP Pretty Printer
--------------------------------------------------------------------------------
/abap/.DS_Store:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/abap/.DS_Store
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/src/zapp/pretty/printer/handlers/.gitignore:
--------------------------------------------------------------------------------
1 | /AmdpPrettyPrinterHandler.class
2 |
--------------------------------------------------------------------------------
/doc/images/amdp_pretty_printer.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/images/amdp_pretty_printer.gif
--------------------------------------------------------------------------------
/doc/Installation/images/media/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image1.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image2.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image3.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image4.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image5.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image5.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image6.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image7.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image8.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image8.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image9.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image9.png
--------------------------------------------------------------------------------
/doc/images/amdp_pretty_printer_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/images/amdp_pretty_printer_icon.png
--------------------------------------------------------------------------------
/doc/Configuration/images/media/image1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Configuration/images/media/image1.png
--------------------------------------------------------------------------------
/doc/Configuration/images/media/image2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Configuration/images/media/image2.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image10.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image10.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image11.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image11.png
--------------------------------------------------------------------------------
/doc/Installation/images/media/image12.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/doc/Installation/images/media/image12.png
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/.settings/org.eclipse.wst.ws.service.policy.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.wst.ws.service.policy.projectEnabled=false
3 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/icons/amdp pretty printer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/JAVA/zapp.pretty.printer/icons/amdp pretty printer.png
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/icons/amdp pretty printer@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/JAVA/zapp.pretty.printer/icons/amdp pretty printer@2x.png
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/.settings/org.eclipse.ltk.core.refactoring.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
3 |
--------------------------------------------------------------------------------
/Eclipse Dropin/plugins/zapp.pretty.printer_1.0.1.202210021353.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/Eclipse Dropin/plugins/zapp.pretty.printer_1.0.1.202210021353.jar
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/bin/zapp/pretty/printer/Activator.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/JAVA/zapp.pretty.printer/bin/zapp/pretty/printer/Activator.class
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/build.properties:
--------------------------------------------------------------------------------
1 | source.. = src/
2 | output.. = bin/
3 | bin.includes = plugin.xml,\
4 | META-INF/,\
5 | .,\
6 | icons/,\
7 | OSGI-INF/
8 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/bin/zapp/pretty/printer/handlers/AmdpPrettyPrinterHandler.class:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/fmabap/AMDP_Pretty_Printer/HEAD/JAVA/zapp.pretty.printer/bin/zapp/pretty/printer/handlers/AmdpPrettyPrinterHandler.class
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_provider.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_rule_provider
2 | PUBLIC .
3 |
4 | METHODS get_rules
5 | RETURNING VALUE(rt_result) TYPE ZAPP_T_RULE_SORT
6 | RAISING zcx_app_exception.
7 |
8 | ENDINTERFACE.
9 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/src/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_condition.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_rule_condition
2 | PUBLIC .
3 |
4 | METHODS is_cond_fulfilled
5 | IMPORTING ir_rule TYPE REF TO zif_app_rule
6 | RETURNING VALUE(rv_result) TYPE abap_bool
7 | RAISING zcx_app_exception.
8 | ENDINTERFACE.
9 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_finder.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_rule_finder
2 | PUBLIC .
3 |
4 | METHODS get_rule_data
5 | IMPORTING is_rule_search type ZAPP_S_RULE_SEARCH
6 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule
7 | RAISING zcx_app_exception.
8 |
9 | ENDINTERFACE.
10 |
--------------------------------------------------------------------------------
/.abapgit.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | E
6 | /abap/src/
7 | FULL
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zif_app_amdp_rule_definitions.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_amdp_rule_definitions
2 | PUBLIC .
3 | CONSTANTS: BEGIN OF cos_open_bracket_special_logic,
4 | call_statement TYPE ZAPP_D_SPEC_BRACKET_LOGIC value 'C',
5 | END of cos_open_bracket_special_logic.
6 |
7 |
8 |
9 | ENDINTERFACE.
10 |
--------------------------------------------------------------------------------
/abap/src/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | AMDP Pretty Printer
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/abap/src/zif_app_keyword_scanner.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_keyword_scanner
2 |
3 | PUBLIC .
4 | METHODS scan_keyword
5 | IMPORTING ir_token_ext TYPE REF TO zapp_s_stokesx_ext
6 | RAISING zcx_app_exception.
7 |
8 | METHODS is_keyword
9 | IMPORTING iv_token_up TYPE zapp_d_token
10 | RETURNING VALUE(rv_result) TYPE abap_bool.
11 | ENDINTERFACE.
12 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Pretty Printer Test
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Pretty Printer Rules
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_abap/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Pretty Printer Rules ABAP
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/package.devc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Pretty Printer Rules AMDP
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/src/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | src
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 |
15 | org.eclipse.jdt.core.javanature
16 |
17 |
18 |
--------------------------------------------------------------------------------
/abap/src/zapp_token.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_TOKEN
7 | E
8 | STRG
9 | X
10 | Token
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/abap/src/zapp_delimiter.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_DELIMITER
7 | E
8 | STRG
9 | X
10 | Delimiter
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/abap/src/zapp_context.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_CONTEXT
7 | E
8 | STRG
9 | X
10 | Pretty Printer Context
11 |
12 |
13 |
14 |
15 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/.classpath:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/abap/src/zapp_rule.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_RULE
7 | E
8 | CHAR
9 | 000030
10 | 000030
11 | Pretty Printer Rule
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/zif_app_keyword_scanner.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_KEYWORD_SCANNER
7 | E
8 | Keyword Provider
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_provider.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_RULE_PROVIDER
7 | E
8 | Rule Provider
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_canceli01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_SETTINGS_CANCELI01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module CANCEL INPUT
6 | *&---------------------------------------------------------------------*
7 | * text
8 | *----------------------------------------------------------------------*
9 | MODULE cancel INPUT.
10 | LEAVE TO SCREEN 0.
11 | ENDMODULE.
12 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_utilities.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_UTILITIES
7 | E
8 | Pretty Printer Utilities
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_finder.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_RULE_FINDER
7 | E
8 | Pretty Printer Rule Finder
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_settings.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_SETTINGS
7 | E
8 | AMDP Pretty Printer Settings
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_base_rule.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_BASE_RULE
7 | E
8 | Base Rule
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zcl_app_test_amdp.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_TEST_AMDP
7 | E
8 | Test AMDP
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zif_app_rule_condition.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_RULE_CONDITION
7 | E
8 | Pretty Printer Rule Condition
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/zapp_org_tab_row.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_ORG_TAB_ROW
7 | E
8 | DEC
9 | 000010
10 | 000013
11 | 000002
12 | Original Tab Row
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_rule_factory.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_FACTORY
7 | E
8 | Rule Factory
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_keyword_scanner_amdp.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_KEYWORD_SCANNER_AMDP
7 | E
8 | Keyword Provider AMDP
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner_comment.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_SCANNER_COMMENT
7 | E
8 | Pretty Printer Scanner Comment
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner_delimiter.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_SCANNER_DELIMITER
7 | E
8 | Pretty Printer Scanner Delimiter
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner_sqlscript.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_SCANNER_SQLSCRIPT
7 | E
8 | Pretty Printer Scanner SQLSCRIPT
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_rule_finder.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_FINDER
7 | E
8 | Pretty Printer Rule Finder
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_delimiter.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_DELIMITER
7 | E
8 | STRG
9 | T
10 | D
11 | N
12 | Delemiter
13 | 000008
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_rule_provider.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_PROVIDER
7 | E
8 | Pretty Printer Rule Provider
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_adt_rest_pretty_print.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_ADT_REST_PRETTY_PRINT
7 | E
8 | Resource Controller Source Formatter
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_by.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_BY
7 | E
8 | AMDP Rule By
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zif_app_amdp_rule_definitions.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_AMDP_RULE_DEFINITIONS
7 | E
8 | AMDP Rule Definitions
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 |
16 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_pretty_printer.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_PRETTY_PRINTER
7 | E
8 | Pretty Printer
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_call.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_CALL
7 | E
8 | Rule for Call
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_co01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_PRETTY_PRINTER_TEST_CO01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module CREATE_OBJECTS OUTPUT
6 | *&---------------------------------------------------------------------*
7 | *&
8 | *&---------------------------------------------------------------------*
9 | MODULE create_objects OUTPUT.
10 |
11 | gr_logic->create_controls( ).
12 |
13 | ENDMODULE.
14 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_token.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_TOKEN
7 | E
8 | ZAPP_D_TOKEN
9 | E
10 | STRG
11 | T
12 | D
13 | N
14 | Token
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_abap/zcl_app_rule_abap_dummy.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_ABAP_DUMMY
7 | E
8 | Dummy ABAP Rule
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_union_all.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_UNION_ALL
7 | E
8 | Union ALL
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_so01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_PRETTY_PRINTER_TEST_SO01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module STATUS_0100 OUTPUT
6 | *&---------------------------------------------------------------------*
7 | *&
8 | *&---------------------------------------------------------------------*
9 | MODULE status_0100 OUTPUT.
10 | SET PF-STATUS '0100'.
11 | SET TITLEBAR '0100'.
12 | ENDMODULE.
13 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_canceli01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SETTINGS_CANCELI01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_SETTINGS_CANCELI01
15 | 31
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_default.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_DEFAULT
7 | E
8 | Default AMDP Rule
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_default_tokn.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_DEFAULT_TOKN
7 | E
8 | Default Token
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_rule.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_RULE
7 | E
8 | ZAPP_S_RULE
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | Pretty Printer Rule
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_status_0100o01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SETTINGS_STATUS_0100O01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_SETTINGS_STATUS_0100O01
15 | 36
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_func_in_1_ro.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_FUNC_IN_1_RO
7 | E
8 | Function in one row
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_user_command_i01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SETTINGS_USER_COMMAND_I01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_SETTINGS_USER_COMMAND_I01
15 | 38
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_rule_result.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_RULE_RESULT
7 | E
8 | ZAPP_S_RULE_RESULT
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | Rule Result
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_control_stru.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_CONTROL_STRU
7 | E
8 | AMDP Rule Control Structure
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_default_no_c.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_DEFAULT_NO_C
7 | E
8 | AMDP Default No Comment
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_new_line.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_NEW_LINE
7 | E
8 | Pretty Printer Rule AMDP New Line
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_stokesx_ext.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_STOKESX_EXT
7 | E
8 | ZAPP_S_STOKESX_EXT
9 | S
10 | STRU
11 | T
12 | D
13 | N
14 | Extended STOKESX
15 |
16 |
17 |
18 |
19 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_sel_ups_ins.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_SEL_UPS_INS
7 | E
8 | Pretty Printer Rule AMDP Select
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_left_right.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_LEFT_RIGHT
7 | E
8 | Pretty Printer Rule for LEFT and RIGHT
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_new_line_lft.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_NEW_LINE_LFT
7 | E
8 | New line left aligned from offset end
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_opn_bracket.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_OPN_BRACKET
7 | E
8 | Pretty Printer Rule AMDP Opening Bracket
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_cond_n_rl_is_no_b.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_COND_N_RL_IS_NO_B
7 | E
8 | Rule Condition next rule is no bracket
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_clse_bracket.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_CLSE_BRACKET
7 | E
8 | Pretty Printer Rule AMDP Closing Bracket
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_cond_from_tokn_rw.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_COND_FROM_TOKN_RW
7 | E
8 | Rule Condition Rule is under FROM Token
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_nl_lft_cond.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_RULE_AMDP_NL_LFT_COND
7 | E
8 | New line LEFT Alligned if conditions is fulfilled
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_co01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_PRETTY_PRINTER_TEST_CO01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_PRETTY_PRINTER_TEST_CO01
15 | 37
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_so01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_PRETTY_PRINTER_TEST_SO01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_PRETTY_PRINTER_TEST_SO01
15 | 37
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_ui01.prog.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_PRETTY_PRINTER_TEST_UI01
7 | I
8 | E
9 | X
10 |
11 |
12 | -
13 | R
14 | Include ZAPP_PRETTY_PRINTER_TEST_UI01
15 | 37
16 |
17 |
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zapp_t_rule_instances.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_RULE_INSTANCES
7 | E
8 | ZIF_APP_RULE
9 | R
10 | REF
11 | T
12 | D
13 | N
14 | Pretty Printer Rule Intstances
15 | I
16 |
17 |
18 |
19 |
20 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_cond_n_rl_is_no_b.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_cond_n_rl_is_no_b DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | INTERFACES zif_app_rule_condition.
8 | PROTECTED SECTION.
9 | PRIVATE SECTION.
10 | ENDCLASS.
11 |
12 |
13 |
14 | CLASS zcl_app_rule_cond_n_rl_is_no_b IMPLEMENTATION.
15 | METHOD zif_app_rule_condition~is_cond_fulfilled.
16 | DATA lr_next_rule TYPE REF TO zif_app_rule.
17 |
18 | rv_result = abap_true.
19 | lr_next_rule = ir_rule->get_next_rule( ).
20 |
21 | IF lr_next_rule IS NOT INITIAL
22 | AND lr_next_rule->get_token_up( ) = '('.
23 | rv_result = abap_false.
24 | ENDIF.
25 |
26 | ENDMETHOD.
27 |
28 | ENDCLASS.
29 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | #  AMDP Pretty Printer
2 |
3 | SAP recommends a code push down of your ABAP logic to the HANA database to have a better performance. One of the possible ways to do this is to use AMDPs (ABAP Managed Database Procedures). They can be developed in Eclipse. SAP unfortunately does not provide a Pretty Printer (source code formatter) for it. For this reason I developed an AMDP Pretty Printer in my spare time. You can use it for free under the MIT licence (see [Installation](doc/Installation/README.md) for more details).
4 |
5 | 
6 |
7 | ## [Installation](doc/Installation/README.md)
8 | ## [Configuration](doc/Configuration/README.md)
9 | ## [How does it work (technical)](doc/how_does_it_work/README.md)
--------------------------------------------------------------------------------
/abap/src/zcx_app_exception.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCX_APP_EXCEPTION
7 | E
8 | Pretty Printer Exception
9 | 40
10 | 1
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | CONSTRUCTOR
18 | E
19 | CONSTRUCTOR
20 |
21 |
22 |
23 |
24 |
25 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zapp_pretty_printer_test_ui01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_PRETTY_PRINTER_TEST_UI01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module USER_COMMAND_0100 INPUT
6 | *&---------------------------------------------------------------------*
7 | * text
8 | *----------------------------------------------------------------------*
9 | MODULE user_command_0100 INPUT.
10 |
11 | CASE sy-ucomm.
12 | WHEN 'EXIT'.
13 | LEAVE TO SCREEN 0.
14 | WHEN 'PP'.
15 | gr_logic->pretty_print( ).
16 | WHEN 'ATM'.
17 | gr_logic->add_test_method( ).
18 | ENDCASE.
19 | ENDMODULE.
20 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_user_command_i01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_SETTINGS_USER_COMMAND_I01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module USER_COMMAND_0100 INPUT
6 | *&---------------------------------------------------------------------*
7 | * text
8 | *----------------------------------------------------------------------*
9 | MODULE user_command_0100 INPUT.
10 | CASE gv_okcode.
11 | WHEN 'EXIT'.
12 | gr_settings->handle_exit( zapp_settings ).
13 | WHEN 'SAVE'.
14 | gr_settings->save( zapp_settings ).
15 | WHEN 'DELETE'.
16 | gr_settings->delete( ).
17 | ENDCASE.
18 | ENDMODULE.
19 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings_status_0100o01.prog.abap:
--------------------------------------------------------------------------------
1 | *----------------------------------------------------------------------*
2 | ***INCLUDE ZAPP_SETTINGS_STATUS_0100O01.
3 | *----------------------------------------------------------------------*
4 | *&---------------------------------------------------------------------*
5 | *& Module STATUS_0100 OUTPUT
6 | *&---------------------------------------------------------------------*
7 | *&
8 | *&---------------------------------------------------------------------*
9 | MODULE status_0100 OUTPUT.
10 |
11 | IF gr_settings->exists_settings( ).
12 | SET PF-STATUS '0100'.
13 | ELSE.
14 | SET PF-STATUS '0100' EXCLUDING 'DELETE'.
15 | ENDIF.
16 | IF p_set_g = abap_true.
17 | SET TITLEBAR '0100'.
18 | ELSE.
19 | SET TITLEBAR '0200' WITH sy-uname.
20 | ENDIF.
21 | ENDMODULE.
22 |
--------------------------------------------------------------------------------
/abap/src/zcx_app_exception.clas.abap:
--------------------------------------------------------------------------------
1 | class ZCX_APP_EXCEPTION definition
2 | public
3 | inheriting from CX_STATIC_CHECK
4 | create public .
5 |
6 | public section.
7 |
8 | interfaces IF_T100_DYN_MSG .
9 | interfaces IF_T100_MESSAGE .
10 |
11 | methods CONSTRUCTOR
12 | importing
13 | !TEXTID like IF_T100_MESSAGE=>T100KEY optional
14 | !PREVIOUS like PREVIOUS optional .
15 | protected section.
16 | private section.
17 | ENDCLASS.
18 |
19 |
20 |
21 | CLASS ZCX_APP_EXCEPTION IMPLEMENTATION.
22 |
23 |
24 | method CONSTRUCTOR.
25 | CALL METHOD SUPER->CONSTRUCTOR
26 | EXPORTING
27 | PREVIOUS = PREVIOUS
28 | .
29 | clear me->textid.
30 | if textid is initial.
31 | IF_T100_MESSAGE~T100KEY = IF_T100_MESSAGE=>DEFAULT_TEXTID.
32 | else.
33 | IF_T100_MESSAGE~T100KEY = TEXTID.
34 | endif.
35 | endmethod.
36 | ENDCLASS.
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_keywords_sort.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_KEYWORDS_SORT
7 | E
8 | ZAPP_S_KEYWORDS
9 | S
10 | STRU
11 | T
12 | K
13 | N
14 | 0001
15 | Keywords
16 |
17 |
18 |
19 | ZAPP_T_KEYWORDS_SORT
20 | 0001
21 | 0001
22 | KEYWORD
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings.tran.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SETTINGS
7 | ZAPP_SETTINGS
8 | 1000
9 | gA==
10 |
11 |
12 | ZAPP_SETTINGS
13 | 1
14 | X
15 | X
16 |
17 |
18 | E
19 | ZAPP_SETTINGS
20 | AMDP Pretty Printer Settings
21 |
22 |
23 |
24 | D
25 | AMDP Pretty Printer Einstellungen
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/.settings/org.eclipse.jdt.core.prefs:
--------------------------------------------------------------------------------
1 | eclipse.preferences.version=1
2 | org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
3 | org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
4 | org.eclipse.jdt.core.compiler.codegen.targetPlatform=16
5 | org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
6 | org.eclipse.jdt.core.compiler.compliance=16
7 | org.eclipse.jdt.core.compiler.debug.lineNumber=generate
8 | org.eclipse.jdt.core.compiler.debug.localVariable=generate
9 | org.eclipse.jdt.core.compiler.debug.sourceFile=generate
10 | org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
11 | org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
12 | org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
13 | org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
14 | org.eclipse.jdt.core.compiler.release=enabled
15 | org.eclipse.jdt.core.compiler.source=16
16 |
--------------------------------------------------------------------------------
/abap/src/zapp_s_keywords.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_S_KEYWORDS
7 | E
8 | INTTAB
9 | Keywords
10 | 1
11 |
12 |
13 |
14 | KEYWORD
15 | ZAPP_D_KEYWORD
16 | 0
17 | E
18 |
19 |
20 |
21 | D
22 |
23 |
24 | -
25 | D
26 | Schlüsselwörter
27 |
28 |
29 |
30 |
31 |
32 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zapp_spec_bracket_logic.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SPEC_BRACKET_LOGIC
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | Open Special Bracket Logic
13 |
14 |
15 |
16 | 0001
17 | E
18 | none
19 |
20 |
21 | 0002
22 | E
23 | C
24 | Call Statement
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zapp_open_bracket_spec_logic.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_OPEN_BRACKET_SPEC_LOGIC
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | Open Bracket Special Logic
13 |
14 |
15 |
16 | 0001
17 | E
18 | none
19 |
20 |
21 | 0002
22 | E
23 | C
24 | Call Statement
25 |
26 |
27 |
28 |
29 |
30 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/src/zapp/pretty/printer/Activator.java:
--------------------------------------------------------------------------------
1 | package zapp.pretty.printer;
2 |
3 | import org.eclipse.ui.plugin.AbstractUIPlugin;
4 | import org.osgi.framework.BundleContext;
5 |
6 | /**
7 | * The activator class controls the plug-in life cycle
8 | */
9 | public class Activator extends AbstractUIPlugin {
10 |
11 | // The plug-in ID
12 | public static final String PLUGIN_ID = "zapp.pretty.printer"; //$NON-NLS-1$
13 |
14 | // The shared instance
15 | private static Activator plugin;
16 |
17 | /**
18 | * The constructor
19 | */
20 | public Activator() {
21 | }
22 |
23 | @Override
24 | public void start(BundleContext context) throws Exception {
25 | super.start(context);
26 | plugin = this;
27 | }
28 |
29 | @Override
30 | public void stop(BundleContext context) throws Exception {
31 | plugin = null;
32 | super.stop(context);
33 | }
34 |
35 | /**
36 | * Returns the shared instance
37 | *
38 | * @return the shared instance
39 | */
40 | public static Activator getDefault() {
41 | return plugin;
42 | }
43 |
44 | }
45 |
--------------------------------------------------------------------------------
/abap/src/zapp_comment.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_COMMENT
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | Comment
13 |
14 |
15 |
16 | 0001
17 | E
18 | No Comment
19 |
20 |
21 | 0002
22 | E
23 | S
24 | Single Line Comment
25 |
26 |
27 | 0003
28 | E
29 | M
30 | Multi Line Comment
31 |
32 |
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/META-INF/MANIFEST.MF:
--------------------------------------------------------------------------------
1 | Manifest-Version: 1.0
2 | Bundle-ManifestVersion: 2
3 | Bundle-Name: AMDP Pretty Printer
4 | Bundle-SymbolicName: zapp.pretty.printer;singleton:=true
5 | Bundle-Version: 1.0.1.qualifier
6 | Bundle-Activator: zapp.pretty.printer.Activator
7 | Require-Bundle: org.eclipse.ui,
8 | org.eclipse.core.runtime,
9 | org.eclipse.core.resources;bundle-version="3.16.0",
10 | com.sap.adt.communication;bundle-version="3.22.1",
11 | com.sap.adt.compatibility;bundle-version="3.22.1",
12 | com.sap.adt.destinations;bundle-version="3.22.1",
13 | com.sap.adt.destinations.ui;bundle-version="3.22.1",
14 | com.sap.adt.tools.core;bundle-version="3.22.3",
15 | com.sap.adt.project.ui;bundle-version="3.22.1",
16 | com.sap.adt.tools.abapsource;bundle-version="3.22.3",
17 | com.sap.adt.tools.abapsource.ui;bundle-version="3.22.3",
18 | com.sap.adt.tools.core.ui,
19 | com.sap.adt.util.ui,
20 | org.eclipse.ui.workbench.texteditor,
21 | org.eclipse.jface.text
22 | Bundle-RequiredExecutionEnvironment: JavaSE-16
23 | Automatic-Module-Name: zapp.pretty.printer
24 | Bundle-ActivationPolicy: lazy
25 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_adt_disc_pretty_print.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_ADT_DISC_PRETTY_PRINT
7 | E
8 | Pretty Printer Discovery Resource Controller
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 | -
16 | I
17 | 001
18 | AMDP Pretty Printer
19 | 56
20 |
21 |
22 |
23 | -
24 | D
25 |
26 |
-
27 | I
28 | 001
29 | AMDP Pretty Printer
30 | 56
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/.project:
--------------------------------------------------------------------------------
1 |
2 |
3 | zapp.pretty.printer
4 |
5 |
6 |
7 |
8 |
9 | org.eclipse.jdt.core.javabuilder
10 |
11 |
12 |
13 |
14 | org.eclipse.pde.ManifestBuilder
15 |
16 |
17 |
18 |
19 | org.eclipse.pde.SchemaBuilder
20 |
21 |
22 |
23 |
24 |
25 | org.eclipse.pde.PluginNature
26 | org.eclipse.jdt.core.javanature
27 |
28 |
29 |
30 | 1645349827794
31 |
32 | 30
33 |
34 | org.eclipse.core.resources.regexFilterMatcher
35 | node_modules|.git|__CREATED_BY_JAVA_LANGUAGE_SERVER__
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2021 Frank Müller
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_token.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_TOKEN
7 | E
8 | ZAPP_TOKEN
9 | 05
10 | 05
11 | 05
12 | 05
13 | Token
14 | Token
15 | Token
16 | Token
17 | Token
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Token
28 | Token
29 | Token
30 | Token
31 | Token
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_cond_from_tokn_rw.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_cond_from_tokn_rw DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | INTERFACES zif_app_rule_condition.
8 | PROTECTED SECTION.
9 | PRIVATE SECTION.
10 | ENDCLASS.
11 |
12 |
13 |
14 | CLASS zcl_app_rule_cond_from_tokn_rw IMPLEMENTATION.
15 | METHOD zif_app_rule_condition~is_cond_fulfilled.
16 | DATA lv_token TYPE zapp_d_token.
17 | DATA lt_token TYPE zapp_t_token.
18 | DATA lt_stop_token TYPE zapp_t_token.
19 | DATA lr_from_rule TYPE REF TO zif_app_rule.
20 |
21 | lv_token = 'UNION'.
22 | INSERT lv_token INTO TABLE lt_stop_token.
23 |
24 | lv_token = 'FROM'.
25 | INSERT lv_token INTO TABLE lt_token.
26 |
27 | lr_from_rule = zcl_app_amdp_rule_utilities=>get_rule_in_stm_on_same_lvl_rw(
28 | EXPORTING
29 | ir_start_rule = ir_rule
30 | it_token = lt_token
31 | it_stop_token = lt_stop_token
32 | ).
33 | IF lr_from_rule IS NOT INITIAL.
34 | rv_result = abap_true.
35 | ENDIF.
36 |
37 | ENDMETHOD.
38 |
39 | ENDCLASS.
40 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_comment.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_COMMENT
7 | E
8 | ZAPP_COMMENT
9 | 55
10 | 10
11 | 20
12 | 40
13 | Comment
14 | Comment
15 | Comment
16 | Comment
17 | Comment
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Kommentar
28 | Kommentar
29 | Kommentar
30 | Kommentar
31 | Kommentar
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_keyword.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_KEYWORD
7 | E
8 | STRING
9 | 55
10 | 10
11 | 20
12 | 40
13 | Keyword
14 | Keyword
15 | Keyword
16 | Keyword
17 | Keyword
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Schlüsselwort
28 | Schlüsselwort
29 | Schlüssel.
30 | Schlüsselwort
31 | Schlüsselwort
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_delimiter.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_DELIMITER
7 | E
8 | ZAPP_DELIMITER
9 | 09
10 | 09
11 | 09
12 | 09
13 | Delimiter
14 | Delimiter
15 | Delimiter
16 | Delimiter
17 | Delimiter
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Trennzeichen
28 | Trennzei.
29 | Trennzei.
30 | Trennzei.
31 | Trennzei.
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_sqlscript.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_SQLSCRIPT
7 | E
8 | ZAPP_SQLSCRIPT
9 | 09
10 | 09
11 | 09
12 | 09
13 | SQLSCRIPT
14 | SQLSCRIPT
15 | SQLSCRIPT
16 | SQLSCRIPT
17 | SQLSCRIPT
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | SQLSCRIPT
28 | SQLSCRIPT
29 | SQLSCRIPT
30 | SQLSCRIPT
31 | SQLSCRIPT
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_rule_class.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_RULE_CLASS
7 | E
8 | SEOCLSNAME
9 | 30
10 | 10
11 | 20
12 | 40
13 | Rule Class
14 | Rule Class
15 | Rule Class
16 | Rule Class
17 | Rule Class
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Regelklasse
28 | Regelklasse
29 | Regelklas.
30 | Regelklasse
31 | Regelklasse
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_left_right.clas.abap:
--------------------------------------------------------------------------------
1 | "!
Pretty Printer Rule for LEFT and RIGHT
2 | "! Do the inherited logic if the condition is full filled
3 | "! else do the comma rule logic for the string function left and right
4 | CLASS zcl_app_rule_amdp_left_right DEFINITION
5 | PUBLIC
6 | INHERITING FROM zcl_app_rule_amdp_nl_lft_cond
7 |
8 | CREATE PUBLIC .
9 |
10 | PUBLIC SECTION.
11 |
12 | METHODS zif_app_rule~finalize_init REDEFINITION.
13 |
14 | PROTECTED SECTION.
15 | PRIVATE SECTION.
16 | ENDCLASS.
17 |
18 |
19 |
20 | CLASS zcl_app_rule_amdp_left_right IMPLEMENTATION.
21 |
22 | METHOD zif_app_rule~finalize_init.
23 |
24 | super->zif_app_rule~finalize_init( ).
25 | IF is_logic_active( ) = abap_false.
26 | RETURN.
27 | ENDIF.
28 |
29 | IF mv_cond_fulfilled_set = abap_false.
30 | IF zcl_app_amdp_rule_utilities=>is_avd_lb_aft_comma_in_fu_act(
31 | ir_start_rule = me
32 | ir_settings = mr_settings ) = abap_true.
33 |
34 | zcl_app_amdp_rule_utilities=>avoid_lb_after_comma_in_func( me ).
35 | ENDIF.
36 | ENDIF.
37 |
38 | ENDMETHOD.
39 |
40 | ENDCLASS.
41 |
--------------------------------------------------------------------------------
/abap/src/ezapp_settings.enqu.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | EZAPP_SETTINGS
7 | E
8 | E
9 | ZAPP_SETTINGS
10 | AMDP Pretty Printer Settings
11 |
12 |
13 |
14 | EZAPP_SETTINGS
15 | ZAPP_SETTINGS
16 | 0001
17 | ZAPP_SETTINGS
18 | E
19 |
20 |
21 |
22 |
23 | EZAPP_SETTINGS
24 | 0001
25 | UNAME
26 | ZAPP_SETTINGS
27 | UNAME
28 | X
29 | E
30 | XUS
31 | USR02
32 | P
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/abap/src/zapp_sqlscript.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SQLSCRIPT
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | SQLSCRIPT
13 |
14 |
15 |
16 | 0001
17 | E
18 | No
19 |
20 |
21 | 0002
22 | E
23 | P
24 | Pending
25 |
26 |
27 | 0003
28 | E
29 | E
30 | End of Pending
31 |
32 |
33 | 0004
34 | E
35 | S
36 | SQLSCRIPT
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_context.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_CONTEXT
7 | E
8 | ZAPP_CONTEXT
9 | 55
10 | 10
11 | 20
12 | 40
13 | Pretty Printer Context
14 | Pretty Printer Context
15 | PP Context
16 | PP Context
17 | Pretty Printer Context
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Pretty Printer Kontext
28 | Pretty Printer Kontext
29 | PP Kontext
30 | PP Kontext
31 | Pretty Printer Kontext
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_rule.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_RULE
7 | E
8 | ZAPP_RULE
9 | 55
10 | 10
11 | 20
12 | 40
13 | Pretty Printer Rule
14 | Pretty Printer Rule
15 | PP Rule
16 | Pretty Printer Rule
17 | Pretty Printer Rule
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | AMDP Pretty Printer Regel
28 | AMDP Pretty Printer Regel
29 | PP Regel
30 | Pretty Printer Regel
31 | AMDP Pretty Printer Regel
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_org_tab_row.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_ORG_TAB_ROW
7 | E
8 | ZAPP_ORG_TAB_ROW
9 | 55
10 | 10
11 | 20
12 | 40
13 | Original Tab Row
14 | Original Tab Row
15 | Orig Tab R
16 | Original Tab Row
17 | Original Tab Row
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Original Tabellenzeile
28 | Original Tabellenzeile
29 | Orig Tab Z
30 | Original Tabellenzei
31 | Original Tabellenzeile
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_additional_indent.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_ADDITIONAL_INDENT
7 | E
8 | INT4
9 | 55
10 | 10
11 | 20
12 | 40
13 | Additional Indent
14 | Additional Indent
15 | Add Indent
16 | Additional Indent
17 | Additional Indent
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Zusatzliche Einrückung
28 | Zusatzliche Einrückung
29 | Zus Einrü.
30 | Zusatzliche Einrücku
31 | Zusatzliche Einrückung
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_rule_cond_class.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_RULE_COND_CLASS
7 | E
8 | SEOCLSNAME
9 | 30
10 | 10
11 | 20
12 | 40
13 | Rule Condition Class
14 | Rule Condition Class
15 | Rule C Cl
16 | Rule Condition Class
17 | Rule Condition Class
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Klasse Regelbedingung
28 | Klasse Regelbedingung
29 | Rgl Be Kla
30 | Klasse Regelbeding.
31 | Klasse Regelbedingung
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_hl_context.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_HL_CONTEXT
7 | E
8 | ZAPP_CONTEXT
9 | 55
10 | 10
11 | 20
12 | 40
13 | Pretty Printer HL Context
14 | Pretty Printer HL Context
15 | PP HL Cont
16 | PP HL Context
17 | Pretty Printer HL Context
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | PP Übergeordneter Kontext
28 | PP Übergeordneter Kontext
29 | PP ÜG Kont
30 | PP ÜG Kontext
31 | PP Übergeordneter Kontext
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_no_lb_at_comma.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_NO_LB_AT_COMMA
7 | E
8 | XFELD
9 | 55
10 | 10
11 | 20
12 | 40
13 | No Line Break at Comma
14 | No Line Break at Comma
15 | No LB Com
16 | No LB at Comma
17 | No Line Break at Comma
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Keine Neue Zeile bei Komma
28 | Keine Neue Zeile bei Komma
29 | K N Z Kom
30 | K N Zeile bei Komma
31 | Keine Neue Zeile bei Komma
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_new_line_req.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_NEW_LINE_REQ
7 | E
8 | XFELD
9 | 55
10 | 10
11 | 20
12 | 40
13 | Is New Line Requested
14 | Is New Line Requested
15 | New L Req
16 | Is New Line Req
17 | Is New Line Requested
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Ist eine neue Zeile angefragt
28 | Ist eine neue Zeile angefragt
29 | Neue Zeile
30 | Neue Zeile angefragt
31 | Ist eine neue Zeile angefragt
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_nl_lft_cond.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_nl_lft_cond DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_new_line_lft
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 |
8 | PROTECTED SECTION.
9 | METHODS set_add_indent REDEFINITION.
10 | DATA mv_cond_fulfilled_set TYPE abap_bool.
11 | DATA mv_cond_fulfilled TYPE abap_bool.
12 | PRIVATE SECTION.
13 |
14 | ENDCLASS.
15 |
16 |
17 |
18 | CLASS zcl_app_rule_amdp_nl_lft_cond IMPLEMENTATION.
19 |
20 |
21 | METHOD set_add_indent.
22 | DATA lr_rule_cond TYPE REF TO zif_app_rule_condition.
23 |
24 | CLEAR mv_add_indent.
25 | IF is_logic_active( ) = abap_false.
26 | RETURN.
27 | ENDIF.
28 |
29 | IF mv_cond_fulfilled_set = abap_false.
30 | mv_cond_fulfilled_set = abap_true.
31 | IF mr_rule_data->rule_cond_class IS INITIAL.
32 | mv_cond_fulfilled = abap_true.
33 | ELSE.
34 | CREATE OBJECT lr_rule_cond TYPE (mr_rule_data->rule_cond_class).
35 | mv_cond_fulfilled = lr_rule_cond->is_cond_fulfilled( me ).
36 | ENDIF.
37 | ENDIF.
38 |
39 | IF mv_cond_fulfilled = abap_false.
40 | RETURN.
41 | ENDIF.
42 |
43 | super->set_add_indent( ).
44 | ENDMETHOD.
45 |
46 |
47 |
48 | ENDCLASS.
49 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_adt_disc_pretty_print.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_adt_disc_pretty_print DEFINITION
2 | PUBLIC
3 | INHERITING FROM cl_adt_disc_res_app_base
4 |
5 | CREATE PUBLIC .
6 |
7 |
8 | PUBLIC SECTION.
9 | METHODS if_adt_rest_rfc_application~get_static_uri_path REDEFINITION.
10 | CONSTANTS co_root_schema TYPE string VALUE 'zapp.pretty.printer'. "#EC NOTEXT
11 | CONSTANTS co_xml_application TYPE string VALUE 'application/xml' ##NO_TEXT.
12 | PROTECTED SECTION.
13 |
14 | METHODS get_application_title REDEFINITION.
15 | METHODS register_resources REDEFINITION.
16 |
17 | PRIVATE SECTION.
18 | ENDCLASS.
19 |
20 |
21 |
22 | CLASS zcl_app_adt_disc_pretty_print IMPLEMENTATION.
23 |
24 |
25 | METHOD get_application_title.
26 | result = 'AMDP Pretty Printer'(001).
27 | ENDMETHOD.
28 |
29 |
30 | METHOD if_adt_rest_rfc_application~get_static_uri_path.
31 | result = '/sap/bc/adt/zapp'.
32 | ENDMETHOD.
33 |
34 |
35 | METHOD register_resources.
36 |
37 | registry->register_discoverable_resource(
38 | url = '/zapp_pretty_printer'
39 | handler_class = 'ZCL_APP_ADT_REST_PRETTY_PRINT'
40 | description = 'Pretty Printer'
41 | category_scheme = co_root_schema
42 | category_term = 'pretty_printer' ).
43 |
44 | ENDMETHOD.
45 | ENDCLASS.
46 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_default_tokn.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_default_tokn DEFINITION
2 | PUBLIC
3 | FINAL
4 | INHERITING FROM ZCL_APP_RULE_AMDP_NEW_LINE_LFT
5 |
6 | CREATE PUBLIC .
7 |
8 | PUBLIC SECTION.
9 | PROTECTED SECTION.
10 | METHODS is_logic_active REDEFINITION.
11 | PRIVATE SECTION.
12 | ENDCLASS.
13 |
14 |
15 |
16 | CLASS zcl_app_rule_amdp_default_tokn IMPLEMENTATION.
17 | METHOD is_logic_active.
18 | DATA lv_token TYPE zapp_d_token.
19 | DATA lt_token TYPE zapp_t_token.
20 | DATA lt_stop_token TYPE zapp_t_token.
21 | DATA lr_select_rule TYPE REF TO zif_app_rule.
22 |
23 | rv_result = super->is_logic_active( ).
24 |
25 | IF rv_result = abap_false.
26 | RETURN.
27 | ENDIF.
28 |
29 | lv_token = 'UNION'.
30 | INSERT lv_token INTO TABLE lt_stop_token.
31 |
32 | lv_token = 'SELECT'.
33 | INSERT lv_token INTO TABLE lt_token.
34 |
35 | lr_select_rule = zcl_app_amdp_rule_utilities=>get_rule_in_stm_on_same_lvl_rw(
36 | EXPORTING
37 | ir_start_rule = me
38 | it_token = lt_token
39 | it_stop_token = lt_stop_token
40 | ).
41 | IF lr_select_rule IS INITIAL.
42 | rv_result = abap_false.
43 | ENDIF.
44 |
45 | ENDMETHOD.
46 |
47 | ENDCLASS.
48 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_func_in_1_ro.clas.abap:
--------------------------------------------------------------------------------
1 | "! AMDP Rule to avoid line break at comma if the closing bracket of this function is in the same row
2 | "! and addition there are no sub functions that contains a comma
3 | "! Example: "substring(rtrim(table.field),3,4)" will be in one row,
4 | "! substring(concat("Bla","Blub"),2,3) will be split in several rows
5 | "! Function in one row
6 | CLASS zcl_app_rule_amdp_func_in_1_ro DEFINITION
7 | PUBLIC
8 | INHERITING FROM zcl_app_rule_amdp_default_no_c
9 | CREATE PUBLIC .
10 |
11 | PUBLIC SECTION.
12 | METHODS zif_app_rule~finalize_init REDEFINITION.
13 |
14 | PROTECTED SECTION.
15 |
16 | PRIVATE SECTION.
17 | ENDCLASS.
18 |
19 |
20 |
21 | CLASS zcl_app_rule_amdp_func_in_1_ro IMPLEMENTATION.
22 |
23 | METHOD zif_app_rule~finalize_init.
24 |
25 | super->zif_app_rule~finalize_init( ).
26 | IF is_logic_active( ) = abap_false.
27 | RETURN.
28 | ENDIF.
29 |
30 | IF zcl_app_amdp_rule_utilities=>is_avd_lb_aft_comma_in_fu_act(
31 | ir_start_rule = me
32 | ir_settings = mr_settings ) = abap_true.
33 |
34 | zcl_app_amdp_rule_utilities=>avoid_lb_after_comma_in_func( me ).
35 | ENDIF.
36 |
37 | ENDMETHOD.
38 |
39 | ENDCLASS.
40 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_comment_detail.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_COMMENT_DETAIL
7 | E
8 | ZAPP_COMMENT_DETAIL
9 | 55
10 | 10
11 | 20
12 | 40
13 | Pretty Printer Comment Detail
14 | Pretty Printer Comment Detail
15 | PP Com Det
16 | PP Comment Detail
17 | Pretty Printer Comment Detail
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Pretty Printer Kommentar Detail
28 | Pretty Printer Kommentar Detail
29 | PP Kom Det
30 | PP Kommentar Detail
31 | Pretty Printer Kommentar Detail
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zapp_d_spec_bracket_logic.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_SPEC_BRACKET_LOGIC
7 | E
8 | ZAPP_SPEC_BRACKET_LOGIC
9 | 55
10 | 10
11 | 20
12 | 40
13 | Special Bracket Logic
14 | Special Bracket Logic
15 | Sp Bra Log
16 | Spel Bracket Logic
17 | Special Bracket Logic
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Spezialklammerlogik
28 | Spezialklammerlogik
29 | Spz Klm Lo
30 | Spezialklammerlogik
31 | Spezialklammerlogik
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_new_line_indent_diff.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_NEW_LINE_INDENT_DIFF
7 | E
8 | INT4
9 | 55
10 | 10
11 | 20
12 | 40
13 | New Line Indent Difference
14 | New Line Indent Difference
15 | NL IndentD
16 | New Line Indent Diff
17 | New Line Indent Difference
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Einrückungsdifferenz zu neuer Zeile
28 | Einrückungsdifferenz zu neuer Zeile
29 | Einrü. D Z
30 | Einrück. Diff. Zeile
31 | Einrückungsdifferenz zu neuer Zeile
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/zapp_d_new_statem_indent_diff.dtel.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_D_NEW_STATEM_INDENT_DIFF
7 | E
8 | INT4
9 | 55
10 | 10
11 | 20
12 | 40
13 | New Statement Indent Difference
14 | New Statement Indent Difference
15 | NS IndentD
16 | New Stmt Indent Diff
17 | New Statement Indent Difference
18 | E
19 | D
20 |
21 |
22 | D
23 |
24 |
25 | -
26 | D
27 | Einrückungsdifferenz zu neuen Ausdruck
28 | Einrückungsdifferenz zu neuen Ausdruck
29 | Einrü. D A
30 | Einrückungsdifferenz
31 | Einrückungsdifferenz zu neuen Ausdruck
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_new_line_lft.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_new_line_lft DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_new_line
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | METHODS zif_app_rule~get_cur_offset_start REDEFINITION.
8 |
9 | PROTECTED SECTION.
10 | METHODS set_add_indent
11 | RAISING zcx_app_exception.
12 | PRIVATE SECTION.
13 | ENDCLASS.
14 |
15 |
16 |
17 | CLASS zcl_app_rule_amdp_new_line_lft IMPLEMENTATION.
18 |
19 | METHOD zif_app_rule~get_cur_offset_start.
20 |
21 | IF mv_cur_offset_start_set = abap_true.
22 | rv_result = mv_cur_offset_start.
23 | RETURN.
24 | ENDIF.
25 |
26 | set_add_indent( ).
27 |
28 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
29 |
30 | ENDMETHOD.
31 |
32 | METHOD set_add_indent.
33 | DATA lt_text TYPE sourcetable.
34 | DATA lr_text TYPE REF TO string.
35 |
36 | IF is_logic_active( ) = abap_true.
37 | IF mr_rule_data->add_indent IS INITIAL.
38 |
39 | lt_text = zif_app_rule~get_text( ).
40 |
41 | READ TABLE lt_text REFERENCE INTO lr_text
42 | INDEX 1.
43 | IF sy-subrc = 0.
44 | mv_add_indent = strlen( lr_text->* ) * -1.
45 | ENDIF.
46 | ELSE.
47 | mv_add_indent = mr_rule_data->add_indent.
48 | ENDIF.
49 | ENDIF.
50 | ENDMETHOD.
51 |
52 | ENDCLASS.
53 |
--------------------------------------------------------------------------------
/abap/src/zapp_comment_detail.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_COMMENT_DETAIL
7 | E
8 | CHAR
9 | 000001
10 | 000001
11 | X
12 | AMDP Pretty Printer Comment Detail
13 |
14 |
15 |
16 | 0001
17 | E
18 | None
19 |
20 |
21 | 0002
22 | E
23 | S
24 | Start
25 |
26 |
27 | 0003
28 | E
29 | P
30 | Part
31 |
32 |
33 | 0004
34 | E
35 | L
36 | Start begin of line
37 |
38 |
39 | 0005
40 | E
41 | I
42 | Start begin of line indentable
43 |
44 |
45 |
46 |
47 |
48 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zapp_t_rule_sort.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_RULE_SORT
7 | E
8 | ZAPP_S_RULE
9 | S
10 | STRU
11 | T
12 | K
13 | N
14 | 0004
15 | Pretty Printer Rules Sort
16 |
17 |
18 |
19 | ZAPP_T_RULE_SORT
20 | 0001
21 | 0002
22 | TOKEN
23 |
24 |
25 | ZAPP_T_RULE_SORT
26 | 0002
27 | 0003
28 | CONTEXT
29 |
30 |
31 | ZAPP_T_RULE_SORT
32 | 0003
33 | 0004
34 | HL_CONTEXT
35 |
36 |
37 | ZAPP_T_RULE_SORT
38 | 0004
39 | 0005
40 | SQLSCRIPT
41 |
42 |
43 |
44 |
45 |
46 |
--------------------------------------------------------------------------------
/abap/src/zapp_lb_after_comma_rule.doma.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_LB_AFTER_COMMA_RULE
7 | E
8 | NUMC
9 | 000001
10 | 000001
11 | X
12 | Line Break after Comma Rule
13 |
14 |
15 |
16 | 0001
17 | E
18 | 0
19 | Always Line Break
20 |
21 |
22 | 0002
23 | E
24 | 1
25 | No Line Break after Comma
26 |
27 |
28 | 0003
29 | E
30 | 2
31 | Not at Simple Functions, Dep. on )
32 |
33 |
34 | 0004
35 | E
36 | 3
37 | Not at Simple Functions, Dep. on ) And Sub Function
38 |
39 |
40 | 0005
41 | E
42 | 4
43 | Not at Simple Functions, Dep. on ) Sub Func And Keywords
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zapp_s_rule_search.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_S_RULE_SEARCH
7 | E
8 | INTTAB
9 | Pretty Printer Rule Search
10 | 1
11 |
12 |
13 |
14 | TOKEN
15 | ZAPP_D_TOKEN
16 | 0
17 | E
18 |
19 |
20 | CONTEXT
21 | ZAPP_D_CONTEXT
22 | 0
23 | E
24 |
25 |
26 | HL_CONTEXT
27 | ZAPP_D_HL_CONTEXT
28 | 0
29 | E
30 |
31 |
32 | SQLSCRIPT
33 | ZAPP_D_SQLSCRIPT
34 | 0
35 | X
36 | F
37 | E
38 |
39 |
40 |
41 | D
42 |
43 |
44 | -
45 | D
46 | AMDP Pretty Printer Regelsuche
47 |
48 |
49 |
50 |
51 |
52 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_SCANNER
7 | E
8 | Pretty Printer Scanner
9 | 1
10 | X
11 | X
12 | X
13 | X
14 |
15 |
16 |
17 | SCAN
18 | E
19 | Scan Source Code
20 |
21 |
22 |
23 |
24 | SCAN
25 | ET_STATEMENT
26 | E
27 | Code Inspector: Anweisungen
28 |
29 |
30 | SCAN
31 | ET_STRUCTURE
32 | E
33 | Code Inspector: SSTRUC
34 |
35 |
36 | SCAN
37 | ET_TOKEN_EXT
38 | E
39 | Code Inspector: Tokens extended
40 |
41 |
42 | SCAN
43 | IT_SOURCE
44 | E
45 | ABAP4 Sourcetext as table of string
46 |
47 |
48 |
49 |
50 |
51 |
--------------------------------------------------------------------------------
/abap/src/zapp_s_rule_result.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_S_RULE_RESULT
7 | E
8 | INTTAB
9 | Rule Result
10 | 1
11 |
12 |
13 |
14 | RULE
15 | ZIF_APP_RULE
16 | 0
17 | REF
18 | REF RI
19 | R
20 | I
21 |
22 |
23 | CUR_ROW
24 | INT4
25 | 0
26 | E
27 |
28 |
29 | CUR_OFF_SET_START
30 | INT4
31 | 0
32 | E
33 |
34 |
35 | CUR_OFF_SET_END
36 | INT4
37 | 0
38 | E
39 |
40 |
41 | TEXT
42 | SOURCETABLE
43 | 0
44 | TTYP
45 | TTYPL
46 | L
47 |
48 |
49 | END_ROW
50 | INT4
51 | 0
52 | E
53 |
54 |
55 |
56 | D
57 |
58 |
59 | -
60 | D
61 | Regelergebnis
62 |
63 |
64 |
65 |
66 |
67 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_adt_rest_pretty_print.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS ZCL_APP_ADT_REST_PRETTY_PRINT DEFINITION
2 | PUBLIC
3 | INHERITING FROM cl_adt_rest_resource
4 | FINAL
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 |
9 | METHODS post REDEFINITION .
10 | METHODS get REDEFINITION .
11 | PROTECTED SECTION.
12 | PRIVATE SECTION.
13 |
14 |
15 | ENDCLASS.
16 |
17 |
18 |
19 | CLASS ZCL_APP_ADT_REST_PRETTY_PRINT IMPLEMENTATION.
20 |
21 |
22 | METHOD get.
23 | DATA lv_response TYPE string.
24 | lv_response = 'Welcome to Pretty Printer, please use POST Method'.
25 |
26 | response->set_body_data(
27 | content_handler = cl_adt_rest_cnt_hdl_factory=>get_instance( )->get_handler_for_plain_text( )
28 | data = lv_response ).
29 | ENDMETHOD.
30 |
31 |
32 | METHOD post.
33 | DATA lt_source TYPE sourcetable.
34 | DATA lt_app_res TYPE sourcetable.
35 | DATA lr_ex_pp TYPE REF TO zcx_app_exception.
36 | data lr_settings type ref to zif_app_settings.
37 |
38 |
39 | request->get_body_data(
40 | EXPORTING
41 | content_handler = cl_adt_rest_cnt_hdl_factory=>get_instance( )->get_handler_for_plain_text( )
42 | IMPORTING
43 | data = lt_source ).
44 |
45 | TRY.
46 | create object lr_settings type zcl_app_settings.
47 | lt_app_res = NEW zcl_app_pretty_printer( )->pretty_print(
48 | it_source = lt_source
49 | ir_settings = lr_settings ).
50 | CATCH zcx_app_exception INTO lr_ex_pp.
51 | RAISE EXCEPTION TYPE cx_sedi_adt_err_pretty_printer
52 | EXPORTING
53 | textid = cx_adt_rest_data_invalid=>create_textid_from_exc_text( exception = lr_ex_pp ).
54 | ENDTRY.
55 |
56 | response->set_body_data(
57 | content_handler = cl_adt_rest_cnt_hdl_factory=>get_instance( )->get_handler_for_plain_text( )
58 | data = lt_app_res ).
59 |
60 | ENDMETHOD.
61 | ENDCLASS.
62 |
--------------------------------------------------------------------------------
/abap/src/zapp_t_stokesx_ext_st.ttyp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_T_STOKESX_EXT_ST
7 | E
8 | ZAPP_S_STOKESX_EXT
9 | S
10 | STRU
11 | S
12 | K
13 | U
14 | 0004
15 | Extended STOKESX sorted
16 | O
17 |
18 |
19 |
20 | ZAPP_T_STOKESX_EXT_ST
21 | 0001
22 | 0006
23 | ORG_TAB_ROW
24 |
25 |
26 | ZAPP_T_STOKESX_EXT_ST
27 | ROW_COL
28 | 0001
29 | 0002
30 | ROW
31 |
32 |
33 | ZAPP_T_STOKESX_EXT_ST
34 | STR_UP
35 | 0001
36 | 0012
37 | STR_UP
38 |
39 |
40 | ZAPP_T_STOKESX_EXT_ST
41 | ROW_COL
42 | 0002
43 | 0003
44 | COL
45 |
46 |
47 |
48 |
49 | ZAPP_T_STOKESX_EXT_ST
50 | ROW_COL
51 | S
52 | K
53 |
54 |
55 | ZAPP_T_STOKESX_EXT_ST
56 | STR_UP
57 | S
58 | K
59 |
60 |
61 |
62 |
63 |
64 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_default_no_c.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_default_no_c DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_default
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | METHODS zif_app_rule~finalize_init REDEFINITION.
8 | PROTECTED SECTION.
9 | METHODS set_logic_active
10 | RAISING zcx_app_exception.
11 |
12 | METHODS is_logic_active
13 | RETURNING VALUE(rv_result) TYPE abap_bool
14 | RAISING zcx_app_exception.
15 | DATA mv_logic_active TYPE abap_bool.
16 | PRIVATE SECTION.
17 |
18 | DATA mv_logic_active_set TYPE abap_bool.
19 |
20 | ENDCLASS.
21 |
22 |
23 |
24 | CLASS zcl_app_rule_amdp_default_no_c IMPLEMENTATION.
25 |
26 |
27 | METHOD is_logic_active.
28 |
29 | IF mv_logic_active_set = abap_true.
30 | rv_result = mv_logic_active.
31 | ELSE.
32 | RAISE EXCEPTION TYPE zcx_app_exception
33 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
34 | TYPE 'E'
35 | NUMBER '015'
36 | WITH mr_rule_data->rule_name.
37 | ENDIF.
38 |
39 | ENDMETHOD.
40 |
41 |
42 | METHOD set_logic_active.
43 | IF zif_app_rule~is_comment( ) = abap_true.
44 | mv_logic_active = abap_false.
45 | ELSE.
46 | mv_logic_active = abap_true.
47 | ENDIF.
48 | mv_logic_active_set = abap_true.
49 | ENDMETHOD.
50 |
51 |
52 | METHOD zif_app_rule~finalize_init.
53 | super->zif_app_rule~finalize_init( ).
54 | set_logic_active( ).
55 |
56 | IF is_logic_active( ) = abap_true.
57 | IF mv_add_indent_set = abap_false.
58 | "This is initialization so don't set the flag mv_add_indent_set,
59 | "else some rules doesn't work
60 | mv_add_indent = mr_rule_data->add_indent .
61 | ENDIF.
62 | ELSE.
63 | "If the token is a comment, then clear the rule_data,
64 | "else this could lead to issues with indent
65 | CLEAR mr_rule_data->is_new_line_req.
66 | CLEAR mr_rule_data->new_line_indent_diff.
67 | CLEAR mr_rule_data->new_statement_indent_diff.
68 | CLEAR mr_rule_data->add_indent.
69 | ENDIF.
70 |
71 | ENDMETHOD.
72 | ENDCLASS.
73 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_settings.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_settings DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | INTERFACES zif_app_settings.
8 | CLASS-METHODS class_constructor.
9 | CLASS-METHODS get_settings_from_cust.
10 | CLASS-METHODS set_settings
11 | IMPORTING is_settings TYPE zapp_settings.
12 |
13 | PROTECTED SECTION.
14 | PRIVATE SECTION.
15 | CLASS-DATA ss_settings TYPE zapp_settings.
16 |
17 | ENDCLASS.
18 |
19 |
20 | CLASS zcl_app_settings IMPLEMENTATION.
21 |
22 | METHOD class_constructor.
23 | get_settings_from_cust( ).
24 |
25 | ENDMETHOD.
26 |
27 | METHOD zif_app_settings~is_line_break_after_comma_req.
28 |
29 | rv_result = xsdbool( ss_settings-lb_after_comma_rule <> zif_app_settings~cos_lb_rules_at_comma-no_line_break ).
30 |
31 | ENDMETHOD.
32 |
33 |
34 | METHOD get_settings_from_cust.
35 | SELECT SINGLE * FROM zapp_settings
36 | INTO ss_settings
37 | WHERE uname = sy-uname.
38 | IF sy-subrc <> 0.
39 | SELECT SINGLE * FROM zapp_settings
40 | INTO ss_settings
41 | WHERE uname = '*'.
42 | IF sy-subrc <> 0.
43 | CLEAR ss_settings.
44 | ENDIF.
45 | ENDIF.
46 | ENDMETHOD.
47 |
48 | METHOD set_settings.
49 | ss_settings = is_settings.
50 | ENDMETHOD.
51 |
52 |
53 | METHOD zif_app_settings~is_always_line_break_aft_comma.
54 | rv_result = xsdbool( ss_settings-lb_after_comma_rule = zif_app_settings~cos_lb_rules_at_comma-always_line_break ).
55 | ENDMETHOD.
56 |
57 | METHOD zif_app_settings~is_no_lb_at_co_s_fu_dep_sfu.
58 | rv_result = xsdbool( ss_settings-lb_after_comma_rule = zif_app_settings~cos_lb_rules_at_comma-dep_on_cls_bracket_and_sub_fu ).
59 | ENDMETHOD.
60 |
61 | METHOD zif_app_settings~is_no_lb_at_co_s_fu_dep_cbr_o.
62 | rv_result = xsdbool( ss_settings-lb_after_comma_rule = zif_app_settings~cos_lb_rules_at_comma-dep_on_cls_bracket_only ).
63 | ENDMETHOD.
64 |
65 | METHOD zif_app_settings~is_no_lb_at_co_s_fu_dep_sfu_kw.
66 | rv_result = xsdbool( ss_settings-lb_after_comma_rule = zif_app_settings~cos_lb_rules_at_comma-dep_on_cls_br_sf_and_keywrd ).
67 | ENDMETHOD.
68 | ENDCLASS.
69 |
--------------------------------------------------------------------------------
/abap/src/zif_app_settings.intf.abap:
--------------------------------------------------------------------------------
1 | INTERFACE zif_app_settings
2 | PUBLIC .
3 |
4 | "! Is line break after comma required
5 | "!
6 | "! @parameter RV_RESULT | Result
7 | METHODS is_line_break_after_comma_req
8 | RETURNING VALUE(rv_result) TYPE zapp_d_no_lb_at_comma.
9 |
10 |
11 | "! Is no lb after comma in function dep on sub function
12 | "!
13 | "! @parameter RV_RESULT | Result
14 | METHODS is_no_lb_at_co_s_fu_dep_sfu
15 | RETURNING VALUE(rv_result) TYPE abap_bool.
16 |
17 |
18 |
19 | "! Is no line break after comma in function depending on ) only
20 | "!
21 | "! @parameter RV_RESULT | Result
22 | METHODS is_no_lb_at_co_s_fu_dep_cbr_o
23 | RETURNING VALUE(rv_result) TYPE abap_bool.
24 |
25 |
26 | "! Is always line break after comma
27 | "!
28 | "! @parameter RV_RESULT | Result
29 | METHODS is_always_line_break_aft_comma
30 | RETURNING VALUE(rv_result) TYPE abap_bool.
31 |
32 |
33 | "! Is no lb after comma in function dep on sub fu and keyword
34 | "!
35 | "! @parameter RV_RESULT | Result
36 | METHODS is_no_lb_at_co_s_fu_dep_sfu_kw
37 | RETURNING VALUE(rv_result) TYPE abap_bool.
38 |
39 | CONSTANTS: BEGIN OF cos_lb_rules_at_comma,
40 | always_line_break TYPE zapp_d_lb_after_comma_rule VALUE '0',
41 | no_line_break TYPE zapp_d_lb_after_comma_rule VALUE '1',
42 | dep_on_cls_bracket_only TYPE zapp_d_lb_after_comma_rule VALUE '2',
43 | dep_on_cls_bracket_and_sub_fu TYPE zapp_d_lb_after_comma_rule VALUE '3',
44 | dep_on_cls_br_sf_and_keywrd TYPE zapp_d_lb_after_comma_rule VALUE '4',
45 | END OF cos_lb_rules_at_comma.
46 | ENDINTERFACE.
47 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_new_line.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_new_line DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_default_no_c
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | METHODS zif_app_rule~get_cur_row REDEFINITION.
8 | METHODS zif_app_rule~finalize_init REDEFINITION.
9 | METHODS zif_app_rule~get_cur_offset_start REDEFINITION.
10 | PROTECTED SECTION.
11 |
12 | PRIVATE SECTION.
13 | ENDCLASS.
14 |
15 |
16 |
17 | CLASS zcl_app_rule_amdp_new_line IMPLEMENTATION.
18 |
19 | METHOD zif_app_rule~get_cur_row.
20 | IF mv_cur_row_set = abap_true.
21 | rv_result = mv_cur_row.
22 | RETURN.
23 | ENDIF.
24 |
25 | rv_result = super->zif_app_rule~get_cur_row( ).
26 | IF is_logic_active( ) = abap_true
27 | AND mr_prev_rule IS NOT INITIAL.
28 | IF mr_prev_rule->get_cur_row( ) = rv_result.
29 | rv_result = rv_result + 1.
30 | ENDIF.
31 | ENDIF.
32 |
33 | zif_app_rule~set_cur_row( rv_result ).
34 | ENDMETHOD.
35 |
36 |
37 | METHOD zif_app_rule~get_cur_offset_start.
38 |
39 | IF mv_cur_offset_start_set = abap_true.
40 | rv_result = mv_cur_offset_start.
41 | RETURN.
42 | ENDIF.
43 |
44 | IF is_logic_active( ) = abap_false.
45 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
46 | RETURN.
47 | ENDIF.
48 |
49 | IF has_prev_rule_same_type( ) = abap_false.
50 | rv_result = mv_default_line_indent.
51 | ELSE.
52 | rv_result = mr_prev_rule->get_new_line_indent( ).
53 | ENDIF.
54 | zcl_app_utilities=>set_to_0_if_negativ( CHANGING cv_value = rv_result ).
55 | rv_result = rv_result + mv_add_indent.
56 | zcl_app_utilities=>set_to_0_if_negativ( CHANGING cv_value = rv_result ).
57 |
58 |
59 | zif_app_rule~set_cur_offset_start( rv_result ).
60 |
61 | ENDMETHOD.
62 | METHOD zif_app_rule~finalize_init.
63 | super->zif_app_rule~finalize_init( ).
64 |
65 | IF is_logic_active( ) = abap_true.
66 | IF NOT mr_prev_rule IS INITIAL.
67 | IF mr_prev_rule->get_token_up( ) = '('.
68 | mv_logic_active = abap_false.
69 | ENDIF.
70 | ENDIF.
71 | ENDIF.
72 |
73 | ENDMETHOD.
74 | ENDCLASS.
75 |
--------------------------------------------------------------------------------
/JAVA/zapp.pretty.printer/plugin.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
7 |
10 |
11 |
15 |
16 |
17 |
19 |
22 |
23 |
24 |
26 |
31 |
32 |
33 |
35 |
37 |
43 |
44 |
45 |
47 |
49 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/abap/src/zif_app_settings.intf.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZIF_APP_SETTINGS
7 | E
8 | AMDP Pretty Printer Settings
9 | 2
10 | 1
11 | X
12 |
13 |
14 |
15 | IS_ALWAYS_LINE_BREAK_AFT_COMMA
16 | E
17 | Is always line break after comma
18 |
19 |
20 | IS_LINE_BREAK_AFTER_COMMA_REQ
21 | E
22 | Is line break after comma required
23 |
24 |
25 | IS_NO_LB_AT_CO_S_FU_DEP_CBR_O
26 | E
27 | Is no line break after comma in function depending on ) only
28 |
29 |
30 | IS_NO_LB_AT_CO_S_FU_DEP_SFU
31 | E
32 | Is no lb after comma in function dep on sub function
33 |
34 |
35 | IS_NO_LB_AT_CO_S_FU_DEP_SFU_KW
36 | E
37 | Is no lb after comma in function dep on sub fu and keyword
38 |
39 |
40 |
41 |
42 | IS_ALWAYS_LINE_BREAK_AFT_COMMA
43 | RV_RESULT
44 | E
45 | Result
46 |
47 |
48 | IS_LINE_BREAK_AFTER_COMMA_REQ
49 | RV_RESULT
50 | E
51 | Result
52 |
53 |
54 | IS_NO_LB_AT_CO_S_FU_DEP_CBR_O
55 | RV_RESULT
56 | E
57 | Result
58 |
59 |
60 | IS_NO_LB_AT_CO_S_FU_DEP_SFU
61 | RV_RESULT
62 | E
63 | Result
64 |
65 |
66 | IS_NO_LB_AT_CO_S_FU_DEP_SFU_KW
67 | RV_RESULT
68 | E
69 | Result
70 |
71 |
72 |
73 |
74 |
75 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_SETTINGS
7 | E
8 | TRANSP
9 | AMDP Pretty Printer Settings
10 | X
11 | C
12 | 1
13 |
14 |
15 | ZAPP_SETTINGS
16 | A
17 | 0
18 | APPL2
19 | X
20 | X
21 | X
22 |
23 |
24 |
25 | UNAME
26 | X
27 | XUBNAME
28 | USR02
29 | 0
30 | X
31 | P
32 | E
33 |
34 |
35 | LB_AFTER_COMMA_RULE
36 | ZAPP_D_LB_AFTER_COMMA_RULE
37 | 0
38 | X
39 | F
40 | E
41 |
42 |
43 |
44 |
45 | UNAME
46 | SYST
47 | MANDT
48 | USR02
49 | MANDT
50 | 0001
51 | MANDT
52 | CLNT
53 |
54 |
55 | UNAME
56 | ZAPP_SETTINGS
57 | UNAME
58 | USR02
59 | BNAME
60 | 0002
61 | XUBNAME
62 | CHAR
63 |
64 |
65 |
66 |
67 | UNAME
68 | USR02
69 | KEY
70 | N
71 | X
72 | 1
73 |
74 |
75 |
76 | D
77 |
78 |
79 | -
80 | D
81 | AMDP Pretty Printer Einstellungen
82 |
83 |
84 |
85 |
86 | ZAPP_SETTINGS
87 | &NC&
88 |
89 |
90 |
91 |
92 |
93 |
--------------------------------------------------------------------------------
/abap/src/zapp_s_rule.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_S_RULE
7 | E
8 | INTTAB
9 | AMDP Pretty Printer Rule
10 | E
11 | 1
12 |
13 |
14 |
15 | RULE_NAME
16 | ZAPP_D_RULE
17 | 0
18 | E
19 |
20 |
21 | TOKEN
22 | ZAPP_D_TOKEN
23 | 0
24 | E
25 |
26 |
27 | CONTEXT
28 | ZAPP_D_CONTEXT
29 | 0
30 | E
31 |
32 |
33 | HL_CONTEXT
34 | ZAPP_D_HL_CONTEXT
35 | 0
36 | E
37 |
38 |
39 | SQLSCRIPT
40 | ZAPP_D_SQLSCRIPT
41 | 0
42 | X
43 | F
44 | E
45 |
46 |
47 | RULE_CLASS
48 | ZAPP_D_RULE_CLASS
49 | 0
50 | E
51 |
52 |
53 | ADD_INDENT
54 | ZAPP_D_ADDITIONAL_INDENT
55 | 0
56 | E
57 |
58 |
59 | RULE_COND_CLASS
60 | ZAPP_D_RULE_COND_CLASS
61 | 0
62 | E
63 |
64 |
65 | NEW_LINE_INDENT_DIFF
66 | ZAPP_D_NEW_LINE_INDENT_DIFF
67 | 0
68 | E
69 |
70 |
71 | NEW_STATEMENT_INDENT_DIFF
72 | ZAPP_D_NEW_STATEM_INDENT_DIFF
73 | 0
74 | E
75 |
76 |
77 | IS_NEW_LINE_REQ
78 | ZAPP_D_NEW_LINE_REQ
79 | 0
80 | X
81 | F
82 | E
83 |
84 |
85 |
86 | D
87 |
88 |
89 | -
90 | D
91 | AMDP Pretty Printer Regel
92 |
93 |
94 |
95 |
96 |
97 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_by.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_by DEFINITION
2 | PUBLIC
3 | FINAL
4 | INHERITING FROM zcl_app_rule_amdp_default_no_c
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 | METHODS zif_app_rule~finalize_init REDEFINITION.
9 | PROTECTED SECTION.
10 | PRIVATE SECTION.
11 | METHODS is_on_select_level
12 | RETURNING VALUE(rv_result) TYPE abap_bool
13 | RAISING zcx_app_exception.
14 |
15 | METHODS adjust_prev_rule
16 | IMPORTING ir_open_bracket_rule TYPE REF TO zif_app_rule
17 | RAISING zcx_app_exception.
18 | ENDCLASS.
19 |
20 |
21 |
22 | CLASS zcl_app_rule_amdp_by IMPLEMENTATION.
23 | METHOD zif_app_rule~finalize_init.
24 | DATA lr_open_bracket_rule TYPE REF TO zif_app_rule.
25 | DATA lv_cur_offset_end TYPE i.
26 |
27 | IF is_comment( ) = abap_true
28 | OR mr_prev_rule IS INITIAL
29 | OR mr_prev_rule->is_comment( ) = abap_true
30 | OR mr_prev_rule->get_prev_rule( ) IS INITIAL
31 | OR is_on_select_level( ) = abap_true.
32 | super->zif_app_rule~finalize_init( ).
33 | RETURN.
34 | ENDIF.
35 |
36 | lr_open_bracket_rule = zcl_app_amdp_rule_utilities=>find_prev_open_bracket_rule( ir_start_rule = me ).
37 | IF lr_open_bracket_rule IS INITIAL.
38 | super->zif_app_rule~finalize_init( ).
39 | RETURN.
40 | ENDIF.
41 |
42 | adjust_prev_rule( lr_open_bracket_rule ).
43 |
44 | super->zif_app_rule~finalize_init( ).
45 | "respect the new line indent difference of the ORDER Rule at ORDER by for example
46 | lv_cur_offset_end = zif_app_rule~get_cur_offset_end( ).
47 | mr_rule_data->new_line_indent_diff = lv_cur_offset_end - mr_prev_rule->get_new_line_indent( ).
48 |
49 | ENDMETHOD.
50 |
51 | METHOD is_on_select_level.
52 | DATA lv_token TYPE zapp_d_token.
53 | DATA lt_token TYPE zapp_t_token.
54 | DATA lt_stop_token TYPE zapp_t_token.
55 | DATA lr_from_rule TYPE REF TO zif_app_rule.
56 |
57 | lv_token = 'UNION'.
58 | INSERT lv_token INTO TABLE lt_stop_token.
59 |
60 | lv_token = 'SELECT'.
61 | INSERT lv_token INTO TABLE lt_token.
62 |
63 | lr_from_rule = zcl_app_amdp_rule_utilities=>get_rule_in_stm_on_same_lvl_rw(
64 | EXPORTING
65 | ir_start_rule = me
66 | it_token = lt_token
67 | it_stop_token = lt_stop_token
68 | ).
69 | IF lr_from_rule IS NOT INITIAL.
70 | rv_result = abap_true.
71 | ENDIF.
72 | ENDMETHOD.
73 |
74 | METHOD adjust_prev_rule.
75 |
76 | DATA lv_prev_row TYPE i.
77 | IF mr_prev_rule->get_prev_rule( ) <> ir_open_bracket_rule.
78 |
79 | IF mr_prev_rule->get_prev_rule( )->get_cur_row( ) = mr_prev_rule->get_prev_rule( )->get_end_row( ).
80 | lv_prev_row = mr_prev_rule->get_prev_rule( )->get_end_row( ) + 1.
81 | ELSE.
82 | lv_prev_row = mr_prev_rule->get_prev_rule( )->get_end_row( ).
83 |
84 | ENDIF.
85 |
86 | mr_prev_rule->refresh_buffer( ).
87 | mr_prev_rule->set_cur_row( lv_prev_row ).
88 | mr_prev_rule->set_cur_offset_start( ir_open_bracket_rule->get_cur_offset_end( ) ).
89 |
90 | ENDIF.
91 | ENDMETHOD.
92 |
93 | ENDCLASS.
94 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_control_stru.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_control_stru DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_new_line
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | METHODS zif_app_rule~finalize_init REDEFINITION.
8 |
9 | PROTECTED SECTION.
10 | PRIVATE SECTION.
11 | METHODS finalize_init_end.
12 | METHODS finalize_init_then.
13 | METHODS finalize_init_when.
14 | METHODS finalize_init_else.
15 | METHODS finalize_init_elseif.
16 | METHODS finalize_init_case.
17 | METHODS finalize_init_others
18 | RAISING zcx_app_exception.
19 |
20 | ENDCLASS.
21 |
22 |
23 |
24 | CLASS zcl_app_rule_amdp_control_stru IMPLEMENTATION.
25 | METHOD zif_app_rule~finalize_init.
26 | super->zif_app_rule~finalize_init( ).
27 |
28 | IF is_comment( ) = abap_false. "Set it also if no new line is required
29 | CASE zif_app_rule~get_token_up( ).
30 | WHEN 'CASE'.
31 | finalize_init_case( ).
32 | WHEN 'END'.
33 | finalize_init_end( ).
34 | WHEN 'THEN'.
35 | finalize_init_then( ).
36 | WHEN 'WHEN'.
37 | finalize_init_when( ).
38 | WHEN 'ELSE'.
39 | finalize_init_else( ).
40 | WHEN 'ELSEIF'.
41 | finalize_init_elseif( ).
42 | WHEN OTHERS.
43 | finalize_init_others( ).
44 | ENDCASE.
45 | ENDIF.
46 | ENDMETHOD.
47 |
48 | METHOD finalize_init_end.
49 | DATA lr_next_rule TYPE REF TO zif_app_rule.
50 | lr_next_rule = zif_app_rule~get_next_rule( ).
51 | mr_rule_data->add_indent = -4.
52 | mv_add_indent = mr_rule_data->add_indent.
53 | IF lr_next_rule IS NOT INITIAL.
54 | CASE lr_next_rule->get_token_up( ).
55 | WHEN 'IF' OR 'FOR' OR 'WHILE'.
56 | RETURN.
57 | ENDCASE.
58 | ENDIF.
59 | mr_rule_data->new_line_indent_diff = -4.
60 | mr_rule_data->new_statement_indent_diff = -4.
61 | ENDMETHOD.
62 |
63 | METHOD finalize_init_others.
64 | DATA lr_prev_rule TYPE REF TO zif_app_rule.
65 |
66 | lr_prev_rule = zif_app_rule~get_prev_rule( ).
67 | IF lr_prev_rule IS NOT INITIAL
68 | AND lr_prev_rule->get_token_up( ) = 'END'
69 | AND lr_prev_rule->is_end_of_statement( ) = abap_false.
70 | mr_rule_data->new_line_indent_diff = -4.
71 | mr_rule_data->new_statement_indent_diff = -4.
72 | mv_logic_active = abap_false.
73 | RETURN.
74 | ENDIF.
75 |
76 | mr_rule_data->new_line_indent_diff = 4.
77 | mr_rule_data->new_statement_indent_diff = 4.
78 | ENDMETHOD.
79 |
80 | METHOD finalize_init_then.
81 | mr_rule_data->is_new_line_req = abap_true.
82 | mv_logic_active = abap_false.
83 | ENDMETHOD.
84 |
85 | METHOD finalize_init_when.
86 | mr_rule_data->add_indent = -2.
87 | mv_add_indent = mr_rule_data->add_indent.
88 | ENDMETHOD.
89 |
90 | METHOD finalize_init_else.
91 | mr_rule_data->add_indent = -2.
92 | mv_add_indent = mr_rule_data->add_indent.
93 | mr_rule_data->is_new_line_req = abap_true.
94 | ENDMETHOD.
95 |
96 | METHOD finalize_init_elseif.
97 | mr_rule_data->add_indent = -2.
98 | mv_add_indent = mr_rule_data->add_indent.
99 | ENDMETHOD.
100 |
101 | METHOD finalize_init_case.
102 | mr_rule_data->new_line_indent_diff = 4.
103 | mr_rule_data->new_statement_indent_diff = 4.
104 | ENDMETHOD.
105 |
106 | ENDCLASS.
107 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_test/zcl_app_test_amdp.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_test_amdp DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 |
8 | INTERFACES if_amdp_marker_hdb.
9 |
10 | CLASS-METHODS sel_data.
11 |
12 | CLASS-METHODS write_data.
13 |
14 | PROTECTED SECTION.
15 | PRIVATE SECTION.
16 | ENDCLASS.
17 |
18 |
19 |
20 | CLASS zcl_app_test_amdp IMPLEMENTATION.
21 |
22 | METHOD write_data.
23 | "Hello World 'test1' 'test2
24 | WRITE / 'Hello World'. "#EC CI_USE_WANTED "Comment
25 |
26 | ENDMETHOD.
27 |
28 | METHOD sel_data
29 | BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT
30 | "opt
31 | * sqlscript
32 | OPTIONS READ-ONLY
33 | USING spfli sflight. -- Flight
34 | declare lv_bla nvarchar(4);
35 |
36 | lt_sflight = select * from sflight;
37 |
38 | lt_carrid = select "CARRID" from sflight;
39 |
40 | lt_carrid2 = select "SFLIGHT"."CARRID" from sflight;
41 |
42 | lt_carrid2 = select DISTINCT "SFLIGHT"."CARRID" from sflight;
43 |
44 | lt_carrid3 = select max( concat( "SFLIGHT"."CARRID", connid ) )from sflight;
45 |
46 | lt_carrid4 = select max( case when carrid <> connid then connid else carrid end )from sflight;
47 |
48 | lt_carrid5 = select max( case when carrid <> connid then
49 | connid
50 | when carrid > connid then
51 | carrid
52 | else carrid
53 | end
54 | ) as max_value
55 | from sflight
56 | ORDER BY max_value asc;
57 |
58 | if IS_EMPTY ( :lt_carrid5 ) then
59 | return;
60 | elseif is_empty ( :lt_carrid4 ) then
61 | return;
62 | else
63 | return;
64 | end if;
65 |
66 | lt_spfli1 = SELECT carrid, connid, countryfr, countryto,
67 | ROW_NUMBER ( ) OVER( ORDER BY "CARRID", CONNID asc ) AS "ROW_ID"
68 | FROM SPFLI WHERE mandt = session_context( 'CLIENT' );
69 |
70 |
71 | lt_spfli2 = SELECT carrid, connid, countryfr, countryto,
72 | ROW_NUMBER ( ) OVER( PARTITION BY carrid, connid ORDER BY "CARRID", CONNID asc ) AS "ROW_ID"
73 | FROM SPFLI WHERE mandt = session_context( 'CLIENT' );
74 |
75 | *lt_test = select 'Bla Blup Data' from public.dummy;
76 | lt_test = select 'Bla Blup Data' from public.dummy;
77 |
78 | -- Hello World 'bla blub'
79 | lt_test2 = select 'Bla Blup Data' from public.dummy; /*test*/
80 |
81 | /* test1
82 | test2 */
83 |
84 | lt_test3 = select 'Bla Blup Data' from public.dummy; /*test */
85 |
86 | lt_test3 = select 'Bla Blup Data' from public.dummy; -- test
87 |
88 | Lt_test4 = select carrid, connid, fldate
89 | from sflight
90 | where sflight.mandt = SESSION_CONTEXT('CLIENT')
91 | and sflight.connid = 'LH' union all
92 | select spfli.carrid, spfli.connid, sflight.FLDATE
93 | from spfli left outer join sflight
94 | on sflight.mandt = spfli.mandt
95 | and sflight.CARRID = spfli.carrid
96 | and sflight.CONNID = spfli.connid
97 | where spfli.mandt = SESSION_CONTEXT('CLIENT')
98 | and spfli.carrid = 'AB' union all
99 | select spfli.carrid, spfli.connid, sflight.FLDATE
100 | from spfli inner join sflight
101 | on sflight.mandt = spfli.mandt
102 | and sflight.CARRID = spfli.carrid
103 | and sflight.CONNID = spfli.connid
104 | where spfli.mandt = SESSION_CONTEXT('CLIENT')
105 | and spfli.carrid = 'AB';
106 |
107 | lt_bla = SELECT RIGHT( carrid, 4 ) FROM sflight;
108 | --ENDMETHOD.
109 | ENDMETHOD.
110 | ENDCLASS.
111 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_clse_bracket.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_clse_bracket DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_default_no_c
4 |
5 | CREATE PUBLIC .
6 |
7 | PUBLIC SECTION.
8 | METHODS zif_app_rule~get_cur_row REDEFINITION.
9 | METHODS zif_app_rule~get_cur_offset_start REDEFINITION.
10 | METHODS zif_app_rule~get_new_line_indent REDEFINITION.
11 | PROTECTED SECTION.
12 | PRIVATE SECTION.
13 | METHODS find_prev_open_bracket_rule
14 | RETURNING VALUE(rr_result) TYPE REF TO zif_app_rule
15 | RAISING zcx_app_exception .
16 | ENDCLASS.
17 |
18 | CLASS zcl_app_rule_amdp_clse_bracket IMPLEMENTATION.
19 | METHOD find_prev_open_bracket_rule.
20 | rr_result = zcl_app_amdp_rule_utilities=>find_prev_open_bracket_rule( ir_start_rule = me ).
21 |
22 | IF rr_result IS INITIAL.
23 | RAISE EXCEPTION TYPE zcx_app_exception
24 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
25 | TYPE 'E'
26 | NUMBER '011'
27 | WITH mr_rule_data->rule_name
28 | mr_token_ext->row
29 | mr_token_ext->col.
30 | ENDIF.
31 | ENDMETHOD.
32 |
33 | METHOD zif_app_rule~get_cur_row.
34 | DATA lr_open_bracket_rule TYPE REF TO zcl_app_rule_amdp_opn_bracket.
35 |
36 | IF mv_cur_row_set = abap_true.
37 | rv_result = mv_cur_row.
38 | RETURN.
39 | ENDIF.
40 |
41 | rv_result = super->zif_app_rule~get_cur_row( ).
42 |
43 | IF is_logic_active( ) = abap_false.
44 | RETURN.
45 | ENDIF.
46 |
47 | lr_open_bracket_rule ?= find_prev_open_bracket_rule( ).
48 | IF lr_open_bracket_rule->zif_app_rule~get_end_row( ) < rv_result
49 | AND mr_prev_rule->get_cur_row( ) = rv_result
50 | AND lr_open_bracket_rule->get_mv_special_logic( ) <> zif_app_amdp_rule_definitions=>cos_open_bracket_special_logic-call_statement.
51 | rv_result = rv_result + 1.
52 | ENDIF.
53 |
54 | zif_app_rule~set_cur_row( rv_result ).
55 | ENDMETHOD.
56 |
57 | METHOD zif_app_rule~get_cur_offset_start.
58 | DATA lr_open_bracket_rule TYPE REF TO zcl_app_rule_amdp_opn_bracket.
59 |
60 | IF mv_cur_offset_start_set = abap_true.
61 | rv_result = mv_cur_offset_start.
62 | RETURN.
63 | ENDIF.
64 |
65 | IF is_logic_active( ) = abap_false.
66 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
67 | RETURN.
68 | ENDIF.
69 |
70 | lr_open_bracket_rule ?= find_prev_open_bracket_rule( ).
71 | IF lr_open_bracket_rule->get_mv_special_logic( ) <> zif_app_amdp_rule_definitions=>cos_open_bracket_special_logic-call_statement
72 | AND lr_open_bracket_rule->zif_app_rule~get_end_row( ) <> zif_app_rule~get_cur_row( ).
73 | rv_result = lr_open_bracket_rule->zif_app_rule~get_cur_offset_start( ) + mv_add_indent.
74 | zif_app_rule~set_cur_offset_start( rv_result ).
75 | ELSE.
76 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
77 | ENDIF.
78 |
79 | ENDMETHOD.
80 |
81 | METHOD zif_app_rule~get_new_line_indent.
82 | DATA lr_rule TYPE REF TO zif_app_rule.
83 |
84 | IF is_logic_active( ) = abap_false OR zif_app_rule~is_end_of_statement( ) = abap_true.
85 | rv_result = super->zif_app_rule~get_new_line_indent( ).
86 | RETURN.
87 | ENDIF.
88 |
89 | lr_rule = find_prev_open_bracket_rule( ).
90 | IF lr_rule->get_prev_rule( ) IS INITIAL.
91 | rv_result = mv_default_line_indent.
92 | ELSE.
93 | rv_result = lr_rule->get_prev_rule( )->get_new_line_indent( ).
94 | ENDIF.
95 | ENDMETHOD.
96 |
97 | ENDCLASS.
98 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_rule_factory.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_factory DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 |
8 | METHODS constructor
9 | IMPORTING ir_settings TYPE REF TO zif_app_settings
10 | RAISING zcx_app_exception.
11 |
12 | METHODS get_rule
13 | IMPORTING ir_t_source TYPE REF TO sourcetable
14 | ir_t_statement TYPE REF TO sstmnt_tab
15 | ir_t_structure TYPE REF TO sstruc_tab
16 | ir_prev_rule TYPE REF TO zif_app_rule
17 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
18 | RETURNING VALUE(rr_result) TYPE REF TO zif_app_rule
19 | RAISING zcx_app_exception.
20 |
21 | PROTECTED SECTION.
22 | PRIVATE SECTION.
23 | DATA mr_rule_finder TYPE REF TO zif_app_rule_finder.
24 | DATA mr_settings TYPE REF TO zif_app_settings.
25 |
26 | METHODS get_rule_search
27 | IMPORTING
28 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
29 | ir_prev_rule TYPE REF TO zif_app_rule OPTIONAL
30 | RETURNING VALUE(rs_result) TYPE zapp_s_rule_search
31 | RAISING zcx_app_exception.
32 | ENDCLASS.
33 |
34 |
35 |
36 | CLASS zcl_app_rule_factory IMPLEMENTATION.
37 |
38 |
39 | METHOD constructor.
40 |
41 | CREATE OBJECT mr_rule_finder TYPE zcl_app_rule_finder.
42 | mr_settings = ir_settings.
43 | ENDMETHOD.
44 |
45 |
46 | METHOD get_rule.
47 | DATA lr_rule_data TYPE REF TO zapp_s_rule.
48 | DATA ls_rule_search TYPE zapp_s_rule_search.
49 | DATA lr_rule_data_new TYPE REF TO zapp_s_rule.
50 |
51 |
52 | ls_rule_search = get_rule_search(
53 | ir_token_ext = ir_token_ext
54 | ir_prev_rule = ir_prev_rule ).
55 |
56 | lr_rule_data = mr_rule_finder->get_rule_data( is_rule_search = ls_rule_search ).
57 |
58 | IF lr_rule_data->rule_class IS INITIAL.
59 | RAISE EXCEPTION TYPE zcx_app_exception
60 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
61 | TYPE 'E'
62 | NUMBER '006'
63 | WITH
64 | lr_rule_data->rule_name.
65 | ENDIF.
66 |
67 | CREATE OBJECT rr_result TYPE (lr_rule_data->rule_class).
68 |
69 | CREATE DATA lr_rule_data_new.
70 |
71 | lr_rule_data_new->* = lr_rule_data->*.
72 |
73 | IF ir_prev_rule IS INITIAL.
74 | rr_result->init(
75 | EXPORTING
76 | ir_token_ext = ir_token_ext
77 | ir_t_source = ir_t_source
78 | ir_t_statement = ir_t_statement
79 | ir_t_structure = ir_t_structure
80 | ir_rule_data = lr_rule_data_new
81 | ir_settings = mr_settings ).
82 | ELSE.
83 |
84 | rr_result->init(
85 | EXPORTING
86 | ir_token_ext = ir_token_ext
87 | ir_t_source = ir_t_source
88 | ir_t_statement = ir_t_statement
89 | ir_t_structure = ir_t_structure
90 | ir_rule_data = lr_rule_data_new
91 | ir_settings = mr_settings
92 | ir_context_rule = ir_prev_rule->get_new_context_rule( )
93 | ir_hl_context_rule = ir_prev_rule->get_new_hl_context_rule( )
94 | ir_prev_rule = ir_prev_rule ).
95 | ENDIF.
96 | ENDMETHOD.
97 |
98 |
99 | METHOD get_rule_search.
100 | rs_result-token = ir_token_ext->str_up.
101 | rs_result-sqlscript = ir_token_ext->sqlscript.
102 | IF ir_prev_rule IS NOT INITIAL.
103 | rs_result-context = ir_prev_rule->get_new_context( ).
104 | rs_result-hl_context = ir_prev_rule->get_new_hl_context( ).
105 | ENDIF.
106 | ENDMETHOD.
107 | ENDCLASS.
108 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_abap/zcl_app_rule_abap_dummy.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_abap_dummy DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_base_rule
4 |
5 | FINAL
6 | CREATE PUBLIC .
7 |
8 | PUBLIC SECTION.
9 | METHODS zif_app_rule~get_cur_offset_start REDEFINITION.
10 | METHODS zif_app_rule~get_cur_row REDEFINITION.
11 | METHODS zif_app_rule~get_text REDEFINITION.
12 | METHODS zif_app_rule~init REDEFINITION.
13 | METHODS zif_app_rule~finalize_init REDEFINITION.
14 | PROTECTED SECTION.
15 | PRIVATE SECTION.
16 | ENDCLASS.
17 |
18 |
19 |
20 | CLASS zcl_app_rule_abap_dummy IMPLEMENTATION.
21 |
22 | METHOD zif_app_rule~get_cur_offset_start.
23 | rv_result = mr_token_ext->col.
24 | ENDMETHOD.
25 |
26 |
27 | METHOD zif_app_rule~get_cur_row.
28 | DATA lr_token_ext_prev TYPE REF TO zapp_s_stokesx_ext.
29 | IF mr_prev_rule IS INITIAL.
30 | rv_result = mr_token_ext->row.
31 | RETURN.
32 | ENDIF.
33 |
34 | lr_token_ext_prev = mr_prev_rule->get_token_ext( ).
35 | IF zcl_app_utilities=>is_abap_token( lr_token_ext_prev->sqlscript ) = abap_true.
36 |
37 | rv_result = mr_prev_rule->get_end_row( ).
38 |
39 | ELSE.
40 | IF mr_prev_rule->has_multline_delimiter( ) = abap_true.
41 | rv_result = mr_prev_rule->get_end_row( ).
42 | ELSE.
43 | rv_result = mr_prev_rule->get_end_row( ) + 1.
44 | ENDIF.
45 | ENDIF.
46 |
47 | ENDMETHOD.
48 |
49 | METHOD zif_app_rule~get_text.
50 | DATA lr_delimiter TYPE REF TO string.
51 | DATA lr_result TYPE REF TO string.
52 | IF mr_token_ext->delimiter_org IS INITIAL.
53 | INSERT mr_token_ext->str_org INTO TABLE rt_result.
54 | RETURN.
55 | ENDIF.
56 | LOOP AT mr_token_ext->delimiter_org REFERENCE INTO lr_delimiter.
57 | INSERT INITIAL LINE INTO TABLE rt_result REFERENCE INTO lr_result.
58 | IF sy-tabix = 1.
59 | CONCATENATE mr_token_ext->str_org lr_delimiter->* INTO lr_result->*.
60 | ELSE.
61 | lr_result->* = lr_delimiter->*.
62 | ENDIF.
63 | ENDLOOP.
64 | ENDMETHOD.
65 |
66 | METHOD zif_app_rule~init.
67 | IF zcl_app_utilities=>is_abap_token( ir_token_ext->sqlscript ) = abap_false.
68 | RAISE EXCEPTION TYPE zcx_app_exception
69 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
70 | TYPE 'E'
71 | NUMBER '009'
72 | WITH ir_rule_data->rule_name.
73 |
74 | ENDIF.
75 | super->zif_app_rule~init(
76 | EXPORTING
77 | ir_token_ext = ir_token_ext
78 | ir_t_source = ir_t_source
79 | ir_t_statement = ir_t_statement
80 | ir_t_structure = ir_t_structure
81 | ir_rule_data = ir_rule_data
82 | ir_context_rule = ir_context_rule
83 | ir_hl_context_rule = ir_hl_context_rule
84 | ir_prev_rule = ir_prev_rule
85 | ir_settings = ir_settings ).
86 |
87 | ENDMETHOD.
88 |
89 | METHOD zif_app_rule~finalize_init.
90 | DATA lr_delimiter TYPE REF TO string.
91 | IF mr_token_ext->sqlscript = zcl_app_scanner_sqlscript=>cos_sqlscript-end_of_pending
92 | AND lines( mr_token_ext->delimiter_org ) > 1.
93 |
94 | READ TABLE mr_token_ext->delimiter_org REFERENCE INTO lr_delimiter
95 | INDEX ( lines( mr_token_ext->delimiter_org ) ).
96 | IF sy-subrc = 0.
97 | IF lr_delimiter->* IS INITIAL OR lr_delimiter->* CO ` `.
98 | CLEAR lr_delimiter->*.
99 | ELSE.
100 | INSERT INITIAL LINE INTO TABLE mr_token_ext->delimiter_org.
101 | ENDIF.
102 | ENDIF.
103 | ENDIF.
104 |
105 | ENDMETHOD.
106 |
107 | ENDCLASS.
108 |
--------------------------------------------------------------------------------
/doc/how_does_it_work/README.md:
--------------------------------------------------------------------------------
1 | # How does it work (technical)
2 |
3 | ## General
4 |
5 | The AMDP Pretty Printer consists like the SAP ABAP Development Tools of
6 | a Rest Service in the SAP Development System that contains the Pretty
7 | Printer logic and an Eclipse Plugin that calls the Rest Service and
8 | adjust the coding. The SAP ADT SDK is used for the adjustment of the
9 | coding and the communication with the SAP Backend.
10 |
11 | The AMDP Pretty Printer adjusts only the content of the AMDP methods. It
12 | doesn’t format the ABAP source code.
13 |
14 | ## The SAP backend logic
15 |
16 | The Eclipse Plugin sends a post request to the URL
17 | /sap/bc/adt/zapp/zapp_pretty_printer of your SAP Development System.
18 | This Rest Service is provided by an implementation of the BADI
19 | BADI_ADT_REST_RFC_APPLICATION (Enhancement Implementation
20 | ZAPP_ADT_PRETTY_PRINTER). It calls the formatting logic.
21 |
22 | The formatting logic is stored in the package $APP_PRETTY_PRINTER. The
23 | entry point is the method ZCL_APP_PRETTY_PRINTER-\>PRETTY_PRINT.
24 |
25 | It calls the scanner class ZCL_APP_SCANNER to scan the source code,
26 | determines the rules and applies them on the source code to format it.
27 | The rules will be applied up to 11 times, because it could be that there
28 | are dependencies between the rules. The rules will be created by the
29 | class ZCL_APP_RULE_FACTORY.
30 |
31 | ### Scanner logic
32 |
33 | The source code will be scanned by the class ZCL_APP_SCANNER. Scan means
34 | that it calls the SAP internal command SCAN ABAP-SOURCE to tokenize the
35 | source code. This command is also used by the SAP Standard ABAP Pretty
36 | Printer. The command returns the tokens in a way that it cannot be used
37 | by the rules. Hence, there are several methods that adjust the tokens that
38 | the can be used for the AMDP Pretty Printer. The scanner logic also
39 | determines if a token belongs to a comment and what kind of comment it
40 | is (class ZCL_APP_SCANNER_COMMENT). Additional it determines if the
41 | token belongs to the AMDP method content (class
42 | ZCL_APP_SCANNER_SQLSCRIPT). Therefore, the scanner searches for the
43 | keyword SQLSCRIPT that is not part of a commend and part of the METHOD
44 | command. The source code after the dot of the METHOD command until the
45 | ENDMETHOD command will be formatted by the AMDP Pretty Printer rules.
46 | The rest will be copied 1:1 by the ABAP rule.
47 |
48 | Additional there is the class ZCL_APP_SCANNER_DELIMITER it scans the
49 | delimiter (for example spaces) between the tokens that the command SCAN
50 | ABAP-SOURCE returns. If the user enters empty rows in the source code,
51 | then they will be part of the delimiter and the rules normally will keep
52 | them alive in the result of the formatting.
53 |
54 | ### The rules
55 |
56 | The rules will be provided by the class ZCL_APP_RULE_PROVIDER. They are
57 | not defined in a customizing table to deploy the AMDP Pretty Printer
58 | with abapGit. It doesn’t support table content until now.
59 |
60 | All rules implement the interface ZIF_APP_RULE and inherit from the
61 | class ZCL_APP_BASE_RULE.
62 |
63 | The class ZCL_APP_RULE_FINDER searches the rules for the tokens. On each
64 | token will be only the first found rule be applied. It uses the
65 | following access sequence:
66 |
67 | 1. Full specified (Token, Context, Higher Level Context, SQLSCRIPT)
68 |
69 | 2. With context (Token, Context, SQLSCRIPT)
70 |
71 | 3. Without Token (Context, Higher Level Context, SQLSCRIPT)
72 |
73 | 4. With Token (Token, SQLSCRIPT)
74 |
75 | 5. Default (SQLSCRIPT)
76 |
77 | Hint: Currently all rules have no context. The context could be defined
78 | by a previous rule.
79 |
80 | All rules can be found in the package $APP_PRETTY_PRINTER_RULES and
81 | below.
82 |
--------------------------------------------------------------------------------
/abap/src/zapp_s_stokesx_ext.tabl.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_S_STOKESX_EXT
7 | E
8 | INTTAB
9 | Extended STOKESX
10 | E
11 | 1
12 |
13 |
14 |
15 | STR
16 | 0
17 | g
18 | 000008
19 | STRG
20 | STRG
21 | Token sequence
22 |
23 |
24 | ROW
25 | TOKEN_ROW
26 | 0
27 | E
28 |
29 |
30 | COL
31 | TOKEN_COL
32 | 0
33 | E
34 |
35 |
36 | LEN
37 | TOKEN_LEN1
38 | 0
39 | E
40 |
41 |
42 | TYPE
43 | TOKEN_TYPE
44 | 0
45 | E
46 |
47 |
48 | ORG_TAB_ROW
49 | ZAPP_D_ORG_TAB_ROW
50 | 0
51 | E
52 |
53 |
54 | SQLSCRIPT
55 | ZAPP_D_SQLSCRIPT
56 | 0
57 | X
58 | F
59 | E
60 |
61 |
62 | COMMENT
63 | ZAPP_D_COMMENT
64 | 0
65 | X
66 | F
67 | E
68 |
69 |
70 | COMMENT_DETAIL
71 | ZAPP_D_COMMENT_DETAIL
72 | 0
73 | X
74 | F
75 | E
76 |
77 |
78 | DELIMITER
79 | ZAPP_T_DELIMITER
80 | 0
81 | TTYP
82 | TTYPL
83 | L
84 |
85 |
86 | DELIMITER_ORG
87 | ZAPP_T_DELIMITER
88 | 0
89 | TTYP
90 | TTYPL
91 | L
92 |
93 |
94 | STR_UP
95 | ZAPP_D_TOKEN
96 | 0
97 | E
98 |
99 |
100 | STR_ORG
101 | ZAPP_D_TOKEN
102 | 0
103 | E
104 |
105 |
106 |
107 | D
108 |
109 |
110 | -
111 | D
112 | Erweiteter STOKESX
113 |
114 |
115 |
116 |
117 |
118 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner.clas.testclasses.abap:
--------------------------------------------------------------------------------
1 | *"* use this source file for your ABAP unit test classes
2 | CLASS lcl_test DEFINITION FINAL FOR TESTING
3 | DURATION SHORT
4 | RISK LEVEL HARMLESS.
5 |
6 | PRIVATE SECTION.
7 | METHODS:
8 | scan_test FOR TESTING RAISING cx_static_check.
9 | ENDCLASS.
10 |
11 |
12 | CLASS lcl_test IMPLEMENTATION.
13 |
14 | METHOD scan_test.
15 |
16 | DATA lt_source TYPE sourcetable.
17 | DATA lr_cut TYPE REF TO zcl_app_scanner.
18 | DATA lr_ex TYPE REF TO zcx_app_exception.
19 |
20 | lt_source = VALUE #( ( |CLASS zcl_app_test_amdp DEFINITION| )
21 | ( | PUBLIC| )
22 | ( | FINAL| )
23 | ( | CREATE PUBLIC .| )
24 | ( || )
25 | ( | PUBLIC SECTION.| )
26 | ( || )
27 | ( | INTERFACES if_amdp_marker_hdb.| )
28 | ( || )
29 | ( | CLASS-METHODS sel_data.| )
30 | ( || )
31 | ( | CLASS-METHODS write_data.| )
32 | ( || )
33 | ( | PROTECTED SECTION.| )
34 | ( | PRIVATE SECTION.| )
35 | ( |ENDCLASS.| )
36 | ( || )
37 | ( || )
38 | ( || )
39 | ( |CLASS zcl_app_test_amdp IMPLEMENTATION.| )
40 | ( || )
41 | ( | METHOD write_data.| )
42 | ( | "Hello World 'keine Ahnung' 'bla| )
43 | ( | WRITE / 'Hello World'. "Kommentar| )
44 | ( | ENDMETHOD.| )
45 | ( || )
46 | ( | METHOD sel_data| )
47 | ( | BY DATABASE PROCEDURE FOR HDB LANGUAGE SQLSCRIPT| )
48 | ( | "opt| )
49 | ( |* sqlscript| )
50 | ( | OPTIONS READ-ONLY| )
51 | ( | USING sflight. -- Flight| )
52 | ( || )
53 | ( | lt_sflight = select * from sflight;| )
54 | ( || )
55 | ( | lt_carrid = select "CARRID" from sflight;| )
56 | ( || )
57 | ( | lt_carrid2 = select "SFLIGHT"."CARRID" from sflight;| )
58 | ( || )
59 | ( |*lt_test = select 'Bla Blup Data' from public.dummy;| )
60 | ( | lt_test = select 'Bla Blup Data' from public.dummy;| )
61 | ( || )
62 | ( | -- Hello World 'keine Ahnung' 'bla blub'| )
63 | ( | lt_test2 = select 'Bla Blup Data' from public.dummy; /*schaun mer mal */| )
64 | ( || )
65 | ( | /* schaun mer| )
66 | ( | noch mehr */| )
67 | ( || )
68 | ( | lt_test3 = select 'Bla Blup Data' from public.dummy; /*schaun mer mal */| )
69 | ( || )
70 | ( | lt_test3 = select 'Bla Blup Data' from public.dummy; -- schaun mer mal| )
71 | ( || )
72 | ( | --ENDMETHOD.| )
73 | ( | ENDMETHOD.| )
74 | ( |ENDCLASS.| ) ).
75 |
76 | CREATE OBJECT lr_cut.
77 | TRY.
78 | lr_cut->scan(
79 | EXPORTING
80 | it_source = lt_source
81 | ).
82 | CATCH zcx_app_exception INTO lr_ex.
83 | cl_abap_unit_assert=>fail( lr_ex->get_text( ) ).
84 | ENDTRY.
85 | "cl_abap_unit_assert=>fail( 'Implement your first test here' ).
86 | ENDMETHOD.
87 |
88 | ENDCLASS.
89 |
--------------------------------------------------------------------------------
/abap/src/zapp_mc_pretty_print.msag.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZAPP_MC_PRETTY_PRINT
7 | E
8 | Message Class Pretty Printer
9 |
10 |
11 |
12 | E
13 | ZAPP_MC_PRETTY_PRINT
14 | 001
15 | Error during source code scanning
16 |
17 |
18 | E
19 | ZAPP_MC_PRETTY_PRINT
20 | 003
21 | No statement found for token &
22 |
23 |
24 | E
25 | ZAPP_MC_PRETTY_PRINT
26 | 004
27 | Token & not found in source row &
28 |
29 |
30 | E
31 | ZAPP_MC_PRETTY_PRINT
32 | 005
33 | No rule found for token & context & HL context & SQLSCRIPT &
34 |
35 |
36 | E
37 | ZAPP_MC_PRETTY_PRINT
38 | 006
39 | No class definied for rule &
40 |
41 |
42 | E
43 | ZAPP_MC_PRETTY_PRINT
44 | 007
45 | Could not add rule & token & row & col & to source. It is already set
46 |
47 |
48 | E
49 | ZAPP_MC_PRETTY_PRINT
50 | 008
51 | Could not add rule & token & row & col & to source. Line already created
52 |
53 |
54 | E
55 | ZAPP_MC_PRETTY_PRINT
56 | 009
57 | The rule & is no SQLSCRIPT rule
58 |
59 |
60 | E
61 | ZAPP_MC_PRETTY_PRINT
62 | 010
63 | No closing bracket found rule & row & col &
64 |
65 |
66 | E
67 | ZAPP_MC_PRETTY_PRINT
68 | 011
69 | No open bracket found rule & row & col &
70 |
71 |
72 | E
73 | ZAPP_MC_PRETTY_PRINT
74 | 012
75 | Could not correct token & length 0 row & col &
76 |
77 |
78 | E
79 | ZAPP_MC_PRETTY_PRINT
80 | 013
81 | Pretty print result calculated 10 times with differences (not stable)
82 |
83 |
84 | E
85 | ZAPP_MC_PRETTY_PRINT
86 | 014
87 | No 'FROM' token found for Select rule & row & col &
88 |
89 |
90 | E
91 | ZAPP_MC_PRETTY_PRINT
92 | 015
93 | The logic of the rule & is not active
94 |
95 |
96 | E
97 | ZAPP_MC_PRETTY_PRINT
98 | 016
99 | Settings saved.
100 |
101 |
102 | E
103 | ZAPP_MC_PRETTY_PRINT
104 | 017
105 | Error during saving settings.
106 |
107 |
108 | E
109 | ZAPP_MC_PRETTY_PRINT
110 | 018
111 | Settings deleted.
112 |
113 |
114 | E
115 | ZAPP_MC_PRETTY_PRINT
116 | 019
117 | Could not correct sql comment token & length 0 row & col &
118 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_opn_bracket.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_opn_bracket DEFINITION
2 | PUBLIC
3 | INHERITING FROM zcl_app_rule_amdp_default_no_c
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | METHODS zif_app_rule~get_new_line_indent REDEFINITION.
8 | METHODS zif_app_rule~finalize_init REDEFINITION.
9 | METHODS zif_app_rule~get_cur_row REDEFINITION.
10 | METHODS zif_app_rule~is_new_line_req REDEFINITION.
11 | METHODS get_mv_special_logic RETURNING VALUE(rv_result) TYPE zapp_d_spec_bracket_logic.
12 |
13 | PROTECTED SECTION.
14 | PRIVATE SECTION.
15 | DATA mv_special_logic TYPE zapp_d_spec_bracket_logic.
16 | METHODS is_new_line_req_for_call_statm
17 | RETURNING VALUE(rv_result) TYPE abap_bool
18 | RAISING zcx_app_exception .
19 | ENDCLASS.
20 |
21 |
22 |
23 | CLASS zcl_app_rule_amdp_opn_bracket IMPLEMENTATION.
24 |
25 | METHOD zif_app_rule~get_new_line_indent.
26 |
27 |
28 | IF is_logic_active( ) = abap_true.
29 |
30 | IF mv_special_logic = zif_app_amdp_rule_definitions=>cos_open_bracket_special_logic-call_statement.
31 | rv_result = mr_prev_rule->get_prev_rule( )->get_cur_offset_end( ) + 4.
32 | ELSE.
33 | rv_result = zif_app_rule~get_cur_offset_end( ).
34 | ENDIF.
35 | ELSE.
36 | rv_result = super->zif_app_rule~get_new_line_indent( ).
37 | ENDIF.
38 | ENDMETHOD.
39 |
40 |
41 | METHOD zif_app_rule~get_cur_row.
42 |
43 | IF mv_cur_row_set = abap_true.
44 | rv_result = mv_cur_row.
45 | RETURN.
46 | ENDIF.
47 |
48 | rv_result = super->zif_app_rule~get_cur_row( ).
49 |
50 | IF is_logic_active( ) = abap_false OR mr_prev_rule IS INITIAL.
51 | RETURN.
52 | ENDIF.
53 |
54 | IF mr_prev_rule->get_token_up( ) = zif_app_rule~get_token_up( ).
55 | rv_result = rv_result + 1.
56 | zif_app_rule~set_cur_row( rv_result ).
57 | ENDIF.
58 |
59 | ENDMETHOD.
60 |
61 | METHOD zif_app_rule~finalize_init.
62 | DATA lr_delimiter TYPE REF TO string.
63 | super->zif_app_rule~finalize_init( ).
64 |
65 | IF is_logic_active( ) = abap_false.
66 | RETURN.
67 | ENDIF.
68 |
69 | READ TABLE mr_token_ext->delimiter
70 | REFERENCE INTO lr_delimiter
71 | INDEX 1 .
72 | IF sy-subrc <> 0.
73 | RETURN.
74 | ENDIF.
75 |
76 | IF strlen( lr_delimiter->* ) = 0.
77 | RETURN.
78 | ENDIF.
79 |
80 | IF lr_delimiter->* CO ` `.
81 | mr_token_ext->delimiter = zcl_app_utilities=>get_space_as_delimiter( ).
82 | ENDIF.
83 |
84 | IF mr_prev_rule IS NOT INITIAL
85 | AND mr_prev_rule->get_prev_rule( ) IS NOT INITIAL
86 | AND mr_prev_rule->get_prev_rule( )->get_token_up( ) = 'CALL'.
87 | mv_special_logic = zif_app_amdp_rule_definitions=>cos_open_bracket_special_logic-call_statement.
88 | ENDIF.
89 |
90 | ENDMETHOD.
91 |
92 | METHOD zif_app_rule~is_new_line_req.
93 |
94 | rv_result = super->zif_app_rule~is_new_line_req( ).
95 |
96 | IF rv_result = abap_true.
97 | RETURN.
98 | ENDIF.
99 |
100 |
101 | IF mv_special_logic = zif_app_amdp_rule_definitions=>cos_open_bracket_special_logic-call_statement.
102 | rv_result = is_new_line_req_for_call_statm( ).
103 | ENDIF.
104 | ENDMETHOD.
105 |
106 | METHOD get_mv_special_logic.
107 | rv_result = me->mv_special_logic.
108 | ENDMETHOD.
109 |
110 | METHOD is_new_line_req_for_call_statm.
111 | DATA lr_rule TYPE REF TO zif_app_rule.
112 | DATA lv_counter_next_open_bracket TYPE i.
113 |
114 | lr_rule = me.
115 | DO.
116 | lr_rule = lr_rule->get_next_rule( ).
117 | IF lr_rule IS INITIAL.
118 | RETURN.
119 | ENDIF.
120 | IF zcl_app_utilities=>is_sqlscript_rule( lr_rule ) = abap_false.
121 | RETURN.
122 | ENDIF.
123 |
124 | IF lr_rule->is_end_of_statement( ) = abap_true.
125 | RETURN.
126 | ENDIF.
127 |
128 | IF lr_rule->is_comment( ) = abap_true.
129 | CONTINUE.
130 | ENDIF.
131 |
132 | IF lr_rule->is_line_breaking_token( ) = abap_true.
133 | rv_result = abap_true.
134 | RETURN.
135 | ENDIF.
136 |
137 | CASE lr_rule->get_token_up( ).
138 | WHEN ')'.
139 |
140 | IF lv_counter_next_open_bracket = 0.
141 | RETURN.
142 | ENDIF.
143 | lv_counter_next_open_bracket = lv_counter_next_open_bracket - 1.
144 | WHEN '('.
145 | lv_counter_next_open_bracket = lv_counter_next_open_bracket + 1.
146 | ENDCASE.
147 | ENDDO.
148 |
149 | ENDMETHOD.
150 |
151 | ENDCLASS.
152 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_amdp_rule_utilities.clas.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | ZCL_APP_AMDP_RULE_UTILITIES
7 | E
8 | Rule Utilities
9 | 1
10 | X
11 | X
12 | X
13 |
14 |
15 |
16 | AVOID_LB_AFTER_COMMA_IN_FUNC
17 | E
18 | Avoid line break after comma in function
19 |
20 |
21 | CONTAINS_FUNCTION_LB_EXCEPTION
22 | E
23 | Contains Function Select Statement
24 |
25 |
26 | CONTAINS_FU_KW_OR_SFU_W_COMMA
27 | E
28 | Contains function keywords or sub func. with comma
29 |
30 |
31 | CONTAINS_FU_SUB_FU_W_COMMA
32 | E
33 | Contains function sub func. with comma
34 |
35 |
36 | IS_AVD_LB_AFT_COMMA_IN_FU_ACT
37 | E
38 | Is avoid line break after comma in function active
39 |
40 |
41 | IS_CLS_BRA_OF_FU_IN_SAME_LINE
42 | E
43 | Is closing bracket of function original in the same line
44 |
45 |
46 |
47 |
48 | AVOID_LB_AFTER_COMMA_IN_FUNC
49 | IR_START_RULE
50 | E
51 | Start rule must be function name before the bracket
52 |
53 |
54 | CONTAINS_FUNCTION_LB_EXCEPTION
55 | IR_START_RULE
56 | E
57 | Start rule must be function name before the bracket
58 |
59 |
60 | CONTAINS_FUNCTION_LB_EXCEPTION
61 | RV_RESULT
62 | E
63 | Result
64 |
65 |
66 | CONTAINS_FU_KW_OR_SFU_W_COMMA
67 | IR_START_RULE
68 | E
69 | Start rule must be function name before the bracket
70 |
71 |
72 | CONTAINS_FU_KW_OR_SFU_W_COMMA
73 | RV_RESULT
74 | E
75 | Result
76 |
77 |
78 | CONTAINS_FU_SUB_FU_W_COMMA
79 | IR_START_RULE
80 | E
81 | Start rule must be function name before the bracket
82 |
83 |
84 | CONTAINS_FU_SUB_FU_W_COMMA
85 | RV_RESULT
86 | E
87 | Result
88 |
89 |
90 | IS_AVD_LB_AFT_COMMA_IN_FU_ACT
91 | IR_SETTINGS
92 | E
93 | AMDP Pretty Printer Settings
94 |
95 |
96 | IS_AVD_LB_AFT_COMMA_IN_FU_ACT
97 | IR_START_RULE
98 | E
99 | Pretty Printer Rule
100 |
101 |
102 | IS_AVD_LB_AFT_COMMA_IN_FU_ACT
103 | RV_RESULT
104 | E
105 | Result
106 |
107 |
108 | IS_CLS_BRA_OF_FU_IN_SAME_LINE
109 | IR_START_RULE
110 | E
111 | Start rule must be function name before the bracket
112 |
113 |
114 | IS_CLS_BRA_OF_FU_IN_SAME_LINE
115 | RV_RESULT
116 | E
117 | Result
118 |
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/zcl_app_rule_finder.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_finder DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 | INTERFACES zif_app_rule_finder.
8 | METHODS constructor
9 | RAISING zcx_app_exception.
10 |
11 |
12 | PROTECTED SECTION.
13 | PRIVATE SECTION.
14 | DATA mt_rule_data TYPE zapp_t_rule_sort.
15 |
16 | METHODS get_rule_data_by_full_spec
17 | IMPORTING is_rule_search TYPE zapp_s_rule_search
18 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule.
19 |
20 | METHODS get_rule_data_w_context
21 | IMPORTING is_rule_search TYPE zapp_s_rule_search
22 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule.
23 |
24 |
25 | METHODS get_rule_data_wo_token
26 | IMPORTING is_rule_search TYPE zapp_s_rule_search
27 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule.
28 |
29 | METHODS get_rule_data_w_token
30 | IMPORTING is_rule_search TYPE zapp_s_rule_search
31 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule.
32 |
33 | METHODS get_rule_data_default
34 | IMPORTING is_rule_search TYPE zapp_s_rule_search
35 | RETURNING VALUE(rr_rule_data) TYPE REF TO zapp_s_rule.
36 |
37 | ENDCLASS.
38 |
39 |
40 |
41 | CLASS ZCL_APP_RULE_FINDER IMPLEMENTATION.
42 |
43 |
44 | METHOD constructor.
45 |
46 | DATA lr_rule_prov TYPE REF TO zif_app_rule_provider.
47 |
48 | CREATE OBJECT lr_rule_prov TYPE zcl_app_rule_provider.
49 | mt_rule_data = lr_rule_prov->get_rules( ).
50 |
51 | ENDMETHOD.
52 |
53 |
54 | METHOD get_rule_data_by_full_spec.
55 |
56 | READ TABLE mt_rule_data REFERENCE INTO rr_rule_data
57 | WITH TABLE KEY token = is_rule_search-token
58 | context = is_rule_search-context
59 | hl_context = is_rule_search-hl_context
60 | sqlscript = is_rule_search-sqlscript.
61 |
62 | ENDMETHOD.
63 |
64 |
65 | METHOD get_rule_data_default.
66 | DATA lv_hl_context TYPE zapp_d_hl_context.
67 | DATA lv_context TYPE zapp_d_context.
68 | DATA lv_token TYPE zapp_d_token.
69 |
70 | READ TABLE mt_rule_data REFERENCE INTO rr_rule_data
71 | WITH TABLE KEY token = lv_token
72 | context = lv_context
73 | hl_context = lv_hl_context
74 | sqlscript = is_rule_search-sqlscript.
75 | ENDMETHOD.
76 |
77 |
78 | METHOD get_rule_data_wo_token.
79 | DATA lv_token TYPE zapp_d_token.
80 |
81 | READ TABLE mt_rule_data REFERENCE INTO rr_rule_data
82 | WITH TABLE KEY token = lv_token
83 | context = is_rule_search-context
84 | hl_context = is_rule_search-hl_context
85 | sqlscript = is_rule_search-sqlscript.
86 | ENDMETHOD.
87 |
88 |
89 | METHOD get_rule_data_w_context.
90 | DATA lv_hl_context TYPE zapp_d_hl_context.
91 | READ TABLE mt_rule_data REFERENCE INTO rr_rule_data
92 | WITH TABLE KEY token = is_rule_search-token
93 | context = is_rule_search-context
94 | hl_context = lv_hl_context
95 | sqlscript = is_rule_search-sqlscript.
96 | ENDMETHOD.
97 |
98 |
99 | METHOD get_rule_data_w_token.
100 | DATA lv_hl_context TYPE zapp_d_hl_context.
101 | DATA lv_context TYPE zapp_d_context.
102 | READ TABLE mt_rule_data REFERENCE INTO rr_rule_data
103 | WITH TABLE KEY token = is_rule_search-token
104 | context = lv_context
105 | hl_context = lv_hl_context
106 | sqlscript = is_rule_search-sqlscript.
107 | ENDMETHOD.
108 |
109 |
110 | METHOD zif_app_rule_finder~get_rule_data.
111 | rr_rule_data = get_rule_data_by_full_spec( is_rule_search = is_rule_search ).
112 | IF rr_rule_data IS NOT INITIAL.
113 | RETURN.
114 | ENDIF.
115 |
116 | rr_rule_data = get_rule_data_w_context( is_rule_search = is_rule_search ).
117 | IF rr_rule_data IS NOT INITIAL.
118 | RETURN.
119 | ENDIF.
120 |
121 | rr_rule_data = get_rule_data_wo_token( is_rule_search = is_rule_search ).
122 | IF rr_rule_data IS NOT INITIAL.
123 | RETURN.
124 | ENDIF.
125 |
126 | rr_rule_data = get_rule_data_w_token( is_rule_search = is_rule_search ).
127 | IF rr_rule_data IS NOT INITIAL.
128 | RETURN.
129 | ENDIF.
130 |
131 | rr_rule_data = get_rule_data_default( is_rule_search = is_rule_search ).
132 | IF rr_rule_data IS NOT INITIAL.
133 | RETURN.
134 | ENDIF.
135 |
136 | RAISE EXCEPTION TYPE zcx_app_exception
137 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
138 | TYPE 'E'
139 | NUMBER '005'
140 | WITH
141 | is_rule_search-token
142 | is_rule_search-context
143 | is_rule_search-hl_context
144 | is_rule_search-sqlscript.
145 |
146 | ENDMETHOD.
147 | ENDCLASS.
148 |
--------------------------------------------------------------------------------
/abap/src/app_pretty_printer_rules/app_pretty_printer_rules_amdp/zcl_app_rule_amdp_union_all.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_rule_amdp_union_all DEFINITION
2 | PUBLIC
3 | FINAL
4 | INHERITING FROM zcl_app_rule_amdp_new_line_lft
5 |
6 | CREATE PUBLIC .
7 |
8 | PUBLIC SECTION.
9 | METHODS zif_app_rule~finalize_init REDEFINITION.
10 | METHODS zif_app_rule~is_new_line_req REDEFINITION.
11 | METHODS zif_app_rule~get_new_line_indent REDEFINITION.
12 | METHODS zif_app_rule~get_cur_offset_start REDEFINITION.
13 | METHODS zif_app_rule~get_cur_row REDEFINITION.
14 | PROTECTED SECTION.
15 |
16 |
17 | PRIVATE SECTION.
18 | METHODS is_union_or_all_of_union_all
19 | RETURNING VALUE(rv_result) TYPE abap_bool
20 | RAISING
21 | zcx_app_exception.
22 | ENDCLASS.
23 |
24 |
25 |
26 | CLASS zcl_app_rule_amdp_union_all IMPLEMENTATION.
27 |
28 |
29 | METHOD is_union_or_all_of_union_all.
30 |
31 | IF is_logic_active( ) = abap_false.
32 | RETURN.
33 | ENDIF.
34 |
35 | IF mr_token_ext->str_up = 'UNION'
36 | AND mr_next_rule IS NOT INITIAL
37 | AND mr_next_rule->get_token_up( ) = 'ALL'.
38 | RETURN.
39 | ENDIF.
40 |
41 | IF mr_token_ext->str_up = 'ALL'.
42 | IF mr_prev_rule IS INITIAL
43 | OR mr_prev_rule->get_token_up( ) <> 'UNION'.
44 | RETURN.
45 | ENDIF.
46 | ENDIF.
47 |
48 | rv_result = abap_true.
49 | ENDMETHOD.
50 |
51 |
52 | METHOD zif_app_rule~finalize_init.
53 | super->zif_app_rule~finalize_init( ).
54 | IF is_logic_active( ) = abap_false.
55 | RETURN.
56 | ENDIF.
57 | IF mr_token_ext->str_up = 'UNION'.
58 | IF mr_next_rule IS NOT INITIAL
59 | AND mr_next_rule->get_token_up( ) = 'ALL'.
60 | mr_rule_data->add_indent = -3.
61 | ELSE.
62 | mr_rule_data->add_indent = 1.
63 | ENDIF.
64 | mv_add_indent = mr_rule_data->add_indent.
65 | RETURN.
66 | ENDIF.
67 |
68 | IF mr_token_ext->str_up = 'ALL'.
69 | IF mr_prev_rule IS INITIAL
70 | OR mr_prev_rule->get_token_up( ) <> 'UNION'.
71 | mv_logic_active = abap_false.
72 | set_logic_active( ).
73 | RETURN.
74 | ENDIF.
75 | ENDIF.
76 |
77 | ENDMETHOD.
78 |
79 |
80 | METHOD zif_app_rule~get_cur_offset_start.
81 | DATA lv_token TYPE zapp_d_token.
82 | DATA lt_token TYPE zapp_t_token.
83 | DATA lt_stop_token TYPE zapp_t_token.
84 | DATA lr_select_rule TYPE REF TO zif_app_rule.
85 |
86 | lv_token = 'UNION'.
87 | INSERT lv_token INTO TABLE lt_stop_token.
88 |
89 | IF mr_token_ext->str_up = 'UNION' AND is_logic_active( ) = abap_true.
90 |
91 | lv_token = 'SELECT'.
92 | INSERT lv_token INTO TABLE lt_token.
93 |
94 | lr_select_rule = zcl_app_amdp_rule_utilities=>get_rule_in_stm_on_same_lvl_rw(
95 | EXPORTING
96 | ir_start_rule = me
97 | it_token = lt_token
98 | it_stop_token = lt_stop_token
99 | ).
100 | IF lr_select_rule IS INITIAL.
101 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
102 | RETURN.
103 | ENDIF.
104 |
105 | rv_result = lr_select_rule->get_cur_offset_start( ) + mv_add_indent.
106 |
107 | ELSEIF mr_token_ext->str_up = 'ALL' AND is_logic_active( ) = abap_true.
108 | rv_result = mr_prev_rule->get_cur_offset_end( ).
109 | ELSE.
110 | rv_result = super->zif_app_rule~get_cur_offset_start( ).
111 | ENDIF.
112 | ENDMETHOD.
113 |
114 |
115 | METHOD zif_app_rule~get_cur_row.
116 |
117 | IF mr_token_ext->str_up = 'ALL' AND is_union_or_all_of_union_all( ).
118 | rv_result = mr_prev_rule->get_cur_row( ).
119 |
120 | ELSE.
121 | rv_result = super->zif_app_rule~get_cur_row( ).
122 | ENDIF.
123 |
124 | ENDMETHOD.
125 |
126 |
127 | METHOD zif_app_rule~get_new_line_indent.
128 | DATA lv_token TYPE zapp_d_token.
129 | DATA lt_token TYPE zapp_t_token.
130 | DATA lt_stop_token TYPE zapp_t_token.
131 | DATA lr_select_rule TYPE REF TO zif_app_rule.
132 | DATA lr_start_rule TYPE REF TO zif_app_rule.
133 |
134 | IF is_union_or_all_of_union_all( ).
135 | lv_token = 'SELECT'.
136 | INSERT lv_token INTO TABLE lt_token.
137 |
138 | lv_token = 'UNION'.
139 | INSERT lv_token INTO TABLE lt_stop_token.
140 |
141 | IF mr_token_ext->str_up = 'ALL'.
142 | lr_start_rule = mr_prev_rule.
143 | ELSE.
144 | lr_start_rule = me.
145 | ENDIF.
146 |
147 | lr_select_rule = zcl_app_amdp_rule_utilities=>get_rule_in_stm_on_same_lvl_rw(
148 | EXPORTING
149 | ir_start_rule = lr_start_rule
150 | it_token = lt_token
151 | it_stop_token = lt_stop_token
152 | ).
153 | IF lr_select_rule IS INITIAL.
154 | rv_result = super->zif_app_rule~get_new_line_indent( ).
155 | RETURN.
156 | ENDIF.
157 |
158 | rv_result = lr_select_rule->get_cur_offset_start( ) - lr_select_rule->get_additional_indent( ).
159 |
160 | ELSE.
161 | rv_result = super->zif_app_rule~get_new_line_indent( ).
162 | ENDIF.
163 | ENDMETHOD.
164 |
165 |
166 | METHOD zif_app_rule~is_new_line_req.
167 |
168 | IF is_union_or_all_of_union_all( ).
169 | rv_result = abap_true.
170 | ELSE.
171 | rv_result = super->zif_app_rule~is_new_line_req( ).
172 | ENDIF.
173 |
174 | ENDMETHOD.
175 | ENDCLASS.
176 |
--------------------------------------------------------------------------------
/abap/src/zcl_app_scanner_delimiter.clas.abap:
--------------------------------------------------------------------------------
1 | CLASS zcl_app_scanner_delimiter DEFINITION
2 | PUBLIC
3 | FINAL
4 | CREATE PUBLIC .
5 |
6 | PUBLIC SECTION.
7 |
8 | METHODS set_prev_delimiter
9 | IMPORTING
10 | it_source TYPE sourcetable
11 | ir_prev_token_ext TYPE REF TO zapp_s_stokesx_ext
12 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
13 | RAISING
14 | zcx_app_exception.
15 |
16 | PROTECTED SECTION.
17 | PRIVATE SECTION.
18 |
19 | METHODS set_delimiter_from_source
20 | IMPORTING
21 | it_source TYPE sourcetable
22 | ir_prev_token_ext TYPE REF TO zapp_s_stokesx_ext
23 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
24 | RAISING
25 | zcx_app_exception.
26 |
27 | METHODS get_delimiter_from_source
28 | IMPORTING
29 | it_source TYPE sourcetable
30 | ir_prev_token_ext TYPE REF TO zapp_s_stokesx_ext
31 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
32 | RETURNING
33 | VALUE(rt_delimiter) TYPE zapp_t_delimiter
34 | RAISING
35 | zcx_app_exception.
36 | METHODS get_multi_line_delimiter
37 | IMPORTING
38 | ir_source TYPE REF TO string
39 | iv_offset TYPE i
40 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
41 | ir_prev_token_ext TYPE REF TO zapp_s_stokesx_ext
42 | it_source TYPE sourcetable
43 | RETURNING
44 | VALUE(rt_delimiter) TYPE zapp_t_delimiter.
45 | METHODS get_single_line_delimiter
46 | IMPORTING
47 | ir_source TYPE REF TO string
48 | ir_token_ext TYPE REF TO zapp_s_stokesx_ext
49 | iv_offset TYPE i
50 | RETURNING
51 | VALUE(rv_delimiter) TYPE string.
52 | METHODS get_delimiter_until_end_of_src
53 | IMPORTING
54 | ir_source TYPE REF TO string
55 | iv_offset TYPE i
56 | RETURNING
57 | VALUE(rv_delimiter) TYPE zapp_d_delimiter.
58 |
59 | ENDCLASS.
60 |
61 |
62 |
63 | CLASS zcl_app_scanner_delimiter IMPLEMENTATION.
64 |
65 |
66 | METHOD get_delimiter_from_source.
67 | DATA lr_source TYPE REF TO string.
68 | DATA lv_offset TYPE i.
69 | DATA lv_delimiter TYPE string.
70 | READ TABLE it_source REFERENCE INTO lr_source
71 | INDEX ir_prev_token_ext->row.
72 | IF sy-subrc <> 0.
73 | RAISE EXCEPTION TYPE zcx_app_exception
74 | MESSAGE ID 'ZAPP_MC_PRETTY_PRINT'
75 | TYPE 'E'
76 | NUMBER '004'
77 | WITH
78 | ir_prev_token_ext->str
79 | ir_prev_token_ext->row.
80 | ENDIF.
81 |
82 | lv_offset = ir_prev_token_ext->col + ir_prev_token_ext->len.
83 | IF ir_token_ext IS INITIAL.
84 |
85 | lv_delimiter = get_delimiter_until_end_of_src(
86 | ir_source = lr_source
87 | iv_offset = lv_offset ).
88 | INSERT lv_delimiter INTO TABLE rt_delimiter.
89 | RETURN.
90 | ENDIF.
91 |
92 | IF ir_token_ext->row = ir_prev_token_ext->row.
93 | lv_delimiter = get_single_line_delimiter(
94 | ir_source = lr_source
95 | ir_token_ext = ir_token_ext
96 | iv_offset = lv_offset ).
97 | INSERT lv_delimiter INTO TABLE rt_delimiter.
98 | RETURN.
99 | ENDIF.
100 |
101 | rt_delimiter = get_multi_line_delimiter(
102 | ir_source = lr_source
103 | iv_offset = lv_offset
104 | ir_token_ext = ir_token_ext
105 | ir_prev_token_ext = ir_prev_token_ext
106 | it_source = it_source ).
107 |
108 | ENDMETHOD.
109 |
110 |
111 | METHOD get_delimiter_until_end_of_src.
112 |
113 | rv_delimiter = ir_source->*+iv_offset.
114 | ENDMETHOD.
115 |
116 |
117 | METHOD get_multi_line_delimiter.
118 |
119 | DATA lr_source_to TYPE REF TO string.
120 | DATA lv_length TYPE i.
121 | DATA lv_delimiter TYPE string.
122 | DATA lr_delimiter TYPE REF TO string.
123 |
124 | lv_delimiter = get_delimiter_until_end_of_src(
125 | EXPORTING
126 | ir_source = ir_source
127 | iv_offset = iv_offset ).
128 | INSERT lv_delimiter INTO TABLE rt_delimiter.
129 | LOOP AT it_source REFERENCE INTO lr_source_to
130 | FROM ir_prev_token_ext->row + 1.
131 | IF sy-tabix > ir_token_ext->row.
132 | EXIT.
133 | ENDIF.
134 | INSERT INITIAL LINE INTO TABLE rt_delimiter REFERENCE INTO lr_delimiter.
135 | IF sy-tabix <> ir_token_ext->row.
136 | lr_delimiter->* = lr_source_to->*.
137 | ELSE.
138 | lv_length = ir_token_ext->col.
139 | IF lv_length >= 1.
140 | lr_delimiter->* = lr_source_to->*(lv_length).
141 | ENDIF.
142 | ENDIF.
143 | ENDLOOP.
144 |
145 | ENDMETHOD.
146 |
147 |
148 | METHOD get_single_line_delimiter.
149 |
150 | DATA lv_length TYPE i.
151 |
152 | lv_length = ir_token_ext->col - iv_offset.
153 |
154 | rv_delimiter = ir_source->*+iv_offset(lv_length).
155 | ENDMETHOD.
156 |
157 |
158 | METHOD set_delimiter_from_source.
159 | DATA lt_delimiter TYPE zapp_t_delimiter.
160 |
161 | lt_delimiter = get_delimiter_from_source(
162 | it_source = it_source
163 | ir_prev_token_ext = ir_prev_token_ext
164 | ir_token_ext = ir_token_ext ).
165 |
166 | ir_prev_token_ext->delimiter_org = lt_delimiter.
167 |
168 | ir_prev_token_ext->delimiter = lt_delimiter.
169 |
170 | ENDMETHOD.
171 |
172 |
173 | METHOD set_prev_delimiter.
174 |
175 | IF ir_prev_token_ext IS INITIAL.
176 | RETURN.
177 | ENDIF.
178 |
179 | set_delimiter_from_source(
180 | EXPORTING
181 | it_source = it_source
182 | ir_prev_token_ext = ir_prev_token_ext
183 | ir_token_ext = ir_token_ext
184 | ).
185 |
186 | ENDMETHOD.
187 | ENDCLASS.
188 |
--------------------------------------------------------------------------------
/doc/Installation/README.md:
--------------------------------------------------------------------------------
1 | # Installation
2 |
3 | The AMDP Pretty Printer consists like the SAP ABAP Development Tools of
4 | a Rest Service in the SAP Development System that contains the Pretty
5 | Printer logic and an Eclipse Plugin that calls the Rest Service and
6 | adjust the coding.
7 |
8 | It works with SAP Business Suite on HANA and S/4 HANA (both on premise).
9 | I didn’t check the ABAP Cloud. I assume that it does not work in the
10 | cloud because it uses the command SCAN ABAP SOURCE to get the tokens of
11 | the source code (like the SAP Standard Pretty Printer). This command is
12 | marked in the SAP documenation for internal use.
13 |
14 | ## Installation of the Eclipse Plugin
15 |
16 | The plugin is developed and tested with the Eclipse Version 2021-12.
17 |
18 | It requires the following Software:
19 |
20 | - ABAP Development Tools for SAP HANA (Developer Edition) 3.22.1 or
21 | higher.
22 |
23 | - JRE version 16 or higher (SAP ADT requires only JRE version 11)
24 |
25 | See also here
26 |
27 |
28 |
29 | You have to copy the current zapp.pretty.printer\_\*.jar file from the
30 | github folder [Eclipse Dropin\\plugins](../../Eclipse%20Dropin/plugins) to your local Eclipse\\dropins folder.
31 |
32 | Then you have to restart your Eclipse.
33 |
34 | You should see the AMDP Pretty Printer Icon
35 |
in your Toolbar in the ABAP
37 | Perspective.
38 |
39 |
41 |
42 | And also, in the Menu when you open an ABAP Class
43 |
44 |
46 |
47 | If you don’t see it, then please check the Error Log after the start of
48 | Eclipse for the errors (Window =\> Show View =\> Error Log).
49 |
50 | Some people reported that they see no error in the log, but the plugin
51 | is still not loaded. In this case it helped them to install a fresh
52 | eclipse with the SAP ADT.
53 |
54 | ## Installation of the AMDP Pretty Printer Logic in the backend
55 |
56 | The formatting logic of the AMDP Pretty Printer is written in ABAP. So
57 | it is required to install it in your SAP Development System. It is no
58 | transport and no additional SICF configuration required. It will be
59 | installed to the temporary package $APP_PRETTY_PRINTER with some sub
60 | packages. The Eclipse Plugin uses the existing SAP ADT ICF Service for
61 | the communication with the backend. The Eclipse Plugin sends a post
62 | request to the URL /sap/bc/adt/zapp/zapp_pretty_printer of your SAP
63 | Development System. See also BADI_ADT_REST_RFC_APPLICATION for more
64 | information.
65 |
66 | The tool abapGit is required for the installation. You can find it with
67 | a good documentation at .
68 |
69 | You should install the AMDP Pretty Printer to the package
70 | $APP_PRETTY_PRINTER.
71 |
72 | Here is a short manual how to install the Standalone version of abapGit
73 | from scratch and how to upload the AMDP Pretty Printer from an offline
74 | repository (ZIP-File). If you have already experience with abapGit then
75 | the online repository is recommended to easily pull the latest updates.
76 |
77 | ### Installation of abapGit (Standalone)
78 |
79 | Start transaction SE38 in your SAP Development System and create the
80 | program ZABAPGIT_STANDALONE (abapGit Standalone)
81 |
82 |
84 |
85 | Save it as Local Object.
86 |
87 |
90 |
91 | Copy the latest source code from
92 |
93 |
94 | and paste it into the program (replace the generated source code). It
95 | takes a while because the program has more than 100.000 lines of code.
96 |
97 | Activate the program (CTRL+F3) and start it with F8.
98 |
99 | It should look like this:
100 |
101 |
103 |
104 | ### Installation of AMDP Pretty Printer with abapGit (offline)
105 |
106 | Add first you must download this git repository as ZIP-File from github.
107 |
108 | Then start abapGit and click on New Offline.
109 |
110 |
112 |
113 | Enter the following values:
114 |
115 | - Repository Name =\> AMDP Pretty Printer
116 |
117 | - Package =\> $APP_PRETTY_PRINTER
118 |
119 | - Folder Logic =\> Full
120 |
121 |
123 |
124 | Click on Create Offline Repo.
125 |
126 | The following screen will appear:
127 |
128 |
130 |
131 | Click on Import zip to upload the ZIP-File.
132 |
133 | The following screen will appear when the upload is done:
134 |
135 |
137 |
138 | Click now on Pull zip and the installation will start.
139 |
140 | You must activate all shown objects at the end and then the installation
141 | is done.
142 |
143 |
145 |
146 | Hint: The report ZAPP_PRETTY_PRINTER_TEST can be used to test the AMDP
147 | Pretty Printer without the rest service and without the Eclipse Plugin.
148 | Just copy your AMDP Method / Class source code into the first long text
149 | field and press the Pretty Print button.
150 |
151 | The right long text field shows the formatted source code. The lower
152 | long text fields can be used to generate Unit Tests. Please be aware
153 | that the long text fields do not show the text in a script where each
154 | character has the same width. So, it could look a little bit ugly, but
155 | it is well formatted. You can copy the result for example to Notepad++
156 | to see the difference.
157 |
158 |
160 |
--------------------------------------------------------------------------------
/abap/src/zapp_settings.prog.abap:
--------------------------------------------------------------------------------
1 | *&---------------------------------------------------------------------*
2 | *& Report ZAPP_SETTINGS
3 | *&---------------------------------------------------------------------*
4 | *&
5 | *&---------------------------------------------------------------------*
6 | REPORT zapp_settings.
7 |
8 | *&---------------------------------------------------------------------*
9 | *& Class lcl_settings
10 | *&---------------------------------------------------------------------*
11 | *&
12 | *&---------------------------------------------------------------------*
13 | CLASS lcl_settings DEFINITION FINAL.
14 |
15 |
16 | PUBLIC SECTION.
17 | METHODS constructor
18 | IMPORTING iv_uname TYPE sy-uname.
19 |
20 | METHODS lock
21 | RAISING zcx_app_exception.
22 |
23 | METHODS unlock.
24 |
25 | METHODS get_settings
26 | RETURNING VALUE(rs_settings) TYPE zapp_settings.
27 |
28 | METHODS handle_exit
29 | IMPORTING is_settings TYPE zapp_settings.
30 |
31 | METHODS save
32 | IMPORTING is_settings TYPE zapp_settings.
33 |
34 | METHODS delete.
35 |
36 | METHODS exists_settings
37 | RETURNING VALUE(rv_result) TYPE abap_bool.
38 |
39 | PRIVATE SECTION.
40 | DATA mv_uname TYPE sy-uname.
41 |
42 | ENDCLASS.
43 |
44 | CLASS lcl_settings IMPLEMENTATION.
45 | METHOD constructor.
46 | mv_uname = iv_uname.
47 | ENDMETHOD.
48 | METHOD lock.
49 |
50 | CALL FUNCTION 'ENQUEUE_EZAPP_SETTINGS'
51 | EXPORTING
52 | * MODE_ZAPP_SETTINGS = 'E'
53 | uname = mv_uname
54 | * X_UNAME = ' '
55 | _scope = '1'
56 | * _WAIT = ' '
57 | * _COLLECT = ' '
58 | EXCEPTIONS
59 | foreign_lock = 1
60 | system_failure = 2
61 | OTHERS = 3.
62 | IF sy-subrc <> 0.
63 | RAISE EXCEPTION TYPE zcx_app_exception
64 | MESSAGE ID sy-msgid
65 | TYPE sy-msgty
66 | NUMBER sy-msgno
67 | WITH
68 | sy-msgv1
69 | sy-msgv2
70 | sy-msgv3
71 | sy-msgv4.
72 | ENDIF.
73 |
74 | ENDMETHOD.
75 |
76 | METHOD unlock.
77 | CALL FUNCTION 'DEQUEUE_EZAPP_SETTINGS'
78 | EXPORTING
79 | * MODE_ZAPP_SETTINGS = 'E'
80 | uname = mv_uname
81 | * X_UNAME = ' '
82 | * _SCOPE = '3'
83 | * _SYNCHRON = ' '
84 | * _COLLECT = ' '
85 | .
86 |
87 |
88 | ENDMETHOD.
89 |
90 | METHOD get_settings.
91 | SELECT SINGLE * FROM zapp_settings INTO rs_settings
92 | WHERE uname = mv_uname.
93 | IF sy-subrc <> 0.
94 | CLEAR rs_settings.
95 | rs_settings-uname = mv_uname.
96 | ENDIF.
97 | ENDMETHOD.
98 |
99 | METHOD handle_exit.
100 | DATA ls_settings_old TYPE zapp_settings.
101 | DATA lv_answer TYPE c.
102 | ls_settings_old = get_settings( ).
103 | IF ls_settings_old <> is_settings.
104 | CALL FUNCTION 'POPUP_TO_CONFIRM'
105 | EXPORTING
106 | titlebar = TEXT-110
107 | * DIAGNOSE_OBJECT = ' '
108 | text_question = TEXT-100
109 | * TEXT_BUTTON_1 = 'Ja'(001)
110 | * ICON_BUTTON_1 = ' '
111 | * TEXT_BUTTON_2 = 'Nein'(002)
112 | * ICON_BUTTON_2 = ' '
113 | * DEFAULT_BUTTON = '1'
114 | * DISPLAY_CANCEL_BUTTON = 'X'
115 | * USERDEFINED_F1_HELP = ' '
116 | * START_COLUMN = 25
117 | * START_ROW = 6
118 | * POPUP_TYPE =
119 | * IV_QUICKINFO_BUTTON_1 = ' '
120 | * IV_QUICKINFO_BUTTON_2 = ' '
121 | IMPORTING
122 | answer = lv_answer
123 | * TABLES
124 | * PARAMETER =
125 | EXCEPTIONS
126 | text_not_found = 1
127 | OTHERS = 2.
128 | IF sy-subrc <> 0.
129 | MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
130 | WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
131 | ENDIF.
132 |
133 | CASE lv_answer.
134 | WHEN '1'.
135 | save( is_settings ).
136 | LEAVE TO SCREEN 0.
137 | WHEN '2'.
138 | LEAVE TO SCREEN 0.
139 | WHEN OTHERS.
140 | RETURN.
141 | ENDCASE.
142 | ELSE.
143 | LEAVE TO SCREEN 0.
144 | ENDIF.
145 | ENDMETHOD.
146 |
147 | METHOD save.
148 | DATA lv_subrc TYPE sy-subrc.
149 | IF exists_settings( ).
150 | UPDATE zapp_settings FROM is_settings.
151 | ELSE.
152 | INSERT zapp_settings FROM is_settings.
153 | ENDIF.
154 | lv_subrc = sy-subrc.
155 | COMMIT WORK AND WAIT.
156 | IF lv_subrc = 0.
157 | MESSAGE s016(zapp_mc_pretty_print).
158 | ELSE.
159 | MESSAGE e017(zapp_mc_pretty_print).
160 | ENDIF.
161 |
162 | LEAVE TO SCREEN 0.
163 | ENDMETHOD.
164 |
165 | METHOD delete.
166 | DELETE FROM zapp_settings WHERE uname = mv_uname.
167 | COMMIT WORK AND WAIT.
168 | MESSAGE s018(zapp_mc_pretty_print).
169 | LEAVE TO SCREEN 0.
170 | ENDMETHOD.
171 |
172 | METHOD exists_settings.
173 | ##NEEDED DATA lv_uname TYPE sy-uname.
174 | SELECT SINGLE uname INTO lv_uname
175 | FROM zapp_settings
176 | WHERE uname = mv_uname.
177 | IF sy-subrc = 0.
178 | rv_result = abap_true.
179 | ENDIF.
180 | ENDMETHOD.
181 |
182 | ENDCLASS.
183 |
184 | TABLES zapp_settings.
185 |
186 | PARAMETERS p_set_g RADIOBUTTON GROUP g1 DEFAULT 'X'.
187 | PARAMETERS p_set_u RADIOBUTTON GROUP g1. "#EC NEEDED
188 | DATA gr_settings TYPE REF TO lcl_settings. "#EC NEEDED
189 | DATA gr_ex TYPE REF TO zcx_app_exception. "#EC NEEDED
190 | DATA gv_okcode TYPE sy-ucomm. "#EC NEEDED
191 |
192 | AT SELECTION-SCREEN.
193 |
194 | IF sy-ucomm = 'ONLI'.
195 | IF p_set_g = abap_true.
196 | CREATE OBJECT gr_settings
197 | EXPORTING
198 | iv_uname = '*'.
199 | ELSE.
200 | CREATE OBJECT gr_settings
201 | EXPORTING
202 | iv_uname = sy-uname.
203 | ENDIF.
204 | TRY.
205 | gr_settings->lock( ).
206 | CATCH zcx_app_exception INTO gr_ex. " Pretty Printer Exception
207 | MESSAGE gr_ex->get_text( ) TYPE 'E'.
208 | ENDTRY.
209 | ENDIF.
210 |
211 |
212 | START-OF-SELECTION.
213 |
214 | zapp_settings = gr_settings->get_settings( ).
215 |
216 | CALL SCREEN 0100.
217 | gr_settings->unlock( ).
218 |
219 | INCLUDE zapp_settings_canceli01.
220 |
221 | INCLUDE zapp_settings_status_0100o01.
222 |
223 | INCLUDE zapp_settings_user_command_i01.
224 |
--------------------------------------------------------------------------------