Skip to content

Instantly share code, notes, and snippets.

@alezhu
Last active April 12, 2024 12:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save alezhu/612a7c5ee46989e9779741211de17a68 to your computer and use it in GitHub Desktop.
Save alezhu/612a7c5ee46989e9779741211de17a68 to your computer and use it in GitHub Desktop.
Enhancement for generate wide maintenance view screen
"1
"Add Implicit Enhancement at the end of form CREATE_DYNP_HEADER (INCLUDE MSVIMF21)
"Put this code inside created enhancement:
PERFORM post_create_dynp_header in PROGRAM ZBC_MAINTANCE_VIEW_EXITS if FOUND
USING p_dyname p_gencb p_detail dropdown_length_tcrl max_dynp_fieldlen CHANGING p_header.
"2
"Add Implicit Enhancement at the begin of form CREATE_DYNP_FIELDLIST (INCLUDE MSVIMF21)
"Put this code inside created enhancement:
PERFORM pre_create_dynp_fieldlist IN PROGRAM ZBC_MAINTANCE_VIEW_EXITS IF FOUND
USING p_make_detail p_skip_fields p_flds_to_cont CHANGING p_dfies_tab.
"3
"Add Implicit Enhancement at the end of form CREATE_DYNP_CONT (INCLUDE MSVIMF21)
"Put this code inside created enhancement:
IF p_mode = '11' and <w_cont> is ASSIGNED.
PERFORM post_create_dynp_cont in PROGRAM ZBC_MAINTANCE_VIEW_EXITS if FOUND
CHANGING <w_cont>.
ENDIF.
*&---------------------------------------------------------------------*
*& Subroutinenpool ZBC_MAINTANCE_VIEW_EXITS
*&
*&---------------------------------------------------------------------*
PROGRAM zbc_maintance_view_exits.
TYPES:
BEGIN OF ts_dynpid,
prog LIKE d020s-prog,
dnum LIKE d020s-dnum,
END OF ts_dynpid.
TYPES tt_dfies TYPE STANDARD TABLE OF dfies WITH KEY tabname fieldname langu position.
TYPES tt_flds_to_cont_type TYPE STANDARD TABLE OF rpy_dyfatc WITH DEFAULT KEY.
DATA gps_header TYPE REF TO rpy_dyhead.
DATA gpt_fields TYPE REF TO tt_flds_to_cont_type.
FORM post_create_dynp_header
USING is_dyname TYPE ts_dynpid
is_gencb TYPE vimgencb
iv_detail TYPE xfeld
iv_dropdown_length_tcrl TYPE scrndeflg
iv_max_dynp_fieldlen TYPE scrnvislg
CHANGING cs_header TYPE rpy_dyhead.
CLEAR gps_header.
CLEAR gpt_fields.
CHECK iv_detail IS INITIAL.
"Add some check of enabling this functionality if you need. Something like it:
"SELECT SINGLE @abap_true FROM tvarvc WHERE name = 'ZDISABLE_WIDE_VIEW_MAINT_GEN' INTO @DATA(lv_disable).
"CHECK lv_disable IS INITIAL.
gps_header = REF #( cs_header ).
ENDFORM.
FORM pre_create_dynp_fieldlist USING iv_make_detail TYPE xfeld
iv_skip_fields TYPE xfeld
it_flds_to_cont TYPE tt_flds_to_cont_type
CHANGING ct_dfies TYPE tt_dfies.
DATA lt_dfies_txt TYPE tt_dfies.
IF iv_make_detail = abap_true OR ct_dfies[] IS INITIAL OR gps_header IS NOT BOUND.
RETURN.
ENDIF.
gpt_fields = REF #( it_flds_to_cont ).
*"Move text table fields to end
DATA(lv_tabname) = ct_dfies[ 1 ]-tabname.
LOOP AT ct_dfies REFERENCE INTO DATA(lps_dfies)
WHERE tabname <> lv_tabname.
APPEND lps_dfies->* TO lt_dfies_txt.
ENDLOOP.
IF sy-subrc = 0.
DELETE ct_dfies WHERE tabname <> lv_tabname.
APPEND LINES OF lt_dfies_txt TO ct_dfies.
ENDIF.
ENDFORM.
FORM post_create_dynp_cont CHANGING cs_cont TYPE rpy_dycatt.
DATA lps_field TYPE REF TO rpy_dyfatc.
CHECK gps_header IS BOUND AND gpt_fields IS BOUND.
DATA(lv_size) = 0.
LOOP AT gpt_fields->* REFERENCE INTO lps_field
WHERE tc_heading IS INITIAL AND tc_title IS INITIAL.
ADD lps_field->vislength TO lv_size.
ENDLOOP.
lv_size = nmin( val1 = lv_size val2 = 255 ).
IF lv_size > gps_header->columns.
gps_header->columns = lv_size.
ENDIF.
IF lv_size > cs_cont-length.
cs_cont-length = lv_size.
ENDIF.
CLEAR gps_header.
CLEAR gpt_fields.
ENDFORM.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment