Quantcast
Channel: SCN: Message List
Viewing all articles
Browse latest Browse all 3585

Re: Unable to add business partners to orders with CRM_ORDER_MAINTAIN

$
0
0

Hi Patrick,

 

Thank you a lot for the answer! I solved this issue by myselt though. I haven't logged in to SCN for a while so I forgot about this topic I submitted. Sorry for not being able to reward you earlier.

 

I solved the issue by debugging the standard codes. First I put a break point in CRM_ORDER_MAINTAIN and with transaction code CRMD_ORDER, I created a business transaction with partners and debugged to observe how the standard fills the tables of CRM_ORDER_MAINTAIN. I followed the same and it worked!

 

Checking your link, I'm bound to admit I don't like the code below:

 

if ls_partner-partner_no(4) ne '0000'.

  CONCATENATE '0000' ls_partner-partner_no into ls_partner-partner_no.

endif.

 

Except that, everything looks fine.

 

Below you can find my form - the perform that I use to add partners to existing incident

 

Have a good day!

 

 

*&------------------------------------------------*

*&      Form  ADD_PARTNERS

*&------------------------------------------------*

*   Add found partners to the orders - ZFLN0002

*-------------------------------------------------*

*      -->P_LT_PARTNERS  text

*      -->P_LT_ORDERADM_H  text

*      -->P_LT_ORDERADM_I  text

*      -->P_LT_RELATIONSHIPS  text

*      -->M_APP_LOG_HANDLE  text

*      <--P_LT_EXCEPTIONS  text

*      <--P_EV_SUBRC  text

*-------------------------------------------------*

FORM add_partners  USING    p_lt_partners

                            TYPE crmt_partner_external_wrkt

                            p_lt_orderadm_h TYPE crmt_orderadm_h_wrkt

                            p_lt_orderadm_i TYPE crmt_orderadm_i_wrkt

                            p_lt_relationships

                            TYPE bapibus1006_relationstab

                            m_app_log_handle TYPE balloghndl

                   CHANGING p_lt_exceptions

                            TYPE crmt_exception_t

                            p_ev_subrc TYPE sysubrc.

 

  DATA: ls_orderadm_h      TYPE crmt_orderadm_h_wrk,

        ls_orderadm_h_com  TYPE crmt_orderadm_h_com,

        ls_orderadm_i      TYPE crmt_orderadm_i_wrk,

        ls_orderadm_i_com  TYPE crmt_orderadm_i_com,

        lt_orderadm_h_com  TYPE crmt_orderadm_h_comt,

        lt_orderadm_i_com  TYPE crmt_orderadm_i_comt,

        lt_partner_com     TYPE crmt_partner_comt,

        ls_partner_com     TYPE crmt_partner_com,

        ls_relations       TYPE bapibus1006_relations,

        lt_input_fields    TYPE crmt_input_field_tab,

        ls_input_fields    TYPE crmt_input_field,

        lv_partner_no      TYPE bu_partner,

        lv_partner_com_no  TYPE crmt_partner_no,

        ls_field_names     TYPE crmt_input_field_names,

        lt_field_names     TYPE crmt_input_field_names_tab,

        ls_return          TYPE bapiret2,

        ls_partners        TYPE crmt_partner_external_wrk,

        lv_tabix           TYPE numc4.

 

*-----------------------------------------------------*

* Macro for input fields

*-----------------------------------------------------*

 

  DEFINE add_fieldname.

 

    clear: ls_field_names.

    ls_field_names-fieldname = &1.

    insert ls_field_names into table lt_field_names.

 

  END-OF-DEFINITION.

 

*-----------------------------------------------------*

* Macro for adding partner

*-----------------------------------------------------*

 

  DEFINE add_partner.

 

    clear ls_partner_com.

    ls_partner_com-ref_guid           = ls_orderadm_h-guid.

    ls_partner_com-ref_kind           = 'A'.

    ls_partner_com-ref_partner_handle = &1.

    ls_partner_com-kind_of_entry      = 'C'.

    ls_partner_com-partner_fct        = 'ZLFN0002'.

    ls_partner_com-partner_no         = &2.

    ls_partner_com-display_type       = 'BP'.

    ls_partner_com-no_type            = 'BP'.

    ls_partner_com-mainpartner        = &3.

    insert ls_partner_com into table lt_partner_com.

 

*   INPUT_FIELDS -> for partners

 

    clear: ls_input_fields, lt_field_names.

 

    ls_input_fields-ref_guid    = ls_orderadm_h-guid.

    ls_input_fields-ref_kind    = 'A'.

    ls_input_fields-objectname  = 'PARTNER'.

    ls_input_fields-logical_key &1.

 

    add_fieldname: 'KIND_OF_ENTRY'.

    add_fieldname: 'PARTNER_FCT'.

    add_fieldname: 'PARTNER_NO'.

    add_fieldname: 'DISPLAY_TYPE'.

    add_fieldname: 'NO_TYPE'.

    add_fieldname: 'MAINPARTNER'.

 

    ls_input_fields-field_names = lt_field_names.

 

    insert ls_input_fields into table lt_input_fields.

 

  END-OF-DEFINITION.

 

  CLEAR: lt_orderadm_h_com, lt_partner_com, lt_orderadm_i_com,

         lt_input_fields, ls_orderadm_h, lv_partner_no.

 

  READ TABLE p_lt_partners INTO ls_partners INDEX 1.

 

  IF sy-subrc = 0.

 

    lv_partner_no = ls_partners-partner_no.

 

  ENDIF.

 

  CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

    EXPORTING

      input  = lv_partner_no

    IMPORTING

      output = lv_partner_no.

 

  READ TABLE p_lt_orderadm_h INTO ls_orderadm_h INDEX 1.

 

*----------------------------------------------------*

*   Adding partners

*----------------------------------------------------*

 

  LOOP AT p_lt_relationships INTO ls_relations.

 

    lv_tabix = sy-tabix.

 

    IF lv_partner_no EQ ls_relations-partner1.

 

      lv_partner_com_no  = ls_relations-partner2.

 

      add_partner: lv_tabix lv_partner_com_no space.

 

    ELSE.

 

      lv_partner_com_no  = ls_relations-partner1.

 

      add_partner: lv_tabix lv_partner_com_no space.

 

    ENDIF.

 

    CLEAR: ls_relations, lv_partner_com_no, lv_tabix.

 

  ENDLOOP.

 

*--------------------------------------------------*

*   Calling CRM_ORDER_MAINTAIN

*--------------------------------------------------*

 

  CALL FUNCTION 'CRM_ORDER_MAINTAIN'

    EXPORTING

      it_partner        = lt_partner_com

    IMPORTING

      et_exception      = p_lt_exceptions

    CHANGING

*     ct_orderadm_h     = lt_orderadm_h_com

*     ct_orderadm_i     = lt_orderadm_i_com

      ct_input_fields   = lt_input_fields

    EXCEPTIONS

      error_occurred    = 1

      document_locked   = 2

      no_change_allowed = 3

      no_authority      = 4

      OTHERS            = 5.

 

  p_ev_subrc = sy-subrc.

 

  IF sy-subrc <> 0.

 

    CLEAR ls_return.

 

    ls_return-type       = 'E'.

    ls_return-id         = 'ZSOL'.

    ls_return-number     = '009'.

    ls_return-message_v1 = ls_orderadm_h-object_id.

 

*   Filling application log

 

    PERFORM add_to_log USING m_app_log_handle

                             ls_return.

 

  ENDIF.

 

ENDFORM.                    " ADD_PARTNERS


Viewing all articles
Browse latest Browse all 3585

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>