Advertisement
validom

SAP ABAP: GOS attachment list on dynpro custom container

Apr 2nd, 2019
878
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
ABAP 7.97 KB | None | 0 0
  1. *    DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  2. *                   Version 2, December 2004
  3. *
  4. *Everyone is permitted to copy and distribute verbatim or modified
  5. *copies of this license document, and changing it is allowed as long
  6. *as the name is changed.
  7.  
  8. *           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
  9. *  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  10. *
  11. * 0. You just DO WHAT THE FUCK YOU WANT TO.
  12.  
  13. ******************************************************************************************************
  14. * and in the global data (TOP-include...) you need to define a
  15. DATA gr_gos type ref to zcl_cs_insp_gos.
  16.  
  17. * call this form in PBO of your program
  18. * you must place a custom container with name 'GPO1' in dynpro '0100' (or change the code below ...)
  19.  
  20. FORM gos_activate.
  21.  
  22.   DATA: ls_borident TYPE borident.
  23.  
  24.   ls_borident-objtype = 'BUS2102'.
  25.   ls_borident-objkey = '0070000023'.
  26.  
  27.   gr_gos = zcl_cs_insp_gos=>factory( iv_dynnr = '0100'
  28.                                      iv_repid = sy-repid
  29.                                      iv_cname = 'GOS1'
  30.                                      is_borident = ls_borident ).
  31.  
  32. ENDFORM.
  33.  
  34.  
  35. ******************************************************************************************************
  36. * now have two classes. This example uses two global ones:
  37. ** zcl_cs_insp_gos, a singleton factory helper
  38. ** zcl_cs_insp_gos_att, the redefinition of cl_gos_attachments
  39. ******************************************************************************************************
  40.  
  41. CLASS zcl_cs_insp_gos DEFINITION
  42.   PUBLIC
  43.   FINAL
  44.   CREATE PRIVATE .
  45.  
  46.   PUBLIC SECTION.
  47.   TYPES: gty_v_cname type char20. "dynpro container name
  48.     CLASS-METHODS factory
  49.       IMPORTING
  50.                 !is_borident  TYPE borident
  51.                 !iv_repid     TYPE syrepid DEFAULT sy-repid
  52.                 !iv_dynnr     TYPE sydynnr
  53.                 !iv_cname     TYPE gty_v_cname "dynpro container name
  54.       RETURNING VALUE(ro_gos) TYPE REF TO zcl_cs_insp_gos.
  55.  
  56.     DATA ms_borident TYPE borident .
  57.     DATA mv_repid TYPE syrepid .
  58.     DATA mv_dynnr TYPE sydynnr .
  59.     DATA mv_cname TYPE gty_v_cname.
  60.   PROTECTED SECTION.
  61.   PRIVATE SECTION.
  62.     METHODS constructor
  63.       IMPORTING
  64.         !is_borident TYPE borident
  65.         !iv_repid    TYPE syrepid DEFAULT sy-repid
  66.         !iv_dynnr    TYPE sydynnr
  67.         !iv_cname    TYPE gty_v_cname. "dynpro container name
  68.  
  69.     CLASS-DATA go_me TYPE REF TO zcl_cs_insp_gos .
  70.     DATA mo_container TYPE REF TO cl_gui_custom_container.
  71.     DATA mo_bitem TYPE REF TO cl_browser_item.
  72.     DATA mo_gos_att type ref to zcl_cs_insp_gos_att.
  73. ENDCLASS.
  74.  
  75.  
  76.  
  77. CLASS ZCL_CS_INSP_GOS IMPLEMENTATION.
  78.  
  79.  
  80. * <SIGNATURE>---------------------------------------------------------------------------------------+
  81. * | Instance Private Method ZCL_CS_INSP_GOS->CONSTRUCTOR
  82. * +-------------------------------------------------------------------------------------------------+
  83. * | [--->] IS_BORIDENT                    TYPE        BORIDENT
  84. * | [--->] IV_REPID                       TYPE        SYREPID (default =SY-REPID)
  85. * | [--->] IV_DYNNR                       TYPE        SYDYNNR
  86. * | [--->] IV_CNAME                       TYPE        GTY_V_CNAME
  87. * +--------------------------------------------------------------------------------------</SIGNATURE>
  88.   METHOD constructor.
  89.     ASSERT: iv_dynnr IS NOT INITIAL,
  90.             iv_repid IS NOT INITIAL,
  91.             is_borident IS NOT INITIAL.
  92.  
  93.     me->mv_dynnr = iv_dynnr.
  94.     me->mv_repid = iv_repid.
  95.     me->ms_borident = is_borident.
  96.     me->mv_cname = iv_cname.
  97.  
  98. CREATE OBJECT me->mo_container
  99.   EXPORTING
  100.     container_name              = me->mv_cname
  101.     style                       = cl_gui_control=>ws_border
  102.     repid                       = me->mv_repid
  103.     dynnr                       = me->mv_dynnr
  104.   EXCEPTIONS
  105.     cntl_error                  = 1
  106.     cntl_system_error           = 2
  107.     create_error                = 3
  108.     lifetime_error              = 4
  109.     lifetime_dynpro_dynpro_link = 5
  110.     OTHERS                      = 6
  111.     .
  112. IF sy-subrc <> 0.
  113.   BREAK-POINT.
  114. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  115. *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  116. ENDIF.
  117.  
  118.   me->mo_bitem = new cl_sobl_bor_item( is_bor = me->ms_borident ).
  119.  
  120.   me->mo_gos_att = new #( io_object       = me->mo_bitem
  121.                           io_container    = me->mo_container
  122.                           ip_mode         = 'D' )."display only
  123.  
  124.  me->mo_gos_att->display( ).
  125.   ENDMETHOD.
  126.  
  127.  
  128. * <SIGNATURE>---------------------------------------------------------------------------------------+
  129. * | Static Public Method ZCL_CS_INSP_GOS=>FACTORY
  130. * +-------------------------------------------------------------------------------------------------+
  131. * | [--->] IS_BORIDENT                    TYPE        BORIDENT
  132. * | [--->] IV_REPID                       TYPE        SYREPID (default =SY-REPID)
  133. * | [--->] IV_DYNNR                       TYPE        SYDYNNR
  134. * | [--->] IV_CNAME                       TYPE        GTY_V_CNAME
  135. * | [<-()] RO_GOS                         TYPE REF TO ZCL_CS_INSP_GOS
  136. * +--------------------------------------------------------------------------------------</SIGNATURE>
  137.   METHOD factory.
  138. * singleton factory with property checks
  139.     IF go_me IS BOUND.
  140.       IF go_me->ms_borident NE is_borident
  141.         OR go_me->mv_dynnr NE iv_dynnr
  142.         OR go_me->mv_repid NE iv_repid
  143.         OR go_me->mv_cname NE iv_cname.
  144.         CLEAR: go_me.
  145.       ENDIF.
  146.     ENDIF.
  147.  
  148.     IF go_me IS NOT BOUND.
  149.       go_me = NEW #( iv_dynnr     = iv_dynnr
  150.                      iv_repid     = iv_repid
  151.                      iv_cname     = iv_cname
  152.                      is_borident  = is_borident ).
  153.     ENDIF.
  154.  
  155.     ro_gos = go_me.
  156.  
  157.   ENDMETHOD.
  158. ENDCLASS.
  159.  
  160.  
  161. ******************************************************************************************************
  162. CLASS zcl_cs_insp_gos_att DEFINITION
  163.   PUBLIC
  164.   INHERITING FROM cl_gos_attachments
  165.   CREATE PUBLIC .
  166.  
  167.   PUBLIC SECTION.
  168.  
  169.     METHODS get_gos_menu
  170.          REDEFINITION .
  171.   PROTECTED SECTION.
  172.  
  173.     METHODS set_toolbar
  174.          REDEFINITION .
  175.   PRIVATE SECTION.
  176.  
  177. ENDCLASS.
  178.  
  179. CLASS ZCL_CS_INSP_GOS_ATT IMPLEMENTATION.
  180.  
  181.  
  182. * <SIGNATURE>---------------------------------------------------------------------------------------+
  183. * | Instance Public Method ZCL_CS_INSP_GOS_ATT->GET_GOS_MENU
  184. * +-------------------------------------------------------------------------------------------------+
  185. * | [<-()] RO_RESULT                      TYPE REF TO CL_CTMENU
  186. * +--------------------------------------------------------------------------------------</SIGNATURE>
  187.   METHOD get_gos_menu.
  188. * redefined: no menu!
  189. *SUPER->GET_GOS_MENU( ).
  190.   ENDMETHOD.
  191.  
  192.  
  193. * <SIGNATURE>---------------------------------------------------------------------------------------+
  194. * | Instance Protected Method ZCL_CS_INSP_GOS_ATT->SET_TOOLBAR
  195. * +-------------------------------------------------------------------------------------------------+
  196. * | [--->] IO_SETTINGS                    TYPE REF TO CL_LIST_SETTINGS
  197. * +--------------------------------------------------------------------------------------</SIGNATURE>
  198.   METHOD set_toolbar.
  199. * redifined: just no toolbar !
  200.  
  201. *SUPER->SET_TOOLBAR(
  202. *    IO_SETTINGS = IO_SETTINGS
  203. *       ).
  204.  
  205.     FIELD-SYMBOLS: <lv_func> TYPE ui_func,
  206.                    <lc>      TYPE any.
  207.  
  208.     REFRESH:
  209.       io_settings->gt_bmenu,
  210.       io_settings->gt_toolbar_custom,
  211.       io_settings->gt_toolbar_exclude.
  212.  
  213.     DATA: lr_obj TYPE REF TO cl_abap_objectdescr.
  214.  
  215. * disable ALL possible toolbar functions
  216.     lr_obj ?= cl_abap_objectdescr=>describe_by_name( 'CL_GUI_ALV_GRID' ).
  217.     LOOP AT lr_obj->attributes[] ASSIGNING FIELD-SYMBOL(<ls_attr>) WHERE is_constant = abap_true.
  218.       CHECK <ls_attr>-name(6) EQ 'MC_FC_'.
  219.       APPEND INITIAL LINE TO io_settings->gt_toolbar_exclude ASSIGNING <lv_func>.
  220.       ASSIGN ('CL_GUI_ALV_GRID')=>(<ls_attr>-name) TO <lc>.
  221.       <lv_func> = <lc>.
  222.     ENDLOOP.
  223.  
  224.   ENDMETHOD.
  225. ENDCLASS.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement