Hallo Meex.
das Ändern und Neuanlegen von Einträgen in Partnersets ist etwas aufwendig.
Mit Aufruf des Initialize wäre ich etwas vorsichtig im Änderungsfall.
Für den Änderungsfall würde ich einen CRM_ORDER_READ aufrufen. Dort das Feld im entsprechenden Partnerset ändern und dann den CRM_ORDER_MAINTAIN aufrufen.
Um das betreffende Feld des Seteintrags ändern zu können, mußt Du die INPUT_FIELDS-Struktur befüllen. Diese legt fest, welche Felder auf die Datenbank geschrieben werden.
Als Hilfe kannst Du Dir diesen Codingausschnitt mal anschauen. Dabei werden neue Einträge im Partnerset angelegt:
- Code: [Select all] [Expand/Collapse] [Download] (Untitled.txt)
<ls_partner_com>-ref_partner_handle = sy-tabix + 20.
CLEAR: ls_input_field
, ls_input_field
-field_names
[].
CALL FUNCTION 'FILL_INPUT_FIELDS_STRUCTURE'
EXPORTING
iv_structure_type_name = 'CRMT_PARTNER_COM'
iv_table_type_name = 'CRMT_PARTNER_COMT'
is_structure = <ls_partner_com>
IMPORTING
es_input_fields = ls_input_field
EXCEPTIONS
no_structure_type_name_given = 1
no_input_data_provided = 2
provide_structure_or_table = 3
non_existing_structure_name = 4
provide_one_input_table_only = 5
no_table_type_name_provided = 6
types_do_not_match = 7
no_ddic_info_available = 8
OTHERS = 9.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
*Fill logical key for partner
lv_logical_key = <ls_partner_com>-ref_partner_handle.
lv_logical_key+4 = <ls_partner_com>-ref_partner_fct.
lv_logical_key+12 = <ls_partner_com>-ref_partner_no.
lv_logical_key+28 = <ls_partner_com>-ref_display_type.
lv_logical_key+30 = <ls_partner_com>-ref_no_type.
<ls_partner_com>-ref_handle
<ls_partner_com>-ref_kind
gc_object_name-partner
lv_logical_key
ls_input_field-field_names
CHANGING
et_inputfield.
...
FORM fill_input_fields
USING iv_handle type crmt_handle
iv_ref_kind TYPE crmt_object_kind
iv_object_name TYPE crmt_object_name
iv_logical_key TYPE crmt_logical_key
it_field_names TYPE crmt_input_field_names_tab
CHANGING
lt_input_fields TYPE crmt_input_field_tab.
DATA: ls_input_fields
TYPE crmt_input_field
.
ls_input_fields-ref_handle = iv_handle.
ls_input_fields-ref_kind = iv_ref_kind.
ls_input_fields-objectname = iv_object_name.
ls_input_fields-logical_key = iv_logical_key.
ls_input_fields-field_names = it_field_names.
INSERT ls_input_fields
INTO TABLE lt_input_fields
.
- GeSHi ©
Hoffe das hilft Dir weiter.