cancel
Showing results for 
Search instead for 
Did you mean: 

Trigger Smartform from account

Former Member
0 Kudos

Hello Gurus,

I am trying to generate a PDF smartform from the corporate account screen.  I am following an example from a consultant who accomplished this in our activities using actions.  I have already created the event and added the button in viewset BP_HEAD/ACCOUNTVIEWSET.  The attached code attempts to retrieve the smartform from the action for the customer from the webui.  I'm getting an error when trying to set LR_ACTIONCONTEXT.

I'm aware that BTHeaderAction is not defined but I'm not sure how to retrieve the available actions as the consultant did.  Do I need to create a relation?  Is it possible to generate the smartform from an action on the account?

Any tips are greatly appreciated.

DATA: lr_cn               TYPE REF TO cl_bsp_wd_context_node,
        lr_header           TYPE REF TO cl_crm_bol_entity,
        lr_actioncontext    TYPE REF TO cl_crm_bol_entity,
        lv_header_guid      TYPE string,
        lv_url              TYPE string.

  DATA:
    ls_action               TYPE crmt_print_actions,
    lr_action_context_coll  TYPE REF TO if_bol_entity_col,
    lr_action               TYPE REF TO if_bol_bo_property_access,
    lr_action_entity        TYPE REF TO cl_crm_bol_entity,
    lv_headerh_guid          TYPE  crmt_object_guid,
    lt_col_def              TYPE tableviewcontroltab,
    ls_col_def              TYPE LINE OF tableviewcontroltab,
    lv_title                TYPE string,
    lr_result               TYPE REF TO if_bol_entity_col"#EC NEEDED
    lt_method_param         TYPE crmt_name_value_pair_tab,
    ls_method_param         TYPE LINE OF crmt_name_value_pair_tab,
    lv_size                 TYPE sytabix,
    lr_msg_service          TYPE REF TO cl_bsp_wd_message_service,
    lv_message              TYPE string,
    lr_action_ppf           TYPE REF TO if_action_ppf,
    lv_status_ppf           TYPE ppfdtstat,
    lr_trigger_ppf          TYPE REF TO cl_trigger_ppf,
    lv_check_status         TYPE crmt_boolean.

  DATA:         ls_params   TYPE crmt_gsurlpopup_params,
        lr_cn1       TYPE REF TO cl_bsp_wd_context_node,
        lr_popup    TYPE REF TO if_bsp_wd_popup,
        lr_obj      TYPE REF TO if_bol_bo_property_access.

***

  lr_cn = me->get_context_node( 'HEADER' ). "gc_cn_btadminh ).
  CHECK lr_cn IS BOUND.

  lr_header ?= lr_cn->collection_wrapper->get_current( ).
  CHECK lr_header IS BOUND.

  lv_header_guid = lr_header->get_property_as_string( iv_attr_name = 'BP_GUID' ).
  lr_actioncontext = lr_header->get_related_entity( iv_relation_name = 'BTHeaderAction' )."#EC NOTEXT

  lv_headerh_guid = lv_header_guid.

  ls_method_param-value = abap_true.
  ls_method_param-name = 'FOR_PREVIEW'.                     "#EC NOTEXT
  INSERT ls_method_param INTO TABLE lt_method_param.
  CLEAR ls_method_param.
  ls_method_param-name = 'OBJECT_NAME'.                 "#EC NOTEXT
  ls_method_param-value = lr_header->get_name( ).
  INSERT ls_method_param INTO TABLE lt_method_param.
  ls_method_param-name = 'OBJECT_ID'.                   "#EC NOTEXT
  ls_method_param-value = lr_header->get_key( ).
  INSERT ls_method_param INTO TABLE lt_method_param.


  CALL FUNCTION 'CRM_STATUS_INIT_EC'
    EXPORTING
      iv_object_guid = lv_headerh_guid
      iv_header_guid = lv_headerh_guid
    EXCEPTIONS
      OTHERS         = 0.
  TRY.
      CALL METHOD lr_actioncontext->execute
        EXPORTING
          iv_method_name = 'ACIDetermine'                  "#EC NOTEXT
          it_param       = lt_method_param
        RECEIVING
          rv_result      = lr_result.

    CATCH: cx_crm_genil_model_error cx_crm_bol_meth_exec_failed.
      RETURN.
  ENDTRY.

      lr_action_context_coll = lr_actioncontext->get_related_entities(
      iv_relation_name = 'ACIPreviewActionRel' ). "#EC NOTEXT

          lr_action = lr_action_context_coll->get_first( ).
      WHILE lr_action IS BOUND.
        lr_action->get_property_as_value(
              EXPORTING
                iv_attr_name = 'TTYPE'                 "#EC NOTEXT
              IMPORTING
                ev_result   = ls_action-ttypedescr ).
        IF ls_action-TTYPEDESCR EQ 'Y_PREVIEW_CALL_REPORT'."ZCL_CONSTANTS=>GC_CALL_REPORT_ACTION.
        lr_action->get_property_as_value(
              EXPORTING
                iv_attr_name = 'GUID'                       "#EC NOTEXT
              IMPORTING
                ev_result = ls_action-guid ).


        cl_crm_pdf_print=>get_url_by_action_id(
          EXPORTING
            iv_guid = ls_action-guid
          IMPORTING
            ev_url  = lv_url ).

        ls_action-action ?= lr_action.
EXIT.
ENDIF.

        lr_action = lr_action_context_coll->get_next( ).
ENDWHILE.

  IF lv_url IS NOT INITIAL.
  lv_title = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT_GEN/PRINT_PREVIEW_POPUP_TITLE' )."#EC NOTEXT
  lr_popup me->comp_controller->window_manager->create_popupiv_interface_view_name = 'GSURLPOPUP/MainWindow'
                                                                  iv_usage_name          = 'CUGSURLPopup'
                                                                  iv_title               = lv_title ).
  lr_cn1 = lr_popup->get_context_node( 'PARAMS' ).           "#EC NOTEXT
  lr_obj = lr_cn1->collection_wrapper->get_current( ).

  ls_params-url = lv_url.
  ls_params-height = '700'.                                 "#EC NOTEXT
  lr_obj->set_properties( ls_params ).
  lr_popup->set_display_mode( if_bsp_wd_popup=>c_display_mode_plain ).
  lr_popup->set_window_width( 700 ).
  lr_popup->set_window_height( 700 ).
  lr_popup->open( ).
  ENDIF.

Accepted Solutions (1)

Accepted Solutions (1)

faisal_pc
Active Contributor
0 Kudos

Hi Jeff,

I believe you are getting the error at line  lr_actioncontext = lr_header->get_related_entity( iv_relation_name = 'BTHeaderAction' ).


Right?. The consultant who showed this to you has shown an example of activity which comes under BT. Here you are working with BP and it should be with BP's actions.


Thanks,

Faisal

Former Member
0 Kudos

That's exactly right Faisal.  What would I replace that line with then?  I have looked through the access objects but I don't see any related entities for actions.

pallavi_an
Participant
0 Kudos

Hi Jeff,

I think you can try as given in below link.

Regards,

Pallavi

Answers (0)