<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: New in ABAP Programming in Application Development and Automation Discussions</title>
    <link>https://community.sap.com/t5/application-development-and-automation-discussions/new-in-abap-programming/m-p/1156424#M118990</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;here is the example code:&lt;/P&gt;&lt;P&gt;look at this,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD if_ex_order_save~prepare .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_guids,&lt;/P&gt;&lt;P&gt;guid TYPE crmt_doc_flow_wrk-objkey_a,&lt;/P&gt;&lt;P&gt;END OF t_guids.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Header GUID's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: lt_header_guid TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;ls_header_guid TYPE crmt_object_guid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read appointments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_appointment_wrk TYPE crmt_appointment_wrkt,&lt;/P&gt;&lt;P&gt;ls_appointment_wrk TYPE crmt_appointment_wrk,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Update appointments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_appointment_com TYPE crmt_appointment_comt,&lt;/P&gt;&lt;P&gt;ls_appointment_com TYPE crmt_appointment_com,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GUID's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_guids TYPE TABLE OF t_guids,&lt;/P&gt;&lt;P&gt;ls_guids TYPE t_guids,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Update fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_input_fields TYPE crmt_input_field,&lt;/P&gt;&lt;P&gt;lt_input_fields TYPE crmt_input_field_tab,&lt;/P&gt;&lt;P&gt;ls_input_field_names TYPE crmt_input_field_names,&lt;/P&gt;&lt;P&gt;lt_input_field_names TYPE crmt_input_field_names_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Order header data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_orderadm_h TYPE crmt_orderadm_h_comt,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Objects to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_objects_to_save TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exceptions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_exception TYPE crmt_exception_t,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Updated documents.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_saved_objects TYPE crmt_return_objects,&lt;/P&gt;&lt;P&gt;lt_objects_not_saved TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local update task.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lv_update_task_local TYPE boolean.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use a global variable to ensure this method is only called once per user save.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF gv_first IS INITIAL.&lt;/P&gt;&lt;P&gt;gv_first = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get the dates for the current activity.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_header_guid = iv_guid.&lt;/P&gt;&lt;P&gt;INSERT ls_header_guid INTO TABLE lt_header_guid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_READ'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_header_guid = lt_header_guid&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_appointment = lt_appointment_wrk&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_found = 1&lt;/P&gt;&lt;P&gt;error_occurred = 2&lt;/P&gt;&lt;P&gt;document_locked = 3&lt;/P&gt;&lt;P&gt;no_change_authority = 4&lt;/P&gt;&lt;P&gt;no_display_authority = 5&lt;/P&gt;&lt;P&gt;no_change_allowed = 6&lt;/P&gt;&lt;P&gt;OTHERS = 7.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DELETE lt_appointment_wrk WHERE appt_type &amp;lt;&amp;gt; 'ZLSC00003'&lt;/P&gt;&lt;P&gt;OR timestamp_from IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check if the conclusion date has been set (appointment type ZLSC00003).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;READ TABLE lt_appointment_wrk&lt;/P&gt;&lt;P&gt;INTO ls_appointment_wrk&lt;/P&gt;&lt;P&gt;WITH KEY appt_type = 'ZLSC00003'.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;.......&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Coding removed here, build up the follow up GUID's from the document flow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lt_header_guid now contains the parent GUID and the follow up activty GUID's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all of the date details for all of the documents.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_READ'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_header_guid = lt_header_guid&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_appointment = lt_appointment_wrk&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_found = 1&lt;/P&gt;&lt;P&gt;error_occurred = 2&lt;/P&gt;&lt;P&gt;document_locked = 3&lt;/P&gt;&lt;P&gt;no_change_authority = 4&lt;/P&gt;&lt;P&gt;no_display_authority = 5&lt;/P&gt;&lt;P&gt;no_change_allowed = 6&lt;/P&gt;&lt;P&gt;OTHERS = 7.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get rid of date entries which aren't conclusion dates or aren't the same conclusion date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DELETE lt_appointment_wrk WHERE appt_type &amp;lt;&amp;gt; 'ZLSC00003'&lt;/P&gt;&lt;P&gt;OR timestamp_from &amp;lt;&amp;gt; ls_appointment_wrk-timestamp_from.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Process each of the documents and, if they don't have a conclusion date with the same value,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set up the internal tables to update the document.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT lt_header_guid INTO ls_header_guid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check if it has a conclusion date with the correct value already.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;READ TABLE lt_appointment_wrk&lt;/P&gt;&lt;P&gt;WITH KEY ref_guid = ls_header_guid&lt;/P&gt;&lt;P&gt;TRANSPORTING NO FIELDS.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;DELETE lt_header_guid.&lt;/P&gt;&lt;P&gt;CONTINUE.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set up the fields to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CLEAR lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'REF_KIND'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'APPT_TYPE'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMESTAMP_FROM'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMEZONE_FROM'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMESTAMP_TO'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMEZONE_TO'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIME_UNIT'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_fields-ref_handle = '0000000000'.&lt;/P&gt;&lt;P&gt;ls_input_fields-ref_guid = ls_header_guid.&lt;/P&gt;&lt;P&gt;ls_input_fields-objectname = 'APPOINTMENT'.&lt;/P&gt;&lt;P&gt;ls_input_fields-field_names = lt_input_field_names.&lt;/P&gt;&lt;P&gt;INSERT ls_input_fields INTO TABLE lt_input_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set up the values for the fields to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_appointment_com-ref_handle = '0000000000'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-ref_guid = ls_header_guid.&lt;/P&gt;&lt;P&gt;ls_appointment_com-ref_kind = 'A'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-appt_type = 'ZLSC00003'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timestamp_from = ls_appointment_wrk-timestamp_from.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timezone_from = ls_appointment_wrk-timezone_from.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timestamp_to = ls_appointment_wrk-timestamp_to.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timezone_to = ls_appointment_wrk-timezone_to.&lt;/P&gt;&lt;P&gt;ls_appointment_com-time_unit = ls_appointment_wrk-time_unit.&lt;/P&gt;&lt;P&gt;INSERT ls_appointment_com INTO TABLE lt_appointment_com.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create an entry in the internal table used to determine which documents will be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;INSERT ls_header_guid INTO TABLE lt_objects_to_save.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Change the values in the documents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF NOT lt_appointment_com IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_MAINTAIN'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_appointment = lt_appointment_com&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_exception = lt_exception&lt;/P&gt;&lt;P&gt;CHANGING&lt;/P&gt;&lt;P&gt;ct_orderadm_h = lt_orderadm_h&lt;/P&gt;&lt;P&gt;ct_input_fields = lt_input_fields&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;error_occurred = 1&lt;/P&gt;&lt;P&gt;document_locked = 2&lt;/P&gt;&lt;P&gt;no_change_allowed = 3&lt;/P&gt;&lt;P&gt;no_authority = 4&lt;/P&gt;&lt;P&gt;OTHERS = 5.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save the changed date values.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF NOT lt_objects_to_save IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_SAVE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_objects_to_save = lt_objects_to_save&lt;/P&gt;&lt;P&gt;iv_update_task_local = lv_update_task_local&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_saved_objects = lt_saved_objects&lt;/P&gt;&lt;P&gt;et_exception = lt_exception&lt;/P&gt;&lt;P&gt;et_objects_not_saved = lt_objects_not_saved&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_saved = 1&lt;/P&gt;&lt;P&gt;OTHERS = 2.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR gv_first.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Fri, 20 Jan 2006 15:31:16 GMT</pubDate>
    <dc:creator>Former Member</dc:creator>
    <dc:date>2006-01-20T15:31:16Z</dc:date>
    <item>
      <title>New in ABAP Programming</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/new-in-abap-programming/m-p/1156423#M118989</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hello everybody,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Actually I'm working in a CRM 4.0 development project and I'm totally new in ABAP Programming (until now three years in functional roles).&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;My question is the following:&lt;/P&gt;&lt;P&gt;I have to develop an action method which delete several partner functions from partner tab in a sales order (for all included items and always the same partner functions, ZO1, ZO2 and ZO3 for example).&lt;/P&gt;&lt;P&gt;Which is the best way to do it? Maybe using CRM_ORDER_MAINTAIN function?&lt;/P&gt;&lt;P&gt;Could anybody help me posting some example code or any guideline?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you very much.&lt;/P&gt;&lt;P&gt;I won't forget reward your answers.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 09 Jan 2006 15:17:44 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/new-in-abap-programming/m-p/1156423#M118989</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-01-09T15:17:44Z</dc:date>
    </item>
    <item>
      <title>Re: New in ABAP Programming</title>
      <link>https://community.sap.com/t5/application-development-and-automation-discussions/new-in-abap-programming/m-p/1156424#M118990</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;here is the example code:&lt;/P&gt;&lt;P&gt;look at this,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;METHOD if_ex_order_save~prepare .&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;TYPES: BEGIN OF t_guids,&lt;/P&gt;&lt;P&gt;guid TYPE crmt_doc_flow_wrk-objkey_a,&lt;/P&gt;&lt;P&gt;END OF t_guids.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Header GUID's.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DATA: lt_header_guid TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;ls_header_guid TYPE crmt_object_guid,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Read appointments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_appointment_wrk TYPE crmt_appointment_wrkt,&lt;/P&gt;&lt;P&gt;ls_appointment_wrk TYPE crmt_appointment_wrk,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Update appointments.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_appointment_com TYPE crmt_appointment_comt,&lt;/P&gt;&lt;P&gt;ls_appointment_com TYPE crmt_appointment_com,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;GUID's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_guids TYPE TABLE OF t_guids,&lt;/P&gt;&lt;P&gt;ls_guids TYPE t_guids,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Update fields.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_input_fields TYPE crmt_input_field,&lt;/P&gt;&lt;P&gt;lt_input_fields TYPE crmt_input_field_tab,&lt;/P&gt;&lt;P&gt;ls_input_field_names TYPE crmt_input_field_names,&lt;/P&gt;&lt;P&gt;lt_input_field_names TYPE crmt_input_field_names_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Order header data.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_orderadm_h TYPE crmt_orderadm_h_comt,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Objects to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_objects_to_save TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Exceptions.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_exception TYPE crmt_exception_t,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Updated documents.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lt_saved_objects TYPE crmt_return_objects,&lt;/P&gt;&lt;P&gt;lt_objects_not_saved TYPE crmt_object_guid_tab,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Local update task.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;lv_update_task_local TYPE boolean.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Use a global variable to ensure this method is only called once per user save.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF gv_first IS INITIAL.&lt;/P&gt;&lt;P&gt;gv_first = 'X'.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get the dates for the current activity.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_header_guid = iv_guid.&lt;/P&gt;&lt;P&gt;INSERT ls_header_guid INTO TABLE lt_header_guid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_READ'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_header_guid = lt_header_guid&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_appointment = lt_appointment_wrk&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_found = 1&lt;/P&gt;&lt;P&gt;error_occurred = 2&lt;/P&gt;&lt;P&gt;document_locked = 3&lt;/P&gt;&lt;P&gt;no_change_authority = 4&lt;/P&gt;&lt;P&gt;no_display_authority = 5&lt;/P&gt;&lt;P&gt;no_change_allowed = 6&lt;/P&gt;&lt;P&gt;OTHERS = 7.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;DELETE lt_appointment_wrk WHERE appt_type &amp;lt;&amp;gt; 'ZLSC00003'&lt;/P&gt;&lt;P&gt;OR timestamp_from IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check if the conclusion date has been set (appointment type ZLSC00003).&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;READ TABLE lt_appointment_wrk&lt;/P&gt;&lt;P&gt;INTO ls_appointment_wrk&lt;/P&gt;&lt;P&gt;WITH KEY appt_type = 'ZLSC00003'.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;.......&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Coding removed here, build up the follow up GUID's from the document flow.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;lt_header_guid now contains the parent GUID and the follow up activty GUID's&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;*........&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get all of the date details for all of the documents.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_READ'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_header_guid = lt_header_guid&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_appointment = lt_appointment_wrk&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_found = 1&lt;/P&gt;&lt;P&gt;error_occurred = 2&lt;/P&gt;&lt;P&gt;document_locked = 3&lt;/P&gt;&lt;P&gt;no_change_authority = 4&lt;/P&gt;&lt;P&gt;no_display_authority = 5&lt;/P&gt;&lt;P&gt;no_change_allowed = 6&lt;/P&gt;&lt;P&gt;OTHERS = 7.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Get rid of date entries which aren't conclusion dates or aren't the same conclusion date.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;DELETE lt_appointment_wrk WHERE appt_type &amp;lt;&amp;gt; 'ZLSC00003'&lt;/P&gt;&lt;P&gt;OR timestamp_from &amp;lt;&amp;gt; ls_appointment_wrk-timestamp_from.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Process each of the documents and, if they don't have a conclusion date with the same value,&lt;/P&gt;&lt;/LI&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;set up the internal tables to update the document.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;LOOP AT lt_header_guid INTO ls_header_guid.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Check if it has a conclusion date with the correct value already.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;READ TABLE lt_appointment_wrk&lt;/P&gt;&lt;P&gt;WITH KEY ref_guid = ls_header_guid&lt;/P&gt;&lt;P&gt;TRANSPORTING NO FIELDS.&lt;/P&gt;&lt;P&gt;IF sy-subrc = 0.&lt;/P&gt;&lt;P&gt;DELETE lt_header_guid.&lt;/P&gt;&lt;P&gt;CONTINUE.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set up the fields to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;CLEAR lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'REF_KIND'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'APPT_TYPE'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMESTAMP_FROM'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMEZONE_FROM'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMESTAMP_TO'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIMEZONE_TO'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_field_names-fieldname = 'TIME_UNIT'.&lt;/P&gt;&lt;P&gt;INSERT ls_input_field_names INTO TABLE lt_input_field_names.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ls_input_fields-ref_handle = '0000000000'.&lt;/P&gt;&lt;P&gt;ls_input_fields-ref_guid = ls_header_guid.&lt;/P&gt;&lt;P&gt;ls_input_fields-objectname = 'APPOINTMENT'.&lt;/P&gt;&lt;P&gt;ls_input_fields-field_names = lt_input_field_names.&lt;/P&gt;&lt;P&gt;INSERT ls_input_fields INTO TABLE lt_input_fields.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Set up the values for the fields to be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;ls_appointment_com-ref_handle = '0000000000'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-ref_guid = ls_header_guid.&lt;/P&gt;&lt;P&gt;ls_appointment_com-ref_kind = 'A'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-appt_type = 'ZLSC00003'.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timestamp_from = ls_appointment_wrk-timestamp_from.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timezone_from = ls_appointment_wrk-timezone_from.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timestamp_to = ls_appointment_wrk-timestamp_to.&lt;/P&gt;&lt;P&gt;ls_appointment_com-timezone_to = ls_appointment_wrk-timezone_to.&lt;/P&gt;&lt;P&gt;ls_appointment_com-time_unit = ls_appointment_wrk-time_unit.&lt;/P&gt;&lt;P&gt;INSERT ls_appointment_com INTO TABLE lt_appointment_com.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Create an entry in the internal table used to determine which documents will be updated.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;INSERT ls_header_guid INTO TABLE lt_objects_to_save.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDLOOP.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Change the values in the documents&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF NOT lt_appointment_com IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_MAINTAIN'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_appointment = lt_appointment_com&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_exception = lt_exception&lt;/P&gt;&lt;P&gt;CHANGING&lt;/P&gt;&lt;P&gt;ct_orderadm_h = lt_orderadm_h&lt;/P&gt;&lt;P&gt;ct_input_fields = lt_input_fields&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;error_occurred = 1&lt;/P&gt;&lt;P&gt;document_locked = 2&lt;/P&gt;&lt;P&gt;no_change_allowed = 3&lt;/P&gt;&lt;P&gt;no_authority = 4&lt;/P&gt;&lt;P&gt;OTHERS = 5.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;UL&gt;&lt;LI level="1" type="ul"&gt;&lt;P&gt;Save the changed date values.&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;P&gt;IF NOT lt_objects_to_save IS INITIAL.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CALL FUNCTION 'CRM_ORDER_SAVE'&lt;/P&gt;&lt;P&gt;EXPORTING&lt;/P&gt;&lt;P&gt;it_objects_to_save = lt_objects_to_save&lt;/P&gt;&lt;P&gt;iv_update_task_local = lv_update_task_local&lt;/P&gt;&lt;P&gt;IMPORTING&lt;/P&gt;&lt;P&gt;et_saved_objects = lt_saved_objects&lt;/P&gt;&lt;P&gt;et_exception = lt_exception&lt;/P&gt;&lt;P&gt;et_objects_not_saved = lt_objects_not_saved&lt;/P&gt;&lt;P&gt;EXCEPTIONS&lt;/P&gt;&lt;P&gt;document_not_saved = 1&lt;/P&gt;&lt;P&gt;OTHERS = 2.&lt;/P&gt;&lt;P&gt;IF sy-subrc &amp;lt;&amp;gt; 0.&lt;/P&gt;&lt;P&gt;EXIT.&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CLEAR gv_first.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDIF.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;ENDMETHOD.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 20 Jan 2006 15:31:16 GMT</pubDate>
      <guid>https://community.sap.com/t5/application-development-and-automation-discussions/new-in-abap-programming/m-p/1156424#M118990</guid>
      <dc:creator>Former Member</dc:creator>
      <dc:date>2006-01-20T15:31:16Z</dc:date>
    </item>
  </channel>
</rss>

