Skip to Content

Read the objects in the CIC0 clipboard

When you click on an action button in CIC0 you will execute some front-office process. You will get the reference to the current BOR object but sometimes you need to get additional objects from the clipboard. Here is a small piece of code that retrieves all the BOR objects from the clipboard. This can be a method in a class, or a function.

FUNCTION zcs_cic0_get_clipboard.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  EXPORTING
*"     VALUE(E_CONTAINER) TYPE  SWLOBJECTS_T
*"----------------------------------------------------------------------
* Code inspired by standard function CCM_HAB_EXECUTE
  DATA: lt_subscrn TYPE TABLE OF ewcomobj INITIAL SIZE 6,
        ls_subscrn TYPE ewcomobj,
        lt_xtsc    TYPE cic0_objif,
        lt_xtainer TYPE ewcnt_xtain,
        lt_mkl     TYPE cic0_objif,
        lt_marked  TYPE ewcnt_element_list.
  DATA: ls_cont TYPE ewcnt_cont,
        ls_def  TYPE ewcnt_def.
  DATA: ls_object TYPE swc_object,
        ls_swlobj TYPE swlobjects.
* get neccessary interfaces of used Objects
* this direct call to the workbench is unflexible
* there should be a mechanism to 'call my caller'
  CALL FUNCTION 'CIC_GET_WORKBENCH_COMPONENTS'
    EXPORTING
      x_handle  = 1
    TABLES
      y_objects = lt_subscrn.
* look for xtainer source (clipboard) associated to action
* In 4.6A there is only one clipboard component possible
  LOOP AT lt_subscrn INTO ls_subscrn.
    ewcom_get_interface ls_subscrn 'XTSOURCE' lt_xtsc.
    IF sy-subrc = 0.
      EXIT.
    ENDIF.
  ENDLOOP.
* get clipboard objects
  ewcom_call_xtsource_get lt_xtsc lt_xtainer.
  IF sy-subrc = 0.
*   get marklist
    ewcom_get_interface lt_xtsc 'MARKLIST' lt_mkl.
    ewcom_call_marklist_get lt_mkl lt_marked.
  ENDIF.
* convert to BOR objects
  LOOP AT lt_xtainer-def INTO ls_def
                        WHERE reftype = 'O'.
    swc_get_element lt_xtainer-cont ls_def-element ls_object.
    IF sy-subrc = 0.
      swc_get_object_key  ls_object ls_swlobj-objkey.
      swc_get_object_type ls_object ls_swlobj-objtype.
      ls_swlobj-element = ls_def-element.
      ls_swlobj-tab_index = ls_def-editorder.
      APPEND ls_swlobj TO e_container.
    ENDIF.
  ENDLOOP.
ENDFUNCTION.

Of course you need some reference to the includes that contain the definitions.


TYPE-POOLS: ewcnt.
INCLUDE:
    <cntn01>,
    ccm_macros,
    iebamac1,
    iebacons,
    iewcom_gen,
    iewcom_xtsource,
    iewcom_xtsink,
    iewcom_marklist,
    iewcom_searchpar,
    cic_events_okcodes_activities.

With this function it is now possible to get reference to multiple BOR objects from the CIC0 clipboard.

Be the first to leave a comment
You must be Logged on to comment or reply to a post.